summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-08-02 13:47:01 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-08-02 13:47:01 -0600
commit4f6a78f465de5b439ece14ffea79351572dbb75d (patch)
treea77b7949c4a16cd7225d95ca91e75245f9097c1e
parenta303250bfd22f80c90a3bcc7f5ceb8b06e8bdbb1 (diff)
parent2a9fd69d2f53bff4130fc67badced33b52b4aa2b (diff)
downloadaskbot-4f6a78f465de5b439ece14ffea79351572dbb75d.tar.gz
askbot-4f6a78f465de5b439ece14ffea79351572dbb75d.tar.bz2
askbot-4f6a78f465de5b439ece14ffea79351572dbb75d.zip
Merge branch 'master' into django1.4
Conflicts: askbot/feed.py
-rwxr-xr-x.gitignore8
-rw-r--r--MANIFEST.in3
-rw-r--r--askbot/__init__.py20
-rw-r--r--askbot/admin.py16
-rw-r--r--askbot/api.py8
-rw-r--r--askbot/askbot0
-rw-r--r--askbot/auth.py105
-rw-r--r--askbot/bin/checklocales.py11
-rw-r--r--askbot/bin/mergelocales.py61
-rw-r--r--askbot/bin/rebuildlocales.py16
-rw-r--r--askbot/conf/__init__.py5
-rw-r--r--askbot/conf/badges.py10
-rw-r--r--askbot/conf/email.py68
-rw-r--r--askbot/conf/external_keys.py35
-rw-r--r--askbot/conf/forum_data_rules.py105
-rw-r--r--askbot/conf/group_settings.py32
-rw-r--r--askbot/conf/karma_and_badges_visibility.py50
-rw-r--r--askbot/conf/ldap.py93
-rw-r--r--askbot/conf/leading_sidebar.py38
-rw-r--r--askbot/conf/license.py4
-rw-r--r--askbot/conf/login_providers.py4
-rw-r--r--askbot/conf/minimum_reputation.py46
-rw-r--r--askbot/conf/moderation.py22
-rw-r--r--askbot/conf/reputation_changes.py2
-rw-r--r--askbot/conf/settings_wrapper.py11
-rw-r--r--askbot/conf/sidebar_question.py20
-rw-r--r--askbot/conf/site_modes.py68
-rw-r--r--askbot/conf/site_settings.py1
-rw-r--r--askbot/conf/skin_counter_settings.py264
-rw-r--r--askbot/conf/skin_general_settings.py48
-rw-r--r--askbot/conf/user_settings.py38
-rw-r--r--askbot/conf/vote_rules.py4
-rw-r--r--askbot/const/__init__.py124
-rw-r--r--askbot/const/message_keys.py33
-rw-r--r--askbot/context.py25
-rw-r--r--askbot/cron/askbot_cron_job2
-rw-r--r--askbot/deployment/__init__.py7
-rw-r--r--askbot/deployment/path_utils.py21
-rw-r--r--askbot/deps/django_authopenid/backends.py104
-rw-r--r--askbot/deps/django_authopenid/forms.py4
-rw-r--r--askbot/deps/django_authopenid/migrations/0002_make_multiple_openids_possible.py7
-rw-r--r--askbot/deps/django_authopenid/util.py64
-rw-r--r--askbot/deps/django_authopenid/views.py70
-rw-r--r--askbot/deps/livesettings/models.py58
-rw-r--r--askbot/deps/livesettings/overrides.py4
-rw-r--r--askbot/deps/livesettings/values.py34
-rw-r--r--askbot/doc/source/changelog.rst83
-rw-r--r--askbot/doc/source/contributors.rst10
-rw-r--r--askbot/doc/source/create-database.rst11
-rw-r--r--askbot/doc/source/customizing-style-css-file-in-askbot.rst6
-rw-r--r--askbot/doc/source/deployment.rst29
-rw-r--r--askbot/doc/source/index.rst2
-rw-r--r--askbot/doc/source/initial-configuration.rst11
-rw-r--r--askbot/doc/source/intranet-setup.rst14
-rw-r--r--askbot/doc/source/management-commands.rst22
-rw-r--r--askbot/doc/source/moderation.rst30
-rw-r--r--askbot/doc/source/optional-modules.rst106
-rw-r--r--askbot/doc/source/settings.rst14
-rw-r--r--askbot/exceptions.py5
-rw-r--r--askbot/feed.py84
-rw-r--r--askbot/forms.py816
-rw-r--r--askbot/importers/stackexchange/management/commands/load_stackexchange.py21
-rw-r--r--askbot/locale/ca/LC_MESSAGES/django.mobin89236 -> 79899 bytes
-rw-r--r--askbot/locale/ca/LC_MESSAGES/django.po3442
-rw-r--r--askbot/locale/ca/LC_MESSAGES/djangojs.mobin1181 -> 4232 bytes
-rw-r--r--askbot/locale/ca/LC_MESSAGES/djangojs.po382
-rw-r--r--askbot/locale/de/LC_MESSAGES/django.mobin18495 -> 60847 bytes
-rw-r--r--askbot/locale/de/LC_MESSAGES/django.po6237
-rw-r--r--askbot/locale/de/LC_MESSAGES/djangojs.mobin2750 -> 2066 bytes
-rw-r--r--askbot/locale/de/LC_MESSAGES/djangojs.po258
-rw-r--r--askbot/locale/el/LC_MESSAGES/django.mobin0 -> 448 bytes
-rw-r--r--askbot/locale/el/LC_MESSAGES/django.po6442
-rw-r--r--askbot/locale/el/LC_MESSAGES/djangojs.mobin0 -> 449 bytes
-rw-r--r--askbot/locale/el/LC_MESSAGES/djangojs.po264
-rw-r--r--askbot/locale/en/LC_MESSAGES/django.mobin22303 -> 1372 bytes
-rw-r--r--askbot/locale/en/LC_MESSAGES/django.po2736
-rw-r--r--askbot/locale/en/LC_MESSAGES/djangojs.mobin2069 -> 1373 bytes
-rw-r--r--askbot/locale/en/LC_MESSAGES/djangojs.po255
-rw-r--r--askbot/locale/es/LC_MESSAGES/django.mobin15267 -> 137973 bytes
-rw-r--r--askbot/locale/es/LC_MESSAGES/django.po8161
-rw-r--r--askbot/locale/es/LC_MESSAGES/djangojs.mobin2884 -> 4686 bytes
-rw-r--r--askbot/locale/es/LC_MESSAGES/djangojs.po355
-rw-r--r--askbot/locale/fi/LC_MESSAGES/django.mobin20416 -> 137156 bytes
-rw-r--r--askbot/locale/fi/LC_MESSAGES/django.po8021
-rw-r--r--askbot/locale/fi/LC_MESSAGES/djangojs.mobin1726 -> 4777 bytes
-rw-r--r--askbot/locale/fi/LC_MESSAGES/djangojs.po392
-rw-r--r--askbot/locale/fr/LC_MESSAGES/django.mobin48025 -> 175178 bytes
-rw-r--r--askbot/locale/fr/LC_MESSAGES/django.po7584
-rw-r--r--askbot/locale/fr/LC_MESSAGES/djangojs.mobin2767 -> 5569 bytes
-rw-r--r--askbot/locale/fr/LC_MESSAGES/djangojs.po422
-rw-r--r--askbot/locale/hi/LC_MESSAGES/django.mobin0 -> 58943 bytes
-rw-r--r--askbot/locale/hi/LC_MESSAGES/django.po6605
-rw-r--r--askbot/locale/hi/LC_MESSAGES/djangojs.mobin0 -> 7490 bytes
-rw-r--r--askbot/locale/hi/LC_MESSAGES/djangojs.po343
-rw-r--r--askbot/locale/hu/LC_MESSAGES/django.mobin0 -> 2563 bytes
-rw-r--r--askbot/locale/hu/LC_MESSAGES/django.po7108
-rw-r--r--askbot/locale/hu/LC_MESSAGES/djangojs.mobin0 -> 449 bytes
-rw-r--r--askbot/locale/hu/LC_MESSAGES/djangojs.po264
-rw-r--r--askbot/locale/it/LC_MESSAGES/django.mobin71456 -> 85074 bytes
-rw-r--r--askbot/locale/it/LC_MESSAGES/django.po5915
-rw-r--r--askbot/locale/it/LC_MESSAGES/djangojs.mobin3748 -> 2775 bytes
-rw-r--r--askbot/locale/it/LC_MESSAGES/djangojs.po271
-rw-r--r--askbot/locale/ja/LC_MESSAGES/django.mobin12366 -> 35142 bytes
-rw-r--r--askbot/locale/ja/LC_MESSAGES/django.po6853
-rw-r--r--askbot/locale/ja/LC_MESSAGES/djangojs.mobin401 -> 5263 bytes
-rw-r--r--askbot/locale/ja/LC_MESSAGES/djangojs.po404
-rw-r--r--askbot/locale/ko/LC_MESSAGES/django.mobin4238 -> 2439 bytes
-rw-r--r--askbot/locale/ko/LC_MESSAGES/django.po4938
-rw-r--r--askbot/locale/ko/LC_MESSAGES/djangojs.mobin401 -> 440 bytes
-rw-r--r--askbot/locale/ko/LC_MESSAGES/djangojs.po234
-rw-r--r--askbot/locale/pt/LC_MESSAGES/django.mobin0 -> 22637 bytes
-rw-r--r--askbot/locale/pt/LC_MESSAGES/django.po6580
-rw-r--r--askbot/locale/pt/LC_MESSAGES/djangojs.mobin0 -> 449 bytes
-rw-r--r--askbot/locale/pt/LC_MESSAGES/djangojs.po264
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/django.mobin8655 -> 85689 bytes
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/django.po6933
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/djangojs.mobin407 -> 4330 bytes
-rw-r--r--askbot/locale/pt_BR/LC_MESSAGES/djangojs.po484
-rw-r--r--askbot/locale/ro/LC_MESSAGES/django.mobin45766 -> 66614 bytes
-rw-r--r--askbot/locale/ro/LC_MESSAGES/django.po5836
-rw-r--r--askbot/locale/ro/LC_MESSAGES/djangojs.mobin472 -> 514 bytes
-rw-r--r--askbot/locale/ro/LC_MESSAGES/djangojs.po246
-rw-r--r--askbot/locale/ru/LC_MESSAGES/django.mobin75862 -> 228667 bytes
-rw-r--r--askbot/locale/ru/LC_MESSAGES/django.po8382
-rw-r--r--askbot/locale/ru/LC_MESSAGES/djangojs.mobin7112 -> 7192 bytes
-rw-r--r--askbot/locale/ru/LC_MESSAGES/djangojs.po458
-rw-r--r--askbot/locale/sr/LC_MESSAGES/django.mobin14731 -> 82446 bytes
-rw-r--r--askbot/locale/sr/LC_MESSAGES/django.po8043
-rw-r--r--askbot/locale/sr/LC_MESSAGES/djangojs.mobin482 -> 449 bytes
-rw-r--r--askbot/locale/sr/LC_MESSAGES/djangojs.po249
-rw-r--r--askbot/locale/tr/LC_MESSAGES/django.mobin29767 -> 47365 bytes
-rw-r--r--askbot/locale/tr/LC_MESSAGES/django.po6065
-rw-r--r--askbot/locale/tr/LC_MESSAGES/djangojs.mobin2759 -> 4470 bytes
-rw-r--r--askbot/locale/tr/LC_MESSAGES/djangojs.po366
-rw-r--r--askbot/locale/vi/LC_MESSAGES/django.mobin1929 -> 1815 bytes
-rw-r--r--askbot/locale/vi/LC_MESSAGES/django.po5039
-rw-r--r--askbot/locale/vi/LC_MESSAGES/djangojs.mobin401 -> 449 bytes
-rw-r--r--askbot/locale/vi/LC_MESSAGES/djangojs.po242
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/django.mobin13003 -> 0 bytes
-rw-r--r--askbot/locale/zh-tw/LC_MESSAGES/djangojs.mobin2603 -> 0 bytes
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/django.mobin48231 -> 116172 bytes
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/django.po6482
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/djangojs.mobin2708 -> 4306 bytes
-rw-r--r--askbot/locale/zh_CN/LC_MESSAGES/djangojs.po384
-rw-r--r--askbot/locale/zh_TW/LC_MESSAGES/django.mobin0 -> 23459 bytes
-rw-r--r--askbot/locale/zh_TW/LC_MESSAGES/django.po (renamed from askbot/locale/zh-tw/LC_MESSAGES/django.po)5457
-rw-r--r--askbot/locale/zh_TW/LC_MESSAGES/djangojs.mobin0 -> 2000 bytes
-rw-r--r--askbot/locale/zh_TW/LC_MESSAGES/djangojs.po (renamed from askbot/locale/zh-tw/LC_MESSAGES/djangojs.po)263
-rw-r--r--askbot/mail/__init__.py393
-rw-r--r--askbot/mail/lamson_handlers.py317
-rw-r--r--askbot/mail/messages.py52
-rw-r--r--askbot/management/commands/askbot_add_test_content.py36
-rw-r--r--askbot/management/commands/askbot_create_test_fixture.py1
-rw-r--r--askbot/management/commands/build_livesettings_cache.py12
-rw-r--r--askbot/management/commands/build_thread_summary_cache.py10
-rw-r--r--askbot/management/commands/delete_contextless_activities.py23
-rw-r--r--askbot/management/commands/delete_contextless_badge_award_activities.py20
-rw-r--r--askbot/management/commands/delete_unused_tags.py2
-rw-r--r--askbot/management/commands/fix_answer_counts.py5
-rw-r--r--askbot/management/commands/fix_question_tags.py30
-rw-r--r--askbot/management/commands/fix_revisionless_posts.py7
-rw-r--r--askbot/management/commands/get_tag_stats.py50
-rw-r--r--askbot/management/commands/init_postgresql_full_text_search.py29
-rw-r--r--askbot/management/commands/initialize_ldap_logins.py68
-rw-r--r--askbot/management/commands/merge_users.py8
-rw-r--r--askbot/management/commands/post_emailed_questions.py125
-rw-r--r--askbot/management/commands/rename_tags_id.py2
-rw-r--r--askbot/management/commands/send_accept_answer_reminders.py13
-rw-r--r--askbot/management/commands/send_email.py2
-rw-r--r--askbot/management/commands/send_email_alerts.py126
-rw-r--r--askbot/management/commands/send_respondable_welcome_email.py12
-rw-r--r--askbot/management/commands/send_unanswered_question_reminders.py22
-rw-r--r--askbot/middleware/anon_user.py9
-rw-r--r--askbot/middleware/locale.py26
-rw-r--r--askbot/middleware/pagesize.py57
-rw-r--r--askbot/middleware/spaceless.py1
-rw-r--r--askbot/middleware/view_log.py57
-rw-r--r--askbot/migrations/0004_install_full_text_indexes_for_mysql.py2
-rw-r--r--askbot/migrations/0012_delete_some_unused_models.py8
-rw-r--r--askbot/migrations/0022_init_postgresql_full_text_search.py10
-rw-r--r--askbot/migrations/0032_auto__del_field_badgedata_multiple__del_field_badgedata_description__d.py21
-rw-r--r--askbot/migrations/0050_move_qa_revisions_to_postrevision.py4
-rw-r--r--askbot/migrations/0052_auto__add_thread__add_field_question_thread.py319
-rw-r--r--askbot/migrations/0053_create_threads_for_questions.py319
-rw-r--r--askbot/migrations/0054_auto__del_field_question_favourite_count.py308
-rw-r--r--askbot/migrations/0055_auto__chg_field_question_thread.py308
-rw-r--r--askbot/migrations/0056_transplant_answer_count_field.py309
-rw-r--r--askbot/migrations/0057_transplant_answer_count_data.py314
-rw-r--r--askbot/migrations/0058_transplant_answer_count_field_2.py308
-rw-r--r--askbot/migrations/0059_auto__add_field_thread_view_count.py309
-rw-r--r--askbot/migrations/0060_view_count_transplant.py314
-rw-r--r--askbot/migrations/0061_auto__del_field_question_view_count.py308
-rw-r--r--askbot/migrations/0062_transplant_question_closed_fields.py330
-rw-r--r--askbot/migrations/0063_transplant_question_closed_datas.py327
-rw-r--r--askbot/migrations/0064_transplant_question_closed_fields_2.py326
-rw-r--r--askbot/migrations/0065_transplant_accepted_answer_1.py316
-rw-r--r--askbot/migrations/0066_transplant_accepted_answer_data.py339
-rw-r--r--askbot/migrations/0067_transplant_accepted_answer_2.py319
-rw-r--r--askbot/migrations/0068_transplant_last_activity_fields_1.py316
-rw-r--r--askbot/migrations/0069_transplant_last_activity_data.py316
-rw-r--r--askbot/migrations/0070_transplant_last_activity_fields_2.py317
-rw-r--r--askbot/migrations/0071_transplant_tagnames_1.py308
-rw-r--r--askbot/migrations/0072_transplant_tagnames_data.py313
-rw-r--r--askbot/migrations/0073_transplant_tagnames_2.py307
-rw-r--r--askbot/migrations/0074_transplant_followed_by_1.py313
-rw-r--r--askbot/migrations/0075_transplant_followed_by_data.py312
-rw-r--r--askbot/migrations/0076_transplant_followed_by_2.py312
-rw-r--r--askbot/migrations/0077_transplant_summary_1.py308
-rw-r--r--askbot/migrations/0078_transplant_favquestions_1.py309
-rw-r--r--askbot/migrations/0079_transplant_favquestions_data.py310
-rw-r--r--askbot/migrations/0080_transplant_favquestions_2.py314
-rw-r--r--askbot/migrations/0081_transplant_title_1.py309
-rw-r--r--askbot/migrations/0082_transplant_title_data.py314
-rw-r--r--askbot/migrations/0083_transplant_title_2.py308
-rw-r--r--askbot/migrations/0084_auto__add_field_answer_is_anonymous.py309
-rw-r--r--askbot/migrations/0085_transplant_question_tags_1.py315
-rw-r--r--askbot/migrations/0086_transplant_question_tags_data.py313
-rw-r--r--askbot/migrations/0087_transplant_question_tags_2.py314
-rw-r--r--askbot/migrations/0088_install__post_view__for__development.py314
-rw-r--r--askbot/migrations/0089_auto__add_post.py384
-rw-r--r--askbot/migrations/0090_postize_q_a_c.py541
-rw-r--r--askbot/migrations/0091_auto__add_field_vote_voted_post__add_field_activity_question_post.py353
-rw-r--r--askbot/migrations/0092_postize_vote_and_activity.py410
-rw-r--r--askbot/migrations/0093_auto__del_field_vote_content_type__del_field_vote_object_id__chg_field.py374
-rw-r--r--askbot/migrations/0094_auto__add_field_repute_question_post.py345
-rw-r--r--askbot/migrations/0095_postize_award_and_repute.py365
-rw-r--r--askbot/migrations/0096_auto__del_field_repute_question.py344
-rw-r--r--askbot/migrations/0097_auto__add_field_thread_accepted_answer_post__add_field_anonymousanswer.py366
-rw-r--r--askbot/migrations/0098_postize_thread_anonanswer_questionview_postrevision.py376
-rw-r--r--askbot/migrations/0099_auto__del_field_thread_accepted_answer__del_field_anonymousanswer_ques.py397
-rw-r--r--askbot/migrations/0100_auto__del_field_post_self_question__del_field_post_self_answer__del_fi.py352
-rw-r--r--askbot/migrations/0101_megadeath_of_q_a_c.py372
-rw-r--r--askbot/migrations/0102_rename_post_fields_back_1.py285
-rw-r--r--askbot/migrations/0103_rename_post_fields_back_2.py285
-rw-r--r--askbot/migrations/0104_auto__del_field_repute_question_post__add_field_repute_question.py285
-rw-r--r--askbot/migrations/0105_restore_anon_ans_q.py285
-rw-r--r--askbot/migrations/0106_update_postgres_full_text_setup.py285
-rw-r--r--askbot/migrations/0107_added_db_indexes.py280
-rw-r--r--askbot/migrations/0108_auto__add_field_thread_score.py274
-rw-r--r--askbot/migrations/0109_denormalize_question_vote_to_thread.py279
-rw-r--r--askbot/migrations/0110_auto__add_field_thread_added_at.py275
-rw-r--r--askbot/migrations/0111_populate__thread__added_at.py279
-rw-r--r--askbot/migrations/0112_add_model_ReplyAddress.py288
-rw-r--r--askbot/migrations/0113_auto__add_field_thread_added_at__add_field_thread_score__add_field_rep.py285
-rw-r--r--askbot/migrations/0114_auto__add_groupprofile__add_groupmembership__add_field_tag_tag_wiki.py318
-rw-r--r--askbot/migrations/0115_auto__chg_field_post_thread.py296
-rw-r--r--askbot/migrations/0116_auto__add_field_groupprofile_logo_url__add_unique_emailfeedsetting_sub.py304
-rw-r--r--askbot/migrations/0117_auto__add_field_post_approved__add_field_thread_approved__add_field_po.py335
-rw-r--r--askbot/migrations/0118_auto__add_field_postrevision_by_email.py304
-rw-r--r--askbot/migrations/0119_auto__add_postflagreason.py317
-rw-r--r--askbot/migrations/0120_auto__add_field_groupprofile_moderate_email__add_field_postrevision_em.py322
-rw-r--r--askbot/migrations/0121_auto__add_field_groupprofile_is_open__add_field_groupprofile_preapprov.py340
-rw-r--r--askbot/migrations/0122_auth_user__add_subscribed_tag_field.py318
-rw-r--r--askbot/migrations/0123_setup_postgres_user_search.py29
-rw-r--r--askbot/migrations/0124_auto__add_field_post_is_private__add_field_replyaddress_reply_action.py341
-rw-r--r--askbot/migrations/0125_add_show_tags_field_to_user.py296
-rw-r--r--askbot/migrations/__init__.py69
-rw-r--r--askbot/models/__init__.py1241
-rw-r--r--askbot/models/answer.py98
-rw-r--r--askbot/models/badges.py25
-rw-r--r--askbot/models/base.py195
-rw-r--r--askbot/models/content.py826
-rw-r--r--askbot/models/meta.py323
-rw-r--r--askbot/models/post.py1824
-rw-r--r--askbot/models/question.py1335
-rw-r--r--askbot/models/reply_by_email.py176
-rw-r--r--askbot/models/repute.py110
-rw-r--r--askbot/models/signals.py8
-rw-r--r--askbot/models/tag.py133
-rw-r--r--askbot/models/user.py102
-rw-r--r--askbot/search/mysql.py54
-rw-r--r--askbot/search/postgresql/__init__.py50
-rw-r--r--askbot/search/postgresql/question_answer_comment_models.plsql (renamed from askbot/management/commands/setup_postgresql_full_text_search.plsql)0
-rw-r--r--askbot/search/postgresql/thread_and_post_models_01162012.plsql225
-rw-r--r--askbot/search/postgresql/user_profile_search_051312.plsql89
-rw-r--r--askbot/search/sphinx/sphinx.conf4
-rw-r--r--askbot/search/state_manager.py419
-rw-r--r--askbot/setup_templates/settings.py34
-rw-r--r--askbot/setup_templates/settings.py.mustache36
-rw-r--r--askbot/setup_templates/urls.py5
-rw-r--r--askbot/sitemap.py6
-rw-r--r--askbot/skins/common/media/jquery-openid/jquery.openid.js14
-rw-r--r--askbot/skins/common/media/jquery-openid/openid.css4
-rw-r--r--askbot/skins/common/media/js/editor.js7
-rw-r--r--askbot/skins/common/media/js/jquery-1.7.2.min.js4
-rw-r--r--askbot/skins/common/media/js/jquery.history.js1
-rw-r--r--askbot/skins/common/media/js/live_search.js710
-rw-r--r--askbot/skins/common/media/js/live_search_new_thread.js82
-rw-r--r--askbot/skins/common/media/js/modernizr.custom.js4
-rw-r--r--askbot/skins/common/media/js/post.js709
-rw-r--r--askbot/skins/common/media/js/tag_selector.js73
-rw-r--r--askbot/skins/common/media/js/user.js687
-rw-r--r--askbot/skins/common/media/js/utils.js890
-rw-r--r--askbot/skins/common/media/js/wmd/wmd.css22
-rw-r--r--askbot/skins/common/media/js/wmd/wmd.js354
-rw-r--r--askbot/skins/common/templates/authopenid/authopenid_macros.html77
-rw-r--r--askbot/skins/common/templates/authopenid/changeemail.html56
-rw-r--r--askbot/skins/common/templates/authopenid/complete.html35
-rw-r--r--askbot/skins/common/templates/authopenid/confirm_email.txt2
-rw-r--r--askbot/skins/common/templates/authopenid/email_validation.txt6
-rw-r--r--askbot/skins/common/templates/authopenid/providers_javascript.html6
-rw-r--r--askbot/skins/common/templates/authopenid/signin.html62
-rw-r--r--askbot/skins/common/templates/authopenid/signup_with_password.html14
-rw-r--r--askbot/skins/common/templates/debug_header.html27
-rw-r--r--askbot/skins/common/templates/question/answer_author_info.html4
-rw-r--r--askbot/skins/common/templates/question/answer_comments.html2
-rw-r--r--askbot/skins/common/templates/question/answer_controls.html81
-rw-r--r--askbot/skins/common/templates/question/answer_vote_buttons.html33
-rw-r--r--askbot/skins/common/templates/question/closed_question_info.html6
-rw-r--r--askbot/skins/common/templates/question/question_author_info.html4
-rw-r--r--askbot/skins/common/templates/question/question_comments.html14
-rw-r--r--askbot/skins/common/templates/question/question_controls.html79
-rw-r--r--askbot/skins/common/templates/question/question_tags.html7
-rw-r--r--askbot/skins/common/templates/question/question_vote_buttons.html5
-rw-r--r--askbot/skins/common/templates/widgets/edit_post.html38
-rw-r--r--askbot/skins/common/templates/widgets/related_tags.html15
-rw-r--r--askbot/skins/common/templates/widgets/search_bar.html16
-rw-r--r--askbot/skins/common/templates/widgets/tag_selector.html55
-rw-r--r--askbot/skins/default/media/bootstrap/bootstrap.zipbin0 -> 273108 bytes
-rw-r--r--askbot/skins/default/media/bootstrap/css/bootstrap.css4635
-rw-r--r--askbot/skins/default/media/bootstrap/css/bootstrap.min.css706
-rw-r--r--askbot/skins/default/media/bootstrap/img/glyphicons-halflings-white.pngbin0 -> 4352 bytes
-rw-r--r--askbot/skins/default/media/bootstrap/img/glyphicons-halflings.pngbin0 -> 4352 bytes
-rw-r--r--askbot/skins/default/media/bootstrap/js/bootstrap.js1737
-rw-r--r--askbot/skins/default/media/bootstrap/js/bootstrap.min.js7
-rw-r--r--askbot/skins/default/media/images/OFL.txt93
-rw-r--r--askbot/skins/default/media/images/OpenSans-CondBold.ttfbin0 -> 264372 bytes
-rw-r--r--askbot/skins/default/media/images/OpenSans-CondLight.ttfbin0 -> 221108 bytes
-rw-r--r--askbot/skins/default/media/images/OpenSans-CondLightItalic.ttfbin0 -> 210804 bytes
-rw-r--r--askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttfbin0 -> 73000 bytes
-rw-r--r--askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttfbin0 -> 77024 bytes
-rw-r--r--askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttfbin0 -> 77296 bytes
-rw-r--r--askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttfbin0 -> 76588 bytes
-rw-r--r--askbot/skins/default/media/images/Yanone_Kaffeesatz.zipbin0 -> 154362 bytes
-rw-r--r--askbot/skins/default/media/style/lib_style.css22
-rw-r--r--askbot/skins/default/media/style/lib_style.less50
-rw-r--r--askbot/skins/default/media/style/style.css4110
-rw-r--r--askbot/skins/default/media/style/style.less663
-rw-r--r--askbot/skins/default/templates/about.html10
-rw-r--r--askbot/skins/default/templates/answer_edit.html8
-rw-r--r--askbot/skins/default/templates/ask.html6
-rw-r--r--askbot/skins/default/templates/badge.html2
-rw-r--r--askbot/skins/default/templates/badges.html12
-rw-r--r--askbot/skins/default/templates/base.html13
-rw-r--r--askbot/skins/default/templates/close.html2
-rw-r--r--askbot/skins/default/templates/django_error.html31
-rw-r--r--askbot/skins/default/templates/email/ask_for_signature.html11
-rw-r--r--askbot/skins/default/templates/email/feedback_email.txt (renamed from askbot/skins/default/templates/feedback_email.txt)0
-rw-r--r--askbot/skins/default/templates/email/footer.html1
-rw-r--r--askbot/skins/default/templates/email/insufficient_rep_to_post_by_email.html15
-rw-r--r--askbot/skins/default/templates/email/macros.html96
-rw-r--r--askbot/skins/default/templates/email/notify_author_about_approved_post.html21
-rw-r--r--askbot/skins/default/templates/email/post_as_subthread.html17
-rw-r--r--askbot/skins/default/templates/email/quoted_post.html5
-rw-r--r--askbot/skins/default/templates/email/re_welcome_lamson_on.html7
-rw-r--r--askbot/skins/default/templates/email/reply_by_email_error.html4
-rw-r--r--askbot/skins/default/templates/email/welcome_lamson_on.html15
-rw-r--r--askbot/skins/default/templates/faq.html10
-rw-r--r--askbot/skins/default/templates/faq_static.html33
-rw-r--r--askbot/skins/default/templates/feedback.html2
-rw-r--r--askbot/skins/default/templates/groups.html48
-rw-r--r--askbot/skins/default/templates/help.html33
-rw-r--r--askbot/skins/default/templates/instant_notification.html39
-rw-r--r--askbot/skins/default/templates/macros.html486
-rw-r--r--askbot/skins/default/templates/main_page.html6
-rw-r--r--askbot/skins/default/templates/main_page/headline.html15
-rw-r--r--askbot/skins/default/templates/main_page/javascript.html34
-rw-r--r--askbot/skins/default/templates/main_page/nothing_found.html20
-rw-r--r--askbot/skins/default/templates/main_page/paginator.html5
-rw-r--r--askbot/skins/default/templates/main_page/questions_loop.html13
-rw-r--r--askbot/skins/default/templates/main_page/sidebar.html22
-rw-r--r--askbot/skins/default/templates/main_page/tab_bar.html24
-rw-r--r--askbot/skins/default/templates/main_page/tag_search.html7
-rw-r--r--askbot/skins/default/templates/meta/bottom_scripts.html64
-rw-r--r--askbot/skins/default/templates/meta/editor_data.html13
-rw-r--r--askbot/skins/default/templates/meta/fonts.html8
-rw-r--r--askbot/skins/default/templates/meta/html_head_javascript.html15
-rw-r--r--askbot/skins/default/templates/meta/html_head_stylesheets.html7
-rw-r--r--askbot/skins/default/templates/privacy.html8
-rw-r--r--askbot/skins/default/templates/question.html185
-rw-r--r--askbot/skins/default/templates/question/answer_card.html12
-rw-r--r--askbot/skins/default/templates/question/answer_tab_bar.html33
-rw-r--r--askbot/skins/default/templates/question/content.html44
-rw-r--r--askbot/skins/default/templates/question/javascript.html72
-rw-r--r--askbot/skins/default/templates/question/new_answer_form.html61
-rw-r--r--askbot/skins/default/templates/question/question_card.html32
-rw-r--r--askbot/skins/default/templates/question/sharing_prompt_phrase.html2
-rw-r--r--askbot/skins/default/templates/question/sidebar.html29
-rw-r--r--askbot/skins/default/templates/question/subscribe_by_email_prompt.html18
-rw-r--r--askbot/skins/default/templates/question_retag.html6
-rw-r--r--askbot/skins/default/templates/question_widget.html6
-rw-r--r--askbot/skins/default/templates/reopen.html11
-rw-r--r--askbot/skins/default/templates/revisions.html30
-rw-r--r--askbot/skins/default/templates/static_page.html10
-rw-r--r--askbot/skins/default/templates/tags.html48
-rw-r--r--askbot/skins/default/templates/user_profile/custom_tab.html3
-rw-r--r--askbot/skins/default/templates/user_profile/macros.html24
-rw-r--r--askbot/skins/default/templates/user_profile/reject_post_dialog.html108
-rw-r--r--askbot/skins/default/templates/user_profile/user.html22
-rw-r--r--askbot/skins/default/templates/user_profile/user_edit.html46
-rw-r--r--askbot/skins/default/templates/user_profile/user_email_subscriptions.html5
-rw-r--r--askbot/skins/default/templates/user_profile/user_inbox.html69
-rw-r--r--askbot/skins/default/templates/user_profile/user_info.html20
-rw-r--r--askbot/skins/default/templates/user_profile/user_moderate.html6
-rw-r--r--askbot/skins/default/templates/user_profile/user_network.html20
-rw-r--r--askbot/skins/default/templates/user_profile/user_recent.html37
-rw-r--r--askbot/skins/default/templates/user_profile/user_reputation.html5
-rw-r--r--askbot/skins/default/templates/user_profile/user_stats.html299
-rw-r--r--askbot/skins/default/templates/user_profile/user_tabs.html15
-rw-r--r--askbot/skins/default/templates/user_profile/user_votes.html3
-rw-r--r--askbot/skins/default/templates/user_profile/users_questions.html2
-rw-r--r--askbot/skins/default/templates/users.html166
-rw-r--r--askbot/skins/default/templates/widgets/answer_edit_tips.html8
-rw-r--r--askbot/skins/default/templates/widgets/ask_button.html5
-rw-r--r--askbot/skins/default/templates/widgets/ask_form.html11
-rw-r--r--askbot/skins/default/templates/widgets/contributors.html2
-rw-r--r--askbot/skins/default/templates/widgets/footer.html2
-rw-r--r--askbot/skins/default/templates/widgets/group_info.html82
-rw-r--r--askbot/skins/default/templates/widgets/group_snippet.html2
-rw-r--r--askbot/skins/default/templates/widgets/header.html1
-rw-r--r--askbot/skins/default/templates/widgets/logo.html5
-rw-r--r--askbot/skins/default/templates/widgets/meta_nav.html10
-rw-r--r--askbot/skins/default/templates/widgets/question_edit_tips.html8
-rw-r--r--askbot/skins/default/templates/widgets/question_summary.html29
-rw-r--r--askbot/skins/default/templates/widgets/scope_nav.html11
-rw-r--r--askbot/skins/default/templates/widgets/user_list.html10
-rw-r--r--askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html36
-rw-r--r--askbot/skins/default/templates/widgets/user_navigation.html24
-rw-r--r--askbot/skins/default/templates/widgets/user_score_and_badge_summary.html32
-rw-r--r--askbot/skins/loaders.py1
-rw-r--r--askbot/skins/utils.py44
-rw-r--r--askbot/startup_procedures.py421
-rw-r--r--askbot/tasks.py147
-rw-r--r--askbot/templatetags/extra_filters.py158
-rw-r--r--askbot/templatetags/extra_filters_jinja.py67
-rw-r--r--askbot/templatetags/extra_tags.py51
-rw-r--r--askbot/tests/__init__.py1
-rw-r--r--askbot/tests/badge_tests.py17
-rw-r--r--askbot/tests/cache_tests.py8
-rw-r--r--askbot/tests/db_api_tests.py59
-rw-r--r--askbot/tests/email_alert_tests.py122
-rw-r--r--askbot/tests/form_tests.py29
-rw-r--r--[-rwxr-xr-x]askbot/tests/images/logo.gifbin910 -> 910 bytes
-rw-r--r--askbot/tests/management_command_tests.py4
-rw-r--r--askbot/tests/misc_tests.py47
-rw-r--r--askbot/tests/on_screen_notification_tests.py19
-rw-r--r--askbot/tests/page_load_tests.py364
-rw-r--r--askbot/tests/permission_assertion_tests.py22
-rw-r--r--askbot/tests/post_model_tests.py582
-rw-r--r--askbot/tests/reply_by_email_tests.py188
-rw-r--r--askbot/tests/search_state_tests.py378
-rw-r--r--askbot/tests/skin_tests.py12
-rw-r--r--askbot/tests/utils.py20
-rw-r--r--askbot/urls.py133
-rw-r--r--askbot/user_messages/context_processors.py5
-rw-r--r--askbot/utils/console.py40
-rw-r--r--askbot/utils/decorators.py27
-rw-r--r--askbot/utils/email.py28
-rw-r--r--askbot/utils/file_utils.py36
-rw-r--r--askbot/utils/forms.py54
-rw-r--r--askbot/utils/functions.py29
-rw-r--r--askbot/utils/html.py20
-rw-r--r--askbot/utils/mail.py136
-rw-r--r--askbot/utils/markup.py15
-rw-r--r--askbot/utils/mysql.py22
-rw-r--r--askbot/utils/slug.py70
-rw-r--r--askbot/utils/url_utils.py14
-rw-r--r--askbot/views/commands.py577
-rw-r--r--askbot/views/meta.py73
-rw-r--r--askbot/views/readers.py570
-rw-r--r--askbot/views/users.py978
-rw-r--r--askbot/views/writers.py311
-rw-r--r--askbot_requirements.txt6
-rw-r--r--askbot_requirements_dev.txt9
-rw-r--r--setup.py2
475 files changed, 150145 insertions, 50065 deletions
diff --git a/.gitignore b/.gitignore
index d6a06e66..08e42e57 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,11 @@
*.pyc
*.swp
*.log
+*~
db
rebuild-locales.pl
/src
+/static
cache/??
run
*.wsgi
@@ -14,7 +16,9 @@ settings.py
*.iml
lint
env
+/static
django
+lamson
django/*
nbproject
pip-log.txt
@@ -24,6 +28,7 @@ tmp/*
/manage.py
/urls.py
/log
+/prof
load
askbot/skins/default/media/js/flot
askbot/skins/common/media/js/closure/google-closure
@@ -40,3 +45,6 @@ askbot/skins/common/media/mathjax/
*.tar.tz
run
recaptcha
+/.ve
+/db.sq3
+*.DS_Store
diff --git a/MANIFEST.in b/MANIFEST.in
index 72c4fd65..cce28976 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -11,6 +11,9 @@ recursive-exclude .git
prune dist
prune tmp
prune build
+prune static
+prune django
+prune lamson
exclude db
exclude lint
exclude settings.py
diff --git a/askbot/__init__.py b/askbot/__init__.py
index d4727712..8e4f20ab 100644
--- a/askbot/__init__.py
+++ b/askbot/__init__.py
@@ -5,23 +5,20 @@ Functions in the askbot module perform various
basic actions on behalf of the forum application
"""
import os
-import smtplib
-import sys
-import logging
-VERSION = (0, 7, 36)
+VERSION = (0, 7, 43)
#keys are module names used by python imports,
#values - the package qualifier to use for pip
REQUIREMENTS = {
'akismet': 'akismet',
- 'django': 'django>=1.1.2',
+ 'django': 'django==1.3.1',
'jinja2': 'Jinja2',
'coffin': 'Coffin>=0.3',
'south': 'South>=0.7.1',
'oauth2': 'oauth2',
'markdown2': 'markdown2',
- 'html5lib': 'html5lib',
+ 'html5lib': 'html5lib==0.90',
'keyedcache': 'django-keyedcache',
'threaded_multihost': 'django-threaded-multihost',
'robots': 'django-robots',
@@ -33,6 +30,8 @@ REQUIREMENTS = {
'recaptcha_works': 'django-recaptcha-works',
'openid': 'python-openid',
'pystache': 'pystache==0.3.1',
+ 'lamson': 'Lamson',
+ 'pytz': 'pytz',
}
#necessary for interoperability of django and coffin
@@ -41,17 +40,19 @@ try:
from askbot.deployment.assertions import assert_package_compatibility
assert_package_compatibility()
patches.patch_django()
- patches.patch_coffin()#must go after django
+ patches.patch_coffin() # must go after django
except ImportError:
pass
+
def get_install_directory():
"""returns path to directory
- where code of the askbot django application
+ where code of the askbot django application
is installed
"""
return os.path.dirname(__file__)
+
def get_path_to(relative_path):
"""returns absolute path to a file
relative to ``askbot`` directory
@@ -70,10 +71,11 @@ def get_version():
"""
return '.'.join([str(subversion) for subversion in VERSION])
+
def get_database_engine_name():
"""returns name of the database engine,
independently of the version of django
- - for django >=1.2 looks into ``settings.DATABASES['default']``,
+ - for django >=1.2 looks into ``settings.DATABASES['default']``,
(i.e. assumes that askbot uses database named 'default')
, and for django 1.1 and below returns settings.DATABASE_ENGINE
"""
diff --git a/askbot/admin.py b/askbot/admin.py
index 34722416..8e97a89d 100644
--- a/askbot/admin.py
+++ b/askbot/admin.py
@@ -13,18 +13,9 @@ from askbot import models
class AnonymousQuestionAdmin(admin.ModelAdmin):
"""AnonymousQuestion admin class"""
-class QuestionAdmin(admin.ModelAdmin):
- """Question admin class"""
-
class TagAdmin(admin.ModelAdmin):
"""Tag admin class"""
-class AnswerAdmin(admin.ModelAdmin):
- """Answer admin class"""
-
-class CommentAdmin(admin.ModelAdmin):
- """ admin class"""
-
class VoteAdmin(admin.ModelAdmin):
""" admin class"""
@@ -43,16 +34,11 @@ class ReputeAdmin(admin.ModelAdmin):
class ActivityAdmin(admin.ModelAdmin):
""" admin class"""
-admin.site.register(models.Question, QuestionAdmin)
+admin.site.register(models.Post)
admin.site.register(models.Tag, TagAdmin)
-admin.site.register(models.Answer, AnswerAdmin)
-admin.site.register(models.Comment, CommentAdmin)
admin.site.register(models.Vote, VoteAdmin)
admin.site.register(models.FavoriteQuestion, FavoriteQuestionAdmin)
admin.site.register(models.PostRevision, PostRevisionAdmin)
admin.site.register(models.Award, AwardAdmin)
admin.site.register(models.Repute, ReputeAdmin)
admin.site.register(models.Activity, ActivityAdmin)
-#admin.site.register(Book, BookAdmin)
-#admin.site.register(BookAuthorInfo, BookAuthorInfoAdmin)
-#admin.site.register(BookAuthorRss, BookAuthorRssAdmin)
diff --git a/askbot/api.py b/askbot/api.py
index 8b788016..57d5c1aa 100644
--- a/askbot/api.py
+++ b/askbot/api.py
@@ -18,8 +18,14 @@ def get_info_on_moderation_items(user):
if not(user.is_moderator() or user.is_administrator()):
return None
+ content_types = (
+ const.TYPE_ACTIVITY_MARK_OFFENSIVE,
+ const.TYPE_ACTIVITY_MODERATED_NEW_POST,
+ const.TYPE_ACTIVITY_MODERATED_POST_EDIT,
+ )
+
messages = models.ActivityAuditStatus.objects.filter(
- activity__activity_type = const.TYPE_ACTIVITY_MARK_OFFENSIVE,
+ activity__activity_type__in = content_types,
user = user
)
diff --git a/askbot/askbot b/askbot/askbot
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/askbot/askbot
diff --git a/askbot/auth.py b/askbot/auth.py
index 15044452..c80f5db1 100644
--- a/askbot/auth.py
+++ b/askbot/auth.py
@@ -10,7 +10,7 @@ User.assert_can...
import datetime
from django.db import transaction
from askbot.models import Repute
-from askbot.models import Answer
+#from askbot.models import Answer
from askbot.models import signals
from askbot.conf import settings as askbot_settings
@@ -25,17 +25,14 @@ def onFlaggedItem(post, user, timestamp=None):
post.offensive_flag_count = post.offensive_flag_count + 1
post.save()
- if post.post_type == 'comment':#todo: fix this
- flagged_user = post.user
- else:
- flagged_user = post.author
+ flagged_user = post.author
flagged_user.receive_reputation(
askbot_settings.REP_LOSS_FOR_RECEIVING_FLAG
)
flagged_user.save()
- question = post.get_origin_post()
+ question = post.thread._question_post()
reputation = Repute(
user=flagged_user,
@@ -111,17 +108,14 @@ def onUnFlaggedItem(post, user, timestamp=None):
post.offensive_flag_count = post.offensive_flag_count - 1
post.save()
- if post.post_type == 'comment':#todo: fix this
- flagged_user = post.user
- else:
- flagged_user = post.author
+ flagged_user = post.author
flagged_user.receive_reputation(
- askbot_settings.REP_LOSS_FOR_RECEIVING_FLAG
)
flagged_user.save()
- question = post.get_origin_post()
+ question = post.thread._question_post()
reputation = Repute(
user=flagged_user,
@@ -189,11 +183,9 @@ def onUnFlaggedItem(post, user, timestamp=None):
@transaction.commit_on_success
def onAnswerAccept(answer, user, timestamp=None):
- answer.accepted = True
- answer.accepted_at = timestamp
- answer.question.answer_accepted = True
- answer.save()
- answer.question.save()
+ answer.thread.set_accepted_answer(answer=answer, timestamp=timestamp)
+ question = answer.thread._question_post()
+
if answer.author != user:
answer.author.receive_reputation(
askbot_settings.REP_GAIN_FOR_RECEIVING_ANSWER_ACCEPTANCE
@@ -201,17 +193,22 @@ def onAnswerAccept(answer, user, timestamp=None):
answer.author.save()
reputation = Repute(user=answer.author,
positive=askbot_settings.REP_GAIN_FOR_RECEIVING_ANSWER_ACCEPTANCE,
- question=answer.question,
+ question=question,
reputed_at=timestamp,
reputation_type=2,
reputation=answer.author.reputation)
reputation.save()
+ if answer.author == question.author and user == question.author:
+ #a plug to prevent reputation gaming by posting a question
+ #then answering and accepting as best all by the same person
+ return
+
user.receive_reputation(askbot_settings.REP_GAIN_FOR_ACCEPTING_ANSWER)
user.save()
reputation = Repute(user=user,
positive=askbot_settings.REP_GAIN_FOR_ACCEPTING_ANSWER,
- question=answer.question,
+ question=question,
reputed_at=timestamp,
reputation_type=3,
reputation=user.reputation)
@@ -221,26 +218,30 @@ def onAnswerAccept(answer, user, timestamp=None):
def onAnswerAcceptCanceled(answer, user, timestamp=None):
if timestamp is None:
timestamp = datetime.datetime.now()
- answer.accepted = False
- answer.accepted_at = None
- answer.question.answer_accepted = False
- answer.save()
- answer.question.save()
-
- answer.author.receive_reputation(
- askbot_settings.REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE
- )
- answer.author.save()
- reputation = Repute(
- user=answer.author,
- negative=\
- askbot_settings.REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE,
- question=answer.question,
- reputed_at=timestamp,
- reputation_type=-2,
- reputation=answer.author.reputation
- )
- reputation.save()
+ answer.thread.set_accepted_answer(answer=None, timestamp=None)
+ question = answer.thread._question_post()
+
+ if user != answer.author:
+ answer.author.receive_reputation(
+ askbot_settings.REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE
+ )
+ answer.author.save()
+ reputation = Repute(
+ user=answer.author,
+ negative=\
+ askbot_settings.REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE,
+ question=question,
+ reputed_at=timestamp,
+ reputation_type=-2,
+ reputation=answer.author.reputation
+ )
+ reputation.save()
+
+ if answer.author == question.author and user == question.author:
+ #a symmettric measure for the reputation gaming plug
+ #as in the onAnswerAccept function
+ #here it protects the user from uwanted reputation loss
+ return
user.receive_reputation(
askbot_settings.REP_LOSS_FOR_CANCELING_ANSWER_ACCEPTANCE
@@ -248,7 +249,7 @@ def onAnswerAcceptCanceled(answer, user, timestamp=None):
user.save()
reputation = Repute(user=user,
negative=askbot_settings.REP_LOSS_FOR_CANCELING_ANSWER_ACCEPTANCE,
- question=answer.question,
+ question=question,
reputed_at=timestamp,
reputation_type=-1,
reputation=user.reputation)
@@ -278,9 +279,7 @@ def onUpVoted(vote, post, user, timestamp=None):
)
author.save()
- question = post
- if isinstance(post, Answer):
- question = post.question
+ question = post.thread._question_post() # TODO: this is suboptimal if post is already a question
reputation = Repute(user=author,
positive=askbot_settings.REP_GAIN_FOR_RECEIVING_UPVOTE,
@@ -315,9 +314,7 @@ def onUpVotedCanceled(vote, post, user, timestamp=None):
)
author.save()
- question = post
- if isinstance(post, Answer):
- question = post.question
+ question = post.thread._question_post() # TODO: this is suboptimal if post is already a question
reputation = Repute(
user=author,
@@ -341,15 +338,15 @@ def onDownVoted(vote, post, user, timestamp=None):
if not (post.wiki or post.is_anonymous):
author = post.author
- author.receive_reputation(askbot_settings.REP_LOSS_FOR_DOWNVOTING)
+ author.receive_reputation(
+ askbot_settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE
+ )
author.save()
- question = post
- if isinstance(post, Answer):
- question = post.question
+ question = post.thread._question_post() # TODO: this is suboptimal if post is already a question
reputation = Repute(user=author,
- negative=askbot_settings.REP_LOSS_FOR_DOWNVOTING,
+ negative=askbot_settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE,
question=question,
reputed_at=timestamp,
reputation_type=-3,
@@ -357,12 +354,12 @@ def onDownVoted(vote, post, user, timestamp=None):
reputation.save()
user.receive_reputation(
- askbot_settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE
+ askbot_settings.REP_LOSS_FOR_DOWNVOTING,
)
user.save()
reputation = Repute(user=user,
- negative=askbot_settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE,
+ negative=askbot_settings.REP_LOSS_FOR_DOWNVOTING,
question=question,
reputed_at=timestamp,
reputation_type=-5,
@@ -388,9 +385,7 @@ def onDownVotedCanceled(vote, post, user, timestamp=None):
)
author.save()
- question = post
- if isinstance(post, Answer):
- question = post.question
+ question = post.thread._question_post() # TODO: this is suboptimal if post is already a question
reputation = Repute(user=author,
positive=\
diff --git a/askbot/bin/checklocales.py b/askbot/bin/checklocales.py
new file mode 100644
index 00000000..c195d1b4
--- /dev/null
+++ b/askbot/bin/checklocales.py
@@ -0,0 +1,11 @@
+import os
+import subprocess
+
+locales = os.listdir('locale')
+for locale in locales:
+ command = 'msgfmt -c locale/%s/LC_MESSAGES/django.po' % locale
+ subprocess.call(command.split())
+ print command
+ command = 'msgfmt -c locale/%s/LC_MESSAGES/djangojs.po' % locale
+ print command
+ subprocess.call(command.split())
diff --git a/askbot/bin/mergelocales.py b/askbot/bin/mergelocales.py
new file mode 100644
index 00000000..2c49cb25
--- /dev/null
+++ b/askbot/bin/mergelocales.py
@@ -0,0 +1,61 @@
+import os
+import sys
+import shutil
+import subprocess
+
+DIR1 = sys.argv[1]
+DIR2 = sys.argv[2]
+DEST_DIR = sys.argv[3]
+
+def get_locale_list(path):
+ """return names of directories within a locale dir"""
+ items = os.listdir(path)
+ result = list()
+ for item in items:
+ if os.path.isdir(os.path.join(path, item)):
+ result.append(item)
+ return result
+
+def copy_locale_from(localeno, name = None):
+ """copy entire locale without merging"""
+ if localeno == 1:
+ src = os.path.join(DIR1, name)
+ elif localeno == 2:
+ src = os.path.join(DIR2, name)
+ shutil.copytree(src, os.path.join(DEST_DIR, name))
+
+def merge_locales(name):
+ """runs msgcat command on specified files
+ and a locale name in DIR1 and DIR2"""
+ run_msgcat(name, 'django.po')
+ run_msgcat(name, 'djangojs.po')
+
+def run_msgcat(locale_name, file_name):
+ """run msgcat in locale on file name"""
+ file_path = os.path.join(locale_name, 'LC_MESSAGES', file_name)
+ dest_file = os.path.join(DEST_DIR, file_path)
+ dest_dir = os.path.dirname(dest_file)
+ if not os.path.exists(dest_dir):
+ os.makedirs(os.path.dirname(dest_file))
+ subprocess.call((
+ 'msgcat',
+ os.path.join(DIR1, file_path),
+ os.path.join(DIR2, file_path),
+ '-o',
+ dest_file
+ ))
+
+LOCALE_LIST1 = get_locale_list(DIR1)
+LOCALE_LIST2 = get_locale_list(DIR2)
+
+for locale in LOCALE_LIST1:
+ print locale
+ if locale not in LOCALE_LIST2:
+ copy_locale_from(1, name = locale)
+ else:
+ merge_locales(locale)
+ LOCALE_LIST2.remove(locale)
+
+for locale in LOCALE_LIST2:
+ print locale
+ copy_locale_from(2, name = locale)
diff --git a/askbot/bin/rebuildlocales.py b/askbot/bin/rebuildlocales.py
new file mode 100644
index 00000000..86840add
--- /dev/null
+++ b/askbot/bin/rebuildlocales.py
@@ -0,0 +1,16 @@
+import os
+import subprocess
+
+locales = os.listdir('locale')
+
+def call_command(command):
+ print command
+ subprocess.call(command.split())
+
+for locale in locales:
+ call_command(
+ 'python ../manage.py jinja2_makemessages -l %s -e html,py,txt' % locale
+ )
+ call_command(
+ 'python ../manage.py makemessages -l %s -d djangojs' % locale
+ )
diff --git a/askbot/conf/__init__.py b/askbot/conf/__init__.py
index 026a6185..8378fca3 100644
--- a/askbot/conf/__init__.py
+++ b/askbot/conf/__init__.py
@@ -3,18 +3,23 @@ import askbot
import askbot.conf.minimum_reputation
import askbot.conf.vote_rules
import askbot.conf.reputation_changes
+import askbot.conf.karma_and_badges_visibility
import askbot.conf.email
import askbot.conf.forum_data_rules
+import askbot.conf.moderation
import askbot.conf.flatpages
import askbot.conf.site_settings
import askbot.conf.license
import askbot.conf.external_keys
+import askbot.conf.ldap
import askbot.conf.skin_general_settings
import askbot.conf.sidebar_main
import askbot.conf.sidebar_question
import askbot.conf.sidebar_profile
+import askbot.conf.leading_sidebar
import askbot.conf.spam_and_moderation
import askbot.conf.user_settings
+import askbot.conf.group_settings
import askbot.conf.markup
import askbot.conf.social_sharing
import askbot.conf.badges
diff --git a/askbot/conf/badges.py b/askbot/conf/badges.py
index 53292b05..ac510055 100644
--- a/askbot/conf/badges.py
+++ b/askbot/conf/badges.py
@@ -100,7 +100,7 @@ settings.register(
IntegerValue(
BADGES,
'POPULAR_QUESTION_BADGE_MIN_VIEWS',
- default=150,
+ default=15,
description=_('Popular Question: minimum views')
)
)
@@ -109,7 +109,7 @@ settings.register(
IntegerValue(
BADGES,
'NOTABLE_QUESTION_BADGE_MIN_VIEWS',
- default=250,
+ default=25,
description=_('Notable Question: minimum views')
)
)
@@ -118,7 +118,7 @@ settings.register(
IntegerValue(
BADGES,
'FAMOUS_QUESTION_BADGE_MIN_VIEWS',
- default=500,
+ default=50,
description=_('Famous Question: minimum views')
)
)
@@ -217,7 +217,7 @@ settings.register(
IntegerValue(
BADGES,
'TAXONOMIST_BADGE_MIN_USE_COUNT',
- default = 10,
+ default = 5,
description = _('Taxonomist: minimum tag use count')
)
)
@@ -226,7 +226,7 @@ settings.register(
IntegerValue(
BADGES,
'ENTHUSIAST_BADGE_MIN_DAYS',
- default = 30,
+ default = 5,
description = _('Enthusiast: minimum days')
)
)
diff --git a/askbot/conf/email.py b/askbot/conf/email.py
index 3db80e7a..1b81fa96 100644
--- a/askbot/conf/email.py
+++ b/askbot/conf/email.py
@@ -31,6 +31,15 @@ settings.register(
)
settings.register(
+ livesettings.BooleanValue(
+ EMAIL,
+ 'ENABLE_EMAIL_ALERTS',
+ default = True,
+ description = _('Enable email alerts'),
+ )
+)
+
+settings.register(
livesettings.IntegerValue(
EMAIL,
'MAX_ALERTS_PER_EMAIL',
@@ -264,3 +273,62 @@ settings.register(
)
)
)
+
+settings.register(
+ livesettings.BooleanValue(
+ EMAIL,
+ 'REPLY_BY_EMAIL',
+ default = False,
+ description=_('Enable posting answers and comments by email'),
+ #TODO give a better explanation depending on lamson startup procedure
+ help_text=_(
+ 'To enable this feature make sure lamson is running'
+
+ )
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ EMAIL,
+ 'SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN',
+ description = _(
+ 'Emailed post: when to notify author about publishing'
+ ),
+ choices = const.SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN_CHOICES,
+ default = const.NEVER
+ )
+)
+
+#not implemented at this point
+#settings.register(
+# livesettings.IntegerValue(
+# EMAIL,
+# 'SELF_NOTIFY_WEB_POST_AUTHOR_WHEN',
+# description = _(
+# 'Web post: when to notify author about publishing'
+# ),
+# choices = const.SELF_NOTIFY_WEB_POST_AUTHOR_WHEN_CHOICES,
+# default = const.NEVER
+# )
+#)
+
+settings.register(
+ livesettings.StringValue(
+ EMAIL,
+ 'REPLY_BY_EMAIL_HOSTNAME',
+ default = "",
+ description=_('Reply by email hostname'),
+ #TODO give a better explanation depending on lamson startup procedure
+
+ )
+)
+
+settings.register(
+ livesettings.IntegerValue(
+ EMAIL,
+ 'MIN_WORDS_FOR_ANSWER_BY_EMAIL',
+ default=14,
+ description=_('Email replies having fewer words than this number will be posted as comments instead of answers')
+ )
+)
diff --git a/askbot/conf/external_keys.py b/askbot/conf/external_keys.py
index a673534a..24a43265 100644
--- a/askbot/conf/external_keys.py
+++ b/askbot/conf/external_keys.py
@@ -53,6 +53,8 @@ settings.register(
)
)
+
+
settings.register(
livesettings.StringValue(
EXTERNAL_KEYS,
@@ -160,36 +162,3 @@ settings.register(
description=_('ident.ca consumer secret'),
)
)
-
-settings.register(
- livesettings.BooleanValue(
- EXTERNAL_KEYS,
- 'USE_LDAP_FOR_PASSWORD_LOGIN',
- description=_('Use LDAP authentication for the password login'),
- defaut=False
- )
-)
-
-settings.register(
- livesettings.StringValue(
- EXTERNAL_KEYS,
- 'LDAP_PROVIDER_NAME',
- description=_('LDAP service provider name')
- )
-)
-
-settings.register(
- livesettings.StringValue(
- EXTERNAL_KEYS,
- 'LDAP_URL',
- description=_('URL for the LDAP service')
- )
-)
-
-settings.register(
- livesettings.LongStringValue(
- EXTERNAL_KEYS,
- 'HOW_TO_CHANGE_LDAP_PASSWORD',
- description=_('Explain how to change LDAP password')
- )
-)
diff --git a/askbot/conf/forum_data_rules.py b/askbot/conf/forum_data_rules.py
index 80af2f5b..b7077a15 100644
--- a/askbot/conf/forum_data_rules.py
+++ b/askbot/conf/forum_data_rules.py
@@ -18,9 +18,9 @@ settings.register(
FORUM_DATA_RULES,
'ENABLE_VIDEO_EMBEDDING',
default = False,
- description = _(
- 'Enable embedding videos. '
- '<em>Note: please read <a href="%(url)s>read this</a> first.</em>'
+ description = _('Enable embedding videos. '),
+ help_text = _(
+ '<em>Note: please read <a href="%(url)s">read this</a> first.</em>'
) % {'url': const.DEPENDENCY_URLS['embedding-video']}
)
)
@@ -89,6 +89,57 @@ settings.register(
)
settings.register(
+ livesettings.IntegerValue(
+ FORUM_DATA_RULES,
+ 'MIN_TITLE_LENGTH',
+ default=10,
+ description=_('Minimum length of title (number of characters)')
+ )
+)
+
+settings.register(
+ livesettings.IntegerValue(
+ FORUM_DATA_RULES,
+ 'MIN_QUESTION_BODY_LENGTH',
+ default=10,
+ description=_(
+ 'Minimum length of question body (number of characters)'
+ )
+ )
+)
+
+settings.register(
+ livesettings.IntegerValue(
+ FORUM_DATA_RULES,
+ 'MIN_ANSWER_BODY_LENGTH',
+ default=10,
+ description=_(
+ 'Minimum length of answer body (number of characters)'
+ )
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ FORUM_DATA_RULES,
+ 'LIMIT_ONE_ANSWER_PER_USER',
+ default = True,
+ description = _(
+ 'Limit one answer per question per user'
+ )
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ FORUM_DATA_RULES,
+ 'TAGS_ARE_REQUIRED',
+ description = _('Are tags required?'),
+ default = False,
+ )
+)
+
+settings.register(
livesettings.StringValue(
FORUM_DATA_RULES,
'MANDATORY_TAGS',
@@ -109,11 +160,11 @@ settings.register(
default = False,
description = _('Force lowercase the tags'),
help_text = _(
- 'Attention: after checking this, please back up the database, '
- 'and run a management command: '
- '<code>python manage.py fix_question_tags</code> to globally '
- 'rename the tags'
- )
+ 'Attention: after checking this, please back up the database, '
+ 'and run a management command: '
+ '<code>python manage.py fix_question_tags</code> to globally '
+ 'rename the tags'
+ )
)
)
@@ -147,6 +198,44 @@ settings.register(
)
settings.register(
+ livesettings.BooleanValue(
+ FORUM_DATA_RULES,
+ 'SUBSCRIBED_TAG_SELECTOR_ENABLED',
+ default = False,
+ description = _('Use separate set for subscribed tags'),
+ help_text = _(
+ 'If enabled, users will have a third set of tag selections '
+ '- "subscribed" (by email) in additon to "interesting" '
+ 'and "ignored"'
+ )
+ )
+)
+
+MARKED_TAG_DISPLAY_CHOICES = (
+ ('always', _('Always, for all users')),
+ ('never', _('Never, for all users')),
+ ('when-user-wants', _('Let users decide'))
+)
+settings.register(
+ livesettings.StringValue(
+ FORUM_DATA_RULES,
+ 'MARKED_TAGS_ARE_PUBLIC_WHEN',
+ default = 'always',
+ choices = MARKED_TAG_DISPLAY_CHOICES,
+ description = _('Publicly show user tag selections')
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ FORUM_DATA_RULES,
+ 'TAG_SEARCH_INPUT_ENABLED',
+ default = False,
+ description = _('Enable separate tag search box on main page')
+ )
+)
+
+settings.register(
livesettings.IntegerValue(
FORUM_DATA_RULES,
'MAX_COMMENTS_TO_SHOW',
diff --git a/askbot/conf/group_settings.py b/askbot/conf/group_settings.py
new file mode 100644
index 00000000..b3c0069c
--- /dev/null
+++ b/askbot/conf/group_settings.py
@@ -0,0 +1,32 @@
+"""Group settings"""
+from askbot.conf.settings_wrapper import settings
+from askbot.conf.super_groups import LOGIN_USERS_COMMUNICATION
+from askbot.deps import livesettings
+from django.utils.translation import ugettext as _
+
+GROUP_SETTINGS = livesettings.ConfigurationGroup(
+ 'GROUP_SETTINGS',
+ _('Group settings'),
+ super_group = LOGIN_USERS_COMMUNICATION
+ )
+
+settings.register(
+ livesettings.BooleanValue(
+ GROUP_SETTINGS,
+ 'GROUPS_ENABLED',
+ default = False,
+ description = _('Enable user groups'),
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ GROUP_SETTINGS,
+ 'GROUP_EMAIL_ADDRESSES_ENABLED',
+ default = False,
+ description = _('Enable group email adddresses'),
+ help_text = _(
+ 'If selected, users can post to groups by email "group-name@domain.com"'
+ )
+ )
+)
diff --git a/askbot/conf/karma_and_badges_visibility.py b/askbot/conf/karma_and_badges_visibility.py
new file mode 100644
index 00000000..4c75cb22
--- /dev/null
+++ b/askbot/conf/karma_and_badges_visibility.py
@@ -0,0 +1,50 @@
+"""
+Settings for making the karma and badge systems visible to
+the users at a different degree
+"""
+from django.utils.translation import ugettext as _
+from askbot.conf.settings_wrapper import settings
+from askbot.deps import livesettings
+from askbot.conf.super_groups import REP_AND_BADGES
+
+KARMA_AND_BADGE_VISIBILITY = livesettings.ConfigurationGroup(
+ 'KARMA_AND_BADGE_VISIBILITY',
+ _('Karma & Badge visibility'),
+ super_group = REP_AND_BADGES
+ )
+
+
+settings.register(
+ livesettings.StringValue(
+ KARMA_AND_BADGE_VISIBILITY,
+ 'KARMA_MODE',
+ default = 'public',
+ choices = (
+ ('public', 'show publicly'),
+ ('private', 'show to owners only'),
+ ('hidden', 'hide completely'),
+ ),#todo: later implement hidden mode
+ description = _("Visibility of karma"),
+ clear_cache = True,
+ help_text = _(
+ "User's karma may be shown publicly or only to the owners"
+ )
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ KARMA_AND_BADGE_VISIBILITY,
+ 'BADGES_MODE',
+ default = 'public',
+ choices = (
+ ('public', 'show publicly'),
+ ('hidden', 'hide completely')
+ ),#todo: later implement private mode
+ description = _("Visibility of badges"),
+ clear_cache = True,
+ help_text = _(
+ 'Badges can be either publicly shown or completely hidden'
+ )
+ )
+)
diff --git a/askbot/conf/ldap.py b/askbot/conf/ldap.py
new file mode 100644
index 00000000..077ff792
--- /dev/null
+++ b/askbot/conf/ldap.py
@@ -0,0 +1,93 @@
+"""Settings for LDAP login for Askbot"""
+from askbot.conf.settings_wrapper import settings
+from askbot.conf.super_groups import EXTERNAL_SERVICES
+from askbot.deps import livesettings
+from django.utils.translation import ugettext as _
+
+LDAP_SETTINGS = livesettings.ConfigurationGroup(
+ 'LDAP_SETTINGS',
+ _('LDAP login configuration'),
+ super_group = EXTERNAL_SERVICES
+ )
+
+settings.register(
+ livesettings.BooleanValue(
+ LDAP_SETTINGS,
+ 'USE_LDAP_FOR_PASSWORD_LOGIN',
+ description=_('Use LDAP authentication for the password login'),
+ defaut=False
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_URL',
+ description=_('LDAP URL'),
+ default="ldap://<host>:<port>"
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_BASEDN',
+ description=_('LDAP BASE DN')
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_SEARCH_SCOPE',
+ description=_('LDAP Search Scope'),
+ default="subs"
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_USERID_FIELD',
+ description=_('LDAP Server USERID field name'),
+ default="uid"
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_COMMONNAME_FIELD',
+ description=_('LDAP Server "Common Name" field name'),
+ default="cn"
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
+ LDAP_SETTINGS,
+ 'LDAP_EMAIL_FIELD',
+ description=_('LDAP Server EMAIL field name'),
+ default="mail"
+ )
+)
+
+# May be necessary, but not handled properly.
+# --> Commenting out until handled properly in backends.ldap_authenticate()
+#settings.register(
+# livesettings.StringValue(
+# LDAP_SETTINGS,
+# 'LDAP_PROXYDN',
+# description=_('LDAP PROXY DN'),
+# default=""
+# )
+#)
+#
+#settings.register(
+# livesettings.StringValue(
+# LDAP_SETTINGS,
+# 'LDAP_PROXYDN_PASSWORD',
+# description=_('LDAP PROXY DN Password'),
+# defalut="",
+# )
+#)
diff --git a/askbot/conf/leading_sidebar.py b/askbot/conf/leading_sidebar.py
new file mode 100644
index 00000000..b3909961
--- /dev/null
+++ b/askbot/conf/leading_sidebar.py
@@ -0,0 +1,38 @@
+"""
+Sidebar settings
+"""
+from askbot.conf.settings_wrapper import settings
+from askbot.deps.livesettings import ConfigurationGroup
+from askbot.deps.livesettings import values
+from django.utils.translation import ugettext as _
+from askbot.conf.super_groups import CONTENT_AND_UI
+
+LEADING_SIDEBAR = ConfigurationGroup(
+ 'LEADING_SIDEBAR',
+ _('Common left sidebar'),
+ super_group = CONTENT_AND_UI
+ )
+
+settings.register(
+ values.BooleanValue(
+ LEADING_SIDEBAR,
+ 'ENABLE_LEADING_SIDEBAR',
+ description = _('Enable left sidebar'),
+ default = False,
+ )
+)
+
+settings.register(
+ values.LongStringValue(
+ LEADING_SIDEBAR,
+ 'LEADING_SIDEBAR',
+ description = _('HTML for the left sidebar'),
+ default = '',
+ help_text = _(
+ 'Use this area to enter content at the LEFT sidebar'
+ 'in HTML format. When using this option, please '
+ 'use the HTML validation service to make sure that '
+ 'your input is valid and works well in all browsers.'
+ )
+ )
+)
diff --git a/askbot/conf/license.py b/askbot/conf/license.py
index 20a2743f..453213c4 100644
--- a/askbot/conf/license.py
+++ b/askbot/conf/license.py
@@ -10,7 +10,7 @@ from django.conf import settings as django_settings
LICENSE_SETTINGS = livesettings.ConfigurationGroup(
'LICENSE_SETTINGS',
- _('Content LicensContent License'),
+ _('Content License'),
super_group = CONTENT_AND_UI
)
@@ -76,8 +76,6 @@ settings.register(
LICENSE_SETTINGS,
'LICENSE_LOGO_URL',
description = _('License logo image'),
- upload_directory = django_settings.ASKBOT_FILE_UPLOAD_DIR,
- upload_url = '/' + django_settings.ASKBOT_UPLOADED_FILES_URL,
default = '/images/cc-by-sa.png',
url_resolver = skin_utils.get_media_url
)
diff --git a/askbot/conf/login_providers.py b/askbot/conf/login_providers.py
index b6073eea..23f1a86d 100644
--- a/askbot/conf/login_providers.py
+++ b/askbot/conf/login_providers.py
@@ -27,7 +27,7 @@ settings.register(
livesettings.BooleanValue(
LOGIN_PROVIDERS,
'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN',
- default = False,
+ default = True,
description=_('Always display local login form and hide "Askbot" button.'),
)
)
@@ -56,8 +56,6 @@ settings.register(
livesettings.ImageValue(
LOGIN_PROVIDERS,
'WORDPRESS_SITE_ICON',
- upload_directory=django_settings.ASKBOT_FILE_UPLOAD_DIR,
- upload_url='/' + django_settings.ASKBOT_UPLOADED_FILES_URL,
default='/images/logo.gif',
description=_('Upload your icon'),
url_resolver=skin_utils.get_media_url
diff --git a/askbot/conf/minimum_reputation.py b/askbot/conf/minimum_reputation.py
index d184be0b..54ba0f65 100644
--- a/askbot/conf/minimum_reputation.py
+++ b/askbot/conf/minimum_reputation.py
@@ -18,7 +18,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_VOTE_UP',
- default=15,
+ default=5,
description=_('Upvote')
)
)
@@ -27,7 +27,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_VOTE_DOWN',
- default=100,
+ default=50,
description=_('Downvote')
)
)
@@ -36,7 +36,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_ANSWER_OWN_QUESTION',
- default=25,
+ default=5,
description=_('Answer own question immediately')
)
)
@@ -45,7 +45,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_ACCEPT_OWN_ANSWER',
- default=50,
+ default=20,
description=_('Accept own answer')
)
)
@@ -54,7 +54,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_FLAG_OFFENSIVE',
- default=15,
+ default=5,
description=_('Flag offensive')
)
)
@@ -63,7 +63,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_LEAVE_COMMENTS',
- default=50,
+ default=10,
description=_('Leave comments')
)
)
@@ -72,7 +72,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_DELETE_OTHERS_COMMENTS',
- default=2000,
+ default=200,
description=_('Delete comments posted by others')
)
)
@@ -81,7 +81,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_DELETE_OTHERS_POSTS',
- default=5000,
+ default=500,
description=_('Delete questions and answers posted by others')
)
)
@@ -90,7 +90,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_UPLOAD_FILES',
- default=60,
+ default=10,
description=_('Upload files')
)
)
@@ -99,7 +99,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_CLOSE_OWN_QUESTIONS',
- default=250,
+ default=25,
description=_('Close own questions'),
)
)
@@ -108,7 +108,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_RETAG_OTHERS_QUESTIONS',
- default=500,
+ default=50,
description=_('Retag questions posted by other people')
)
)
@@ -117,7 +117,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_REOPEN_OWN_QUESTIONS',
- default=500,
+ default=50,
description=_('Reopen own questions')
)
)
@@ -126,7 +126,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_EDIT_WIKI',
- default=750,
+ default=75,
description=_('Edit community wiki posts')
)
)
@@ -135,7 +135,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_EDIT_OTHERS_POSTS',
- default=2000,
+ default=200,
description=_('Edit posts authored by other people')
)
)
@@ -144,7 +144,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS',
- default=2000,
+ default=200,
description=_('View offensive flags')
)
)
@@ -153,7 +153,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS',
- default=2000,
+ default=200,
description=_('Close questions asked by others')
)
)
@@ -162,7 +162,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_LOCK_POSTS',
- default=4000,
+ default=400,
description=_('Lock posts')
)
)
@@ -171,7 +171,7 @@ settings.register(
livesettings.IntegerValue(
MIN_REP,
'MIN_REP_TO_HAVE_STRONG_URL',
- default=250,
+ default=25,
description=_('Remove rel=nofollow from own homepage'),
help_text=_(
'When a search engine crawler will see a rel=nofollow '
@@ -180,3 +180,13 @@ settings.register(
)
)
)
+
+
+settings.register(
+ livesettings.IntegerValue(
+ MIN_REP,
+ 'MIN_REP_TO_POST_BY_EMAIL',
+ default=100,
+ description=_('Post answers and comments by email')
+ )
+)
diff --git a/askbot/conf/moderation.py b/askbot/conf/moderation.py
new file mode 100644
index 00000000..9f8e24c7
--- /dev/null
+++ b/askbot/conf/moderation.py
@@ -0,0 +1,22 @@
+"""Settings to control content moderation"""
+
+from askbot.conf.settings_wrapper import settings
+from askbot.conf.super_groups import DATA_AND_FORMATTING
+from askbot.deps.livesettings import ConfigurationGroup
+from askbot.deps.livesettings import BooleanValue
+from django.utils.translation import ugettext as _
+
+MODERATION = ConfigurationGroup(
+ 'MODERATION',
+ _('Content moderation'),
+ super_group = DATA_AND_FORMATTING
+ )
+
+settings.register(
+ BooleanValue(
+ MODERATION,
+ 'ENABLE_CONTENT_MODERATION',
+ default = False,
+ description = _('Enable content moderation'),
+ )
+)
diff --git a/askbot/conf/reputation_changes.py b/askbot/conf/reputation_changes.py
index 40475a8b..996d7cce 100644
--- a/askbot/conf/reputation_changes.py
+++ b/askbot/conf/reputation_changes.py
@@ -114,7 +114,7 @@ settings.register(
IntegerValue(
REP_CHANGES,
'REP_LOSS_FOR_RECEIVING_DOWNVOTE',
- default=-1,
+ default=-10,
description=_('Loss for owner of post that was downvoted')
)
)
diff --git a/askbot/conf/settings_wrapper.py b/askbot/conf/settings_wrapper.py
index 9405ff09..b6b5f302 100644
--- a/askbot/conf/settings_wrapper.py
+++ b/askbot/conf/settings_wrapper.py
@@ -58,8 +58,15 @@ class ConfigSettings(object):
self.update(key, self.get_default(key))
def update(self, key, value):
- setting = config_get(self.__group_map[key], key)
- setting.update(value)
+ try:
+ setting = config_get(self.__group_map[key], key)
+ setting.update(value)
+ except:
+ from askbot.deps.livesettings.models import Setting
+ setting = Setting.objects.get(key=key)
+ setting.value = value
+ setting.save()
+ #self.prime_cache()
def register(self, value):
"""registers the setting
diff --git a/askbot/conf/sidebar_question.py b/askbot/conf/sidebar_question.py
index 4416823d..bb71be7e 100644
--- a/askbot/conf/sidebar_question.py
+++ b/askbot/conf/sidebar_question.py
@@ -6,21 +6,35 @@ from askbot.deps.livesettings import ConfigurationGroup
from askbot.deps.livesettings import values
from django.utils.translation import ugettext as _
from askbot.conf.super_groups import CONTENT_AND_UI
-SIDEBAR_QUESTION = ConfigurationGroup(
+SIDEBAR_QUESTION = ConfigurationGroup(#shitty name - why sidebar?
'SIDEBAR_QUESTION',
- _('Question page sidebar'),
+ _('Question page banners and sidebar'),
super_group = CONTENT_AND_UI
)
settings.register(
values.LongStringValue(
SIDEBAR_QUESTION,
+ 'QUESTION_PAGE_TOP_BANNER',
+ description = _('Top banner'),
+ default = '',
+ help_text = _(
+ 'When using this option, please '
+ 'use the HTML validation service to make sure that '
+ 'your input is valid and works well in all browsers.'
+ )
+ )
+)
+
+settings.register(
+ values.LongStringValue(
+ SIDEBAR_QUESTION,
'SIDEBAR_QUESTION_HEADER',
description = _('Custom sidebar header'),
default = '',
help_text = _(
'Use this area to enter content at the TOP of the sidebar'
- 'in HTML format. When using this option '
+ 'in HTML format. When using this option '
'(as well as the sidebar footer), please '
'use the HTML validation service to make sure that '
'your input is valid and works well in all browsers.'
diff --git a/askbot/conf/site_modes.py b/askbot/conf/site_modes.py
index a88103b4..8ed86f12 100644
--- a/askbot/conf/site_modes.py
+++ b/askbot/conf/site_modes.py
@@ -9,35 +9,35 @@ from askbot.conf.super_groups import REP_AND_BADGES
from askbot.deps.livesettings import ConfigurationGroup, BooleanValue
from django.utils.translation import ugettext as _
-BOOTSTRAP_MODE_SETTINGS = {
+LARGE_SITE_MODE_SETTINGS = {
#minimum reputation settins.
- 'MIN_REP_TO_VOTE_UP': 5,
- 'MIN_REP_TO_VOTE_DOWN': 50,
- 'MIN_REP_TO_ANSWER_OWN_QUESTION': 5,
- 'MIN_REP_TO_ACCEPT_OWN_ANSWER': 20,
- 'MIN_REP_TO_FLAG_OFFENSIVE': 5,
- 'MIN_REP_TO_LEAVE_COMMENTS': 10,
- 'MIN_REP_TO_DELETE_OTHERS_COMMENTS': 200,
- 'MIN_REP_TO_DELETE_OTHERS_POSTS': 500,
- 'MIN_REP_TO_UPLOAD_FILES': 10,
- 'MIN_REP_TO_CLOSE_OWN_QUESTIONS': 25,
- 'MIN_REP_TO_RETAG_OTHERS_QUESTIONS': 50,
- 'MIN_REP_TO_REOPEN_OWN_QUESTIONS': 50,
- 'MIN_REP_TO_EDIT_WIKI': 75,
- 'MIN_REP_TO_EDIT_OTHERS_POSTS': 200,
- 'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS': 200,
- 'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS': 200,
- 'MIN_REP_TO_LOCK_POSTS': 400,
- 'MIN_REP_TO_HAVE_STRONG_URL': 25,
+ 'MIN_REP_TO_VOTE_UP': 15,
+ 'MIN_REP_TO_VOTE_DOWN': 100,
+ 'MIN_REP_TO_ANSWER_OWN_QUESTION': 25,
+ 'MIN_REP_TO_ACCEPT_OWN_ANSWER': 50,
+ 'MIN_REP_TO_FLAG_OFFENSIVE': 15,
+ 'MIN_REP_TO_LEAVE_COMMENTS': 50,
+ 'MIN_REP_TO_DELETE_OTHERS_COMMENTS': 2000,
+ 'MIN_REP_TO_DELETE_OTHERS_POSTS': 5000,
+ 'MIN_REP_TO_UPLOAD_FILES': 60,
+ 'MIN_REP_TO_CLOSE_OWN_QUESTIONS': 250,
+ 'MIN_REP_TO_RETAG_OTHERS_QUESTIONS': 500,
+ 'MIN_REP_TO_REOPEN_OWN_QUESTIONS': 500,
+ 'MIN_REP_TO_EDIT_WIKI': 750,
+ 'MIN_REP_TO_EDIT_OTHERS_POSTS': 2000,
+ 'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS': 2000,
+ 'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS': 2000,
+ 'MIN_REP_TO_LOCK_POSTS': 4000,
+ 'MIN_REP_TO_HAVE_STRONG_URL': 250,
#badge settings
- 'NOTABLE_QUESTION_BADGE_MIN_VIEWS': 25,
- 'POPULAR_QUESTION_BADGE_MIN_VIEWS': 15,
- 'FAMOUS_QUESTION_BADGE_MIN_VIEWS': 50,
- 'ENTHUSIAST_BADGE_MIN_DAYS': 5,
- 'TAXONOMIST_BADGE_MIN_USE_COUNT': 5,
+ 'NOTABLE_QUESTION_BADGE_MIN_VIEWS': 250,
+ 'POPULAR_QUESTION_BADGE_MIN_VIEWS': 150,
+ 'FAMOUS_QUESTION_BADGE_MIN_VIEWS': 500,
+ 'ENTHUSIAST_BADGE_MIN_DAYS': 30,
+ 'TAXONOMIST_BADGE_MIN_USE_COUNT': 10,
#moderation rule settings
- 'MIN_FLAGS_TO_HIDE_POST': 2,
- 'MIN_FLAGS_TO_DELETE_POST': 3,
+ 'MIN_FLAGS_TO_HIDE_POST': 3,
+ 'MIN_FLAGS_TO_DELETE_POST': 5,
}
def bootstrap_callback(current_value, new_value):
@@ -49,11 +49,11 @@ def bootstrap_callback(current_value, new_value):
return new_value
if new_value == True:
- for key, value in BOOTSTRAP_MODE_SETTINGS.items():
+ for key, value in LARGE_SITE_MODE_SETTINGS.items():
settings.update(key, value)
else:
- for key in BOOTSTRAP_MODE_SETTINGS:
+ for key in LARGE_SITE_MODE_SETTINGS:
settings.reset(key)
return new_value
@@ -68,17 +68,17 @@ SITE_MODES = ConfigurationGroup(
settings.register(
BooleanValue(
SITE_MODES,
- 'ACTIVATE_BOOTSTRAP_MODE',
+ 'ACTIVATE_LARGE_SITE_MODE',
default=False,
description=_(
- 'Activate a "Bootstrap" mode'),
+ 'Activate a "Large site" mode'),
help_text=_(
- "Bootstrap mode lowers reputation and certain badge "
+ "\"Large site\" mode increases reputation and certain badge "
"thresholds, to values, more suitable "
- "for the smaller communities, "
- "<strong>WARNING:</strong> your current value for "
+ "for the larger communities, "
+ "<strong>WARNING:</strong> your current values for "
"Minimum reputation, "
- "Bagde Settings and "
+ "Badge Settings and "
"Vote Rules will "
"be changed after you modify this setting."
),
diff --git a/askbot/conf/site_settings.py b/askbot/conf/site_settings.py
index 8cd73b3d..c64ea952 100644
--- a/askbot/conf/site_settings.py
+++ b/askbot/conf/site_settings.py
@@ -63,7 +63,6 @@ settings.register(
livesettings.StringValue(
QA_SITE_SETTINGS,
'APP_URL',
- default='http://askbot.org',
description=_(
'Base URL for your Q&A forum, must start with '
'http or https'
diff --git a/askbot/conf/skin_counter_settings.py b/askbot/conf/skin_counter_settings.py
deleted file mode 100644
index 7601a7a7..00000000
--- a/askbot/conf/skin_counter_settings.py
+++ /dev/null
@@ -1,264 +0,0 @@
-"""
-Skin settings to color view, vote and answer counters
-"""
-from askbot.conf.settings_wrapper import settings
-from askbot.deps.livesettings import ConfigurationGroup, IntegerValue, StringValue
-from django.utils.translation import ugettext as _
-from askbot.deps.grapefruit import Color
-
-SKIN_COUNTER_SETTINGS = ConfigurationGroup(
- 'SKIN_COUNTER_SETTINGS',
- _('Skin: view, vote and answer counters')
- )
-
-settings.register(
- IntegerValue(
- SKIN_COUNTER_SETTINGS,
- 'VOTE_COUNTER_EXPECTED_MAXIMUM',
- default=3,
- description=_('Vote counter value to give "full color"'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_EMPTY_BG',
- default='white',
- description=_('Background color for votes = 0'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_EMPTY_FG',
- default='gray',
- description=_('Foreground color for votes = 0'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_MIN_BG',
- default='#a3d0ff',
- description=_('Background color for votes'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_MIN_FG',
- default='#4a4a4a',
- description=_('Foreground color for votes'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_MAX_BG',
- default='#a9d0f5',
- description=_('Background color for votes = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VOTE_COUNTER_MAX_FG',
- default=Color.NewFromHtml(
- '#a9d0f5'
- ).DarkerColor(0.7).html,
- description=_('Foreground color for votes = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- IntegerValue(
- SKIN_COUNTER_SETTINGS,
- 'VIEW_COUNTER_EXPECTED_MAXIMUM',
- default=100,
- description=_('View counter value to give "full color"'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_EMPTY_BG',
- default='gray',
- description=_('Background color for views = 0'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_EMPTY_FG',
- default='white',
- description=_('Foreground color for views = 0'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_MIN_BG',
- default='#ff8c8c',
- description=_('Background color for views'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_MIN_FG',
- default='#4a4a4a',
- description=_('Foreground color for views'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_MAX_BG',
- default='#FF8000',
- description=_('Background color for views = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_VIEW_COUNTER_MAX_FG',
- default=Color.NewFromHtml(
- '#ff8000'
- ).DarkerColor(
- 0.7
- ).html,
- description=_('Foreground color for views = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- IntegerValue(
- SKIN_COUNTER_SETTINGS,
- 'ANSWER_COUNTER_EXPECTED_MAXIMUM',
- default=4,
- description=_('Answer counter value to give "full color"'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_EMPTY_BG',
- default=Color.NewFromHtml('#a40000').Blend(
- Color.NewFromHtml('white'),0.8
- ).html,
- description=_('Background color for answers = 0'),
- help_text=_('HTML color name or hex value'),
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_EMPTY_FG',
- default='yellow',
- description=_('Foreground color for answers = 0'),
- help_text=_('HTML color name or hex value'),
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_MIN_BG',
- default='#ffed9c',
- description=_('Background color for answers'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_MIN_FG',
- default='#a4a4a4',
- description=_('Foreground color for answers'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_MAX_BG',
- default=Color.NewFromHtml('#61380B').Blend(
- Color.NewFromHtml('white'),0.75
- ).html,
- description=_('Background color for answers = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_MAX_FG',
- default='#ffff00',
- description=_('Foreground color for answers = MAX'),
- help_text=_('HTML color name or hex value'),
- hidden=True,
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_ACCEPTED_BG',
- default=Color.NewFromHtml('darkgreen').Blend(
- Color.NewFromHtml('white'),0.8
- ).html,
- description=_('Background color for accepted'),
- help_text=_('HTML color name or hex value')
- )
-)
-
-settings.register(
- StringValue(
- SKIN_COUNTER_SETTINGS,
- 'COLORS_ANSWER_COUNTER_ACCEPTED_FG',
- default='#D0F5A9',
- description=_('Foreground color for accepted answer'),
- help_text=_('HTML color name or hex value')
- )
-)
diff --git a/askbot/conf/skin_general_settings.py b/askbot/conf/skin_general_settings.py
index 1bdb5887..323550ce 100644
--- a/askbot/conf/skin_general_settings.py
+++ b/askbot/conf/skin_general_settings.py
@@ -12,7 +12,7 @@ from askbot.conf.super_groups import CONTENT_AND_UI
GENERAL_SKIN_SETTINGS = ConfigurationGroup(
'GENERAL_SKIN_SETTINGS',
- _('Logos and HTML <head> parts'),
+ _('Skin, logos and HTML <head> parts'),
super_group = CONTENT_AND_UI
)
@@ -25,13 +25,47 @@ settings.register(
'To change the logo, select new file, '
'then submit this whole form.'
),
- upload_directory = django_settings.ASKBOT_FILE_UPLOAD_DIR,
- upload_url = '/' + django_settings.ASKBOT_UPLOADED_FILES_URL,
default = '/images/logo.gif',
url_resolver = skin_utils.get_media_url
)
)
+LANGUAGE_CHOICES = (
+ ('en', _("English")),
+ ('es', _("Spanish")),
+ ('ca', _("Catalan")),
+ ('de', _("German")),
+ ('el', _("Greek")),
+ ('fi', _("Finnish")),
+ ('fr', _("French")),
+ ('hi', _("Hindi")),
+ ('hu', _("Hungarian")),
+ ('it', _("Italian")),
+ ('ja', _("Japanese")),
+ ('ko', _("Korean")),
+ ('pt', _("Portuguese")),
+ ('pt_BR', _("Brazilian Portuguese")),
+ ('ro', _("Romanian")),
+ ('ru', _("Russian")),
+ ('sr', _("Serbian")),
+ ('tr', _("Turkish")),
+ ('vi', _("Vietnamese")),
+ ('zh_CN', _("Chinese")),
+ ('zh_TW', _("Chinese (Taiwan)")),
+ )
+
+"""
+settings.register(
+ values.StringValue(
+ GENERAL_SKIN_SETTINGS,
+ 'ASKBOT_LANGUAGE',
+ default = 'en',
+ choices = LANGUAGE_CHOICES,
+ description = _('Select Language'),
+ )
+)
+"""
+
settings.register(
values.BooleanValue(
GENERAL_SKIN_SETTINGS,
@@ -58,9 +92,7 @@ settings.register(
'about favicon '
'at <a href="%(favicon_info_url)s">this page</a>.'
) % {'favicon_info_url': const.DEPENDENCY_URLS['favicon']},
- upload_directory = django_settings.ASKBOT_FILE_UPLOAD_DIR,
allowed_file_extensions = ('ico',),#only allow .ico files
- upload_url = '/' + django_settings.ASKBOT_UPLOADED_FILES_URL,
default = '/images/favicon.gif',
url_resolver = skin_utils.get_media_url
)
@@ -75,8 +107,6 @@ settings.register(
'An 88x38 pixel image that is used on the login screen '
'for the password login button.'
),
- upload_directory = django_settings.ASKBOT_FILE_UPLOAD_DIR,
- upload_url = '/' + django_settings.ASKBOT_UPLOADED_FILES_URL,
default = '/images/pw-login.gif',
url_resolver = skin_utils.get_media_url
)
@@ -204,7 +234,7 @@ settings.register(
description = _('Apply custom style sheet (CSS)'),
help_text = _(
'Check if you want to change appearance '
- 'of your form by adding custom style sheet rules '
+ 'of your form by adding custom style sheet rules '
'(please see the next item)'
),
default = False
@@ -220,7 +250,7 @@ settings.register(
'<strong>To use this function</strong>, check '
'"Apply custom style sheet" option above. '
'The CSS rules added in this window will be applied '
- 'after the default style sheet rules. '
+ 'after the default style sheet rules. '
'The custom style sheet will be served dynamically at '
'url "&lt;forum url&gt;/custom.css", where '
'the "&lt;forum url&gt; part depends (default is '
diff --git a/askbot/conf/user_settings.py b/askbot/conf/user_settings.py
index 1fdfb42f..9077a720 100644
--- a/askbot/conf/user_settings.py
+++ b/askbot/conf/user_settings.py
@@ -4,6 +4,8 @@ User policy settings
from askbot.conf.settings_wrapper import settings
from askbot.conf.super_groups import LOGIN_USERS_COMMUNICATION
from askbot.deps import livesettings
+from django.conf import settings as django_settings
+from askbot.skins import utils as skin_utils
from django.utils.translation import ugettext as _
from askbot import const
@@ -25,6 +27,15 @@ settings.register(
settings.register(
livesettings.BooleanValue(
USER_SETTINGS,
+ 'EDITABLE_EMAIL',
+ default = True,
+ description = _('Allow users change own email addresses')
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ USER_SETTINGS,
'ALLOW_ACCOUNT_RECOVERY_BY_EMAIL',
default = True,
description = _('Allow account recovery by email')
@@ -51,6 +62,33 @@ settings.register(
)
settings.register(
+ livesettings.ImageValue(
+ USER_SETTINGS,
+ 'DEFAULT_AVATAR_URL',
+ description = _('Default avatar for users'),
+ help_text = _(
+ 'To change the avatar image, select new file, '
+ 'then submit this whole form.'
+ ),
+ default = '/images/nophoto.png',
+ url_resolver = skin_utils.get_media_url
+ )
+)
+
+settings.register(
+ livesettings.BooleanValue(
+ USER_SETTINGS,
+ 'ENABLE_GRAVATAR',
+ default = True,
+ description = _('Use automatic avatars from gravatar.com'),
+ help_text=_(
+ 'Check this option if you want to allow the use of gravatar.com for avatars. Please, note that this feature might take about 10 minutes to become fully effective. You will have to enable uploaded avatars as well. For more information, please visit <a href="http://askbot.org/doc/optional-modules.html#uploaded-avatars">this page</a>.'
+ )
+ )
+)
+
+
+settings.register(
livesettings.StringValue(
USER_SETTINGS,
'GRAVATAR_TYPE',
diff --git a/askbot/conf/vote_rules.py b/askbot/conf/vote_rules.py
index 82c9b758..7bafe32f 100644
--- a/askbot/conf/vote_rules.py
+++ b/askbot/conf/vote_rules.py
@@ -65,7 +65,7 @@ settings.register(
IntegerValue(
VOTE_RULES,
'MIN_FLAGS_TO_HIDE_POST',
- default=3,
+ default=2,
description=_('Number of flags required to automatically hide posts')
)
)
@@ -74,7 +74,7 @@ settings.register(
IntegerValue(
VOTE_RULES,
'MIN_FLAGS_TO_DELETE_POST',
- default=5,
+ default=3,
description=_('Number of flags required to automatically delete posts')
)
)
diff --git a/askbot/const/__init__.py b/askbot/const/__init__.py
index 764a3234..e693a63c 100644
--- a/askbot/const/__init__.py
+++ b/askbot/const/__init__.py
@@ -6,6 +6,7 @@ text in this project, all unicode text go here.
"""
from django.utils.translation import ugettext as _
import re
+
CLOSE_REASONS = (
(1, _('duplicate question')),
(2, _('question is off-topic or not relevant')),
@@ -18,6 +19,9 @@ CLOSE_REASONS = (
(9, _('too localized')),
)
+LONG_TIME = 60*60*24*30 #30 days is a lot of time
+DATETIME_FORMAT = '%I:%M %p, %d %b %Y'
+
TYPE_REPUTATION = (
(1, 'gain_by_upvoted'),
(2, 'gain_by_answer_accepted'),
@@ -48,6 +52,58 @@ POST_SORT_METHODS = (
('votes-asc', _('least voted')),
('relevance-desc', _('relevance')),
)
+
+POST_TYPES = ('answer', 'comment', 'question', 'tag_wiki', 'reject_reason')
+
+SIMPLE_REPLY_SEPARATOR_TEMPLATE = '==== %s -=-=='
+
+#values for SELF_NOTIFY_WHEN... settings use bits
+NEVER = 'never'
+FOR_FIRST_REVISION = 'first'
+FOR_ANY_REVISION = 'any'
+SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN_CHOICES = (
+ (NEVER, _('Never')),
+ (FOR_FIRST_REVISION, _('When new post is published')),
+ (FOR_ANY_REVISION, _('When post is published or revised')),
+)
+#need more options for web posts b/c user is looking at the page
+#when posting. when posts are made by email - user is not looking
+#at the site and therefore won't get any feedback unless an email is sent back
+#todo: rename INITIAL -> FIRST and make values of type string
+#FOR_INITIAL_REVISION_WHEN_APPROVED = 1
+#FOR_ANY_REVISION_WHEN_APPROVED = 2
+#FOR_INITIAL_REVISION_ALWAYS = 3
+#FOR_ANY_REVISION_ALWAYS = 4
+#SELF_NOTIFY_WEB_POST_AUTHOR_WHEN_CHOICES = (
+# (NEVER, _('Never')),
+# (
+# FOR_INITIAL_REVISION_WHEN_APPROVED,
+# _('When inital revision is approved by moderator')
+# ),
+# (
+# FOR_ANY_REVISION_WHEN_APPROVED,
+# _('When any revision is approved by moderator')
+# ),
+# (
+# FOR_INITIAL_REVISION_ALWAYS,
+# _('Any time when inital revision is published')
+# ),
+# (
+# FOR_ANY_REVISION_ALWAYS,
+# _('Any time when revision is published')
+# )
+#)
+
+REPLY_SEPARATOR_TEMPLATE = '==== %(user_action)s %(instruction)s -=-=='
+REPLY_WITH_COMMENT_TEMPLATE = _(
+ 'Note: to reply with a comment, '
+ 'please use <a href="mailto:%(addr)s?subject=%(subject)s">this link</a>'
+)
+REPLY_SEPARATOR_REGEX = re.compile(r'==== .* -=-==', re.MULTILINE|re.DOTALL)
+
+ANSWER_SORT_METHODS = (#no translations needed here
+ 'latest', 'oldest', 'votes'
+)
#todo: add assertion here that all sort methods are unique
#because they are keys to the hash used in implementations
#of Q.run_advanced_search
@@ -67,12 +123,7 @@ TAG_LIST_FORMAT_CHOICES = (
PAGE_SIZE_CHOICES = (('10', '10',), ('30', '30',), ('50', '50',),)
ANSWERS_PAGE_SIZE = 10
-#todo: remove this duplication
-QUESTIONS_PER_PAGE_USER_CHOICES = (
- (10, u'10'),
- (30, u'30'),
- (50, u'50'),
-)
+QUESTIONS_PER_PAGE_USER_CHOICES = ((10, u'10'), (30, u'30'), (50, u'50'),)
UNANSWERED_QUESTION_MEANING_CHOICES = (
('NO_ANSWERS', _('Question has no answers')),
@@ -88,9 +139,11 @@ UNANSWERED_QUESTION_MEANING_CHOICES = (
#however it will be hard to expect that people will type
#correct regexes - plus this must be an anchored regex
#to do full string match
-TAG_CHARS = '\w\+\.\-#'
-TAG_REGEX = r'^[%s]+$' % TAG_CHARS
+TAG_CHARS = r'\w+.#-'
+TAG_REGEX_BARE = r'[%s]+' % TAG_CHARS
+TAG_REGEX = r'^%s$' % TAG_REGEX_BARE
TAG_SPLIT_REGEX = r'[ ,]+'
+TAG_SEP = ',' # has to be valid TAG_SPLIT_REGEX char and MUST NOT be in const.TAG_CHARS
EMAIL_REGEX = re.compile(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b', re.I)
TYPE_ACTIVITY_ASK_QUESTION = 1
@@ -114,6 +167,13 @@ TYPE_ACTIVITY_EMAIL_UPDATE_SENT = 18
TYPE_ACTIVITY_MENTION = 19
TYPE_ACTIVITY_UNANSWERED_REMINDER_SENT = 20
TYPE_ACTIVITY_ACCEPT_ANSWER_REMINDER_SENT = 21
+TYPE_ACTIVITY_CREATE_TAG_WIKI = 22
+TYPE_ACTIVITY_UPDATE_TAG_WIKI = 23
+TYPE_ACTIVITY_MODERATED_NEW_POST = 24
+TYPE_ACTIVITY_MODERATED_POST_EDIT = 25
+TYPE_ACTIVITY_CREATE_REJECT_REASON = 26
+TYPE_ACTIVITY_UPDATE_REJECT_REASON = 27
+TYPE_ACTIVITY_VALIDATION_EMAIL_SENT = 28
#TYPE_ACTIVITY_EDIT_QUESTION = 17
#TYPE_ACTIVITY_EDIT_ANSWER = 18
@@ -125,7 +185,7 @@ TYPE_ACTIVITY = (
(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_PRIZE, _('received badge')),
(TYPE_ACTIVITY_MARK_ANSWER, _('marked best answer')),
(TYPE_ACTIVITY_VOTE_UP, _('upvoted')),
(TYPE_ACTIVITY_VOTE_DOWN, _('downvoted')),
@@ -146,6 +206,31 @@ TYPE_ACTIVITY = (
_('reminder about accepting the best answer sent'),
),
(TYPE_ACTIVITY_MENTION, _('mentioned in the post')),
+ (
+ TYPE_ACTIVITY_CREATE_TAG_WIKI,
+ _('created tag description'),
+ ),
+ (
+ TYPE_ACTIVITY_UPDATE_TAG_WIKI,
+ _('updated tag description')
+ ),
+ (TYPE_ACTIVITY_MODERATED_NEW_POST, _('made a new post')),
+ (
+ TYPE_ACTIVITY_MODERATED_POST_EDIT,
+ _('made an edit')
+ ),
+ (
+ TYPE_ACTIVITY_CREATE_REJECT_REASON,
+ _('created post reject reason'),
+ ),
+ (
+ TYPE_ACTIVITY_UPDATE_REJECT_REASON,
+ _('updated post reject reason')
+ ),
+ (
+ TYPE_ACTIVITY_VALIDATION_EMAIL_SENT,
+ 'sent email address validation message'#don't translate, internal
+ ),
)
@@ -196,10 +281,10 @@ assert(
)
TYPE_RESPONSE = {
- 'QUESTION_ANSWERED' : _('question_answered'),
- 'QUESTION_COMMENTED': _('question_commented'),
- 'ANSWER_COMMENTED' : _('answer_commented'),
- 'ANSWER_ACCEPTED' : _('answer_accepted'),
+ 'QUESTION_ANSWERED' : _('answered question'),
+ 'QUESTION_COMMENTED': _('commented question'),
+ 'ANSWER_COMMENTED' : _('commented answer'),
+ 'ANSWER_ACCEPTED' : _('accepted answer'),
}
POST_STATUS = {
@@ -213,10 +298,15 @@ POST_STATUS = {
INCLUDE_ALL = 0
EXCLUDE_IGNORED = 1
INCLUDE_INTERESTING = 2
-TAG_FILTER_STRATEGY_CHOICES = (
- (INCLUDE_ALL, _('off')),
- (EXCLUDE_IGNORED, _('exclude ignored')),
- (INCLUDE_INTERESTING, _('only selected')),
+TAG_DISPLAY_FILTER_STRATEGY_CHOICES = (
+ (INCLUDE_ALL, _('show all tags')),
+ (EXCLUDE_IGNORED, _('exclude ignored tags')),
+ (INCLUDE_INTERESTING, _('only interesting tags')),
+)
+TAG_EMAIL_FILTER_STRATEGY_CHOICES = (
+ (INCLUDE_ALL, _('email for all tags')),
+ (EXCLUDE_IGNORED, _('exclude ignored tags')),
+ (INCLUDE_INTERESTING, _('only subscribed tags')),
)
NOTIFICATION_DELIVERY_SCHEDULE_CHOICES = (
diff --git a/askbot/const/message_keys.py b/askbot/const/message_keys.py
index 12fa0766..9ac82e57 100644
--- a/askbot/const/message_keys.py
+++ b/askbot/const/message_keys.py
@@ -1,10 +1,16 @@
-"""
+'''
This file must hold keys for translatable messages
that are used as variables
it is important that a dummy _() function is used here
this way message key will be pulled into django.po
-and can still be used as a variable in python files
-"""
+and can still be used as a variable in python files.
+
+In addition, some messages are repeated too many times
+in the code, so we need to be able to retreive them
+by a key. Therefore we have a function here, called
+get_i18n_message(). Possibly all messages included in
+this file could be implemented this way.
+'''
_ = lambda v:v
#NOTE: all strings must be explicitly put into this dictionary,
@@ -27,3 +33,24 @@ _('click to see the most answered questions')
_('click to see least voted questions')
_('by votes')
_('click to see most voted questions')
+_('interesting')
+_('ignored')
+_('subscribed')
+
+def get_i18n_message(key):
+ messages = {
+ 'BLOCKED_USERS_CANNOT_POST': _(
+ 'Sorry, your account appears to be blocked and you cannot make new posts '
+ 'until this issue is resolved. Please contact the forum administrator to '
+ 'reach a resolution.'
+ ),
+ 'SUSPENDED_USERS_CANNOT_POST': _(
+ 'Sorry, your account appears to be suspended and you cannot make new posts '
+ 'until this issue is resolved. You can, however edit your existing posts. '
+ 'Please contact the forum administrator to reach a resolution.'
+ )
+ }
+ if key in messages:
+ return messages.get(key)
+ else:
+ raise KeyError(key)
diff --git a/askbot/context.py b/askbot/context.py
index f3665240..03a2d1d8 100644
--- a/askbot/context.py
+++ b/askbot/context.py
@@ -2,6 +2,7 @@
from the django settings, all parameters from the askbot livesettings
and the application available for the templates
"""
+import sys
from django.conf import settings
import askbot
from askbot import api
@@ -12,15 +13,37 @@ from askbot.utils import url_utils
def application_settings(request):
"""The context processor function"""
+ if not request.path.startswith('/' + settings.ASKBOT_URL):
+ #todo: this is a really ugly hack, will only work
+ #when askbot is installed not at the home page.
+ #this will not work for the
+ #heavy modders of askbot, because their custom pages
+ #will not receive the askbot settings in the context
+ #to solve this properly we should probably explicitly
+ #add settings to the context per page
+ return {}
my_settings = askbot_settings.as_dict()
my_settings['LANGUAGE_CODE'] = getattr(request, 'LANGUAGE_CODE', settings.LANGUAGE_CODE)
my_settings['ASKBOT_URL'] = settings.ASKBOT_URL
- my_settings['ASKBOT_CSS_DEVEL'] = getattr(settings, 'ASKBOT_CSS_DEVEL', False)
+ my_settings['STATIC_URL'] = settings.STATIC_URL
+ my_settings['ASKBOT_CSS_DEVEL'] = getattr(
+ settings,
+ 'ASKBOT_CSS_DEVEL',
+ False
+ )
+ my_settings['USE_LOCAL_FONTS'] = getattr(
+ settings,
+ 'ASKBOT_USE_LOCAL_FONTS',
+ False
+ )
my_settings['DEBUG'] = settings.DEBUG
+ my_settings['USING_RUNSERVER'] = 'runserver' in sys.argv
my_settings['ASKBOT_VERSION'] = askbot.get_version()
my_settings['LOGIN_URL'] = url_utils.get_login_url()
my_settings['LOGOUT_URL'] = url_utils.get_logout_url()
my_settings['LOGOUT_REDIRECT_URL'] = url_utils.get_logout_redirect_url()
+ my_settings['USE_ASKBOT_LOGIN_SYSTEM'] = 'askbot.deps.django_authopenid' \
+ in settings.INSTALLED_APPS
return {
'settings': my_settings,
'skin': get_skin(request),
diff --git a/askbot/cron/askbot_cron_job b/askbot/cron/askbot_cron_job
index 38bf0337..04ba2303 100644
--- a/askbot/cron/askbot_cron_job
+++ b/askbot/cron/askbot_cron_job
@@ -9,7 +9,7 @@ PROJECT_PARENT_DIR=/path/to/dir_containing_askbot_site
PROJECT_DIR_NAME=askbot_site
export PYTHONPATH=$PROJECT_PARENT_DIR:$PYTHONPATH
-PROJECT_ROOT=$PYTHONPATH/$PROJECT_NAME
+PROJECT_ROOT=$PROJECT_DIR_NAME/$PROJECT_NAME
#these are actual commands that are to be run
python $PROJECT_ROOT/manage.py send_email_alerts
diff --git a/askbot/deployment/__init__.py b/askbot/deployment/__init__.py
index 6f7a86f6..8832cd01 100644
--- a/askbot/deployment/__init__.py
+++ b/askbot/deployment/__init__.py
@@ -3,6 +3,7 @@ module for deploying askbot
"""
import os.path
import sys
+import django
from optparse import OptionParser
from askbot.utils import console
from askbot.deployment import messages
@@ -126,6 +127,12 @@ def deploy_askbot(directory, options):
path_utils.create_path(directory)
+ if django.VERSION[0] == 1 and django.VERSION[1] < 3:
+ #force people install the django-staticfiles app
+ context['staticfiles_app'] = ''
+ else:
+ context['staticfiles_app'] = "'django.contrib.staticfiles',"
+
path_utils.deploy_into(
directory,
new_project = create_new_project,
diff --git a/askbot/deployment/path_utils.py b/askbot/deployment/path_utils.py
index e0704a96..caefa2a9 100644
--- a/askbot/deployment/path_utils.py
+++ b/askbot/deployment/path_utils.py
@@ -154,7 +154,7 @@ def deploy_into(directory, new_project = False, verbosity = 1, context = None):
"""
assert(isinstance(new_project, bool))
if new_project:
- copy_files = ('__init__.py', 'manage.py', 'urls.py')
+ copy_files = ('__init__.py', 'manage.py', 'urls.py', 'django.wsgi')
blank_files = ('__init__.py', 'manage.py')
if verbosity >= 1:
print 'Copying files: '
@@ -230,14 +230,20 @@ def deploy_into(directory, new_project = False, verbosity = 1, context = None):
if verbosity >= 1:
print ''
-def dir_name_acceptable(directory):
+def dir_name_unacceptable_for_django_project(directory):
+ dir_name = os.path.basename(directory)
+ if re.match(r'[_a-zA-Z][\w-]*$', dir_name):
+ return False
+ return True
+
+def dir_taken_by_python_module(directory):
"""True if directory is not taken by another python module"""
dir_name = os.path.basename(directory)
try:
imp.find_module(dir_name)
- return False
- except ImportError:
return True
+ except ImportError:
+ return False
def get_install_directory(force = False):
"""returns a directory where a new django app/project
@@ -277,8 +283,13 @@ def get_install_directory(force = False):
if should_create_new == 'no':
return None
- if not dir_name_acceptable(directory):
+ if dir_taken_by_python_module(directory):
print messages.format_msg_bad_dir_name(directory)
return None
+ if dir_name_unacceptable_for_django_project(directory):
+ print """\nDirectory %s is not acceptable for a Django project.
+Please use lower case characters, numbers and underscore.
+The first character cannot be a number.\n""" % os.path.basename(directory)
+ return None
return directory
diff --git a/askbot/deps/django_authopenid/backends.py b/askbot/deps/django_authopenid/backends.py
index 9f8f1dfd..ed99e44f 100644
--- a/askbot/deps/django_authopenid/backends.py
+++ b/askbot/deps/django_authopenid/backends.py
@@ -9,6 +9,86 @@ from django.core.exceptions import ImproperlyConfigured
from django.utils.translation import ugettext as _
from askbot.deps.django_authopenid.models import UserAssociation
from askbot.deps.django_authopenid import util
+from askbot.conf import settings as askbot_settings
+from askbot.models.signals import user_registered
+
+log = logging.getLogger('configuration')
+
+
+def ldap_authenticate(username, password):
+ """
+ Authenticate using ldap
+
+ python-ldap must be installed
+ http://pypi.python.org/pypi/python-ldap/2.4.6
+ """
+ import ldap
+ user_information = None
+ try:
+ ldap_session = ldap.initialize(askbot_settings.LDAP_URL)
+ ldap_session.protocol_version = ldap.VERSION3
+ user_filter = "({0}={1})".format(askbot_settings.LDAP_USERID_FIELD,
+ username)
+ # search ldap directory for user
+ res = ldap_session.search_s(askbot_settings.LDAP_BASEDN, ldap.SCOPE_SUBTREE, user_filter, None)
+ if res: # User found in LDAP Directory
+ user_dn = res[0][0]
+ user_information = res[0][1]
+ ldap_session.simple_bind_s(user_dn, password) # <-- will throw ldap.INVALID_CREDENTIALS if fails
+ ldap_session.unbind_s()
+
+ exact_username = user_information[askbot_settings.LDAP_USERID_FIELD][0]
+
+ # Assuming last, first order
+ # --> may be different
+ last_name, first_name = user_information[askbot_settings.LDAP_COMMONNAME_FIELD][0].rsplit(" ", 1)
+ email = user_information[askbot_settings.LDAP_EMAIL_FIELD][0]
+ try:
+ user = User.objects.get(username__exact=exact_username)
+ # always update user profile to synchronize with ldap server
+ user.set_password(password)
+ user.first_name = first_name
+ user.last_name = last_name
+ user.email = email
+ user.save()
+ except User.DoesNotExist:
+ # create new user in local db
+ user = User()
+ user.username = exact_username
+ user.set_password(password)
+ user.first_name = first_name
+ user.last_name = last_name
+ user.email = email
+ user.is_staff = False
+ user.is_superuser = False
+ user.is_active = True
+ user.save()
+ user_registered.send(None, user = user)
+
+ log.info('Created New User : [{0}]'.format(exact_username))
+ return user
+ else:
+ # Maybe a user created internally (django admin user)
+ try:
+ user = User.objects.get(username__exact=username)
+ if user.check_password(password):
+ return user
+ else:
+ return None
+ except User.DoesNotExist:
+ return None
+
+ except ldap.INVALID_CREDENTIALS, e:
+ return None # Will fail login on return of None
+ except ldap.LDAPError, e:
+ log.error("LDAPError Exception")
+ log.exception(e)
+ return None
+ except Exception, e:
+ log.error("Unexpected Exception Occurred")
+ log.exception(e)
+ return None
+
class AuthBackend(object):
"""Authenticator's authentication backend class
@@ -22,15 +102,14 @@ class AuthBackend(object):
def authenticate(
self,
- username = None,#for 'password'
- password = None,#for 'password'
+ username = None,#for 'password' and 'ldap'
+ password = None,#for 'password' and 'ldap'
user_id = None,#for 'force'
provider_name = None,#required with all except email_key
openid_url = None,
email_key = None,
oauth_user_id = None,#used with oauth
facebook_user_id = None,#user with facebook
- ldap_user_id = None,#for ldap
wordpress_url = None, # required for self hosted wordpress
wp_user_id = None, # required for self hosted wordpress
method = None,#requried parameter
@@ -40,6 +119,7 @@ class AuthBackend(object):
from the signature of the function call
"""
login_providers = util.get_enabled_login_providers()
+ assoc = None # UserAssociation not needed for ldap
if method == 'password':
if login_providers[provider_name]['type'] != 'password':
raise ImproperlyConfigured('login provider must use password')
@@ -79,11 +159,13 @@ class AuthBackend(object):
if created:
user.set_password(password)
user.save()
+ user_registered.send(None, user = user)
else:
#have username collision - so make up a more unique user name
#bug: - if user already exists with the new username - we are in trouble
new_username = '%s@%s' % (username, provider_name)
user = User.objects.create_user(new_username, '', password)
+ user_registered.send(None, user = user)
message = _(
'Welcome! Please set email address (important!) in your '
'profile and adjust screen name, if necessary.'
@@ -156,14 +238,7 @@ class AuthBackend(object):
return None
elif method == 'ldap':
- try:
- assoc = UserAssociation.objects.get(
- openid_url = ldap_user_id,
- provider_name = provider_name
- )
- user = assoc.user
- except UserAssociation.DoesNotExist:
- return None
+ user = ldap_authenticate(username, password)
elif method == 'wordpress_site':
try:
@@ -180,9 +255,10 @@ class AuthBackend(object):
else:
raise TypeError('only openid and password supported')
- #update last used time
- assoc.last_used_timestamp = datetime.datetime.now()
- assoc.save()
+ if assoc:
+ #update last used time
+ assoc.last_used_timestamp = datetime.datetime.now()
+ assoc.save()
return user
def get_user(self, user_id):
diff --git a/askbot/deps/django_authopenid/forms.py b/askbot/deps/django_authopenid/forms.py
index c4507272..db2afcd8 100644
--- a/askbot/deps/django_authopenid/forms.py
+++ b/askbot/deps/django_authopenid/forms.py
@@ -392,7 +392,7 @@ class AccountRecoveryForm(forms.Form):
if 'email' in self.cleaned_data:
email = self.cleaned_data['email']
try:
- user = User.objects.get(email=email)
+ user = User.objects.get(email__iexact=email)
self.cleaned_data['user'] = user
except User.DoesNotExist:
del self.cleaned_data['email']
@@ -447,5 +447,5 @@ class EmailPasswordForm(forms.Form):
self.user_cache = User.objects.get(
username = self.cleaned_data['username'])
except:
- raise forms.ValidationError(_("Incorrect username."))
+ raise forms.ValidationError(_("sorry, there is no such user name"))
return self.cleaned_data['username']
diff --git a/askbot/deps/django_authopenid/migrations/0002_make_multiple_openids_possible.py b/askbot/deps/django_authopenid/migrations/0002_make_multiple_openids_possible.py
index 4e615e65..e5541286 100644
--- a/askbot/deps/django_authopenid/migrations/0002_make_multiple_openids_possible.py
+++ b/askbot/deps/django_authopenid/migrations/0002_make_multiple_openids_possible.py
@@ -4,6 +4,9 @@ from south.db import db
from south.v2 import SchemaMigration
from django.db import models
+from askbot.migrations import houston_do_we_have_a_problem
+
+
class Migration(SchemaMigration):
def forwards(self, orm):
@@ -12,6 +15,10 @@ class Migration(SchemaMigration):
db.add_column('django_authopenid_userassociation', 'provider_name', self.gf('django.db.models.fields.CharField')(default='unknown', max_length=64), keep_default=False)
# Removing unique constraint on 'UserAssociation', fields ['user']
+ if houston_do_we_have_a_problem('django_authopenid_userassociation'):
+ # In MySQL+InnoDB Foreign keys have to have some index on them,
+ # therefore before deleting the UNIQUE index we have to create an "ordinary" one
+ db.create_index('django_authopenid_userassociation', ['user_id'])
db.delete_unique('django_authopenid_userassociation', ['user_id'])
# Adding unique constraint on 'UserAssociation', fields ['provider_name', 'user']
diff --git a/askbot/deps/django_authopenid/util.py b/askbot/deps/django_authopenid/util.py
index 4468a6d2..28f6b2dd 100644
--- a/askbot/deps/django_authopenid/util.py
+++ b/askbot/deps/django_authopenid/util.py
@@ -29,7 +29,7 @@ try:
except:
from yadis import xri
-import time, base64, hashlib, operator, logging
+import time, base64, hmac, hashlib, operator, logging
from models import Association, Nonce
__all__ = ['OpenID', 'DjangoOpenIDStore', 'from_openid_response', 'clean_next']
@@ -787,30 +787,54 @@ class FacebookError(Exception):
"""
pass
-def get_facebook_user_id(request):
- try:
- key = askbot_settings.FACEBOOK_KEY
- secret = askbot_settings.FACEBOOK_SECRET
+def urlsafe_b64decode(input):
+ length = len(input)
+ return base64.urlsafe_b64decode(
+ input.ljust(length + length % 4, '=')
+ )
- fb_cookie = request.COOKIES['fbs_%s' % key]
- fb_response = dict(cgi.parse_qsl(fb_cookie))
+def parse_signed_facebook_request(signed_request, secret):
+ """
+ Parse signed_request given by Facebook (usually via POST),
+ decrypt with app secret.
- signature = None
- payload = ''
- for key in sorted(fb_response.keys()):
- if key != 'sig':
- payload += '%s=%s' % (key, fb_response[key])
+ Arguments:
+ signed_request -- Facebook's signed request given through POST
+ secret -- Application's app_secret required to decrpyt signed_request
- if 'sig' in fb_response:
- if md5(payload + secret).hexdigest() != fb_response['sig']:
- raise ValueError('signature does not match')
- else:
- raise ValueError('no signature in facebook response')
+ slightly edited copy from https://gist.github.com/1190267
+ """
+
+ if "." in signed_request:
+ esig, payload = signed_request.split(".")
+ else:
+ return {}
- if 'uid' not in fb_response:
- raise ValueError('no user id in facebook response')
+ sig = urlsafe_b64decode(str(esig))
+ data = simplejson.loads(urlsafe_b64decode(str(payload)))
- return fb_response['uid']
+ if not isinstance(data, dict):
+ raise ValueError("Pyload is not a json string!")
+ return {}
+
+ if data["algorithm"].upper() == "HMAC-SHA256":
+ if hmac.new(str(secret), str(payload), hashlib.sha256).digest() == sig:
+ return data
+ else:
+ raise ValueError("Not HMAC-SHA256 encrypted!")
+
+ return {}
+
+def get_facebook_user_id(request):
+ try:
+ key = askbot_settings.FACEBOOK_KEY
+ fb_cookie = request.COOKIES['fbsr_%s' % key]
+ if not fb_cookie:
+ raise ValueError('cannot access facebook cookie')
+
+ secret = askbot_settings.FACEBOOK_SECRET
+ response = parse_signed_facebook_request(fb_cookie, secret)
+ return response['user_id']
except Exception, e:
raise FacebookError(e)
diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py
index e9059c61..2f80d366 100644
--- a/askbot/deps/django_authopenid/views.py
+++ b/askbot/deps/django_authopenid/views.py
@@ -48,6 +48,7 @@ from django.utils.safestring import mark_safe
from django.core.mail import send_mail
from recaptcha_works.decorators import fix_recaptcha_remote_ip
from askbot.skins.loaders import render_into_skin, get_template
+from urlparse import urlparse
from openid.consumer.consumer import Consumer, \
SUCCESS, CANCEL, FAILURE, SETUP_NEEDED
@@ -77,29 +78,22 @@ from askbot.deps.django_authopenid.backends import AuthBackend
import logging
from askbot.utils.forms import get_next_url
from askbot.utils.http import get_request_info
+from askbot.models.signals import user_logged_in, user_registered
#todo: decouple from askbot
def login(request,user):
from django.contrib.auth import login as _login
- from askbot.models import signals
- #1) get old session key
+ # get old session key
session_key = request.session.session_key
- #2) get old search state
- search_state = None
- if 'search_state' in request.session:
- search_state = request.session['search_state']
- #3) login and get new session key
+ # login and get new session key
_login(request,user)
- #4) transfer search_state to new session if found
- if search_state:
- search_state.set_logged_in()
- request.session['search_state'] = search_state
- #5) send signal with old session key as argument
+
+ # send signal with old session key as argument
logging.debug('logged in user %s with session key %s' % (user.username, session_key))
#todo: move to auth app
- signals.user_logged_in.send(
+ user_logged_in.send(
request = request,
user = user,
session_key=session_key,
@@ -109,9 +103,6 @@ def login(request,user):
#todo: uncouple this from askbot
def logout(request):
from django.contrib.auth import logout as _logout#for login I've added wrapper below - called login
- if 'search_state' in request.session:
- request.session['search_state'].set_logged_out()
- request.session.modified = True
_logout(request)
def logout_page(request):
@@ -319,30 +310,26 @@ def signin(request):
password_action = login_form.cleaned_data['password_action']
if askbot_settings.USE_LDAP_FOR_PASSWORD_LOGIN:
assert(password_action == 'login')
- ldap_provider_name = askbot_settings.LDAP_PROVIDER_NAME
username = login_form.cleaned_data['username']
- if util.ldap_check_password(
- username,
- login_form.cleaned_data['password']
- ):
- user = authenticate(
- ldap_user_id = username,
- provider_name = ldap_provider_name,
- method = 'ldap'
- )
- if user is not None:
- login(request, user)
- return HttpResponseRedirect(next_url)
- else:
- return finalize_generic_signin(
- request = request,
- user = user,
- user_identifier = username,
- login_provider_name = ldap_provider_name,
- redirect_url = next_url
+ password = login_form.cleaned_data['password']
+ # will be None if authentication fails
+ user = authenticate(
+ username=username,
+ password=password,
+ method = 'ldap'
)
+ if user is not None:
+ login(request, user)
+ return HttpResponseRedirect(next_url)
else:
- login_form.set_password_login_error()
+ return finalize_generic_signin(
+ request = request,
+ user = user,
+ user_identifier = username,
+ login_provider_name = provider_name,
+ redirect_url = next_url
+ )
+
else:
if password_action == 'login':
user = authenticate(
@@ -842,6 +829,7 @@ def register(request, login_provider_name=None, user_identifier=None):
email = register_form.cleaned_data['email']
user = User.objects.create_user(username, email)
+ user_registered.send(None, user = user)
logging.debug('creating new openid user association for %s')
@@ -964,7 +952,9 @@ def signup_with_password(request):
email = form.cleaned_data['email']
provider_name = form.cleaned_data['login_provider']
- User.objects.create_user(username, email, password)
+ new_user = User.objects.create_user(username, email, password)
+ user_registered.send(None, user = new_user)
+
logging.debug('new user %s created' % username)
if provider_name != 'local':
raise NotImplementedError('must run create external user code')
@@ -1094,8 +1084,10 @@ def _send_email_key(user):
to user's email address
"""
subject = _("Recover your %(site)s account") % {'site': askbot_settings.APP_SHORT_NAME}
+
+ url = urlparse(askbot_settings.APP_URL)
data = {
- 'validation_link': askbot_settings.APP_URL + \
+ 'validation_link': url.scheme + '://' + url.netloc + \
reverse(
'user_account_recover',
kwargs={'key':user.email_key}
diff --git a/askbot/deps/livesettings/models.py b/askbot/deps/livesettings/models.py
index 1a57dfc5..71db8acf 100644
--- a/askbot/deps/livesettings/models.py
+++ b/askbot/deps/livesettings/models.py
@@ -25,14 +25,20 @@ def _safe_get_siteid(site):
def find_setting(group, key, site=None):
"""Get a setting or longsetting by group and key, cache and return it."""
-
+
siteid = _safe_get_siteid(site)
setting = None
-
+
use_db, overrides = get_overrides(siteid)
ck = cache_key('Setting', siteid, group, key)
-
- if use_db:
+
+ grp = overrides.get(group, None)
+
+ if grp and key in grp:
+ val = grp[key]
+ setting = ImmutableSetting(key=key, group=group, value=val)
+ log.debug('Returning overridden: %s', setting)
+ elif use_db:
try:
setting = cache_get(ck)
@@ -45,10 +51,10 @@ def find_setting(group, key, site=None):
# maybe it is a "long setting"
try:
setting = LongSetting.objects.get(site__id__exact=siteid, key__exact=key, group__exact=group)
-
+
except LongSetting.DoesNotExist:
pass
-
+
cache_set(ck, value=setting)
else:
@@ -57,13 +63,13 @@ def find_setting(group, key, site=None):
val = grp[key]
setting = ImmutableSetting(key=key, group=group, value=val)
log.debug('Returning overridden: %s', setting)
-
+
if not setting:
raise SettingNotSet(key, cachekey=ck)
return setting
-class SettingNotSet(Exception):
+class SettingNotSet(Exception):
def __init__(self, k, cachekey=None):
self.key = k
self.cachekey = cachekey
@@ -77,22 +83,22 @@ class SettingManager(models.Manager):
class ImmutableSetting(object):
-
+
def __init__(self, group="", key="", value="", site=1):
self.site = site
self.group = group
self.key = key
self.value = value
-
+
def cache_key(self, *args, **kwargs):
return cache_key('OverrideSetting', self.site, self.group, self.key)
-
+
def delete(self):
pass
-
+
def save(self, *args, **kwargs):
pass
-
+
def __repr__(self):
return "ImmutableSetting: %s.%s=%s" % (self.group, self.key, self.value)
@@ -120,11 +126,18 @@ class Setting(models.Model, CachedObjectMixin):
site = self.site
except Site.DoesNotExist:
self.site = Site.objects.get_current()
-
+
super(Setting, self).save(force_insert=force_insert, force_update=force_update)
-
+
self.cache_set()
-
+
+ def cache_set(self, *args, **kwargs):
+ val = kwargs.pop('value', self)
+ key = self.cache_key(*args, **kwargs)
+ #TODO: fix this with Django's > 1.3 CACHE dict setting support
+ length = getattr(settings, 'LIVESETTINGS_CACHE_TIMEOUT', settings.CACHE_TIMEOUT)
+ cache_set(key, value=val, length=length)
+
class Meta:
unique_together = ('site', 'group', 'key')
@@ -149,7 +162,7 @@ class LongSetting(models.Model, CachedObjectMixin):
def cache_key(self, *args, **kwargs):
# note same cache pattern as Setting. This is so we can look up in one check.
- # they can't overlap anyway, so this is moderately safe. At the worst, the
+ # they can't overlap anyway, so this is moderately safe. At the worst, the
# Setting will override a LongSetting.
return cache_key('Setting', self.site, self.group, self.key)
@@ -164,7 +177,14 @@ class LongSetting(models.Model, CachedObjectMixin):
self.site = Site.objects.get_current()
super(LongSetting, self).save(force_insert=force_insert, force_update=force_update)
self.cache_set()
-
+
+ def cache_set(self, *args, **kwargs):
+ val = kwargs.pop('value', self)
+ key = self.cache_key(*args, **kwargs)
+ #TODO: fix this with Django's > 1.3 CACHE dict setting support
+ length = getattr(settings, 'LIVESETTINGS_CACHE_TIMEOUT', settings.CACHE_TIMEOUT)
+ cache_set(key, value=val, length=length)
+
class Meta:
unique_together = ('site', 'group', 'key')
-
+
diff --git a/askbot/deps/livesettings/overrides.py b/askbot/deps/livesettings/overrides.py
index f3dc3355..c2fc09df 100644
--- a/askbot/deps/livesettings/overrides.py
+++ b/askbot/deps/livesettings/overrides.py
@@ -35,7 +35,7 @@ def get_overrides(siteid=-1):
}
}
- In the settings dict above, the "val" entries must exactly match the format
+ In the settings dict above, the "val" entries must exactly match the format
stored in the database for a setting. Do not use a literal True or an integer,
it needs to be the string representation of them.
@@ -45,7 +45,7 @@ def get_overrides(siteid=-1):
if hasattr(djangosettings, 'LIVESETTINGS_OPTIONS'):
if siteid == -1:
siteid = _safe_get_siteid(None)
-
+
opts = djangosettings.LIVESETTINGS_OPTIONS
if opts.has_key(siteid):
opts = opts[siteid]
diff --git a/askbot/deps/livesettings/values.py b/askbot/deps/livesettings/values.py
index 9587a16d..95ca1069 100644
--- a/askbot/deps/livesettings/values.py
+++ b/askbot/deps/livesettings/values.py
@@ -4,7 +4,9 @@ http://code.google.com/p/django-values/
"""
from decimal import Decimal
from django import forms
+from django.conf import settings as django_settings
from django.core.exceptions import ImproperlyConfigured
+from django.core.cache import cache
from django.utils import simplejson
from django.utils.datastructures import SortedDict
from django.utils.encoding import smart_str
@@ -148,6 +150,7 @@ class Value(object):
- `hidden` - If true, then render a hidden field.
- `default` - If given, then this Value will return that default whenever it has no assocated `Setting`.
- `update_callback` - if given, then this value will call the callback whenever updated
+ - `clear_cache` - if `True` - clear all the caches on updates
"""
self.group = group
self.key = key
@@ -158,6 +161,7 @@ class Value(object):
self.hidden = kwargs.pop('hidden', False)
self.update_callback = kwargs.pop('update_callback', None)
self.requires = kwargs.pop('requires', None)
+ self.clear_cache = kwargs.pop('clear_cache', False)
if self.requires:
reqval = kwargs.pop('requiresvalue', key)
if not is_list_or_tuple(reqval):
@@ -365,6 +369,9 @@ class Value(object):
s.save()
signals.configuration_value_changed.send(self, old_value=current_value, new_value=new_value, setting=self)
+
+ if self.clear_cache:
+ cache.clear()
return True
else:
@@ -600,8 +607,14 @@ class ImageValue(StringValue):
'allowed_file_extensions',
('jpg', 'gif', 'png')
)
- self.upload_directory = kwargs.pop('upload_directory')
- self.upload_url = kwargs.pop('upload_url')
+ self.upload_directory = kwargs.pop(
+ 'upload_directory',
+ django_settings.MEDIA_ROOT
+ )
+ self.upload_url = kwargs.pop(
+ 'upload_url',
+ django_settings.MEDIA_URL
+ )
self.url_resolver = kwargs.pop('url_resolver', None)
super(ImageValue, self).__init__(*args, **kwargs)
@@ -632,13 +645,20 @@ class ImageValue(StringValue):
"""uploaded_file is an instance of
django UploadedFile object
"""
- #1) come up with a file name
+ #0) initialize file storage
+ file_storage_class = storage.get_storage_class()
- file_storage = storage.FileSystemStorage(
- location = self.upload_directory,
- base_url = self.upload_url
- )
+ storage_settings = {}
+ if django_settings.DEFAULT_FILE_STORAGE == \
+ 'django.core.files.storage.FileSystemStorage':
+ storage_settings = {
+ 'location': self.upload_directory,
+ 'base_url': self.upload_url
+ }
+
+ file_storage = file_storage_class(**storage_settings)
+ #1) come up with a file name
#todo: need better function here to calc name
file_name = file_storage.get_available_name(uploaded_file.name)
file_storage.save(file_name, uploaded_file)
diff --git a/askbot/doc/source/changelog.rst b/askbot/doc/source/changelog.rst
index a0bcb20e..c0540be9 100644
--- a/askbot/doc/source/changelog.rst
+++ b/askbot/doc/source/changelog.rst
@@ -1,6 +1,89 @@
Changes in Askbot
=================
+Development version
+-------------------
+* Added optional support for unicode slugs (Evgeny)
+* Optionally allow limiting one answer per question per person (Evgeny)
+* Added management command `build_livesettings_cache` (Adolfo)
+* Welcome email for the case when replying by email is enabled (Evgeny)
+* Detection of email signature based on the response to the welcome email (Evgeny)
+* Hide "website" and "about" section of the blocked user profiles
+ to help prevent user profile spam (Evgeny)
+* Added a function to create a custom user profile tab,
+ the feature requires access to the server (Evgeny)
+* Added optional top banner to the question page (Evgeny)
+* Made "bootstrap mode" default and created instead "large site mode" (Evgeny)
+* Added interesting/ignored/subscribed tags to the user profile page (Paul Backhouse, Evgeny)
+
+0.7.43 (May 14, 2012)
+---------------------
+* User groups (Evgeny)
+* Public/Private/Hidden reputation (Evgeny)
+* Enabling/disabling the badges system (Evgeny)
+* Created a basic post moderation feature (Evgeny)
+* Created a way to specify reasons for rejecting posts in a modal dialog (Evgeny)
+* A number of bug fixes (Adolfo Fitoria, Jim Tittsler,
+ Evgeny Fadeev, Robin Stocker, Radim Řehůřek, Silvio Heuberger)
+
+0.7.41, 0.7.42 (April 21, 2012)
+-------------------------------
+* Bug fixes
+
+0.7.40 (March 29, 2012)
+-----------------------
+* New data models!!! (`Tomasz Zieliński <http://pyconsultant.eu>`_)
+* Made email recovery link work when askbot is deployed on subdirectory (Evgeny)
+* Added tests for the CSRF_COOKIE_DOMAIN setting in the startup_procedures (Evgeny)
+* Askbot now respects django's staticfiles app (Radim Řehůřek, Evgeny)
+* Fixed the url translation bug (Evgeny)
+* Added left sidebar option (Evgeny)
+* Added "help" page and links to in the header and the footer (Evgeny)
+* Removed url parameters and the hash fragment from uploaded files -
+ amazon S3 for some reason adds weird expiration parameters (Evgeny)
+* Reduced memory usage in data migrations (Evgeny)
+* Added progress bars to slow data migrations (Evgeny)
+* Added a management command to build_thread_summary_cache (Evgeny)
+* Added a management delete_contextless_badge_award_activities (Evgeny)
+* Fixed a file upload issue in FF and IE found by jerry_gzy (Evgeny)
+* Added test on maximum length of title working for utf-8 text (Evgeny)
+* Added caching and invalidation to the question page (Evgeny)
+* Added a management command delete_contextless_activities (Evgeny)
+* LDAP login configuration (github user `monkut <https://github.com/monkut>`_)
+* Check order of middleware classes (Daniel Mican)
+* Added "reply by email" function (`Vasil Vangelovski <http://www.atomidata.com>`_)
+* Enabled "ask by email" via Lamson (Evgeny)
+* Tags can be optional (Evgeny)
+* Fixed dependency of Django up to 1.3.1, because settings must be upgraded
+ for Django 1.4 (Evgeny)
+
+0.7.39 (Jan 11, 2012)
+---------------------
+* restored facebook login after FB changed the procedure (Evgeny)
+
+0.7.38 (Jan 11, 2012)
+---------------------
+* xss vulnerability fix, issue found by Radim Řehůřek (Evgeny)
+
+0.7.37 (Jan 8, 2012)
+--------------------
+* added basic slugification treatment to question titles with
+ ``ALLOW_UNICODE_SLUGS = True`` (Evgeny)
+* added verification of the project directory name to
+ make sure it does not contain a `.` (dot) symbol (Evgeny)
+* made askbot compatible with django's `CSRFViewMiddleware`
+ that may be used for other projects (Evgeny)
+* added more rigorous test for the user name to make it slug safe (Evgeny)
+* made setting `ASKBOT_FILE_UPLOAD_DIR` work (Radim Řehůřek)
+* added minimal length of question title ond body
+ text to live settings and allowed body-less questions (Radim Řehůřek, Evgeny)
+* allowed disabling use of gravatar site-wide (Rosandra Cuello Suñol)
+* when internal login app is disabled - links to login/logout/add-remove-login-methods are gone (Evgeny)
+* replaced setting `ASKBOT_FILE_UPLOAD_DIR` with django's `MEDIA_ROOT` (Evgeny)
+* replaced setting `ASKBOT_UPLOADED_FILES_URL` with django's `MEDIA_URL` (Evgeny)
+* allowed changing file storage backend for file uploads by configuration (Evgeny)
+* file uploads to amazon S3 now work with proper configuration (Evgeny)
+
0.7.36 (Dec 20, 2011)
---------------------
* bugfix and made the logo not used by default
diff --git a/askbot/doc/source/contributors.rst b/askbot/doc/source/contributors.rst
index 6285d9a6..69348b84 100644
--- a/askbot/doc/source/contributors.rst
+++ b/askbot/doc/source/contributors.rst
@@ -11,6 +11,7 @@ Programming and documentation
* Mike Chen & Sailing Cai - original authors of CNPROG forum
* Evgeny Fadeev - founder of askbot
* `Adolfo Fitoria <http://fitoria.net>`_
+* `Tomasz Zielinski <http://pyconsultant.eu/>`_
* `Sayan Chowdhury <http://fosswithme.wordpress.com>`_
* Andy Knotts
* Benoit Lavine (with Windriver Software, Inc.)
@@ -20,6 +21,7 @@ Programming and documentation
* Andrei Mamoutkine
* `Daniel Mican <http://www.crunchbase.com/person/daniel-mican>`_
* `Dejan Noveski <http://www.atomidata.com/>`_
+* `Vasil Vangelovski <http://www.atomidata.com/>`_
* `Ramiro Morales <http://rmorales.com.ar/>`_ (with Machinalis)
* Vladimir Bokov
* `NoahY <https://github.com/NoahY>`_
@@ -27,7 +29,6 @@ Programming and documentation
* `Arun SAG <http://zer0c00l.in/>`_
* `Rag Sagar <https://github.com/ragsagar>`_
* `Alex Robbins <https://github.com/alexrobbins>`_
-* `Tomasz Zielinski <http://pyconsultant.eu/>`_
* `Tomasz Szynalski <http://antimoon.com>`_
* `Raghu Udiyar <http://raags.tumblr.com/>`_
* `Alexander Werner <https://twitter.com/#!/bundeswerner>`_
@@ -35,11 +36,16 @@ Programming and documentation
* `hjwp <https://github.com/hjwp>`_
* `Jacob Oscarson <http://www.aspektratio.net>`_
* `Radim Řehůřek <https://github.com/piskvorky>`_
+* `monkut <https://github.com/monkut>`_
+* `Jim Tittsler <http://wikieducator.org/User:JimTittsler>`_
+* Silvio Heuberger
+* `Alexandros <https://github.com/alexandros-z>`_
+* `Paul Backhouse <https://github.com/powlo>`_
Translations
------------
* Mike Chen, Sailing Cai, suyu8776 - Chinese
-* Bruno Sarlo, Adolfo Fitoria - Spanish
+* Bruno Sarlo, Adolfo Fitoria, Francisco Espinoza - Spanish
* Evgeny Kalinin - Russian
* Evgeny Fadeev - English
* Oktay Yildiz, Onur Mat, Cemre - Turkish
diff --git a/askbot/doc/source/create-database.rst b/askbot/doc/source/create-database.rst
index 52383f9e..9b262af7 100644
--- a/askbot/doc/source/create-database.rst
+++ b/askbot/doc/source/create-database.rst
@@ -4,21 +4,18 @@
Create database for Askbot
==========================
-Askbot has been successfully tested with `MySQL` and `PostgresQL` databases.
+Askbot has been successfully tested with `MySQL` and `PostgreSQL` databases.
-PostgresQL
+PostgreSQL
----------
-PostgresQL is the preferred database for Askbot - because it offers great
+PostgreSQL is the preferred database for Askbot - because it offers great
full text search functionality and supports transactions at the same time.
To use postgresql - install it (please see documentation elsewhere).
After you have the database inself, add python bindingngs to postgresql::
- pip install psycopg2==2.4.1
-
-.. note::
- Note the specific version of the library required! There may be issues with the later version.
+ pip install psycopg2
To create a database, log in to postgresql as user postgres, create a user (if necessary), create a database, and enable the user account to log in to the database::
diff --git a/askbot/doc/source/customizing-style-css-file-in-askbot.rst b/askbot/doc/source/customizing-style-css-file-in-askbot.rst
index 4d64eb81..65b75002 100644
--- a/askbot/doc/source/customizing-style-css-file-in-askbot.rst
+++ b/askbot/doc/source/customizing-style-css-file-in-askbot.rst
@@ -16,6 +16,12 @@ and some delay in the page load.
Please find documentation about the lesscss format elsewhere.
+.. note::
+ Besides the "official" lesscss compiler, there are other
+ tools that convert .less files into .css: for example a
+ `less compiler from codekit (mac) <http://incident57.com/less/>`_
+ and a `portable SimpLESS compiler <http://wearekiss.com/simpless>`_.
+
Compiling lesscss files
=======================
diff --git a/askbot/doc/source/deployment.rst b/askbot/doc/source/deployment.rst
index 8baa99c0..1ca7553f 100644
--- a/askbot/doc/source/deployment.rst
+++ b/askbot/doc/source/deployment.rst
@@ -6,18 +6,30 @@ Deploying Askbot
Deploying askbot (assuming that it is already installed) entails:
+* collecting static media files
* setting correct file access permissions
* configuring the webserver to work with your application
This document currently explains the configuration under Apache and mod_wsgi_.
+Collecting static media files
+-----------------------------
+Static media must be collected into a single location with a command::
+
+ python manage.py collectstatic
+
+There are several options on where to put the static files - the simplest is
+a local directory, but it is also possible to use a dedicated static files
+storage or a CDN, for more information see django documentation about
+serving static files.
+
Setting up file access permissions
----------------------------------
Webserver process must be able to write to the following locations within your project::
- log/
- askbot/upfiles
+ log/
+ askbot/upfiles
If you know user name or the group name under which the webserver runs,
you can make those directories writable by setting the permissons
@@ -26,11 +38,11 @@ accordingly:
For example, if you are using Linux installation of apache webserver running under
group name 'apache' you could do the following::
- cd /path/to/django-project
- cd .. #go one level up
- chown -R yourlogin:apache django-project
- chmod -R g+w django-project/askbot/upfiles
- chmod -R g+w django-project/log
+ cd /path/to/django-project
+ cd .. #go one level up
+ chown -R yourlogin:apache django-project
+ chmod -R g+w django-project/askbot/upfiles
+ chmod -R g+w django-project/log
If your account somehow limits you from running such commands - please consult your
system administrator.
@@ -71,9 +83,8 @@ Settings below are not perfect but may be a good starting point::
#aliases to serve static media directly
#will probably need adjustment
- Alias /m/ /usr/local/lib/python2.6/site-packages/askbot/skins/
+ Alias /static/ /path/to/django-project/static/
Alias /upfiles/ /path/to/django-project/askbot/upfiles/
- Alias /admin/media/ /usr/local/lib/python2.6/site-packages/django/contrib/admin/media/
<DirectoryMatch "/path/to/django-project/askbot/skins/([^/]+)/media">
Order deny,allow
Allow from all
diff --git a/askbot/doc/source/index.rst b/askbot/doc/source/index.rst
index 27f106be..353b9105 100644
--- a/askbot/doc/source/index.rst
+++ b/askbot/doc/source/index.rst
@@ -20,11 +20,13 @@ at the forum_ or by email at admin@askbot.org
Initialize the database tables <initialize-database-tables>
Deploy on a webserver <deployment>
Import data (StackExchange & ZenDesk) <import-data>
+ Moderation <moderation>
Appendix A: Maintenance procedures <management-commands>
Appendix B: Sending email to askbot <sending-email-to-askbot>
Appendix C: Optional modules <optional-modules>
Appendix D: Askbot as reusable Django application <askbot-as-reusable-django-application>
Appendix E: Customizing skin in askbot <customizing-skin-in-askbot>
+ Appendix F: Intranet setup <intranet-setup>
Footnotes <footnotes>
Contributors <contributors>
Changelog<changelog>
diff --git a/askbot/doc/source/initial-configuration.rst b/askbot/doc/source/initial-configuration.rst
index 340324a1..7905aa1d 100644
--- a/askbot/doc/source/initial-configuration.rst
+++ b/askbot/doc/source/initial-configuration.rst
@@ -10,7 +10,16 @@ While most configuration settings for askbot can be done at any time :ref:`throu
Installing Askbot as a new Django project (standalone app)
==========================================================
-When installing Askbot for the first time, you will need to initialize the site setup files by typing::
+.. note::
+ Firstly - if you are preparing the project directory manually,
+ make sure that the directory name does not
+ have the `.` - dot - symbol, because it is illegal for Python modules.
+ For example::
+
+ mkdir mydjangosite
+ cd mydjangosite
+
+When installing Askbot for the first time, you will need to initialize the project setup files by typing::
askbot-setup
diff --git a/askbot/doc/source/intranet-setup.rst b/askbot/doc/source/intranet-setup.rst
new file mode 100644
index 00000000..224ffb89
--- /dev/null
+++ b/askbot/doc/source/intranet-setup.rst
@@ -0,0 +1,14 @@
+==========================================================
+Setting up Askbot for use on the closed network (Intranet)
+==========================================================
+
+When using Askbot on the Intranet (for example - within your
+Company network), it will be useful to disable references to
+all external resources - such as custom fonts, gravatars.
+
+Please change the following settings in your ``settings.py`` file::
+
+ ASKBOT_USE_LOCAL_FONTS=True
+
+In addition, in the "live settings":
+* disable gravatar in "settings->User settings"
diff --git a/askbot/doc/source/management-commands.rst b/askbot/doc/source/management-commands.rst
index 1e3a7ac0..2755bcf5 100644
--- a/askbot/doc/source/management-commands.rst
+++ b/askbot/doc/source/management-commands.rst
@@ -78,6 +78,18 @@ The bulk of the management commands fall into this group and will probably be th
| | This data is used to display preferentially real faces |
| | on the main page. |
+---------------------------------+-------------------------------------------------------------+
+| `build_thread_summary_cache` | Rebuilds cache for the question summary snippet. |
++---------------------------------+-------------------------------------------------------------+
+| `build_livesettings_cache` | Rebuilds cache for the live settings. |
++---------------------------------+-------------------------------------------------------------+
+| `delete_contextless_...` | `delete_contextless_badge_award_activities` |
+| | Deletes Activity objects of type badge award where the |
+| | related context object is lost. |
++---------------------------------+-------------------------------------------------------------+
+| `delete_contextless_activities` | Same as above, but works in a broader sense - when the |
+| | related context object does not exist, but the generic |
+| | foreign key to that object is still present. |
++---------------------------------+-------------------------------------------------------------+
.. _email-related-commands:
@@ -94,6 +106,14 @@ Any configurable options, related to these commands are accessible via "Email" s
+-------------------------------------+-------------------------------------------------------------+
| command | purpose |
+=====================================+=============================================================+
+| `send_respondable_welcome_email` | Will send a respondable welcome email to **all** registered |
+| | users whose email address was not validated. |
+| | This feature requires "reply by email" enabled and "lamson" |
+| | email processor installed on the system. |
+| | The email will be respondable. When the user responds, |
+| | askbot will validate the email and capture the signature in |
+| | the end of the message. |
++-------------------------------------+-------------------------------------------------------------+
| `send_email_alerts` | Dispatches email alerts to the users according to |
| | their subscription settings. This command does not |
| | send instant" alerts because those are sent automatically |
@@ -177,5 +197,5 @@ the developers of the Askbot project:
+--------------------------------+-------------------------------------------------------------+
| `askbot_add_test_content` | Creates content with dummy data for testing |
+--------------------------------+-------------------------------------------------------------+
-| `askbot_create_test_fixture` | Creates a test fixture at `askbot/tests/test_data.json` |
+| `askbot_create_test_fixture` | Creates a test fixture at `askbot/tests/test_data.json` |
+--------------------------------+-------------------------------------------------------------+
diff --git a/askbot/doc/source/moderation.rst b/askbot/doc/source/moderation.rst
new file mode 100644
index 00000000..9ccaa5b0
--- /dev/null
+++ b/askbot/doc/source/moderation.rst
@@ -0,0 +1,30 @@
+====================
+Moderation in Askbot
+====================
+
+Regular users and forum Moderators can participate
+in the content moderation. Any user with sufficient reputation
+(this reputation threshold can be changed in the settings panel)
+can flag offensive posts.
+
+When a post receives a certain number of flags (adjustable),
+the post is automatically hidden.
+
+In addition users can delete posts, given a minimum reputation
+threshold (also adjustable) is met.
+Moderators can delete any post at any time.
+
+.. note::
+ All the minimum reputation thresholds can be adjusted
+ at the "settings" panel. Only site administrators have
+ access to the settings editor.
+
+Forum moderators can suspend and block users, by going to
+the "moderation" section in the user profile page.
+From the same page moderators can send an email to the user.
+
+Suspended users can only edit own posts, but cannot make new posts.
+Blocked users can only sign in and send feedback to
+the side administrators.
+
+Only site administrators can assign moderator status to any user.
diff --git a/askbot/doc/source/optional-modules.rst b/askbot/doc/source/optional-modules.rst
index 93f7129a..25bb5cc8 100644
--- a/askbot/doc/source/optional-modules.rst
+++ b/askbot/doc/source/optional-modules.rst
@@ -124,6 +124,49 @@ Also, settings ``MEDIA_ROOT`` and ``MEDIA_URL`` will need to be added to your ``
be up to date, so please take the development version from the
github repository
+Custom section in the user profile
+==================================
+Sometimes you might want to add a completely custom section
+to the user profile, available via an additional tab.
+
+This is possible by editing the ``settings.py`` file,
+which means that to use this feature you must have sufficient
+access to the webserver file system.
+
+Add a following setting to your ``settings.py``::
+
+ ASKBOT_CUSTOM_USER_PROFILE_TAB = {
+ 'NAME': 'some name',
+ 'SLUG': 'some-name',
+ 'CONTENT_GENERATOR': 'myapp.views.somefunc'
+ }
+
+The value of ``ASKBOT_CUSTOM_USER_PROFILE_TAB['CONTENT_GENERATOR']``
+should be a path to the function that returns the widget content
+as string.
+
+Here is a simple example of the content generator
+implemented as part of the fictional application called ``myapp``::
+
+ from myapp.models import Thing#definition not shown here
+ from django.template.loader import get_template
+ from django.template import Context
+
+ def somefunc(request, profile_owner):
+ """loads things for the ``profile_owner``
+ and returns output rendered as html string
+ """
+ template = get_template('mytemplate.html')
+ things = Thing.objects.filter(user = profile_owner)
+ return template.render(Context({'things': things}))
+
+The function is very similar to the regular
+Django view, but returns a string instead of the ``HttpResponse``
+instance.
+
+Also, the method must accept one additional argument -
+an instance of the ``django.contrib.auth.models.User`` object.
+
Wordpress Integration
=====================
@@ -164,3 +207,66 @@ For `supervisor <http://supervisord.org/>`_: add this sample config file named a
startsecs=10
Then run **supervisorctl update** and it will be started. For more information about job handling with supervisor please visit `this link <http://supervisord.org/>`_.
+
+
+Receiving replies for email notifications
+===========================================
+
+Askbot supports posting replies by email. For this feature to work ``Lamson`` and ``django-lamson`` need to be installed on the system. To install all the necessery dependencies execute the following command:
+
+ pip install django-lamson
+
+The lamson daemon needs a folder to store it's mail queue files and a folder to store log files, create the folders folder named ``run`` and ``logs`` within your project folder by executing the following commands:
+
+ mkdir run
+
+ mkdir logs
+
+The minimum settings required to enable this feature are defining the port and binding address for the lamson SMTP daemon and the email handlers within askbot. Edit your settings.py file to include the following:
+
+ LAMSON_RECEIVER_CONFIG = {'host': 'your.ip.address', 'port': 25}
+
+ LAMSON_HANDLERS = ['askbot.mail.lamson_handlers']
+
+ LAMSON_ROUTER_DEFAULTS = {'host': '.+'}
+
+In the list of ``installed_apps`` add the app ``django-lamson``.
+
+The ``LAMSON_RECEIVER_CONFIG`` parameter defines the binding address/port for the SMTP daemon. To recieve internet email you will need to bind to your external ip address and port 25. If you just want to test the feature by sending eamil from the same system you could bind to 127.0.0.1 and any higher port.
+
+To run the lamson SMTP daemon you will need to execute the following management command:
+
+ python manage.py lamson_start
+
+To stop the daemon issue the following command
+
+ python manage.py lamson_stop
+
+Note that in order to be able to bind the daemon to port 25 you will need to execute the command as a superuser.
+
+Within the askbot admin interface there are 4 significant configuration points for this feature.
+
+* In the email section, the "Enable posting answers and comments by email" controls whether the feature is enabled or disabled.
+* The "reply by email hostname" needs to be set to the email hostname where you want to receive the email replies. If for example this is set to "example.com" the users will post replies to addresses such as "4wffsw345wsf@example.com", you need to point the MX DNS record for that domain to the address where you will run the lamson SMTP daemon.
+* The last setting in this section controls the threshold for minimum length of the reply that is posted as an answer to a question. If the user is replying to a notification for a question and the reply body is shorter than this threshold the reply will be posted as a comment to the question.
+* In the karma thresholds section the "Post answers and comments by email" defines the minimum karma for users to be able to post replies by email.
+
+If the system where lamson is hosted also acts as an email server or you simply want some of the emails to be ignored and sent to another server you can define forward rules. Any emails matching these rules will be sent to another smtp server, bypassing the reply by email function. As an example by adding the following in your settings.py file:
+
+ LAMSON_FORWARD = (
+ {
+ 'pattern': '(.*?)@(.subdomain1|subdomain2)\.example.com',
+ 'host': 'localhost',
+ 'port': 8825
+ },
+ {
+ 'pattern': '(info|support)@example.com',
+ 'host': 'localhost',
+ 'port': 8825
+ },
+
+ )
+
+any email that was sent to anyaddress@sobdomain1.example.com or anyaddress@sobdomain2.example.com or info@example.com will be forwarded to the smtp server listening on port 8825. The pattern parameter is treated as a regular expression that is matched against the ``To`` header of the email message and the ``host`` and ``port`` are the host and port of the smtp server that the message should be forwarded to.
+
+If you want to run the lamson daemon on a port other than 25 you can use a mail proxy server such as ``nginx`` that will listen on port 25 and forward any SMTP requests to lamson. Using nginx you can also setup more complex email handling rules, such as for example if the same server where askbot is installed acts as an email server for other domains you can configure nginx to forward any emails directed to your askbot installation to lamson and any other emails to the mail server you're using, such as ``postfix``. For more information on how to use nginx for this please consult the nginx mail module documentation `nginx mail module documentation <http://wiki.nginx.org/MailCoreModule>`_ .
diff --git a/askbot/doc/source/settings.rst b/askbot/doc/source/settings.rst
new file mode 100644
index 00000000..d07e697b
--- /dev/null
+++ b/askbot/doc/source/settings.rst
@@ -0,0 +1,14 @@
+=================================
+Settings for ``settings.py`` file
+=================================
+
+* ``ALLOW_UNICODE_SLUGS`` - if ``True``, slugs will use unicode, default - ``False``
+
+There are more settings that are not documented yet,
+but most are described in the ``settings.py`` template:
+
+ askbot/setup_templates/settings.py.mustache
+
+TODO: describe all of them here.
+
+
diff --git a/askbot/exceptions.py b/askbot/exceptions.py
index d2d5ddf0..12802e7e 100644
--- a/askbot/exceptions.py
+++ b/askbot/exceptions.py
@@ -19,6 +19,11 @@ class InsufficientReputation(exceptions.PermissionDenied):
"""
pass
+class AnswerAlreadyGiven(exceptions.PermissionDenied):
+ """Raised when user attempts to post a second answer
+ to the same question"""
+ pass
+
class DuplicateCommand(exceptions.PermissionDenied):
"""exception class to indicate that something
that can happen only once was attempted for the second time
diff --git a/askbot/feed.py b/askbot/feed.py
index 337db470..9652da6d 100644
--- a/askbot/feed.py
+++ b/askbot/feed.py
@@ -17,30 +17,41 @@ try:
except ImportError:
from django.contrib.syndication.views import Feed
+import itertools
+
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext as _
from django.core.exceptions import ObjectDoesNotExist
-from askbot.models import Question, Answer, Comment
+
+from askbot.models import Post
from askbot.conf import settings as askbot_settings
-import itertools
class RssIndividualQuestionFeed(Feed):
"""rss feed class for particular questions
"""
- title = askbot_settings.APP_TITLE + _(' - ')+ _('Individual question feed')
- link = askbot_settings.APP_URL
- description = askbot_settings.APP_DESCRIPTION
- copyright = askbot_settings.APP_COPYRIGHT
+
+ def title(self):
+ return askbot_settings.APP_TITLE + _(' - ') + \
+ _('Individual question feed')
+
+ def feed_copyright(self):
+ return askbot_settings.APP_COPYRIGHT
+
+ def description(self):
+ return askbot_settings.APP_DESCRIPTION
def get_object(self, bits):
if len(bits) != 1:
raise ObjectDoesNotExist
- return Question.objects.get(id__exact = bits[0])
+ return Post.objects.get_questions().get(id__exact = bits[0])
def item_link(self, item):
"""get full url to the item
"""
- return self.link + item.get_absolute_url()
+ return askbot_settings.APP_URL + item.get_absolute_url()
+
+ def link(self):
+ return askbot_settings.APP_URL
def item_pubdate(self, item):
"""get date of creation for the item
@@ -53,25 +64,18 @@ class RssIndividualQuestionFeed(Feed):
then for each answer - the answer itself, then
answer comments
"""
-
chain_elements = list()
chain_elements.append([item,])
chain_elements.append(
- Comment.objects.filter(
- object_id = item.id,
- content_type = ContentType.objects.get_for_model(Question)
- )
+ Post.objects.get_comments().filter(parent=item)
)
- answer_content_type = ContentType.objects.get_for_model(Answer)
- answers = Answer.objects.filter(question = item.id)
+ answers = Post.objects.get_answers().filter(thread = item.thread)
+
for answer in answers:
chain_elements.append([answer,])
chain_elements.append(
- Comment.objects.filter(
- object_id = answer.id,
- content_type = answer_content_type
- )
+ Post.objects.get_comments().filter(parent=answer)
)
return itertools.chain(*chain_elements)
@@ -85,32 +89,36 @@ class RssIndividualQuestionFeed(Feed):
elif item.post_type == "answer":
title = "Answer by %s for %s " % (item.author, self.title)
elif item.post_type == "comment":
- title = "Comment by %s for %s" % (item.user, self.title)
+ title = "Comment by %s for %s" % (item.author, self.title)
return title
def item_description(self, item):
"""returns the description for the item
"""
- if item.post_type == "question":
- return item.text
- if item.post_type == "answer":
- return item.text
- elif item.post_type == "comment":
- return item.comment
+ return item.text
+
class RssLastestQuestionsFeed(Feed):
"""rss feed class for the latest questions
"""
- title = askbot_settings.APP_TITLE + _(' - ')+ _('latest questions')
- link = askbot_settings.APP_URL
- description = askbot_settings.APP_DESCRIPTION
- #ttl = 10
- copyright = askbot_settings.APP_COPYRIGHT
+
+ def title(self):
+ return askbot_settings.APP_TITLE + _(' - ') + \
+ _('Individual question feed')
+
+ def feed_copyright(self):
+ return askbot_settings.APP_COPYRIGHT
+
+ def description(self):
+ return askbot_settings.APP_DESCRIPTION
def item_link(self, item):
"""get full url to the item
"""
- return self.link + item.get_absolute_url()
+ return askbot_settings.APP_URL + item.get_absolute_url()
+
+ def link(self):
+ return askbot_settings.APP_URL
def item_author_name(self, item):
"""get name of author
@@ -120,7 +128,7 @@ class RssLastestQuestionsFeed(Feed):
def item_author_link(self, item):
"""get url of the author's profile
"""
- return item.author.get_profile_url()
+ return askbot_settings.APP_URL + item.author.get_profile_url()
def item_pubdate(self, item):
"""get date of creation for the item
@@ -134,7 +142,7 @@ class RssLastestQuestionsFeed(Feed):
return self.link + item.get_absolute_url(no_slug = True)
def item_description(self, item):
- """returns the desciption for the item
+ """returns the description for the item
"""
return item.text
@@ -142,7 +150,7 @@ class RssLastestQuestionsFeed(Feed):
"""get questions for the feed
"""
#initial filtering
- qs = Question.objects.filter(deleted=False)
+ qs = Post.objects.get_questions().filter(deleted=False)
#get search string and tags from GET
query = self.request.GET.get("q", None)
@@ -157,11 +165,9 @@ class RssLastestQuestionsFeed(Feed):
#if there are tags in GET, filter the
#questions additionally
for tag in tags:
- qs = qs.filter(tags__name = tag)
-
- return qs.order_by('-last_activity_at')[:30]
-
+ qs = qs.filter(thread__tags__name = tag)
+ return qs.order_by('-thread__last_activity_at')[:30]
def main():
"""main function for use as a script
diff --git a/askbot/forms.py b/askbot/forms.py
index d2215189..1188ed59 100644
--- a/askbot/forms.py
+++ b/askbot/forms.py
@@ -1,19 +1,20 @@
+"""Forms, custom form fields and related utility functions
+used in AskBot"""
import re
from django import forms
-from askbot import models
from askbot import const
from django.utils.translation import ugettext_lazy as _
-from django.utils.translation import ungettext_lazy
+from django.utils.translation import ungettext_lazy, string_concat
from django.utils.text import get_text_list
from django.contrib.auth.models import User
-from django.contrib.contenttypes.models import ContentType
from django_countries import countries
from askbot.utils.forms import NextUrlField, UserNameField
-from askbot.utils.mail import extract_first_email_address
+from askbot.mail import extract_first_email_address
from recaptcha_works.fields import RecaptchaField
from askbot.conf import settings as askbot_settings
import logging
+
def cleanup_dict(dictionary, key, empty_value):
"""deletes key from dictionary if it exists
and the corresponding value equals the empty_value
@@ -21,6 +22,28 @@ def cleanup_dict(dictionary, key, empty_value):
if key in dictionary and dictionary[key] == empty_value:
del dictionary[key]
+
+def format_form_errors(form):
+ """Formats form errors in HTML
+ if there is only one error - returns a plain string
+ if more than one, returns an unordered list of errors
+ in HTML format.
+ If there are no errors, returns empty string
+ """
+ if form.errors:
+ errors = form.errors.values()
+ if len(errors) == 1:
+ return errors[0]
+ else:
+ result = '<ul>'
+ for error in errors:
+ result += '<li>%s</li>' % error
+ result += '</ul>'
+ return result
+ else:
+ return ''
+
+
def clean_marked_tagnames(tagnames):
"""return two strings - one containing tagnames
that are straight names of tags, and the second one
@@ -28,7 +51,7 @@ def clean_marked_tagnames(tagnames):
wildcard tags are those that have an asterisk at the end
the function does not verify that the tag names are valid
"""
- if askbot_settings.USE_WILDCARD_TAGS == False:
+ if askbot_settings.USE_WILDCARD_TAGS is False:
return tagnames, list()
pure_tags = list()
@@ -46,7 +69,8 @@ def clean_marked_tagnames(tagnames):
return pure_tags, wildcards
-def filter_choices(remove_choices = None, from_choices = None):
+
+def filter_choices(remove_choices=None, from_choices=None):
"""a utility function that will remove choice tuples
usable for the forms.ChoicesField from
``from_choices``, the removed ones will be those given
@@ -66,12 +90,47 @@ def filter_choices(remove_choices = None, from_choices = None):
if choice == choice_to_test[0]:
remove = True
break
- if remove == False:
- filtered_choices += ( choice_to_test, )
+ if remove is False:
+ filtered_choices += (choice_to_test, )
return filtered_choices
-COUNTRY_CHOICES = (('unknown',_('select country')),) + countries.COUNTRIES
+
+def need_mandatory_tags():
+ """true, if list of mandatory tags is not empty"""
+ from askbot import models
+ return (
+ askbot_settings.TAGS_ARE_REQUIRED
+ and len(models.tag.get_mandatory_tags()) > 0
+ )
+
+
+def mandatory_tag_missing_in_list(tag_strings):
+ """true, if mandatory tag is not present in the list
+ of ``tag_strings``"""
+ from askbot import models
+ mandatory_tags = models.tag.get_mandatory_tags()
+ for mandatory_tag in mandatory_tags:
+ for tag_string in tag_strings:
+ if tag_strings_match(tag_string, mandatory_tag):
+ return False
+ return True
+
+
+def tag_strings_match(tag_string, mandatory_tag):
+ """true if tag string matches the mandatory tag,
+ the comparison is not symmetric if tag_string ends with a
+ wildcard (asterisk)
+ """
+ if mandatory_tag.endswith('*'):
+ return tag_string.startswith(mandatory_tag[:-1])
+ else:
+ return tag_string == mandatory_tag
+
+
+
+COUNTRY_CHOICES = (('unknown', _('select country')),) + countries.COUNTRIES
+
class CountryField(forms.ChoiceField):
"""this is better placed into the django_coutries app"""
@@ -93,46 +152,176 @@ class CountryField(forms.ChoiceField):
return None
return value
+
+class CountedWordsField(forms.CharField):
+ """a field where a number of words is expected
+ to be in a certain range"""
+
+ def __init__(
+ self, min_words=0, max_words=9999, field_name=None,
+ *args, **kwargs
+ ):
+ self.min_words = min_words
+ self.max_words = max_words
+ self.field_name = field_name
+ super(CountedWordsField, self).__init__(*args, **kwargs)
+
+ def clean(self, value):
+ #todo: this field must be adapted to work with Chinese, etc.
+ #for that we'll have to count characters instead of words
+ if value is None:
+ value = ''
+
+ value = value.strip()
+
+ word_count = len(value.split())
+ if word_count < self.min_words:
+ msg = ungettext_lazy(
+ 'must be > %d word',
+ 'must be > %d words',
+ self.min_words - 1
+ ) % (self.min_words - 1)
+ #todo - space is not used in Chinese
+ raise forms.ValidationError(
+ string_concat(self.field_name, ' ', msg)
+ )
+
+ if word_count > self.max_words:
+ msg = ungettext_lazy(
+ 'must be < %d word',
+ 'must be < %d words',
+ self.max_words + 1
+ ) % (self.max_words + 1)
+ raise forms.ValidationError(
+ string_concat(self.field_name, ' ', msg)
+ )
+ return value
+
+
+class DomainNameField(forms.CharField):
+ """Field for Internet Domain Names
+ todo: maybe there is a standard field for this?
+ """
+ def clean(self, value):
+ #find a better regex, taking into account tlds
+ domain_re = re.compile(r'[a-zA-Z\d]+(\.[a-zA-Z\d]+)+')
+ if domain_re.match(value):
+ return value
+ else:
+ raise forms.ValidationError(
+ '%s is not a valid domain name' % value
+ )
+
+
class TitleField(forms.CharField):
+ """Fild receiving question title"""
def __init__(self, *args, **kwargs):
super(TitleField, self).__init__(*args, **kwargs)
self.required = True
self.widget = forms.TextInput(
- attrs={'size' : 70, 'autocomplete' : 'off'}
- )
+ attrs={'size': 70, 'autocomplete': 'off'}
+ )
self.max_length = 255
- self.label = _('title')
- self.help_text = _('please enter a descriptive title for your question')
+ 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(_('title must be > 10 characters'))
+ """cleans the field for minimum and maximum length
+ also is supposed to work for unicode non-ascii characters"""
+ if value is None:
+ value = ''
+ if len(value) < askbot_settings.MIN_TITLE_LENGTH:
+ msg = ungettext_lazy(
+ 'title must be > %d character',
+ 'title must be > %d characters',
+ askbot_settings.MIN_TITLE_LENGTH
+ ) % askbot_settings.MIN_TITLE_LENGTH
+ raise forms.ValidationError(msg)
+ encoded_value = value.encode('utf-8')
+ if len(value) == len(encoded_value):
+ if len(value) > self.max_length:
+ raise forms.ValidationError(
+ _(
+ 'The title is too long, maximum allowed size is '
+ '%d characters'
+ ) % self.max_length
+ )
+ elif len(encoded_value) > self.max_length:
+ raise forms.ValidationError(
+ _(
+ 'The title is too long, maximum allowed size is '
+ '%d bytes'
+ ) % self.max_length
+ )
+
+ return value.strip() # TODO: test me
- return value
class EditorField(forms.CharField):
+ """EditorField is subclassed by the
+ :class:`QuestionEditorField` and :class:`AnswerEditorField`
+ """
+ length_error_template_singular = 'post content must be > %d character',
+ length_error_template_plural = 'post content must be > %d characters',
+ min_length = 10 # sentinel default value
+
def __init__(self, *args, **kwargs):
super(EditorField, self).__init__(*args, **kwargs)
self.required = True
- self.widget = forms.Textarea(attrs={'id':'editor'})
- self.label = _('content')
+ self.widget = forms.Textarea(attrs={'id': 'editor'})
+ self.label = _('content')
self.help_text = u''
self.initial = ''
def clean(self, value):
- if len(value) < 10:
- raise forms.ValidationError(_('question content must be > 10 characters'))
+ if value is None:
+ value = ''
+ if len(value) < self.min_length:
+ msg = ungettext_lazy(
+ self.length_error_template_singular,
+ self.length_error_template_plural,
+ self.min_length
+ ) % self.min_length
+ raise forms.ValidationError(msg)
return value
+
+class QuestionEditorField(EditorField):
+ """Editor field for the questions"""
+
+ def __init__(self, *args, **kwargs):
+ super(QuestionEditorField, self).__init__(*args, **kwargs)
+ self.length_error_template_singular = \
+ 'question body must be > %d character'
+ self.length_error_template_plural = \
+ 'question body must be > %d characters'
+ self.min_length = askbot_settings.MIN_QUESTION_BODY_LENGTH
+
+
+class AnswerEditorField(EditorField):
+ """Editor field for answers"""
+
+ def __init__(self, *args, **kwargs):
+ super(AnswerEditorField, self).__init__(*args, **kwargs)
+ self.length_error_template_singular = 'answer must be > %d character'
+ self.length_error_template_plural = 'answer must be > %d characters'
+ self.min_length = askbot_settings.MIN_ANSWER_BODY_LENGTH
+
+
class TagNamesField(forms.CharField):
+ """field that receives AskBot tag names"""
+
def __init__(self, *args, **kwargs):
super(TagNamesField, self).__init__(*args, **kwargs)
- self.required = True
- self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
+ self.required = askbot_settings.TAGS_ARE_REQUIRED
+ self.widget = forms.TextInput(
+ attrs={'size': 50, 'autocomplete': 'off'}
+ )
self.max_length = 255
- self.label = _('tags')
- #self.help_text = _('please use space to separate tags (this enables autocomplete feature)')
+ self.label = _('tags')
self.help_text = ungettext_lazy(
'Tags are short keywords, with no spaces within. '
'Up to %(max_tags)d tag can be used.',
@@ -142,33 +331,16 @@ class TagNamesField(forms.CharField):
) % {'max_tags': askbot_settings.MAX_TAGS_PER_POST}
self.initial = ''
- def need_mandatory_tags(self):
- """true, if list of mandatory tags is not empty"""
- return len(models.tag.get_mandatory_tags()) > 0
-
- def tag_string_matches(self, tag_string, mandatory_tag):
- """true if tag string matches the mandatory tag"""
- if mandatory_tag.endswith('*'):
- return tag_string.startswith(mandatory_tag[:-1])
- else:
- return tag_string == mandatory_tag
-
- def mandatory_tag_missing(self, tag_strings):
- """true, if mandatory tag is not present in the list
- of ``tag_strings``"""
- mandatory_tags = models.tag.get_mandatory_tags()
- for mandatory_tag in mandatory_tags:
- for tag_string in tag_strings:
- if self.tag_string_matches(tag_string, mandatory_tag):
- return False
- return True
-
def clean(self, value):
+ from askbot import models
value = super(TagNamesField, self).clean(value)
data = value.strip()
if len(data) < 1:
- raise forms.ValidationError(_('tags are required'))
-
+ if askbot_settings.TAGS_ARE_REQUIRED:
+ raise forms.ValidationError(_('tags are required'))
+ else:
+ #don't test for required characters when tags is ''
+ return ''
split_re = re.compile(const.TAG_SPLIT_REGEX)
tag_strings = split_re.split(data)
entered_tags = []
@@ -178,11 +350,11 @@ class TagNamesField(forms.CharField):
msg = ungettext_lazy(
'please use %(tag_count)d tag or less',
'please use %(tag_count)d tags or less',
- tag_count) % {'tag_count':max_tags}
+ tag_count) % {'tag_count': max_tags}
raise forms.ValidationError(msg)
- if self.need_mandatory_tags():
- if self.mandatory_tag_missing(tag_strings):
+ if need_mandatory_tags():
+ if mandatory_tag_missing_in_list(tag_strings):
msg = _(
'At least one of the following tags is required : %(tags)s'
) % {'tags': get_text_list(models.tag.get_mandatory_tags())}
@@ -191,17 +363,23 @@ class TagNamesField(forms.CharField):
for tag in tag_strings:
tag_length = len(tag)
if tag_length > askbot_settings.MAX_TAG_LENGTH:
- #singular form is odd in english, but required for pluralization
- #in other languages
- msg = ungettext_lazy('each tag must be shorter than %(max_chars)d character',#odd but added for completeness
- 'each tag must be shorter than %(max_chars)d characters',
- tag_length) % {'max_chars':tag_length}
+ #singular form is odd in english, but
+ #required for pluralization
+ #in other languages, odd but added for completeness
+ msg = ungettext_lazy(
+ 'each tag must be shorter than %(max_chars)d character',
+ 'each tag must be shorter than %(max_chars)d characters',
+ tag_length
+ ) % {'max_chars': tag_length}
raise forms.ValidationError(msg)
#todo - this needs to come from settings
tagname_re = re.compile(const.TAG_REGEX, re.UNICODE)
if not tagname_re.search(tag):
- raise forms.ValidationError(_('use-these-chars-in-tags'))
+ raise forms.ValidationError(_(
+ 'In tags, please use letters, '
+ 'numbers and characters "-+.#"'
+ ))
#only keep unique tags
if tag not in entered_tags:
entered_tags.append(tag)
@@ -222,7 +400,7 @@ class TagNamesField(forms.CharField):
#because we need tag name cases to be the same
#as those stored in the database
stored_tag = models.Tag.objects.get(
- name__iexact = entered_tag
+ name__iexact=entered_tag
)
if stored_tag.name not in cleaned_entered_tags:
cleaned_entered_tags.append(stored_tag.name)
@@ -231,30 +409,54 @@ class TagNamesField(forms.CharField):
return u' '.join(cleaned_entered_tags)
+
class WikiField(forms.BooleanField):
+ """Rendered as checkbox turning post into
+ "community wiki"
+ """
+
def __init__(self, *args, **kwargs):
super(WikiField, self).__init__(*args, **kwargs)
self.required = False
self.initial = False
- self.label = _('community wiki (karma is not awarded & many others can edit wiki post)')
- 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')
+ self.label = _(
+ 'community wiki (karma is not awarded & '
+ 'many others can edit wiki post)'
+ )
+ 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'
+ )
+
def clean(self, value):
return value and askbot_settings.WIKI_ON
+
class EmailNotifyField(forms.BooleanField):
+ """Rendered as checkbox which turns on
+ email notifications on the post"""
def __init__(self, *args, **kwargs):
super(EmailNotifyField, self).__init__(*args, **kwargs)
self.required = False
self.widget.attrs['class'] = 'nomargin'
+
class SummaryField(forms.CharField):
+
def __init__(self, *args, **kwargs):
super(SummaryField, self).__init__(*args, **kwargs)
self.required = False
- self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
+ self.widget = forms.TextInput(
+ attrs={'size': 50, 'autocomplete': 'off'}
+ )
self.max_length = 300
- 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)')
+ 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 DumpUploadForm(forms.Form):
@@ -264,6 +466,7 @@ class DumpUploadForm(forms.Form):
"""
dump_file = forms.FileField()
+
class ShowQuestionForm(forms.Form):
"""Cleans data necessary to access answers and comments
by the respective comment or answer id - necessary
@@ -271,10 +474,10 @@ class ShowQuestionForm(forms.Form):
on the page other than the first page of answers to a question.
Same for the answers that are shown on the later pages.
"""
- answer = forms.IntegerField(required = False)
- comment = forms.IntegerField(required = False)
- page = forms.IntegerField(required = False)
- sort = forms.CharField(required = False)
+ answer = forms.IntegerField(required=False)
+ comment = forms.IntegerField(required=False)
+ page = forms.IntegerField(required=False)
+ sort = forms.CharField(required=False)
def __init__(self, data, default_sort_method):
super(ShowQuestionForm, self).__init__(data)
@@ -303,13 +506,11 @@ class ShowQuestionForm(forms.Form):
in_data = self.get_pruned_data()
out_data = dict()
if ('answer' in in_data) ^ ('comment' in in_data):
- out_data['is_permalink'] = True
out_data['show_page'] = None
out_data['answer_sort_method'] = 'votes'
out_data['show_comment'] = in_data.get('comment', None)
out_data['show_answer'] = in_data.get('answer', None)
else:
- out_data['is_permalink'] = False
out_data['show_page'] = in_data.get('page', 1)
out_data['answer_sort_method'] = in_data.get(
'sort',
@@ -320,6 +521,7 @@ class ShowQuestionForm(forms.Form):
self.cleaned_data = out_data
return out_data
+
class ChangeUserReputationForm(forms.Form):
"""Form that allows moderators and site administrators
to adjust reputation of users.
@@ -329,13 +531,15 @@ class ChangeUserReputationForm(forms.Form):
"""
user_reputation_delta = forms.IntegerField(
- min_value = 1,
- label = _('Enter number of points to add or subtract')
- )
- comment = forms.CharField(max_length = 128)
+ min_value=1,
+ label=_(
+ 'Enter number of points to add or subtract'
+ )
+ )
+ comment = forms.CharField(max_length=128)
def clean_comment(self):
- if 'comment' in self.cleaned_data:
+ if 'comment' in self.cleaned_data:
comment = self.cleaned_data['comment'].strip()
if comment == '':
del self.cleaned_data['comment']
@@ -369,9 +573,7 @@ class ChangeUserStatusForm(forms.Form):
"moderation" tab
"""
- user_status = forms.ChoiceField(
- label = _('Change status to'),
- )
+ user_status = forms.ChoiceField(label=_('Change status to'))
def __init__(self, *arg, **kwarg):
@@ -392,12 +594,12 @@ class ChangeUserStatusForm(forms.Form):
#remove current status of the "subject" user from choices
user_status_choices = filter_choices(
- remove_choices = [subject.status, ],
- from_choices = user_status_choices
+ remove_choices=[subject.status, ],
+ from_choices=user_status_choices
)
#add prompt option
- user_status_choices = ( ('select', _('which one?')), ) \
+ user_status_choices = (('select', _('which one?')), ) \
+ user_status_choices
self.fields['user_status'].choices = user_status_choices
@@ -445,112 +647,39 @@ class ChangeUserStatusForm(forms.Form):
msg = _(
'If you wish to change %(username)s\'s status, '
'please make a meaningful selection.'
- ) % {'username': self.subject.username }
+ ) % {'username': self.subject.username}
raise forms.ValidationError(msg)
return self.cleaned_data
+
class SendMessageForm(forms.Form):
subject_line = forms.CharField(
- label = _('Subject line'),
- max_length = 64,
- widget = forms.TextInput(
- attrs = {'size':64},
- )
- )
+ label=_('Subject line'),
+ max_length=64,
+ widget=forms.TextInput(attrs={'size': 64}, )
+ )
body_text = forms.CharField(
- label = _('Message text'),
- max_length = 1600,
- widget = forms.Textarea(
- attrs = {'cols':64}
- )
+ label=_('Message text'),
+ max_length=1600,
+ widget=forms.Textarea(attrs={'cols': 64})
)
-class AdvancedSearchForm(forms.Form):
- """nothing must be required in this form
- it is used by the main questions view for input validation only
- """
- scope = forms.ChoiceField(choices=const.POST_SCOPE_LIST, required=False)
- sort = forms.ChoiceField(choices=const.POST_SORT_METHODS, required=False)
- query = forms.CharField(max_length=256, required=False)
- #search field is actually a button, used to detect manual button click
- search = forms.CharField(max_length=16, required=False)
- reset_tags = forms.BooleanField(required=False)
- reset_author = forms.BooleanField(required=False)
- reset_query = forms.BooleanField(required=False)
- start_over = forms.BooleanField(required=False)
- tags = forms.CharField(max_length=256, required=False)
- remove_tag = forms.CharField(max_length=256, required=False)
- author = forms.IntegerField(required=False)
- page_size = forms.ChoiceField(choices=const.PAGE_SIZE_CHOICES, required=False)
- page = forms.IntegerField(required=False)
-
- def clean_tags(self):
- if 'tags' in self.cleaned_data:
- tags_input = self.cleaned_data['tags'].strip()
- split_re = re.compile(const.TAG_SPLIT_REGEX)
- tag_strings = split_re.split(tags_input)
- tagname_re = re.compile(const.TAG_REGEX, re.UNICODE)
- out = set()
- for s in tag_strings:
- if tagname_re.search(s):
- out.add(s)
- if len(out) > 0:
- self.cleaned_data['tags'] = out
- else:
- self.cleaned_data['tags'] = None
- return self.cleaned_data['tags']
-
- def clean_query(self):
- if 'query' in self.cleaned_data:
- q = self.cleaned_data['query'].strip()
- if q == '':
- q = None
- self.cleaned_data['query'] = q
- return self.cleaned_data['query']
-
- def clean_page_size(self):
- if 'page_size' in self.cleaned_data:
- if self.cleaned_data['page_size'] == '':
- self.cleaned_data['page_size'] = None
- else:
- page_size = self.cleaned_data['page_size']
- #by this time it is guaranteed to be castable as int
- self.cleaned_data['page_size'] = int(page_size)
- return self.cleaned_data['page_size']
-
- def clean(self):
- #todo rewrite
- data = self.cleaned_data
- cleanup_dict(data, 'scope', '')
- cleanup_dict(data, 'tags', None)
- cleanup_dict(data, 'sort', '')
- cleanup_dict(data, 'query', None)
- cleanup_dict(data, 'search', '')
- cleanup_dict(data, 'reset_tags', False)
- cleanup_dict(data, 'reset_author', False)
- cleanup_dict(data, 'reset_query', False)
- cleanup_dict(data, 'remove_tag', '')
- cleanup_dict(data, 'start_over', False)
- cleanup_dict(data, 'author', None)
- cleanup_dict(data, 'page', None)
- cleanup_dict(data, 'page_size', None)
- return data
-
class NotARobotForm(forms.Form):
recaptcha = RecaptchaField(
- private_key = askbot_settings.RECAPTCHA_SECRET,
- public_key = askbot_settings.RECAPTCHA_KEY
+ private_key=askbot_settings.RECAPTCHA_SECRET,
+ public_key=askbot_settings.RECAPTCHA_KEY
)
+
class FeedbackForm(forms.Form):
name = forms.CharField(label=_('Your name (optional):'), required=False)
email = forms.EmailField(label=_('Email:'), required=False)
message = forms.CharField(
label=_('Your message:'),
max_length=800,
- widget=forms.Textarea(attrs={'cols':60})
+ widget=forms.Textarea(attrs={'cols': 60})
)
no_email = forms.BooleanField(
label=_("I don't want to give my email or receive a response:"),
@@ -567,19 +696,21 @@ class FeedbackForm(forms.Form):
def _add_recaptcha_field(self):
self.fields['recaptcha'] = RecaptchaField(
- private_key = askbot_settings.RECAPTCHA_SECRET,
- public_key = askbot_settings.RECAPTCHA_KEY
- )
+ private_key=askbot_settings.RECAPTCHA_SECRET,
+ public_key=askbot_settings.RECAPTCHA_KEY
+ )
def clean(self):
super(FeedbackForm, self).clean()
if not self.is_auth:
- if not self.cleaned_data['no_email'] and not self.cleaned_data['email']:
+ if not self.cleaned_data['no_email'] \
+ and not self.cleaned_data['email']:
msg = _('Please mark "I dont want to give my mail" field.')
self._errors['email'] = self.error_class([msg])
return self.cleaned_data
+
class FormWithHideableFields(object):
"""allows to swap a field widget to HiddenInput() and back"""
@@ -601,6 +732,7 @@ class FormWithHideableFields(object):
if name in self.__hidden_fields:
self.fields[name] = self.__hidden_fields.pop(name)
+
class AskForm(forms.Form, FormWithHideableFields):
"""the form used to askbot questions
field ask_anonymously is shown to the user if the
@@ -609,36 +741,51 @@ class AskForm(forms.Form, FormWithHideableFields):
in the cleaned data, and will evaluate to False if the
settings forbids anonymous asking
"""
- title = TitleField()
- text = EditorField()
- tags = TagNamesField()
+ title = TitleField()
+ text = QuestionEditorField()
+ tags = TagNamesField()
wiki = WikiField()
ask_anonymously = forms.BooleanField(
- label = _('ask anonymously'),
- help_text = _(
+ label=_('ask anonymously'),
+ help_text=_(
'Check if you do not want to reveal your name '
'when asking this question'
),
- required = False,
+ required=False,
+ )
+ openid = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 40, 'class': 'openid-input'})
+ )
+ user = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 35})
+ )
+ email = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 35})
)
- openid = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 40, 'class':'openid-input'}))
- user = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- email = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
def __init__(self, *args, **kwargs):
super(AskForm, self).__init__(*args, **kwargs)
#hide ask_anonymously field
- if askbot_settings.ALLOW_ASK_ANONYMOUSLY == False:
+ if askbot_settings.ALLOW_ASK_ANONYMOUSLY is False:
self.hide_field('ask_anonymously')
def clean_ask_anonymously(self):
"""returns false if anonymous asking is not allowed
"""
- if askbot_settings.ALLOW_ASK_ANONYMOUSLY == False:
+ if askbot_settings.ALLOW_ASK_ANONYMOUSLY is False:
self.cleaned_data['ask_anonymously'] = False
return self.cleaned_data['ask_anonymously']
+ASK_BY_EMAIL_SUBJECT_HELP = _(
+ 'Subject line is expected in the format: '
+ '[tag1, tag2, tag3,...] question title'
+)
+
+
class AskByEmailForm(forms.Form):
""":class:`~askbot.forms.AskByEmailForm`
validates question data, where question was posted
@@ -657,11 +804,17 @@ class AskByEmailForm(forms.Form):
* ``email`` - email address
* ``title`` - question title
* ``tagnames`` - tag names all in one string
- * ``body_text`` - body of question text - a pass-through, no extra validation
+ * ``body_text`` - body of question text -
+ a pass-through, no extra validation
"""
- sender = forms.CharField(max_length = 255)
- subject = forms.CharField(max_length = 255)
- body_text = EditorField()
+ sender = forms.CharField(max_length=255)
+ subject = forms.CharField(
+ max_length=255,
+ error_messages={
+ 'required': ASK_BY_EMAIL_SUBJECT_HELP
+ }
+ )
+ body_text = QuestionEditorField()
def clean_sender(self):
"""Cleans the :attr:`~askbot.forms.AskByEmail.sender` attribute
@@ -682,52 +835,67 @@ class AskByEmailForm(forms.Form):
``tagnames`` and ``title``
"""
raw_subject = self.cleaned_data['subject'].strip()
- subject_re = re.compile(r'^\[([^]]+)\](.*)$')
+ if askbot_settings.TAGS_ARE_REQUIRED:
+ subject_re = re.compile(r'^\[([^]]+)\](.*)$')
+ else:
+ subject_re = re.compile(r'^(?:\[([^]]+)\])?(.*)$')
match = subject_re.match(raw_subject)
if match:
#make raw tags comma-separated
- tagnames = match.group(1).replace(';',',')
+ if match.group(1) is None: # no tags
+ self.cleaned_data['tagnames'] = ''
+ else:
+ tagnames = match.group(1).replace(';', ',')
- #pre-process tags
- tag_list = [tag.strip() for tag in tagnames.split(',')]
- tag_list = [re.sub(r'\s+', ' ', tag) for tag in tag_list]
- if askbot_settings.REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS:
- tag_list = [tag.replace(' ', '-') for tag in tag_list]
- tagnames = ' '.join(tag_list)#todo: use tag separator char here
+ #pre-process tags
+ tag_list = [tag.strip() for tag in tagnames.split(',')]
+ tag_list = [re.sub(r'\s+', ' ', tag) for tag in tag_list]
- #clean tags - may raise ValidationError
- self.cleaned_data['tagnames'] = TagNamesField().clean(tagnames)
+ if askbot_settings.REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS:
+ tag_list = [tag.replace(' ', '-') for tag in tag_list]
+ #todo: use tag separator char here
+ tagnames = ' '.join(tag_list)
+
+ #clean tags - may raise ValidationError
+ self.cleaned_data['tagnames'] = TagNamesField().clean(tagnames)
#clean title - may raise ValidationError
title = match.group(2).strip()
self.cleaned_data['title'] = TitleField().clean(title)
else:
- raise forms.ValidationError('could not parse subject line')
+ raise forms.ValidationError(ASK_BY_EMAIL_SUBJECT_HELP)
return self.cleaned_data['subject']
+
class AnswerForm(forms.Form):
- text = EditorField()
- wiki = WikiField()
- openid = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 40, 'class':'openid-input'}))
- user = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- email = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- email_notify = EmailNotifyField()
- def __init__(self, question, user, *args, **kwargs):
+ text = AnswerEditorField()
+ wiki = WikiField()
+ openid = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 40, 'class': 'openid-input'})
+ )
+ user = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 35})
+ )
+ email = forms.CharField(
+ required=False, max_length=255,
+ widget=forms.TextInput(attrs={'size': 35})
+ )
+ email_notify = EmailNotifyField(initial=False)
+
+ def __init__(self, *args, **kwargs):
super(AnswerForm, self).__init__(*args, **kwargs)
- self.fields['email_notify'].widget.attrs['id'] = 'question-subscribe-updates'
- if question.wiki and askbot_settings.WIKI_ON:
- self.fields['wiki'].initial = True
- if user.is_authenticated():
- if user in question.followed_by.all():
- self.fields['email_notify'].initial = True
- return
- self.fields['email_notify'].initial = False
+ self.fields['email_notify'].widget.attrs['id'] = \
+ 'question-subscribe-updates'
+
class VoteForm(forms.Form):
"""form used in ajax vote view (only comment_upvote so far)
"""
post_id = forms.IntegerField()
- cancel_vote = forms.CharField()#char because it is 'true' or 'false' as string
+ # char because it is 'true' or 'false' as string
+ cancel_vote = forms.CharField()
def clean_cancel_vote(self):
val = self.cleaned_data['cancel_vote']
@@ -737,7 +905,9 @@ class VoteForm(forms.Form):
result = False
else:
del self.cleaned_data['cancel_vote']
- raise forms.ValidationError('either "true" or "false" strings expected')
+ raise forms.ValidationError(
+ 'either "true" or "false" strings expected'
+ )
self.cleaned_data['cancel_vote'] = result
return self.cleaned_data['cancel_vote']
@@ -745,43 +915,57 @@ class VoteForm(forms.Form):
class CloseForm(forms.Form):
reason = forms.ChoiceField(choices=const.CLOSE_REASONS)
+
class RetagQuestionForm(forms.Form):
tags = TagNamesField()
- # initialize the default values
+
def __init__(self, question, *args, **kwargs):
+ """initialize the default values"""
super(RetagQuestionForm, self).__init__(*args, **kwargs)
- self.fields['tags'].initial = question.tagnames
+ self.fields['tags'].initial = question.thread.tagnames
+
class RevisionForm(forms.Form):
"""
Lists revisions of a Question or Answer
"""
- revision = forms.ChoiceField(widget=forms.Select(attrs={'style' : 'width:520px'}))
+ revision = forms.ChoiceField(
+ widget=forms.Select(
+ attrs={'style': 'width:520px'}
+ )
+ )
def __init__(self, post, latest_revision, *args, **kwargs):
super(RevisionForm, self).__init__(*args, **kwargs)
- revisions = post.revisions.all().values_list(
- 'revision', 'author__username', 'revised_at', 'summary')
+ revisions = post.revisions.values_list(
+ 'revision', 'author__username', 'revised_at', 'summary'
+ )
date_format = '%c'
- self.fields['revision'].choices = [
- (r[0], u'%s - %s (%s) %s' % (r[0], r[1], r[2].strftime(date_format), r[3]))
- for r in revisions]
+ rev_choices = list()
+ for r in revisions:
+ rev_details = u'%s - %s (%s) %s' % (
+ r[0], r[1], r[2].strftime(date_format), r[3]
+ )
+ rev_choices.append((r[0], rev_details))
+
+ self.fields['revision'].choices = rev_choices
self.fields['revision'].initial = latest_revision.revision
+
class EditQuestionForm(forms.Form, FormWithHideableFields):
- title = TitleField()
- text = EditorField()
- tags = TagNamesField()
+ title = TitleField()
+ text = QuestionEditorField()
+ tags = TagNamesField()
summary = SummaryField()
wiki = WikiField()
reveal_identity = forms.BooleanField(
- help_text = _(
+ help_text=_(
'You have asked this question anonymously, '
'if you decide to reveal your identity, please check '
'this box.'
),
- label = _('reveal identity'),
- required = False,
+ label=_('reveal identity'),
+ required=False,
)
#todo: this is odd that this form takes question as an argument
@@ -802,8 +986,8 @@ class EditQuestionForm(forms.Form, FormWithHideableFields):
def can_stay_anonymous(self):
"""determines if the user cat keep editing the question
anonymously"""
- return (askbot_settings.ALLOW_ASK_ANONYMOUSLY \
- and self.question.is_anonymous \
+ return (askbot_settings.ALLOW_ASK_ANONYMOUSLY
+ and self.question.is_anonymous
and self.user.is_owner_of(self.question)
)
@@ -829,7 +1013,7 @@ class EditQuestionForm(forms.Form, FormWithHideableFields):
"""
value = self.cleaned_data['reveal_identity']
if self.question.is_anonymous:
- if value == True:
+ if value is True:
if self.user.is_owner_of(self.question):
#regardless of the ALLOW_ASK_ANONYMOUSLY
return True
@@ -847,7 +1031,7 @@ class EditQuestionForm(forms.Form, FormWithHideableFields):
else:
can_ask_anon = askbot_settings.ALLOW_ASK_ANONYMOUSLY
is_owner = self.user.is_owner_of(self.question)
- if can_ask_anon == False and is_owner:
+ if can_ask_anon is False and is_owner:
self.show_field('reveal_identity')
raise forms.ValidationError(
_(
@@ -871,13 +1055,14 @@ class EditQuestionForm(forms.Form, FormWithHideableFields):
"""
reveal_identity = self.cleaned_data.get('reveal_identity', False)
stay_anonymous = False
- if reveal_identity == False and self.can_stay_anonymous():
+ if reveal_identity is False and self.can_stay_anonymous():
stay_anonymous = True
self.cleaned_data['stay_anonymous'] = stay_anonymous
return self.cleaned_data
+
class EditAnswerForm(forms.Form):
- text = EditorField()
+ text = AnswerEditorField()
summary = SummaryField()
wiki = WikiField()
@@ -886,54 +1071,67 @@ class EditAnswerForm(forms.Form):
self.fields['text'].initial = revision.text
self.fields['wiki'].initial = answer.wiki
+
+class EditTagWikiForm(forms.Form):
+ text = forms.CharField(required=False)
+ tag_id = forms.IntegerField()
+
+
class EditUserForm(forms.Form):
email = forms.EmailField(
label=u'Email',
- help_text=_('this email will be linked to gravatar'),
required=True,
max_length=255,
- widget=forms.TextInput(attrs={'size' : 35})
+ widget=forms.TextInput(attrs={'size': 35})
)
realname = forms.CharField(
label=_('Real name'),
required=False,
max_length=255,
- widget=forms.TextInput(attrs={'size' : 35})
+ widget=forms.TextInput(attrs={'size': 35})
)
website = forms.URLField(
label=_('Website'),
required=False,
max_length=255,
- widget=forms.TextInput(attrs={'size' : 35})
+ widget=forms.TextInput(attrs={'size': 35})
)
city = forms.CharField(
label=_('City'),
required=False,
max_length=255,
- widget=forms.TextInput(attrs={'size' : 35})
+ widget=forms.TextInput(attrs={'size': 35})
)
- country = CountryField(required = False)
+ country = CountryField(required=False)
show_country = forms.BooleanField(
label=_('Show country'),
required=False
)
+ show_marked_tags = forms.BooleanField(
+ label=_('Show tag choices'),
+ required=False
+ )
+
birthday = forms.DateField(
label=_('Date of birth'),
- help_text=_('will not be shown, used to calculate age, format: YYYY-MM-DD'),
+ help_text=_(
+ 'will not be shown, used to calculate '
+ 'age, format: YYYY-MM-DD'
+ ),
required=False,
- widget=forms.TextInput(attrs={'size' : 35})
+ widget=forms.TextInput(attrs={'size': 35})
)
about = forms.CharField(
label=_('Profile'),
required=False,
- widget=forms.Textarea(attrs={'cols' : 60})
+ widget=forms.Textarea(attrs={'cols': 60})
)
def __init__(self, user, *args, **kwargs):
@@ -947,12 +1145,13 @@ class EditUserForm(forms.Form):
self.fields['realname'].initial = user.real_name
self.fields['website'].initial = user.website
self.fields['city'].initial = user.location
- if user.country == None:
+ if user.country is None:
country = 'unknown'
else:
country = user.country
self.fields['country'].initial = country
self.fields['show_country'].initial = user.show_country
+ self.fields['show_marked_tags'].initial = user.show_marked_tags
if user.date_of_birth is not None:
self.fields['birthday'].initial = user.date_of_birth
@@ -964,24 +1163,32 @@ class EditUserForm(forms.Form):
"""For security reason one unique email in database"""
if self.user.email != self.cleaned_data['email']:
#todo dry it, there is a similar thing in openidauth
- if askbot_settings.EMAIL_UNIQUE == True:
+ if askbot_settings.EMAIL_UNIQUE is True:
if 'email' in self.cleaned_data:
try:
- User.objects.get(email = self.cleaned_data['email'])
+ User.objects.get(email=self.cleaned_data['email'])
except User.DoesNotExist:
return self.cleaned_data['email']
except User.MultipleObjectsReturned:
- 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'))
+ 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')
+ )
return self.cleaned_data['email']
+
class TagFilterSelectionForm(forms.ModelForm):
email_tag_filter_strategy = forms.ChoiceField(
- choices = const.TAG_FILTER_STRATEGY_CHOICES,
- initial = const.EXCLUDE_IGNORED,
- label = _('Choose email tag filter'),
- widget = forms.RadioSelect
+ choices=const.TAG_DISPLAY_FILTER_STRATEGY_CHOICES,
+ initial=const.EXCLUDE_IGNORED,
+ label=_('Choose email tag filter'),
+ widget=forms.RadioSelect
)
+
class Meta:
model = User
fields = ('email_tag_filter_strategy',)
@@ -998,31 +1205,31 @@ class TagFilterSelectionForm(forms.ModelForm):
class EmailFeedSettingField(forms.ChoiceField):
def __init__(self, *arg, **kwarg):
kwarg['choices'] = const.NOTIFICATION_DELIVERY_SCHEDULE_CHOICES
- #kwarg['initial'] = askbot_settings.DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE
kwarg['widget'] = forms.RadioSelect
super(EmailFeedSettingField, self).__init__(*arg, **kwarg)
+
class EditUserEmailFeedsForm(forms.Form):
FORM_TO_MODEL_MAP = {
- 'all_questions':'q_all',
- 'asked_by_me':'q_ask',
- 'answered_by_me':'q_ans',
- 'individually_selected':'q_sel',
- 'mentions_and_comments':'m_and_c',
+ 'all_questions': 'q_all',
+ 'asked_by_me': 'q_ask',
+ 'answered_by_me': 'q_ans',
+ 'individually_selected': 'q_sel',
+ 'mentions_and_comments': 'm_and_c',
}
NO_EMAIL_INITIAL = {
- 'all_questions':'n',
- 'asked_by_me':'n',
- 'answered_by_me':'n',
- 'individually_selected':'n',
- 'mentions_and_comments':'n',
+ 'all_questions': 'n',
+ 'asked_by_me': 'n',
+ 'answered_by_me': 'n',
+ 'individually_selected': 'n',
+ 'mentions_and_comments': 'n',
}
INSTANT_EMAIL_INITIAL = {
- 'all_questions':'i',
- 'asked_by_me':'i',
- 'answered_by_me':'i',
- 'individually_selected':'i',
- 'mentions_and_comments':'i',
+ 'all_questions': 'i',
+ 'asked_by_me': 'i',
+ 'answered_by_me': 'i',
+ 'individually_selected': 'i',
+ 'mentions_and_comments': 'i',
}
asked_by_me = EmailFeedSettingField(
@@ -1043,8 +1250,9 @@ class EditUserEmailFeedsForm(forms.Form):
)
def set_initial_values(self, user=None):
+ from askbot import models
KEY_MAP = dict([(v, k) for k, v in self.FORM_TO_MODEL_MAP.iteritems()])
- if user != None:
+ if user is not None:
settings = models.EmailFeedSetting.objects.filter(subscriber=user)
initial_values = {}
for setting in settings:
@@ -1074,7 +1282,7 @@ class EditUserEmailFeedsForm(forms.Form):
"""
return self.FORM_TO_MODEL_MAP.values()
- def set_frequency(self, frequency = 'n'):
+ def set_frequency(self, frequency='n'):
data = {
'all_questions': frequency,
'asked_by_me': frequency,
@@ -1086,10 +1294,11 @@ class EditUserEmailFeedsForm(forms.Form):
self.cleaned_data = data
self.initial = data
- def save(self,user,save_unbound=False):
- """
- with save_unbound==True will bypass form validation and save initial values
+ def save(self, user, save_unbound=False):
+ """with save_unbound==True will bypass form
+ validation and save initial values
"""
+ from askbot import models
changed = False
for form_field, feed_type in self.FORM_TO_MODEL_MAP.items():
s, created = models.EmailFeedSetting.objects.get_or_create(
@@ -1112,23 +1321,30 @@ class EditUserEmailFeedsForm(forms.Form):
if created:
s.save()
if form_field == 'individually_selected':
- feed_type = ContentType.objects.get_for_model(models.Question)
- user.followed_questions.clear()
+ user.followed_threads.clear()
return changed
-class SimpleEmailSubscribeForm(forms.Form):
- SIMPLE_SUBSCRIBE_CHOICES = (
- ('y',_('okay, let\'s try!')),
- ('n',_('no community email please, thanks'))
- )
- subscribe = forms.ChoiceField(
- widget=forms.widgets.RadioSelect,
- error_messages={'required':_('please choose one of the options above')},
- choices=SIMPLE_SUBSCRIBE_CHOICES
+
+class SubscribeForEmailUpdatesField(forms.ChoiceField):
+ """a simple yes or no field to subscribe for email or not"""
+ def __init__(self, **kwargs):
+ kwargs['widget'] = forms.widgets.RadioSelect
+ kwargs['error_messages'] = {
+ 'required': _('please choose one of the options above')
+ }
+ kwargs['choices'] = (
+ ('y', _('okay, let\'s try!')),
+ (
+ 'n',
+ _('no %(sitename)s email please, thanks')
+ % {'sitename': askbot_settings.APP_SHORT_NAME}
+ )
)
+ super(SubscribeForEmailUpdatesField, self).__init__(**kwargs)
- def __init__(self, *args, **kwargs):
- super(SimpleEmailSubscribeForm, self).__init__(*args, **kwargs)
+
+class SimpleEmailSubscribeForm(forms.Form):
+ subscribe = SubscribeForEmailUpdatesField()
def save(self, user=None):
EFF = EditUserEmailFeedsForm
@@ -1141,3 +1357,35 @@ class SimpleEmailSubscribeForm(forms.Form):
else:
email_settings_form = EFF(initial=EFF.NO_EMAIL_INITIAL)
email_settings_form.save(user, save_unbound=True)
+
+
+class GroupLogoURLForm(forms.Form):
+ """form for saving group logo url"""
+ group_id = forms.IntegerField()
+ image_url = forms.CharField()
+
+
+class EditGroupMembershipForm(forms.Form):
+ """a form for adding or removing users
+ to and from user groups"""
+ user_id = forms.IntegerField()
+ group_name = forms.CharField()
+ action = forms.CharField()
+
+ def clean_action(self):
+ """allowed actions are 'add' and 'remove'"""
+ action = self.cleaned_data['action']
+ if action not in ('add', 'remove'):
+ del self.cleaned_data['action']
+ raise forms.ValidationError('invalid action')
+ return action
+
+
+class EditRejectReasonForm(forms.Form):
+ reason_id = forms.IntegerField(required=False)
+ title = CountedWordsField(
+ min_words=1, max_words=4, field_name=_('Title')
+ )
+ details = CountedWordsField(
+ min_words=6, field_name=_('Description')
+ )
diff --git a/askbot/importers/stackexchange/management/commands/load_stackexchange.py b/askbot/importers/stackexchange/management/commands/load_stackexchange.py
index 1f6b2042..ff17a523 100644
--- a/askbot/importers/stackexchange/management/commands/load_stackexchange.py
+++ b/askbot/importers/stackexchange/management/commands/load_stackexchange.py
@@ -523,12 +523,9 @@ class Command(BaseCommand):
"""p,u,t - post, user, timestamp
"""
if isinstance(p, askbot.Question):
- p.last_activity_by = u
- p.last_activity_at = t
+ p.thread.set_last_activity(last_activity_by=u, last_activity_at=t)
elif isinstance(p, askbot.Answer):
- p.question.last_activity_by = u
- p.question.last_activity_at = t
- p.question.save()
+ p.question.thread.set_last_activity(last_activity_by=u, last_activity_at=t)
def _process_post_rollback_revision_group(self, rev_group):
#todo: don't know what to do here as there were no
@@ -572,15 +569,9 @@ class Command(BaseCommand):
if p is None:
return
if rev_type == 'Post Closed':
- p.closed = True
- p.closed_at = t
- p.closed_by = u
- p.close_reason = X.get_close_reason(rev.comment)
+ p.thread.set_closed_status(closed=True, closed_at=t, closed_by=u, close_reason=X.get_close_reason(rev.comment))
elif rev_type == 'Post Reopened':
- p.closed = False
- p.closed_at = None
- p.closed_by = None
- p.close_reason = None
+ p.thread.set_closed_status(closed=False, closed_at=None, closed_by=None, close_reason=None)
self.mark_activity(p,u,t)
p.save()
return
@@ -756,8 +747,8 @@ class Command(BaseCommand):
q = X.get_post(se_q)
if q is None:
continue
- q.view_count = se_q.view_count
- q.save()
+ q.thread.view_count = se_q.view_count
+ q.thread.save()
def transfer_QA_votes(self):
diff --git a/askbot/locale/ca/LC_MESSAGES/django.mo b/askbot/locale/ca/LC_MESSAGES/django.mo
index 31adf112..98350d2a 100644
--- a/askbot/locale/ca/LC_MESSAGES/django.mo
+++ b/askbot/locale/ca/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/ca/LC_MESSAGES/django.po b/askbot/locale/ca/LC_MESSAGES/django.po
index 9a08cae2..f99d7a3d 100644
--- a/askbot/locale/ca/LC_MESSAGES/django.po
+++ b/askbot/locale/ca/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-14 11:22-0600\n"
+"POT-Creation-Date: 2012-04-18 18:55-0500\n"
"PO-Revision-Date: 2011-11-28 19:26+0200\n"
"Last-Translator: Jordi Bofill <jordi.bofill@upc.edu>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,15 +22,15 @@ msgstr ""
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "Els visitants anònims no tenen accés a aquesta funció"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr ""
-#: feed.py:26
+#: feed.py:28
msgid "Individual question feed"
msgstr "Canal de pregunta individual"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "preguntes recents"
@@ -57,188 +57,214 @@ msgstr "títol"
msgid "please enter a descriptive title for your question"
msgstr "Escriviu un títol descriptiu de la pregunta"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "el títol ha de tenir més de 10 caràcters"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "el títol ha de tenir més d'%d caràcter"
+msgstr[1] "el títol ha de tenir més de %d caràcters"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
-#: forms.py:119
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "contingut"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "la pregunta ha de tenir més de 10 caràcters"
-
-#: forms.py:134 skins/common/templates/widgets/edit_post.html:20
-#: skins/common/templates/widgets/edit_post.html:32
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "etiquetes"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"Les etiquetes són paraules clau curtes, sense espais. Es poden usar fins a 5 "
-"etiquetes."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Les etiquetes són paraules clau curtes, sense espais. Es poden usar fins a "
+"%(max_tags)d etiqueta."
+msgstr[1] ""
+"Les etiquetes són paraules clau curtes, sense espais. Es poden usar fins a "
+"%(max_tags)d etiquetes."
-#: forms.py:164 skins/default/templates/question_retag.html:58
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "es requereixen etiquetes"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "usar %(tag_count)d etiqueta o menys"
msgstr[1] "usar %(tag_count)d etiquetes o menys"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr "Es requereixen com a mínim una de les etiquetes següents: %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "les etiquetes han de tenir menys de %(max_chars)d caràcter"
msgstr[1] "les etiquetes han de tenir menys de %(max_chars)d caràcters"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
-msgstr "wiki comunitari (no es concedeix reputació; altres usuaris poden editar "
+msgstr ""
+"wiki comunitari (no es concedeix reputació; altres usuaris poden editar "
"l'entrada)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
-msgstr "Amb l'opció de wiki comunitari la pregunta i la resposta no generen punts "
+msgstr ""
+"Amb l'opció de wiki comunitari la pregunta i la resposta no generen punts "
"per l'autor i no es mostra el nom de l'autor."
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "resum actualitzat:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
-msgstr "breu resum de la revisió (p.e. correcció ortogràfica, gramàtica, millora "
+msgstr ""
+"breu resum de la revisió (p.e. correcció ortogràfica, gramàtica, millora "
"d'estil, aquest camp és opcional)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "Introduir el nombre de punts a sumar o restar"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "aprovat"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "vist"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr "deshabilitat"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "bloquejat"
-#: forms.py:346
+#: forms.py:405
msgid "administrator"
msgstr "administrador"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "moderador"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "Canviar estat a"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "quin?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr "No es pot canviar el pròpi estat"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "No es pot canviar l'altre usuari a moderador"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "No es pot canviar l'estat d'un altre moderador"
-#: forms.py:434
+#: forms.py:493
msgid "Cannot change status to admin"
msgstr "No es pot canviar a l'estat d'administrador "
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
-msgstr "Si es vol canviar l'estat de %(username)s, feu una selecció amb significat"
+msgstr ""
+"Si es vol canviar l'estat de %(username)s, feu una selecció amb significat"
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "Línia d'assumpte"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "Text del missatge"
-#: forms.py:542
+#: forms.py:530
msgid "Your name (optional):"
msgstr "El vostre nom (opcional):"
-#: forms.py:543
+#: forms.py:531
msgid "Email:"
msgstr "Correu electrònic:"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "El vostre missatge:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr "No donar el meu correu electrònic or rebre respostes:"
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr "Marcar l'opció \"No donar el meu correu electrònic\"."
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr "preguntar anònimament"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr "Marcar si no voleu mostrar el vostre nom al fer aquesta pregunta"
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
-msgstr "Heu fet aquesta pregunta anònimament, si voleu mostrar la vostra identitat "
+msgstr ""
+"Heu fet aquesta pregunta anònimament, si voleu mostrar la vostra identitat "
"marqueu aquesta opció."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr "mostrar identitat"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
@@ -246,7 +272,7 @@ msgstr ""
"Només l'autor de la pregunta anònima pot mostrar la seva identitat. "
"Desmarqueu l'opció"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
@@ -256,109 +282,130 @@ msgstr ""
"Si us plau, marqueu «mostrar identitat» o tornareu a carregar aquesta pàgina "
"i editeu de nou la pregunta"
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr "aquest correu electrònic s'enllaçarà al Gravatar"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nom real"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Lloc web"
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr "Ciutat"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr "Mostrar país"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Data de naixament"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "no es mostrarà, s'usa per calcular l'edat, format: AAAA-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Perfil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Nom a mostrar"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "aquesta adreça de correu ja està registrada, useu una altra"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "Seleccionar etiqueta filtre per el correu electrònic"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Preguntat per mi"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Respost per mi"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Seleccionat individualment"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Forum senser (filtrar per etiqueta)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Comentaris i entrades us mencionen"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "Seleccionar una de les opcions anteriors"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "d'acord, provem-ho!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "no, no rebre correus electrònics de la comunitat"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "Seleccionar una de les opcions anteriors"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
-#: urls.py:57
+#: urls.py:41
msgid "about/"
msgstr "sobre/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr ""
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "privacitat/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "respostes/"
-#: urls.py:61 urls.py:87 urls.py:212
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "editar/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "revisions/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:123 urls.py:299
-#: skins/default/templates/question/javascript.html:16
+#: urls.py:61
+msgid "questions"
+msgstr "preguntes"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "preguntes/"
@@ -382,7 +429,7 @@ msgstr "reobrir/"
msgid "answer/"
msgstr "resposta/"
-#: urls.py:112 skins/default/templates/question/javascript.html:16
+#: urls.py:112
msgid "vote/"
msgstr "vot/"
@@ -399,7 +446,6 @@ msgid "subscribe-for-tags/"
msgstr "subscriure-per-etiquetes/"
#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
-#: skins/default/templates/main_page/javascript.html:39
msgid "users/"
msgstr "usuaris/"
@@ -431,12 +477,11 @@ msgstr "penjar/"
msgid "feedback/"
msgstr "comentaris/"
-#: urls.py:305 skins/default/templates/main_page/javascript.html:38
-#: skins/default/templates/question/javascript.html:15
+#: urls.py:305
msgid "question/"
msgstr "pregunta/"
-#: urls.py:312 setup_templates/settings.py:208
+#: urls.py:312 setup_templates/settings.py:210
#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "compte/"
@@ -564,25 +609,30 @@ msgid ""
msgstr ""
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configuració del correu electrònic i alertes per correu electrònic"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "Màxim nombre de missatges en un avís per correu electrònic"
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr "Freqüència predeterminada de notificació per a totes les preguntes"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
"Opció per definir la freqüència de les actualitzacions per correu de: totes "
"les preguntes."
-#: conf/email.py:62
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
msgstr ""
"Freqüència predeterminada de notificació de preguntes fets per l'usuari"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
@@ -590,12 +640,12 @@ msgstr ""
"Opció per definir la freqüència de les actualitzacions per correu de: "
"Preguntes fetes per l'usuari"
-#: conf/email.py:76
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
"Freqüència predeterminada de notificació de respostes fetes per l'usuari"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
@@ -603,120 +653,139 @@ msgstr ""
"Opció per definir la freqüència de les actualitzacions per correu de: "
"Respostes fetes per l'usuari."
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr ""
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
msgid "Allow posting questions by email"
msgstr "Permetre publicar preguntes per correu electrònic"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "Permetre publicar preguntes per correu electrònic"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -747,15 +816,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -763,11 +832,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -775,70 +844,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr ""
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -877,11 +930,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -924,108 +979,176 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "es requereixen etiquetes"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
msgstr "Usar etiquetes comodí"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr ""
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "Barra lateral esquerra comuna"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Activar barra lateral esquerra"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1099,16 +1222,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1272,6 +1395,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1469,27 +1596,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1614,21 +1741,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1636,40 +1763,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1681,11 +1808,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1694,21 +1821,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1717,21 +1844,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1740,19 +1867,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1763,19 +1890,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1840,38 +1967,64 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
msgid "User settings"
msgstr "Configuració d'usuari"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Permetre als usuaris canviar la seva adreça de correu"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
msgstr "Permetre recuperar el compte per correu electrònic"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Avatar d'usuari per defecte"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1978,320 +2131,333 @@ msgstr ""
msgid "too localized"
msgstr ""
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "més recent"
-#: const/__init__.py:42 skins/default/templates/users.html:27
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "més antic"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "actiu"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "inactiu"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "més populars"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr ""
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr ""
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "més votat"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr ""
-#: const/__init__.py:57
+#: const/__init__.py:63
#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "tot"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "sense resposta"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "favorit"
-#: const/__init__.py:64
+#: const/__init__.py:70
msgid "list"
msgstr "llista"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr "núvol"
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "La pregunta no té respostes"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "La pregunta no té respostes acceptades"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "ha fet una pregunta"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "ha respost una pregunta"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "ha comentat una pregunta"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "ha commentat una resposta"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "ha editat una pregunta"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "ha editat una resposta"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "ha rebut una insígnia"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "ha marcat la millor resposta"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "votat positivament"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "votat negativament"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "cancelat el vot"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "pregunta esborrada"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "resposta esborrada"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "marcat com ofensiu"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "etiquetes actualitzades"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "seleccionat com a favorit"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "completat perfil d'usuari"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
-msgstr "enviat missatge d'actualitació a l'usuari"
+msgstr "enviat missatge d'actualització a l'usuari"
-#: const/__init__.py:142
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
msgstr "enviat recordatori d'una pregunta sense resposta"
-#: const/__init__.py:146
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
msgstr "enviat recordatori sobre acceptar la millor resposta"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "citat en l'entrada"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "pregunta resposta"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "pregunta comentada"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "resposta comentada"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "resposta acceptada"
+#, fuzzy
+msgid "answered question"
+msgstr "ha respost una pregunta"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "ha editat una resposta"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[tancat]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[esborrat]"
-#: const/__init__.py:208 views/readers.py:590
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "versió inicial"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "reetiquetat"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr "no"
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr "ignorades"
-#: const/__init__.py:219
-msgid "only selected"
+#: const/__init__.py:222
+msgid "only selected"
msgstr "seleccionades"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "instantàniament"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "diari"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "setmanal"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "no correu electrònic"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
msgid "wavatar"
msgstr ""
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284 skins/default/templates/badges.html:37
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "or"
-#: const/__init__.py:285 skins/default/templates/badges.html:46
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "plata"
-#: const/__init__.py:286 skins/default/templates/badges.html:53
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronze"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr "Cap"
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr "Avatar penjat"
-#: const/message_keys.py:15
+#: const/message_keys.py:21
msgid "most relevant questions"
msgstr "preguntes més rellevants"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
msgstr "clicar per mostra les preguntes més rellevants"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr "rellevància"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "clicar per mostrar les preguntes més antigues"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr "data"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "clicar per mostrar les preguntes més recents"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "clicar per mostar les preguntes que porten més temps sense actualitzar"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr "activitat"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "clicar per mostar les preguntes actualitzades recentment"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
msgstr "clicar per mostrar les preguntes amb menys respostes"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
msgid "by answers"
msgstr "respostes"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
msgstr "clicar per mostrar les preguntes amb més respostes"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "clicar per mostrar les preguntes amb menys votades"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
msgid "by votes"
msgstr "vots"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "clicar per mostrar les preguntes amb més votades"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
@@ -2299,47 +2465,55 @@ msgstr ""
"Us donem la benvinguda. Introduïu en el vostre perfil l'adreça de correu "
"electrònic (important) i el nom a mostrar, si ho creieu necessari."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "no es permet l'us de i-names"
#: deps/django_authopenid/forms.py:233
#, python-format
msgid "Please enter your %(username_token)s"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Introduïu el vostre %(username_token)s"
#: deps/django_authopenid/forms.py:259
msgid "Please, enter your user name"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Introduïu el vostre nom d'usuari"
#: deps/django_authopenid/forms.py:263
msgid "Please, enter your password"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Introduïu la vostra contrasenya"
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
msgid "Please, enter your new password"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Introduïu la vostra contrasenya nova"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Les contrasenyes no coincideixen"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Seleccionar una contrasenya de més de %(len)s caràcters"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
msgstr ""
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgstr "Contrasenya actual"
#: deps/django_authopenid/forms.py:346
msgid ""
@@ -2347,25 +2521,20 @@ msgid ""
"password."
msgstr ""
-# msgstr ""
-# "La contrasenya antiga és incorrecta. Introduïu la contrasenya correcta."
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Aquesta adreça de correu no figura a la base de dades"
-# msgstr "Adreça de correu electrònic inexistent a la base de dades"
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
-msgstr ""
+msgstr "Nom d'usuari (<i>requerit</i>)"
-# msgstr "El vostre nom d'usuari (<i>requerit</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
+msgid "sorry, there is no such user name"
msgstr ""
-# msgstr "Nom d'usuari inexistent"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:208
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr ""
@@ -2403,7 +2572,7 @@ msgid "%(site)s user name and password"
msgstr "nom usuari i contrasenya %(site)s"
#: deps/django_authopenid/util.py:384
-#: skins/common/templates/authopenid/signin.html:108
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr "Crear un compte amb contrasenya"
@@ -2487,13 +2656,13 @@ msgstr "Registrar-se amb nom usuari i contrasenya de %(provider)s"
msgid "Sign in with your %(provider)s account"
msgstr "Registrar-se amb el vostre compte de %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID de %(openid_url)s és invalid"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
@@ -2502,63 +2671,63 @@ msgstr ""
"hi ha problemes connectant amb %(provider)s,torneu a provar-ho i useu un "
"altre proveïdor"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr "S'ha desat la nova contrasenya"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr "La combinació usuari/contrasenya no és correcte"
-#: deps/django_authopenid/views.py:577
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr "Clicar una de les icones per registrar-se"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr "S'han enviat el missatge de correu per recuperar el compte"
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr "Afegir un o més mètodes de registre."
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr "Afegir, treure o revalidar els seus mètodes d'entrada"
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr "S'ha recuperat el seu compte, però ..."
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr "La clau de recuperació d'aquest compte ha expirat o és invàlida"
-#: deps/django_authopenid/views.py:661
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "El mètode de registre %(provider_name)s no existeix"
-#: deps/django_authopenid/views.py:667
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr "S'ha produït un error - torneu-ho a provar"
-#: deps/django_authopenid/views.py:758
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "La vostra entrada amb %(provider)s funciona bé"
-#: deps/django_authopenid/views.py:1069 deps/django_authopenid/views.py:1075
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "s'ha de validar el vostre correu electrònic, consulteu %(details_url)s"
-#: deps/django_authopenid/views.py:1096
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr "Recuperar el vostre compte %(site)s"
-#: deps/django_authopenid/views.py:1166
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr "Comproveu el vostre correu electrònic i visiteu l'enllaç inclòs."
@@ -2566,28 +2735,28 @@ msgstr "Comproveu el vostre correu electrònic i visiteu l'enllaç inclòs."
msgid "Site"
msgstr "Lloc"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr "Principal"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "Configuració base"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Valor per defecte: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Valor per defecte: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Valor per defecte: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Tipus de fitxers d'imatges admesos %(types)s"
@@ -2603,7 +2772,7 @@ msgstr "Documentació"
#: deps/livesettings/templates/livesettings/group_settings.html:11
#: deps/livesettings/templates/livesettings/site_settings.html:23
-#: skins/common/templates/authopenid/signin.html:132
+#: skins/common/templates/authopenid/signin.html:143
msgid "Change password"
msgstr "Canviar contrasenya"
@@ -2665,140 +2834,52 @@ msgstr "Desplegar tot"
msgid "Congratulations, you are now an Administrator"
msgstr "Ara ja ets Administrador"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
-"<p>Per preguntar per correu electrònic:</p>\n"
-"<ul>\n"
-" <li>Escriviu l'assumpte com: [Etiqueta1; Etiqueta12] Títol de la "
-"pregunta</li>\n"
-" <li>En el cos del missatge escriviu els detalls de la vostre pregunta</"
-"li>\n"
-"</ul>\n"
-"<p>Les etiquetes poden esta formades per més d'una paraula. Les etiquetes "
-"estan separades per una coma o un punt i coma</p>\n"
-
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
-"<p>S'ha produït un error publicant la vostre pregunta; contacteu amb "
-"l'administrador de %(site)s</p> "
-
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
-"<p>Cal estar <a href=\"%(url)s\">registrat</a> per publicar preguntes s "
-"%(site)s a través del correu electrònic</p>"
-
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
-"<p>La seva pregunta no s'ha publicat ja que el vostre compte d'usuari no té "
-"suficients privilegis</p>"
-
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
msgstr "Acceptar la millor resposta d'aquesta pregunta:"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
msgstr "Acceptar la millor resposta per aquestes preguntes:"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] "%(question_count)d pregunta actualitzada de %(topics)s"
msgstr[1] "%(question_count)d preguntes actualitzades de %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] "%(name)s, aquest és un missatge d'actualització de %(num)d pregunta"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
msgstr[1] ""
-"%(name)s, aquest és un missatge d'actualització de %(num)d preguntes"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "pregunta nova"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Visita el fòrum i mira les noves preguntes i respostes. Potser algú que "
-"coneixes pot ajudar responen alguna de les preguntes o pot estar interessat "
-"en publicar algunapregunta."
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"La subscripció més freqüent que té és la 'diària' de preguntes "
-"seleccionades. Si rep més d'un missatge al dia, informi aquest fet a "
-"l'administrador del lloc."
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"La subscripció més freqüent que té és 'setmanal'. Si rep aquest missatge més "
-"d'un cop per setmana, informi aquest fet a l'administrador del lloc."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"És possible que rebi enllaços ja consultats abans, es tracte d'una qüestió "
-"tècnica que es resoldrà."
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"per canviar la freqüencia de recepció de missatges anar a "
-"%(email_settings_link)s o %(admin_email)s administrador"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
@@ -2810,7 +2891,7 @@ msgstr[1] "%(question_count)d preguntes sense contestar de %(topics)s"
msgid "Please log in to use %s"
msgstr "Entrar per usar %s"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2818,7 +2899,7 @@ msgstr ""
"No pot acceptar o rebutjar les millors respostes ja que el seu compte està "
"bloquejat"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2826,7 +2907,7 @@ msgstr ""
"No pot acceptar o rebutjar les millors respostes ja que el seu compte està "
"deshabilitat"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2835,13 +2916,13 @@ msgstr ""
"S'ha de tenir més de %(points)s per acceptar o rebutjar la pròpia resposta a "
"la vostre pròpia pregunta"
-#: models/__init__.py:356
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr "Podrà acceptar aquesta resposta a partir de %(will_be_able_at)s"
-#: models/__init__.py:364
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
@@ -2850,53 +2931,43 @@ msgstr ""
"Només els moderadors o l'autor original de la pregunta -%(username)s- poden "
"acceptar i rebutjar la millor resposta"
-#: models/__init__.py:392
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "no es pot votar una entrada pròpia"
-#: models/__init__.py:395
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "El seu compte sembla que està bloquejat"
-#: models/__init__.py:400
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "El seu compte sembla que està deshabilitat"
-#: models/__init__.py:410
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "s'han de tenir més de %(points)s per votar positivament"
-#: models/__init__.py:416
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "s'han de tenir més de %(points)s per votar negativament"
-#: models/__init__.py:431
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "Els usuaris bloquejats no poden penjar fitxers"
-#: models/__init__.py:432
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr "Els usuaris deshabilitats no poden penjar fitxers"
-#: models/__init__.py:434
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"només els usuaris amb més de %(min_rep)s punts de reputació poden penjar "
-"imatges"
-
-#: models/__init__.py:453 models/__init__.py:520 models/__init__.py:983
-msgid "blocked users cannot post"
-msgstr "els usuaris bloquejats no poden publicar"
-#: models/__init__.py:454 models/__init__.py:986
-msgid "suspended users cannot post"
-msgstr "els usuaris deshabilitats no poden publicar"
-
-#: models/__init__.py:481
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2911,18 +2982,18 @@ msgstr[1] ""
"Els comentaris (excepte el darrer) es poden editar durant %(minutes)s minuts "
"des de que es publiquen"
-#: models/__init__.py:493
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"Només els propietaris de l'entrada o els moderadors poden editar comentaris"
-#: models/__init__.py:506
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
"El seu compte està deshabilitat, només pot comentar les entrades pròpies"
-#: models/__init__.py:510
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2931,7 +3002,7 @@ msgstr ""
"Per comentar una entrada es cal tenir una reputació de %(min_rep)s puntsSí "
"podeu comentar les entrades i les respostes a les vostres preguntes"
-#: models/__init__.py:538
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2939,7 +3010,7 @@ msgstr ""
"Aquesta entrada s'ha esborrat. Només els seus propietaris, l'administrador "
"del lloc i els moderadors la poden veure."
-#: models/__init__.py:555
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2947,22 +3018,22 @@ msgstr ""
"Una entrada esborrada només la poden editar els moderadors, els "
"administradors del lloc o els propietaris de l'entrada."
-#: models/__init__.py:570
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr "El seu compte està bloquejat, no podeu editar entrades"
-#: models/__init__.py:574
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr "El seu compte està deshabilitat, només pot editar entrades pròpies"
-#: models/__init__.py:579
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
"Per editar entrades wiki s'ha de tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:586
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
@@ -2971,7 +3042,7 @@ msgstr ""
"Per editar entrades d'altres persones s'ha de tenir una reputació mínima de "
"%(min_rep)s"
-#: models/__init__.py:649
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2985,16 +3056,16 @@ msgstr[1] ""
"No es pot eliminar la pregunta ja que hi ha respostes d'altres usuaris amb "
"vots positius"
-#: models/__init__.py:664
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr "El seu compte està bloquejat, no pot eliminar entrades"
-#: models/__init__.py:668
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr "El seu compte està deshabilitat, només pot eliminar entrades pròpies"
-#: models/__init__.py:672
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -3003,15 +3074,15 @@ msgstr ""
"per eliminar entrades d'altres persones cal una reputació mínima de "
"%(min_rep)s"
-#: models/__init__.py:692
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr "El seu compte està bloquejat, no pot tancar preguntes"
-#: models/__init__.py:696
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr "Des de que el seu compte està deshabilitat no pot tancar preguntes"
-#: models/__init__.py:700
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -3020,14 +3091,14 @@ msgstr ""
"Per tancar entrades d'altres persones cal tenir una reputació mínima de "
"%(min_rep)s"
-#: models/__init__.py:709
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
"Per tancar una pregunta pròpia cal tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:733
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
@@ -3036,61 +3107,71 @@ msgstr ""
"Només els moderadors, els administradors del lloc o els propietaris de les "
"entrades amb reputació mínim de %(min_rep)s poden reobrir preguntes."
-#: models/__init__.py:739
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
"Per reobrir una pregunta pròpia cal tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:759
-msgid "cannot flag message as offensive twice"
-msgstr "no es pot senyalar un missatge com ofensiu dues vegades"
-
-#: models/__init__.py:764
-msgid "blocked users cannot flag posts"
-msgstr "els usuaris bloquejats no poden senyalar entrades"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
-#: models/__init__.py:766
-msgid "suspended users cannot flag posts"
-msgstr "els usuaris deshabilitats no poden senyalar entrades"
+#: models/__init__.py:783
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "El seu compte està bloquejat, no pot eliminar entrades"
-#: models/__init__.py:768
-#, python-format
-msgid "need > %(min_rep)s points to flag spam"
-msgstr "s'han de tenir més de %(min_rep)s punts per senyalar spam"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
-#: models/__init__.py:787
+#: models/__init__.py:815
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr "excedit %(max_flags_per_day)s"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
-#: models/__init__.py:798
+#: models/__init__.py:827
msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:803
-msgid "blocked users cannot remove flags"
-msgstr "els usuaris bloquejats no poden treure senyals"
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "El seu compte està bloquejat, no pot eliminar entrades"
-#: models/__init__.py:805
-msgid "suspended users cannot remove flags"
-msgstr "els usuaris deshabilitats no poden treure senyals"
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#: models/__init__.py:807
-#, python-format
-msgid "need > %(min_rep)s points to remove flag"
-msgstr "s'han de tenir més de %(min_rep)s punts per poder treure senyals"
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
+msgstr[1] ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
-#: models/__init__.py:825
+#: models/__init__.py:862
msgid "you don't have the permission to remove all flags"
msgstr "No té permís per treure totes les senyals"
-#: models/__init__.py:826
+#: models/__init__.py:863
msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:850
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3098,78 +3179,78 @@ msgstr ""
"Només els propietaris de de la pregunta, els moderadors i els administradors "
"podenreetiquetar una pregunta esborrada"
-#: models/__init__.py:857
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr "El seu compte està bloquejat, no pot reetiquetar preguntes"
-#: models/__init__.py:861
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
"El seu compte està deshabilitat, només pot reetiquetar les preguntes pròpies"
-#: models/__init__.py:865
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
-#: models/__init__.py:884
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr "El seu compte està bloquejat, no pot eliminar un comentari"
-#: models/__init__.py:888
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
"El seu compte està deshabilitat, només pot eliminar els comentaris pròpies"
-#: models/__init__.py:892
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
"Per eliminar comentaris ha de tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:915
-msgid "cannot revoke old vote"
-msgstr "no es pot revocar un vot antic"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1390 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "a %(date)s"
-#: models/__init__.py:1392
+#: models/__init__.py:1471
msgid "in two days"
msgstr "en dos dies"
-#: models/__init__.py:1394
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr "demà"
-#: models/__init__.py:1396
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "en %(hr)d hora"
msgstr[1] "en %(hr)d hores"
-#: models/__init__.py:1398
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "en %(min)d minut"
msgstr[1] "en %(min)d minuts"
-#: models/__init__.py:1399
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] "%(days)d dia"
msgstr[1] "%(days)d dies"
-#: models/__init__.py:1401
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
@@ -3178,80 +3259,80 @@ msgstr ""
"Els usuaris nous han d'esperar %(days)s per respondre la seva pròpia "
"pregunta. Podeu publicar una resposta %(left)s"
-#: models/__init__.py:1567 skins/default/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "Anònim"
-#: models/__init__.py:1663 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "Administrador del Lloc"
-#: models/__init__.py:1665 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr "Moderador del Fòrum"
-#: models/__init__.py:1667 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr "Usuari Deshabilitat"
-#: models/__init__.py:1669 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr "Usuari Bloquejat"
-#: models/__init__.py:1671 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "Usuari Registrat"
-#: models/__init__.py:1673
+#: models/__init__.py:1759
msgid "Watched User"
msgstr "Usuari Observat"
-#: models/__init__.py:1675
+#: models/__init__.py:1761
msgid "Approved User"
msgstr "Usuari Habilitat"
-#: models/__init__.py:1784
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s té una reputació de %(reputation)s"
-#: models/__init__.py:1794
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] "una insígnia d'or"
msgstr[1] "%(count)d insígnies d'or"
-#: models/__init__.py:1801
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "una insígnia de plata"
msgstr[1] "%(count)d insígnies de plata"
-#: models/__init__.py:1808
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "una insígnia de bronze"
msgstr[1] "%(count)d insígnies de bronze"
-#: models/__init__.py:1819
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s i %(item2)s"
-#: models/__init__.py:1823
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s té %(badges)s"
-#: models/__init__.py:2293
+#: models/__init__.py:2389
#, python-format
msgid "\"%(title)s\""
msgstr ""
-#: models/__init__.py:2430
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3260,36 +3341,37 @@ msgstr ""
"Ha rebut una insígnia '%(badge_name)s'. Vegeu la <a href=\"%(user_profile)s"
"\">perfil d'usuari</a>."
-#: models/__init__.py:2623 views/commands.py:409
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr "S'ha desat la seva subscripció d'etiquetes"
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr ""
+msgstr "Esborra entrada pròpia amb %(votes)s o més vots positius"
#: models/badges.py:133
msgid "Disciplined"
-msgstr ""
+msgstr "Disciplinat"
#: models/badges.py:151
#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr ""
+msgstr "Elimina entrada pròpia amb %(votes)s o més vots negatius"
#: models/badges.py:155
msgid "Peer Pressure"
-msgstr ""
+msgstr "Pressio Companys"
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
msgstr ""
+"Reb un mínim de %(votes)s vots positius per una resposta per primera vegada"
#: models/badges.py:178
msgid "Teacher"
-msgstr ""
+msgstr "Mestre"
#: models/badges.py:218
msgid "Supporter"
@@ -3297,118 +3379,118 @@ msgstr ""
#: models/badges.py:219
msgid "First upvote"
-msgstr ""
+msgstr "Primer vot positiu"
#: models/badges.py:227
msgid "Critic"
-msgstr ""
+msgstr "Criticaire"
#: models/badges.py:228
msgid "First downvote"
-msgstr ""
+msgstr "Primer vot negatiu"
#: models/badges.py:237
msgid "Civic Duty"
-msgstr ""
+msgstr "Deure cívic"
#: models/badges.py:238
#, python-format
msgid "Voted %(num)s times"
-msgstr ""
+msgstr "Vota %(num)s vegades"
#: models/badges.py:252
#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr ""
+msgstr "Respon a una pregunta pròpia amb un mínim de %(num)s vots positius"
#: models/badges.py:256
msgid "Self-Learner"
-msgstr ""
+msgstr "Auto-Aprenentatge"
#: models/badges.py:304
msgid "Nice Answer"
-msgstr ""
+msgstr "Resposta Útil"
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
#, python-format
msgid "Answer voted up %(num)s times"
-msgstr ""
+msgstr "Resposta votada positivament %(num)s vegades"
#: models/badges.py:316
msgid "Good Answer"
-msgstr ""
+msgstr "Bona Resposta"
#: models/badges.py:328
msgid "Great Answer"
-msgstr ""
+msgstr "Gran Resposta"
#: models/badges.py:340
msgid "Nice Question"
-msgstr ""
+msgstr "Pregunta Útil"
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
#, python-format
msgid "Question voted up %(num)s times"
-msgstr ""
+msgstr "Pregunta votada possitament %(num)s vegades"
#: models/badges.py:352
msgid "Good Question"
-msgstr ""
+msgstr "Bona Pregunta"
#: models/badges.py:364
msgid "Great Question"
-msgstr ""
+msgstr "Gran Pregunta"
#: models/badges.py:376
msgid "Student"
-msgstr ""
+msgstr "Estudiant"
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
-msgstr ""
+msgstr "Pregunta per primera vegada amb al menys un vot positiu"
#: models/badges.py:414
msgid "Popular Question"
-msgstr ""
+msgstr "Pregunta Popular"
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
#, python-format
msgid "Asked a question with %(views)s views"
-msgstr ""
+msgstr "Fa una pregunta amb %(views)s visites"
#: models/badges.py:425
msgid "Notable Question"
-msgstr ""
+msgstr "Pregunta notable"
#: models/badges.py:436
msgid "Famous Question"
-msgstr ""
+msgstr "Pregunta famosa"
#: models/badges.py:450
msgid "Asked a question and accepted an answer"
-msgstr ""
+msgstr "Ha fet una pregunta i ha acceptat una resposta"
#: models/badges.py:453
msgid "Scholar"
-msgstr ""
+msgstr "Estudiós"
#: models/badges.py:495
msgid "Enlightened"
-msgstr ""
+msgstr "Il·lustrat"
#: models/badges.py:499
#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Primera resposta acceptada amb %(num)s o més vots"
#: models/badges.py:507
msgid "Guru"
-msgstr ""
+msgstr "Gurú"
#: models/badges.py:510
#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Resposta acceptada amb %(num)s o més vots"
#: models/badges.py:518
#, python-format
@@ -3416,132 +3498,133 @@ msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
msgstr ""
+"Respon una pregunta feta fa més %(days)s dies amb un mínim de %(votes)s"
#: models/badges.py:525
msgid "Necromancer"
-msgstr ""
+msgstr "Nigromàntic"
#: models/badges.py:548
msgid "Citizen Patrol"
-msgstr ""
+msgstr "Patrulla Ciutadana"
#: models/badges.py:551
msgid "First flagged post"
-msgstr ""
+msgstr "Primera entrada marcada ofensiva"
#: models/badges.py:563
msgid "Cleanup"
-msgstr ""
+msgstr "Neteja"
#: models/badges.py:566
msgid "First rollback"
-msgstr ""
+msgstr "Primera restitució"
#: models/badges.py:577
msgid "Pundit"
-msgstr ""
+msgstr "Crític"
#: models/badges.py:580
msgid "Left 10 comments with score of 10 or more"
-msgstr ""
+msgstr "Fa 10 comentaris amb una puntuació de 10 o més"
#: models/badges.py:612
msgid "Editor"
-msgstr ""
+msgstr "Editor"
#: models/badges.py:615
msgid "First edit"
-msgstr ""
+msgstr "Primera Edició"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Editor Associat"
#: models/badges.py:627
#, python-format
msgid "Edited %(num)s entries"
-msgstr ""
+msgstr "Edita %(num)s entrades"
#: models/badges.py:634
msgid "Organizer"
-msgstr ""
+msgstr "Organitzador"
#: models/badges.py:637
msgid "First retag"
-msgstr ""
+msgstr "Primer reetiquetat "
#: models/badges.py:644
msgid "Autobiographer"
-msgstr ""
+msgstr "Autobiogràfic"
#: models/badges.py:647
msgid "Completed all user profile fields"
-msgstr ""
+msgstr "Omple tots el camps del perfil d'usuari"
#: models/badges.py:663
#, python-format
msgid "Question favorited by %(num)s users"
-msgstr ""
+msgstr "Pregunta marcada com a favorita per %(num)s usuaris"
#: models/badges.py:689
msgid "Stellar Question"
-msgstr ""
+msgstr "Pregunta Estel·lar"
#: models/badges.py:698
msgid "Favorite Question"
-msgstr ""
+msgstr "Pregunta Favorita"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Entusiasta"
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Visita el lloc cada dia durant %(num)s dies seguits"
#: models/badges.py:732
msgid "Commentator"
-msgstr ""
+msgstr "Comentarista"
#: models/badges.py:736
#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr ""
+msgstr "Publica %(num_comments)s comentaris"
#: models/badges.py:752
msgid "Taxonomist"
-msgstr ""
+msgstr "Taxonomista"
#: models/badges.py:756
#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr ""
+msgstr "Crea un etiqueta usada per %(num)s preguntes"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
-msgstr ""
+msgstr "Expert"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
-msgstr ""
+msgstr "Molt actiu en una etiqueta"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "Aquesta pregunta s'ha esborrat i no es pot accedir"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
"La resposat que cerca ja no es vàlida, ja què s'ha tret la pregunta original "
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "Aquesta pregunta s'ha tret i no es pot accedir"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
@@ -3549,7 +3632,7 @@ msgstr ""
"El comentari que cerca ja no es pot accedir ja què s'ha tret la pregunta "
"original"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
@@ -3557,46 +3640,26 @@ msgstr ""
"El comentari que cerca ja no es pot accedir ja què s'ha tret la resposta "
"original"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr "\" i \"%s\""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr "\" i més"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s ha modificat la pregunta"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s han publicat %(new_answer_count)s noves respostes"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s han comentat la pregunta"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s han comentat respostes"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s han comentat una resposta"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Validar correu electrònic"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>Canviar pel moderador. Raó:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
@@ -3605,7 +3668,7 @@ msgstr ""
"S'han afegit %(points)s punts a %(username)s per la seva contribució a la "
"pregunta %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
@@ -3614,68 +3677,70 @@ msgstr ""
"S'han tret %(points)s punts a %(username)s per la seva contribució a la "
"pregunta %(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "interessant"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "ignorada"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Tot el fòrum"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Preguntes que jo he preguntat"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Preguntes que jo he respos"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Preguntes seleccionades individualment"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr "Cites i comentaris a respostes"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Instantàniament"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Diàriament"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Setmanalment"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Cap correu electrònic"
-#: skins/common/templates/authopenid/authopenid_macros.html:53
+#: skins/common/templates/authopenid/authopenid_macros.html:63
msgid "Please enter your <span>user name</span>, then sign in"
-msgstr ""
+msgstr "Introduïu el vostre <span>nom d'usuari i contrasenya</span> per entrar"
# msgstr "Introduïu el vostre <span>nom d'usuari</span> i inicieu la sessió"
-#: skins/common/templates/authopenid/authopenid_macros.html:54
-#: skins/common/templates/authopenid/signin.html:90
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
msgid "(or select another login method above)"
msgstr "(o seleccioneu un dels altres mètodes d'entrada)"
-#: skins/common/templates/authopenid/authopenid_macros.html:56
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
msgid "Sign in"
msgstr "Entrar"
#: skins/common/templates/authopenid/changeemail.html:2
#: skins/common/templates/authopenid/changeemail.html:8
-#: skins/common/templates/authopenid/changeemail.html:36
-msgid "Change email"
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
msgstr "Canviar correu electrònic"
#: skins/common/templates/authopenid/changeemail.html:10
@@ -3684,27 +3749,38 @@ msgstr "Canviar la vostra adreça de correu electrònic"
#: skins/common/templates/authopenid/changeemail.html:15
#, python-format
-msgid "change %(email)s info"
-msgstr "canviar informació %(email)s"
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:17
+#: skins/common/templates/authopenid/changeemail.html:19
#, python-format
-msgid "here is why email is required, see %(gravatar_faq_url)s"
-msgstr "el correu electrònic és necessari, consulteu %(gravatar_faq_url)s"
-
-#: skins/common/templates/authopenid/changeemail.html:29
-msgid "Your new Email"
-msgstr "El seu nou correu electrònic"
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:29
-msgid "Your Email"
-msgstr "El seu correu electrònic"
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:36
+#: skins/common/templates/authopenid/changeemail.html:49
msgid "Save Email"
msgstr "Canviar correu electrònic"
-#: skins/common/templates/authopenid/changeemail.html:38
+#: skins/common/templates/authopenid/changeemail.html:51
#: skins/default/templates/answer_edit.html:25
#: skins/default/templates/close.html:16
#: skins/default/templates/feedback.html:64
@@ -3712,121 +3788,112 @@ msgstr "Canviar correu electrònic"
#: skins/default/templates/question_retag.html:22
#: skins/default/templates/reopen.html:27
#: skins/default/templates/subscribe_for_tags.html:16
-#: skins/default/templates/user_profile/user_edit.html:84
+#: skins/default/templates/user_profile/user_edit.html:102
msgid "Cancel"
msgstr "Cancel·lar"
-#: skins/common/templates/authopenid/changeemail.html:45
+#: skins/common/templates/authopenid/changeemail.html:58
msgid "Validate email"
msgstr "Validar correu electrònic"
-#: skins/common/templates/authopenid/changeemail.html:48
+#: skins/common/templates/authopenid/changeemail.html:61
#, python-format
-msgid "validate %(email)s info or go to %(change_email_url)s"
-msgstr "validar la informació %(email)s o anar a %(change_email_url)s"
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:52
+#: skins/common/templates/authopenid/changeemail.html:70
msgid "Email not changed"
msgstr "No s'ha canviat el correu electrònic"
-#: skins/common/templates/authopenid/changeemail.html:55
+#: skins/common/templates/authopenid/changeemail.html:73
#, python-format
-msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-msgstr "es manté l'antic %(email)s, si vol pot anar a %(change_email_url)s"
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:59
+#: skins/common/templates/authopenid/changeemail.html:80
msgid "Email changed"
msgstr "Correu electrònic canviat"
-#: skins/common/templates/authopenid/changeemail.html:62
+#: skins/common/templates/authopenid/changeemail.html:83
#, python-format
-msgid "your current %(email)s can be used for this"
-msgstr "per això es pot usar el %(email)s actual"
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:66
+#: skins/common/templates/authopenid/changeemail.html:91
msgid "Email verified"
msgstr "Correu electrònic verificat"
-#: skins/common/templates/authopenid/changeemail.html:69
-msgid "thanks for verifying email"
-msgstr "gràcies per verificar el correu electrònic"
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:73
-msgid "email key not sent"
-msgstr "no s'ha enviat la clau de verificació de correu electrònic"
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Validar correu electrònic"
-#: skins/common/templates/authopenid/changeemail.html:76
+#: skins/common/templates/authopenid/changeemail.html:105
#, python-format
-msgid "email key not sent %(email)s change email here %(change_link)s"
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
msgstr ""
-"no s'ha enviat la clau de correu electrònic %(email)s, canviar el correu a "
-"%(change_link)s"
#: skins/common/templates/authopenid/complete.html:21
-#: skins/common/templates/authopenid/complete.html:23
msgid "Registration"
msgstr "Registre"
-#: skins/common/templates/authopenid/complete.html:27
-#, python-format
-msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-msgstr "registrar-se a través de %(provider)s; consulteu %(gravatar_faq_url)s"
-
-#: skins/common/templates/authopenid/complete.html:30
-#, python-format
-msgid ""
-"%(username)s already exists, choose another name for \n"
-" %(provider)s. Email is required too, see "
-"%(gravatar_faq_url)s\n"
-" "
-msgstr ""
-"%(username)s ja existeix, seleccioneu un altre nom per \n"
-" %(provider)s. També és necessari el correu "
-"electrònic: consulteu%(gravatar_faq_url)s\n"
-" "
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Registre"
-#: skins/common/templates/authopenid/complete.html:34
-#, python-format
-msgid ""
-"register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
msgstr ""
-"informació del nou compte de registre extern %(provider)s; consulteu "
-"%(gravatar_faq_url)s"
-#: skins/common/templates/authopenid/complete.html:37
-#, python-format
-msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-msgstr "registrar nova connexió Facebook; consulteu %(gravatar_faq_url)s"
-
-#: skins/common/templates/authopenid/complete.html:40
-msgid "This account already exists, please use another."
-msgstr "Aquest compte ja existeix, useu un altre."
-
-#: skins/common/templates/authopenid/complete.html:59
-msgid "Screen name label"
-msgstr "Nom d'usuari"
-
-#: skins/common/templates/authopenid/complete.html:66
-msgid "Email address label"
-msgstr "Adreça de correu electrònic"
-
-#: skins/common/templates/authopenid/complete.html:72
-#: skins/common/templates/authopenid/signup_with_password.html:36
-msgid "receive updates motivational blurb"
-msgstr "rebre actualitzacions"
-
-#: skins/common/templates/authopenid/complete.html:76
-#: skins/common/templates/authopenid/signup_with_password.html:40
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
msgid "please select one of the options above"
msgstr "seleccioneu una de les opcions anteriors"
-#: skins/common/templates/authopenid/complete.html:79
-msgid "Tag filter tool will be your right panel, once you log in."
-msgstr "Al entrar, el requadre dret serà l'eina de filtre d'etiquetes"
-
-#: skins/common/templates/authopenid/complete.html:80
-msgid "create account"
-msgstr "crear compte"
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Registrar-se"
#: skins/common/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
@@ -3850,9 +3917,10 @@ msgstr "Registrar-se aquí:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"Salutacions,\n"
"Administrador del fòrum"
@@ -3872,9 +3940,10 @@ msgstr ""
"electrònic"
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"Si creu que aquest missatge s'ha enviat incorrectament, no ha de fer res. "
@@ -3924,10 +3993,11 @@ msgstr ""
" "
#: skins/common/templates/authopenid/signin.html:28
+#, fuzzy
msgid ""
-"Take a pick of your favorite service below to sign in using secure OpenID or "
-"similar technology. Your external service password always stays confidential "
-"and you don't have to rememeber or create another one."
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
msgstr ""
"Seleccioneu un dels serveis per entrar usant OpenID segur o tecnologies "
"similars. La contrasenya del servei extern es manté sempre confidencial, no "
@@ -3974,121 +4044,91 @@ msgstr ""
"Comproveu el vostre correu electrònic i seguiu l'enllaç adjunt per re-"
"connectar al vostre compte"
-#: skins/common/templates/authopenid/signin.html:87
-msgid "Please enter your <span>user name and password</span>, then sign in"
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
msgstr "Introduïu el vostre <span>nom d'usuari i contrasenya</span> per entrar"
#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Registrar-se aquí:"
+
+#: skins/common/templates/authopenid/signin.html:100
msgid "Login failed, please try again"
msgstr "No s'ha pogut entrar, torneu a provar"
-#: skins/common/templates/authopenid/signin.html:97
+#: skins/common/templates/authopenid/signin.html:104
msgid "Login or email"
msgstr "Usuari o correu electrònic"
-#: skins/common/templates/authopenid/signin.html:101
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
msgid "Password"
msgstr "Contrasenya"
-#: skins/common/templates/authopenid/signin.html:106
-msgid "Login"
-msgstr "Entrar"
-
-#: skins/common/templates/authopenid/signin.html:113
+#: skins/common/templates/authopenid/signin.html:120
msgid "To change your password - please enter the new one twice, then submit"
msgstr "Per canviar la vostre contrasenya, introduïu la nova dues vegades"
-#: skins/common/templates/authopenid/signin.html:117
+#: skins/common/templates/authopenid/signin.html:124
msgid "New password"
msgstr "Contrasenya nova"
-#: skins/common/templates/authopenid/signin.html:124
+#: skins/common/templates/authopenid/signin.html:133
msgid "Please, retype"
msgstr "torni a escriure"
-#: skins/common/templates/authopenid/signin.html:146
+#: skins/common/templates/authopenid/signin.html:157
msgid "Here are your current login methods"
msgstr "Aquests són els seus mètodes d'entrada actuals"
-#: skins/common/templates/authopenid/signin.html:150
+#: skins/common/templates/authopenid/signin.html:161
msgid "provider"
msgstr "proveïdor"
-#: skins/common/templates/authopenid/signin.html:151
+#: skins/common/templates/authopenid/signin.html:162
msgid "last used"
msgstr "recentment usat"
-#: skins/common/templates/authopenid/signin.html:152
+#: skins/common/templates/authopenid/signin.html:163
msgid "delete, if you like"
msgstr "esborra, si voleu"
-#: skins/common/templates/authopenid/signin.html:166
-#: skins/common/templates/question/answer_controls.html:34
-#: skins/common/templates/question/question_controls.html:39
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
msgid "delete"
msgstr "esborra"
-#: skins/common/templates/authopenid/signin.html:168
+#: skins/common/templates/authopenid/signin.html:179
msgid "cannot be deleted"
msgstr "no es pot eliminar"
-#: skins/common/templates/authopenid/signin.html:181
+#: skins/common/templates/authopenid/signin.html:192
msgid "Still have trouble signing in?"
msgstr "Problemes al registrar-se?"
-#: skins/common/templates/authopenid/signin.html:186
+#: skins/common/templates/authopenid/signin.html:197
msgid "Please, enter your email address below and obtain a new key"
msgstr "Entreu la vostra adreça de correu electrònic per tenir una nova clau"
-#: skins/common/templates/authopenid/signin.html:188
+#: skins/common/templates/authopenid/signin.html:199
msgid "Please, enter your email address below to recover your account"
msgstr ""
"Per recuperar el vostre compte entrar la vostra adreça de correu electrònic"
-#: skins/common/templates/authopenid/signin.html:191
+#: skins/common/templates/authopenid/signin.html:202
msgid "recover your account via email"
msgstr "recuperar el vostre compte via correu electrònic"
-#: skins/common/templates/authopenid/signin.html:202
+#: skins/common/templates/authopenid/signin.html:213
msgid "Send a new recovery key"
msgstr "Enviar una nova clau de recuperació"
-#: skins/common/templates/authopenid/signin.html:204
+#: skins/common/templates/authopenid/signin.html:215
msgid "Recover your account via email"
msgstr "Recuperar el vostre compte via correu electrònic"
-#: skins/common/templates/authopenid/signin.html:216
-msgid "Why use OpenID?"
-msgstr "Perquè usar OpenID?"
-
-#: skins/common/templates/authopenid/signin.html:219
-msgid "with openid it is easier"
-msgstr "amb openid és més fàcil"
-
-#: skins/common/templates/authopenid/signin.html:222
-msgid "reuse openid"
-msgstr "reusar openid"
-
-#: skins/common/templates/authopenid/signin.html:225
-msgid "openid is widely adopted"
-msgstr "openid està àmpliament adoptat"
-
-#: skins/common/templates/authopenid/signin.html:228
-msgid "openid is supported open standard"
-msgstr "openid és un estàndard obert compatible"
-
-#: skins/common/templates/authopenid/signin.html:232
-msgid "Find out more"
-msgstr "Cercar més"
-
-#: skins/common/templates/authopenid/signin.html:233
-msgid "Get OpenID"
-msgstr "Obtenir OpenID"
-
-#: skins/common/templates/authopenid/signup_with_password.html:4
-msgid "Signup"
-msgstr "Registrar-se"
-
#: skins/common/templates/authopenid/signup_with_password.html:10
msgid "Please register by clicking on any of the icons below"
msgstr "Registrar-se clicant una de les icones "
@@ -4102,10 +4142,19 @@ msgid "Create login name and password"
msgstr "nom d'usuari i contrasenya %(site)s"
#: skins/common/templates/authopenid/signup_with_password.html:26
-msgid "Traditional signup info"
-msgstr "Informació de registre tradicional"
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#: skins/common/templates/authopenid/signup_with_password.html:44
+#: skins/common/templates/authopenid/signup_with_password.html:50
msgid ""
"Please read and type in the two words below to help us prevent automated "
"account creation."
@@ -4113,15 +4162,11 @@ msgstr ""
"Per evitar la creació automatitzada de comptes, llegiu i introduïu les dues "
"paraules següents"
-#: skins/common/templates/authopenid/signup_with_password.html:47
-msgid "Create Account"
-msgstr "Crear un compte"
-
-#: skins/common/templates/authopenid/signup_with_password.html:49
+#: skins/common/templates/authopenid/signup_with_password.html:55
msgid "or"
msgstr "o"
-#: skins/common/templates/authopenid/signup_with_password.html:50
+#: skins/common/templates/authopenid/signup_with_password.html:56
msgid "return to OpenID login"
msgstr "tornar a l'entrada OpenID"
@@ -4180,59 +4225,68 @@ msgstr ""
msgid "Delete These"
msgstr "Esborrar Aquests"
-#: skins/common/templates/question/answer_controls.html:5
-msgid "answer permanent link"
-msgstr "enllaç permanent a la resposta"
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr "intercanviar amb la pregunta"
-#: skins/common/templates/question/answer_controls.html:6
+#: skins/common/templates/question/answer_controls.html:7
msgid "permanent link"
msgstr "enllaç permanent"
-#: skins/common/templates/question/answer_controls.html:10
-#: skins/common/templates/question/question_controls.html:3
-#: skins/default/templates/macros.html:289
-#: skins/default/templates/revisions.html:37
-msgid "edit"
-msgstr "editar"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "enllaç"
-#: skins/common/templates/question/answer_controls.html:14
-#: skins/common/templates/question/answer_controls.html:23
-#: skins/common/templates/question/question_controls.html:22
-#: skins/common/templates/question/question_controls.html:31
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "recuperar"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "treure senyal"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "treure senyal"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
msgid ""
"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
msgstr "informar com ofensiu (conte spam, publicitat, text maliciós, etc.)"
-#: skins/common/templates/question/answer_controls.html:15
-#: skins/common/templates/question/question_controls.html:23
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
msgid "flag offensive"
msgstr "marcat com ofensiu"
-#: skins/common/templates/question/answer_controls.html:24
-#: skins/common/templates/question/question_controls.html:32
-msgid "remove flag"
-msgstr "treure senyal"
-
-#: skins/common/templates/question/answer_controls.html:34
-#: skins/common/templates/question/question_controls.html:39
-msgid "undelete"
-msgstr "recuperar"
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "editar"
-#: skins/common/templates/question/answer_controls.html:40
-msgid "swap with question"
-msgstr "intercanviar amb la pregunta"
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "aquesta resposta s'ha seleccionat com a correcta"
-#: skins/common/templates/question/answer_vote_buttons.html:13
-#: skins/common/templates/question/answer_vote_buttons.html:14
+#: skins/common/templates/question/answer_vote_buttons.html:8
msgid "mark this answer as correct (click again to undo)"
msgstr "marcar aquesta resposta com a correcte (fer clic de nou per desfer)"
-#: skins/common/templates/question/answer_vote_buttons.html:23
-#: skins/common/templates/question/answer_vote_buttons.html:24
-#, python-format
-msgid "%(question_author)s has selected this answer as correct"
-msgstr "%(question_author)s ha seleccionat aquesta resposta com a correcta"
-
#: skins/common/templates/question/closed_question_info.html:2
#, python-format
msgid ""
@@ -4248,59 +4302,68 @@ msgid "close date %(closed_at)s"
msgstr "data tancament %(closed_at)s"
#: skins/common/templates/question/question_controls.html:6
-msgid "retag"
-msgstr "reetiquetar"
-
-#: skins/common/templates/question/question_controls.html:13
msgid "reopen"
msgstr "reobrir"
-#: skins/common/templates/question/question_controls.html:17
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
msgid "close"
msgstr "tancar"
-#: skins/common/templates/widgets/edit_post.html:21
-msgid "one of these is required"
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "reetiquetar"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
msgstr "és necessari un d'aquestes"
-#: skins/common/templates/widgets/edit_post.html:33
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "etiquetes"
+
+#: skins/common/templates/widgets/edit_post.html:32
msgid "(required)"
msgstr "(requerit)"
-#: skins/common/templates/widgets/edit_post.html:56
+#: skins/common/templates/widgets/edit_post.html:58
msgid "Toggle the real time Markdown editor preview"
msgstr "Commutar el previsualitzador de l'editor Markdown"
-#: skins/common/templates/widgets/edit_post.html:58
+#: skins/common/templates/widgets/edit_post.html:60
#: skins/default/templates/answer_edit.html:61
#: skins/default/templates/answer_edit.html:64
#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
#: skins/default/templates/question_edit.html:73
#: skins/default/templates/question_edit.html:76
-#: skins/default/templates/question/javascript.html:89
-#: skins/default/templates/question/javascript.html:92
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
msgid "hide preview"
msgstr "ocultar previsualització"
#: skins/common/templates/widgets/related_tags.html:3
-msgid "Related tags"
-msgstr "Etiquetes relacionades"
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
#: skins/common/templates/widgets/tag_selector.html:4
msgid "Interesting tags"
msgstr "Etiquetes seleccionades"
# posem un signe + per què 'afegir' es talla i queda 'afegi'
-#: skins/common/templates/widgets/tag_selector.html:18
-#: skins/common/templates/widgets/tag_selector.html:34
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
msgid "add"
msgstr "+"
-#: skins/common/templates/widgets/tag_selector.html:20
+#: skins/common/templates/widgets/tag_selector.html:21
msgid "Ignored tags"
msgstr "Etiquetes ignorades"
-#: skins/common/templates/widgets/tag_selector.html:36
+#: skins/common/templates/widgets/tag_selector.html:38
msgid "Display tag filter"
msgstr "Aplicar el filtre d'etiquetes"
@@ -4351,7 +4414,7 @@ msgid "back to previous page"
msgstr "tornar a la pàgina anterior"
#: skins/default/templates/404.jinja.html:31
-#: skins/default/templates/widgets/scope_nav.html:3
+#: skins/default/templates/widgets/scope_nav.html:6
msgid "see all questions"
msgstr "veure totes les preguntes"
@@ -4380,11 +4443,6 @@ msgstr "veure preguntes recentes"
msgid "see tags"
msgstr "veure etiquetes"
-#: skins/default/templates/about.html:3 skins/default/templates/about.html:5
-#, python-format
-msgid "About %(site_name)s"
-msgstr ""
-
#: skins/default/templates/answer_edit.html:4
#: skins/default/templates/answer_edit.html:10
msgid "Edit answer"
@@ -4414,17 +4472,20 @@ msgstr "Guardar edició"
#: skins/default/templates/answer_edit.html:64
#: skins/default/templates/ask.html:52
#: skins/default/templates/question_edit.html:76
-#: skins/default/templates/question/javascript.html:92
+#: skins/default/templates/question/javascript.html:88
msgid "show preview"
-msgstr ""
+msgstr "mostrar previsualització"
#: skins/default/templates/ask.html:4
-msgid "Ask a question"
-msgstr "Feu una pregunta"
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Fes la teva pregunta"
#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:110
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
msgid "%(name)s"
msgstr ""
@@ -4439,8 +4500,8 @@ msgid "Badge \"%(name)s\""
msgstr "Insígnia \"%(name)s\""
#: skins/default/templates/badge.html:9
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:108
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
#, python-format
msgid "%(description)s"
msgstr ""
@@ -4451,11 +4512,7 @@ msgid_plural "users received this badge:"
msgstr[0] "usuari ha rebut aquesta insígnia:"
msgstr[1] "usuaris han rebut aquesta insígnia:"
-#: skins/default/templates/badges.html:3
-msgid "Badges summary"
-msgstr "Resum insígnies"
-
-#: skins/default/templates/badges.html:5
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
msgid "Badges"
msgstr "Insígnies"
@@ -4464,47 +4521,52 @@ msgid "Community gives you awards for your questions, answers and votes."
msgstr "La comunitat atorga premis a les seves preguntes, respostes i vots"
#: skins/default/templates/badges.html:8
-#, python-format
+#, fuzzy, python-format
msgid ""
"Below is the list of available badges and number \n"
-"of times each type of badge has been awarded. Give us feedback at "
-"%(feedback_faq_url)s.\n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
msgstr ""
"A continuació hi ha la llista de insígnies disponibles i el nombre de "
"vegades que cada insígnia s'ha atorgat. Doneu la vostra opinió a "
"%(feedback_faq_url)s.\n"
-#: skins/default/templates/badges.html:35
+#: skins/default/templates/badges.html:36
msgid "Community badges"
msgstr "Insígnies de la comunitat"
-#: skins/default/templates/badges.html:37
+#: skins/default/templates/badges.html:38
msgid "gold badge: the highest honor and is very rare"
msgstr "insígnia d'or: l'honor més alt i és molt rara"
-#: skins/default/templates/badges.html:40
-msgid "gold badge description"
-msgstr "descripció de la insígnia d'or"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#: skins/default/templates/badges.html:45
+#: skins/default/templates/badges.html:47
msgid ""
"silver badge: occasionally awarded for the very high quality contributions"
msgstr ""
"insígnia de plata: atorgada ocasionalment per contribucions de molta alta "
"qualitat"
-#: skins/default/templates/badges.html:49
-msgid "silver badge description"
-msgstr "descripció de la insígnia de plata"
+#: skins/default/templates/badges.html:51
+#, fuzzy
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+"insígnia de plata: atorgada ocasionalment per contribucions de molta alta "
+"qualitat"
-#: skins/default/templates/badges.html:52
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
msgid "bronze badge: often given as a special honor"
msgstr "insígnia de bronze: atorgada sovint com un honor especial"
-#: skins/default/templates/badges.html:56
-msgid "bronze badge description"
-msgstr "descripció de la insígnia de bronze"
-
#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
msgid "Close question"
msgstr "Tancar pregunta"
@@ -4521,11 +4583,10 @@ msgstr "Raons"
msgid "OK to close"
msgstr "D'acord amb tancar"
-#: skins/default/templates/faq.html:3
#: skins/default/templates/faq_static.html:3
#: skins/default/templates/faq_static.html:5
#: skins/default/templates/widgets/answer_edit_tips.html:20
-#: skins/default/templates/widgets/question_edit_tips.html:16
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
msgid "FAQ"
msgstr ""
@@ -4546,16 +4607,18 @@ msgstr ""
"aquesta comunitat"
#: skins/default/templates/faq_static.html:8
+#, fuzzy
msgid ""
-"Before asking the question - please make sure to use search to see whether "
-"your question has alredy been answered."
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
msgstr ""
"Previ a fer una pregunta, useu la cerca per veure si la vostra pregunta ja "
"s'ha contestat abans."
#: skins/default/templates/faq_static.html:10
-msgid "What questions should I avoid asking?"
-msgstr ""
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "Quines qüestions he d'evitar preguntar?"
#: skins/default/templates/faq_static.html:11
msgid ""
@@ -4571,13 +4634,11 @@ msgstr "Que he d'evitar en les meves respostes?"
#: skins/default/templates/faq_static.html:14
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."
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
msgstr ""
-"aquest és un lloc de Preguntes i Respostes, no un grup de discussió. Per "
-"tant eviteu tenir discussions en la vostre resposta. L'opció de fer "
-"comentaris permet, fins cert punt, breus discussions."
#: skins/default/templates/faq_static.html:15
msgid "Who moderates this community?"
@@ -4592,20 +4653,26 @@ msgid "This website is moderated by the users."
msgstr "Aquesta lloc web és moderat pels usuaris."
#: skins/default/templates/faq_static.html:18
+#, fuzzy
msgid ""
-"The reputation system allows users earn the authorization to perform a "
-"variety of moderation tasks."
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
msgstr ""
"El sistema de reputació permet als usuaris guanyar autorització per a fer "
"diverses tasques de moderació."
#: skins/default/templates/faq_static.html:20
-msgid "How does reputation system work?"
+#, fuzzy
+msgid "How does karma system work?"
msgstr "Com funciona el sistema de reputació?"
#: skins/default/templates/faq_static.html:21
-msgid "Rep system summary"
-msgstr "Resum del sistema de reputació"
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
#: skins/default/templates/faq_static.html:22
#, python-format
@@ -4634,56 +4701,67 @@ msgstr ""
msgid "upvote"
msgstr "votar positivament"
-#: skins/default/templates/faq_static.html:37
-msgid "use tags"
-msgstr "usar etiquetes"
-
-#: skins/default/templates/faq_static.html:42
+#: skins/default/templates/faq_static.html:36
msgid "add comments"
msgstr "afegir comentaris"
-#: skins/default/templates/faq_static.html:46
+#: skins/default/templates/faq_static.html:40
#: skins/default/templates/user_profile/user_votes.html:15
msgid "downvote"
msgstr "votar negativament"
-#: skins/default/templates/faq_static.html:49
+#: skins/default/templates/faq_static.html:43
msgid " accept own answer to own questions"
msgstr "acceptar la pròpia resposta a les preguntes pròpies"
-#: skins/default/templates/faq_static.html:53
+#: skins/default/templates/faq_static.html:47
msgid "open and close own questions"
msgstr "obrir i tancar preguntes pròpies"
-#: skins/default/templates/faq_static.html:57
+#: skins/default/templates/faq_static.html:51
msgid "retag other's questions"
msgstr "reetiquetar preguntes d'altres"
-#: skins/default/templates/faq_static.html:62
+#: skins/default/templates/faq_static.html:56
msgid "edit community wiki questions"
msgstr "editar preguntes wiki de la comunitat"
-#: skins/default/templates/faq_static.html:67
-msgid "\"edit any answer"
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
msgstr "editar qualsevol resposta"
-#: skins/default/templates/faq_static.html:71
-msgid "\"delete any comment"
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
msgstr "eliminar qualsevol comentari"
-#: skins/default/templates/faq_static.html:74
-msgid "what is gravatar"
-msgstr "què és gravatar"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
-#: skins/default/templates/faq_static.html:75
-msgid "gravatar faq info"
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
msgstr ""
-#: skins/default/templates/faq_static.html:76
+#: skins/default/templates/faq_static.html:71
msgid "To register, do I need to create new password?"
msgstr "Per registar-me, he de crear una contrasenya nova?"
-#: skins/default/templates/faq_static.html:77
+#: skins/default/templates/faq_static.html:72
msgid ""
"No, you don't have to. You can login through any service that supports "
"OpenID, e.g. Google, Yahoo, AOL, etc.\""
@@ -4691,21 +4769,21 @@ msgstr ""
"No, no cal. Podeu entrar a través de qualsevol servei que suporti OpenID, "
"per exemple, Google, Yahoo, AOL, etc."
-#: skins/default/templates/faq_static.html:78
+#: skins/default/templates/faq_static.html:73
msgid "\"Login now!\""
msgstr "\"Registrar-se\""
-#: skins/default/templates/faq_static.html:80
+#: skins/default/templates/faq_static.html:75
msgid "Why other people can edit my questions/answers?"
msgstr "Per què altres persones poden editar les meves preguntes/respostes?"
-#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
msgid "Goal of this site is..."
msgstr ""
"L'objectiu d'aquest lloc es que la comunitat d'usuaris conegui les millors "
"respostes a les seves preguntes."
-#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
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 "
@@ -4715,19 +4793,19 @@ msgstr ""
"usuaris experimentats del lloc, en funció de la seva reputació; això millora "
"la qualitat general del contingut de base de coneixement."
-#: skins/default/templates/faq_static.html:82
+#: skins/default/templates/faq_static.html:77
msgid "If this approach is not for you, we respect your choice."
msgstr "Si aquest enfocament no el convens, respectem la seva decisió."
-#: skins/default/templates/faq_static.html:84
+#: skins/default/templates/faq_static.html:79
msgid "Still have questions?"
msgstr "Encara té dubtes?"
-#: skins/default/templates/faq_static.html:85
-#, python-format
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
msgid ""
-"Please ask your question at %(ask_question_url)s, help make our community "
-"better!"
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
msgstr ""
"Si us plau, faci la seva %(ask_question_url)s, ajudi a que la nostre "
"comunitat sigui millor!"
@@ -4797,6 +4875,68 @@ msgstr ""
"\n"
"Hola, aquest és un missatge d'opinió sobre el fòrum %(site_title)s. \n"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "Benvingut-uda %(username)s"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Benvingut"
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
#: skins/default/templates/import_data.html:2
#: skins/default/templates/import_data.html:4
msgid "Import StackExchange data"
@@ -4919,58 +5059,59 @@ msgstr ""
msgid "<p>Sincerely,<br/>Forum Administrator</p>"
msgstr "<p>Salutacions,<br/>Administrador del Fòrum</p>"
-#: skins/default/templates/macros.html:3
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
#, python-format
msgid "Share this question on %(site)s"
msgstr "Compartir aquesta pregunta a %(site)s"
-#: skins/default/templates/macros.html:14
-#: skins/default/templates/macros.html:470
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
#, python-format
msgid "follow %(alias)s"
msgstr "seguir a %(alias)s"
-#: skins/default/templates/macros.html:17
-#: skins/default/templates/macros.html:473
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
#, python-format
msgid "unfollow %(alias)s"
msgstr "no seguir a %(alias)s"
-#: skins/default/templates/macros.html:18
-#: skins/default/templates/macros.html:474
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
#, python-format
msgid "following %(alias)s"
msgstr "seguint a %(alias)s"
-#: skins/default/templates/macros.html:29
-msgid "i like this question (click again to cancel)"
-msgstr "m'agrada aquesta pregunta (feu clic de nou per cancel·lar)"
-
-#: skins/default/templates/macros.html:31
-msgid "i like this answer (click again to cancel)"
-msgstr "m'agrada aquesta resposta (feu clic de nou per cancel·lar)"
-
-#: skins/default/templates/macros.html:37
+#: skins/default/templates/macros.html:33
msgid "current number of votes"
msgstr "nombre actual de vots"
-#: skins/default/templates/macros.html:43
-msgid "i dont like this question (click again to cancel)"
-msgstr "no m'agrada aquesta pregunta (feu clic de nou per cancel·lar)"
-
-#: skins/default/templates/macros.html:45
-msgid "i dont like this answer (click again to cancel)"
-msgstr "no m'agrada aquesta resposta (feu clic de nou per cancel·lar)"
-
-#: skins/default/templates/macros.html:52
+#: skins/default/templates/macros.html:46
msgid "anonymous user"
msgstr "usuari anònim"
-#: skins/default/templates/macros.html:80
+#: skins/default/templates/macros.html:79
msgid "this post is marked as community wiki"
msgstr "aquesta entrada està marcaa com a wiki comunitari"
-#: skins/default/templates/macros.html:83
+#: skins/default/templates/macros.html:82
#, python-format
msgid ""
"This post is a wiki.\n"
@@ -4979,116 +5120,96 @@ msgstr ""
"Aquesta entrada és un wiki.\n"
" Qualsevol amb una reputació de més de %(wiki_min_rep)s pot contribuir"
-#: skins/default/templates/macros.html:89
+#: skins/default/templates/macros.html:88
msgid "asked"
msgstr "preguntat"
-#: skins/default/templates/macros.html:91
+#: skins/default/templates/macros.html:90
msgid "answered"
msgstr "respost"
-#: skins/default/templates/macros.html:93
+#: skins/default/templates/macros.html:92
msgid "posted"
msgstr "publicat"
-#: skins/default/templates/macros.html:123
+#: skins/default/templates/macros.html:122
msgid "updated"
msgstr "actualitzat"
-#: skins/default/templates/macros.html:221
+#: skins/default/templates/macros.html:202
#, python-format
msgid "see questions tagged '%(tag)s'"
msgstr "veure preguntes etiquetades '%(tag)s'"
-#: skins/default/templates/macros.html:278
+#: skins/default/templates/macros.html:304
msgid "delete this comment"
msgstr "eliminar aquest comentari"
-#: skins/default/templates/macros.html:307
-#: skins/default/templates/macros.html:315
-#: skins/default/templates/question/javascript.html:24
-msgid "add comment"
-msgstr "afegir un comentari"
-
-#: skins/default/templates/macros.html:308
-#, python-format
-msgid "see <strong>%(counter)s</strong> more"
-msgid_plural "see <strong>%(counter)s</strong> more"
-msgstr[0] "veure més <strong>%(counter)s</strong>"
-msgstr[1] "veure més <strong>%(counter)s</strong>"
-
-#: skins/default/templates/macros.html:310
-#, python-format
-msgid "see <strong>%(counter)s</strong> more comment"
-msgid_plural ""
-"see <strong>%(counter)s</strong> more comments\n"
-" "
-msgstr[0] "veure <strong>%(counter)s</strong> comentar més"
-msgstr[1] "veure <strong>%(counter)s</strong> comentaris més"
-
-#: skins/default/templates/macros.html:541 templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "imatge gravatar de %(username)s"
-#: skins/default/templates/macros.html:550
+#: skins/default/templates/macros.html:516
#, python-format
msgid "%(username)s's website is %(url)s"
msgstr "el lloc web de %(username)s és %(url)s"
-#: skins/default/templates/macros.html:565
-#: skins/default/templates/macros.html:566
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
msgid "previous"
msgstr "anterior"
-#: skins/default/templates/macros.html:577
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
msgid "current page"
msgstr "pàgina actual"
-#: skins/default/templates/macros.html:579
-#: skins/default/templates/macros.html:586
-#, python-format
-msgid "page number %(num)s"
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
msgstr "número de pàgina %(num)s"
-#: skins/default/templates/macros.html:590
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
msgid "next page"
msgstr "pàgina següent"
-#: skins/default/templates/macros.html:601
-msgid "posts per page"
-msgstr "entrades per pàgina"
-
-#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:607
#, python-format
msgid "responses for %(username)s"
msgstr "respostes per a %(username)s"
-#: skins/default/templates/macros.html:631
-#, python-format
-msgid "you have a new response"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
msgid_plural "you have %(response_count)s new responses"
msgstr[0] "teniu una nova resposta"
msgstr[1] "teniu %(response_count)s noves respostes"
-#: skins/default/templates/macros.html:634
+#: skins/default/templates/macros.html:613
msgid "no new responses yet"
-msgstr ""
+msgstr "no hi ha respostes"
-#: skins/default/templates/macros.html:649
-#: skins/default/templates/macros.html:650
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
#, python-format
msgid "%(new)s new flagged posts and %(seen)s previous"
msgstr "%(new)s entrades senyalades noves i %(seen)s anteriors"
-#: skins/default/templates/macros.html:652
-#: skins/default/templates/macros.html:653
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
#, python-format
msgid "%(new)s new flagged posts"
msgstr "%(new)s noves entrades senyalades"
-#: skins/default/templates/macros.html:658
-#: skins/default/templates/macros.html:659
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
#, python-format
msgid "%(seen)s flagged posts"
msgstr "%(seen)s entrades senyalades"
@@ -5097,10 +5218,37 @@ msgstr "%(seen)s entrades senyalades"
msgid "Questions"
msgstr "Preguntes"
-#: skins/default/templates/privacy.html:3
-#: skins/default/templates/privacy.html:5
-msgid "Privacy policy"
-msgstr "Política de privacitat"
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr "veure més <strong>%(counter)s</strong>"
+
+#: skins/default/templates/question.html:113
+#, fuzzy
+msgid "see <strong>some</strong> more"
+msgstr "veure més <strong>%(counter)s</strong>"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "afegir un comentari"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Respon la teva pròpia pregunta"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "La seva resposta"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Entrar/Registrar-se per Respondre"
#: skins/default/templates/question_edit.html:4
#: skins/default/templates/question_edit.html:9
@@ -5109,8 +5257,9 @@ msgstr "Editar pregunta"
#: skins/default/templates/question_retag.html:3
#: skins/default/templates/question_retag.html:5
-msgid "Change tags"
-msgstr "Canviar etiquetes"
+#, fuzzy
+msgid "Retag question"
+msgstr "Preguntes relacionades"
#: skins/default/templates/question_retag.html:21
msgid "Retag"
@@ -5167,6 +5316,13 @@ msgstr "Reobrir aquesta pregunta?"
msgid "Reopen this question"
msgstr "Reobrir aquesta pregunta"
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
#: skins/default/templates/revisions.html:4
#: skins/default/templates/revisions.html:7
msgid "Revision history"
@@ -5194,17 +5350,17 @@ msgstr "Subscriure les etiquetes següents:"
msgid "Subscribe"
msgstr "Subscriure"
-#: skins/default/templates/tags.html:4 skins/default/templates/tags.html:10
-msgid "Tag list"
-msgstr "Llista d'etiquetes"
-
#: skins/default/templates/tags.html:8
#, python-format
msgid "Tags, matching \"%(stag)s\""
msgstr "Etiquetes que coincideixen \"%(stag)s\""
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Llista d'etiquetes"
+
#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
-#: skins/default/templates/main_page/tab_bar.html:14
+#: skins/default/templates/main_page/tab_bar.html:15
msgid "Sort by &raquo;"
msgstr "Ordenar per &raquo;"
@@ -5224,7 +5380,7 @@ msgstr "ordenat per freqüència d'ús de l'etiqueta"
msgid "by popularity"
msgstr "per popularitat"
-#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:57
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
msgid "Nothing found"
msgstr "No s'ha trobat"
@@ -5238,7 +5394,9 @@ msgstr "veure les persones amb la reputació més alta"
#: skins/default/templates/users.html:15
#: skins/default/templates/user_profile/user_info.html:25
-msgid "reputation"
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
msgstr "reputació"
#: skins/default/templates/users.html:20
@@ -5270,7 +5428,7 @@ msgstr "usuaris que coincideixen amb %(suser)s:"
msgid "Nothing found."
msgstr "No s'ha trobat."
-#: skins/default/templates/main_page/headline.html:4 views/readers.py:160
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
@@ -5282,39 +5440,43 @@ msgstr[1] "%(q_num)s preguntes"
msgid "with %(author_name)s's contributions"
msgstr "amb contribució de %(author_name)s"
-#: skins/default/templates/main_page/headline.html:23
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "Reetiquetat"
+
+#: skins/default/templates/main_page/headline.html:24
msgid "Search tips:"
msgstr "Cerca:"
-#: skins/default/templates/main_page/headline.html:26
+#: skins/default/templates/main_page/headline.html:27
msgid "reset author"
msgstr "reinicialitzar autor"
-#: skins/default/templates/main_page/headline.html:28
-#: skins/default/templates/main_page/headline.html:31
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
#: skins/default/templates/main_page/nothing_found.html:18
#: skins/default/templates/main_page/nothing_found.html:21
msgid " or "
msgstr "o"
-#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:30
msgid "reset tags"
msgstr "reinicialitzar etiquetes"
-#: skins/default/templates/main_page/headline.html:32
-#: skins/default/templates/main_page/headline.html:35
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
msgid "start over"
msgstr "començar de nou"
-#: skins/default/templates/main_page/headline.html:37
+#: skins/default/templates/main_page/headline.html:38
msgid " - to expand, or dig in by adding more tags and revising the query."
msgstr " - o podeu afegir més etiquetes i/o revisar la consulta."
-#: skins/default/templates/main_page/headline.html:40
+#: skins/default/templates/main_page/headline.html:41
msgid "Search tip:"
msgstr "Cerca:"
-#: skins/default/templates/main_page/headline.html:40
+#: skins/default/templates/main_page/headline.html:41
msgid "add tags and a query to focus your search"
msgstr "per acotar les preguntes afegiu etiquetes i/o feu una consulta"
@@ -5351,19 +5513,19 @@ msgstr "començant de nou"
msgid "Please always feel free to ask your question!"
msgstr "Feu la vostra pregunta!"
-#: skins/default/templates/main_page/questions_loop.html:12
+#: skins/default/templates/main_page/questions_loop.html:11
msgid "Did not find what you were looking for?"
msgstr "No has trobat el que buscaves?"
-#: skins/default/templates/main_page/questions_loop.html:13
+#: skins/default/templates/main_page/questions_loop.html:12
msgid "Please, post your question!"
msgstr "Fes la teva pregunta"
-#: skins/default/templates/main_page/tab_bar.html:9
+#: skins/default/templates/main_page/tab_bar.html:10
msgid "subscribe to the questions feed"
msgstr "subscriure al feed preguntes"
-#: skins/default/templates/main_page/tab_bar.html:10
+#: skins/default/templates/main_page/tab_bar.html:11
msgid "RSS"
msgstr ""
@@ -5378,21 +5540,21 @@ msgstr ""
"funcionar, habiliti el javascript del seu navegador (<a href="
"\"%(noscript_url)s\">com?</a>)"
-#: skins/default/templates/meta/editor_data.html:5
+#: skins/default/templates/meta/editor_data.html:7
#, python-format
msgid "each tag must be shorter that %(max_chars)s character"
msgid_plural "each tag must be shorter than %(max_chars)s characters"
msgstr[0] "les etiquetes han de tenir menys de %(max_chars)s caràcter"
msgstr[1] "les etiquetes han de tenir menys de %(max_chars)s caràcters"
-#: skins/default/templates/meta/editor_data.html:7
+#: skins/default/templates/meta/editor_data.html:9
#, python-format
msgid "please use %(tag_count)s tag"
msgid_plural "please use %(tag_count)s tags or less"
msgstr[0] "usar %(tag_count)s etiqueta"
msgstr[1] "usar %(tag_count)s etiquetes o menys"
-#: skins/default/templates/meta/editor_data.html:8
+#: skins/default/templates/meta/editor_data.html:10
#, python-format
msgid ""
"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
@@ -5404,11 +5566,11 @@ msgstr ""
#, python-format
msgid ""
"\n"
-" %(counter)s Answer\n"
-" "
+" %(counter)s Answer\n"
+" "
msgid_plural ""
"\n"
-" %(counter)s Answers\n"
+" %(counter)s Answers\n"
" "
msgstr[0] ""
"\n"
@@ -5419,66 +5581,62 @@ msgstr[1] ""
" %(counter)s Respostes:\n"
" "
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Ordenar per »"
+
#: skins/default/templates/question/answer_tab_bar.html:14
msgid "oldest answers will be shown first"
msgstr "es mostraran primer les respostes antigues"
-#: skins/default/templates/question/answer_tab_bar.html:15
-msgid "oldest answers"
-msgstr "respostes més antigues"
-
#: skins/default/templates/question/answer_tab_bar.html:17
msgid "newest answers will be shown first"
msgstr "es mostraran primer les respostes recents"
-#: skins/default/templates/question/answer_tab_bar.html:18
-msgid "newest answers"
-msgstr "respostes recents"
-
#: skins/default/templates/question/answer_tab_bar.html:20
msgid "most voted answers will be shown first"
msgstr "es mostraran primer les respostes més votades"
-#: skins/default/templates/question/answer_tab_bar.html:21
-msgid "popular answers"
-msgstr "respostes populars"
-
-#: skins/default/templates/question/content.html:20
-#: skins/default/templates/question/new_answer_form.html:46
-msgid "Answer Your Own Question"
-msgstr "Respon la teva pròpia pregunta"
-
-#: skins/default/templates/question/new_answer_form.html:14
+#: skins/default/templates/question/new_answer_form.html:16
msgid "Login/Signup to Answer"
msgstr "Entrar/Registrar-se per Respondre"
-#: skins/default/templates/question/new_answer_form.html:22
+#: skins/default/templates/question/new_answer_form.html:24
msgid "Your answer"
msgstr "La seva resposta"
-#: skins/default/templates/question/new_answer_form.html:24
+#: skins/default/templates/question/new_answer_form.html:26
msgid "Be the first one to answer this question!"
msgstr "Sigues el primer en respondre aquesta pregunta!"
-#: skins/default/templates/question/new_answer_form.html:30
-msgid "you can answer anonymously and then login"
-msgstr "podeu respondre anònimament i després registrar-vos"
-
-#: skins/default/templates/question/new_answer_form.html:34
-msgid "answer your own question only to give an answer"
-msgstr "respon la seva pròpia pregunta només per donar una resposta"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
#: skins/default/templates/question/new_answer_form.html:36
-msgid "please only give an answer, no discussions"
-msgstr "si us plau només proporcionar una resposta, no discutir"
-
-#: skins/default/templates/question/new_answer_form.html:43
-msgid "Login/Signup to Post Your Answer"
-msgstr "Entrar/Registrar-se per publicar la seva resposta"
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#: skins/default/templates/question/new_answer_form.html:48
-msgid "Answer the question"
-msgstr "Respon la pregunta"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
#: skins/default/templates/question/sharing_prompt_phrase.html:2
#, python-format
@@ -5497,42 +5655,42 @@ msgstr "o"
msgid "email"
msgstr "correu electrònic"
-#: skins/default/templates/question/sidebar.html:4
+#: skins/default/templates/question/sidebar.html:6
msgid "Question tools"
msgstr "Eines per a preguntes"
-#: skins/default/templates/question/sidebar.html:7
+#: skins/default/templates/question/sidebar.html:9
msgid "click to unfollow this question"
msgstr "clic per deixar de seguir aquesta pregunta"
-#: skins/default/templates/question/sidebar.html:8
+#: skins/default/templates/question/sidebar.html:10
msgid "Following"
msgstr "Seguing"
-#: skins/default/templates/question/sidebar.html:9
+#: skins/default/templates/question/sidebar.html:11
msgid "Unfollow"
msgstr "Deixar de seguir"
-#: skins/default/templates/question/sidebar.html:13
+#: skins/default/templates/question/sidebar.html:15
msgid "click to follow this question"
msgstr "clic per seguir aquesta pregunta"
-#: skins/default/templates/question/sidebar.html:14
+#: skins/default/templates/question/sidebar.html:16
msgid "Follow"
msgstr "Seguir"
-#: skins/default/templates/question/sidebar.html:21
+#: skins/default/templates/question/sidebar.html:23
#, python-format
msgid "%(count)s follower"
msgid_plural "%(count)s followers"
msgstr[0] "%(count)s seguidor"
msgstr[1] "%(count)s seguidors"
-#: skins/default/templates/question/sidebar.html:27
+#: skins/default/templates/question/sidebar.html:29
msgid "email the updates"
msgstr "actualitzacions de correu electrònic"
-#: skins/default/templates/question/sidebar.html:30
+#: skins/default/templates/question/sidebar.html:32
msgid ""
"<strong>Here</strong> (once you log in) you will be able to sign up for the "
"periodic email updates about this question."
@@ -5540,11 +5698,11 @@ msgstr ""
"<strong>Aquí</strong> (un cop connectat) es pot inscriure per rebre "
"actualitzacions periòdiques sobre aquesta pregunta"
-#: skins/default/templates/question/sidebar.html:35
+#: skins/default/templates/question/sidebar.html:37
msgid "subscribe to this question rss feed"
msgstr "subscripció al canal rss d'aquesta pregunta"
-#: skins/default/templates/question/sidebar.html:36
+#: skins/default/templates/question/sidebar.html:38
msgid "subscribe to rss feed"
msgstr "subscriure's al feed rss"
@@ -5553,49 +5711,44 @@ msgid "Stats"
msgstr "Estadístiques"
#: skins/default/templates/question/sidebar.html:48
-msgid "question asked"
-msgstr "pregunta feta"
+#, fuzzy
+msgid "Asked"
+msgstr "preguntat"
#: skins/default/templates/question/sidebar.html:51
-msgid "question was seen"
-msgstr "s'ha vist la pregunta"
+msgid "Seen"
+msgstr ""
#: skins/default/templates/question/sidebar.html:51
msgid "times"
msgstr "cops"
#: skins/default/templates/question/sidebar.html:54
-msgid "last updated"
+#, fuzzy
+msgid "Last updated"
msgstr "darrera actualització"
-#: skins/default/templates/question/sidebar.html:63
+#: skins/default/templates/question/sidebar.html:62
msgid "Related questions"
msgstr "Preguntes relacionades"
-#: skins/default/templates/question/subscribe_by_email_prompt.html:7
-#: skins/default/templates/question/subscribe_by_email_prompt.html:9
-msgid "Notify me once a day when there are any new answers"
-msgstr "Aviseu-me un cop al dia quan hi ha noves respostes"
-
-#: skins/default/templates/question/subscribe_by_email_prompt.html:11
-msgid "Notify me weekly when there are any new answers"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
msgstr "Aviseu-me setmanalment quan hi ha noves respostes"
-#: skins/default/templates/question/subscribe_by_email_prompt.html:13
-msgid "Notify me immediately when there are any new answers"
-msgstr "Aviseu-me de seguida quan hi ha noves respostes"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr "quan iniciï la sessió podrà subscriure's a les actualitzacions aquí"
-#: skins/default/templates/question/subscribe_by_email_prompt.html:16
-#, python-format
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+#, fuzzy
msgid ""
-"You can always adjust frequency of email updates from your %(profile_url)s"
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
msgstr ""
-"Pot ajustar la freqüència de les actualitzacions de correu electrònic des de "
-"la seva %(profile_url)s"
-
-#: skins/default/templates/question/subscribe_by_email_prompt.html:21
-msgid "once you sign in you will be able to subscribe for any updates here"
-msgstr "quan iniciï la sessió podrà subscriure's a les actualitzacions aquí"
+"<strong>Aquí</strong> (un cop connectat) es pot inscriure per rebre "
+"actualitzacions periòdiques sobre aquesta pregunta"
#: skins/default/templates/user_profile/user.html:12
#, python-format
@@ -5610,21 +5763,30 @@ msgstr "Editar perfil de l'usuari"
msgid "edit profile"
msgstr "editar perfil"
-#: skins/default/templates/user_profile/user_edit.html:17
+#: skins/default/templates/user_profile/user_edit.html:21
#: skins/default/templates/user_profile/user_info.html:15
msgid "change picture"
msgstr "canviar imatge"
-#: skins/default/templates/user_profile/user_edit.html:20
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "treure"
+
+#: skins/default/templates/user_profile/user_edit.html:32
msgid "Registered user"
msgstr "Usuari registrat"
-#: skins/default/templates/user_profile/user_edit.html:27
+#: skins/default/templates/user_profile/user_edit.html:39
msgid "Screen Name"
msgstr "Nom a mostrar"
-#: skins/default/templates/user_profile/user_edit.html:83
-#: skins/default/templates/user_profile/user_email_subscriptions.html:21
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(no es pot canviar)"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
msgid "Update"
msgstr "Actualitzar"
@@ -5637,13 +5799,19 @@ msgstr "subscripcions"
msgid "Email subscription settings"
msgstr "Configuració de la subscripció de correu electrònic"
-#: skins/default/templates/user_profile/user_email_subscriptions.html:8
-msgid "email subscription settings info"
-msgstr "Informació de la subscripció de correu electrònic"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
-#: skins/default/templates/user_profile/user_email_subscriptions.html:22
-msgid "Stop sending email"
-msgstr "No enviar més correus electrònics"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "El seu correu electrònic"
#: skins/default/templates/user_profile/user_favorites.html:4
#: skins/default/templates/user_profile/user_tabs.html:27
@@ -5670,18 +5838,22 @@ msgid "flagged items (%(flag_count)s)"
msgstr "items senyalats (%(flag_count)s)"
#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
msgid "select:"
msgstr "seleccionar:"
#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
msgid "seen"
msgstr "vist"
#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
msgid "new"
msgstr "nou"
#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
msgid "none"
msgstr "cap"
@@ -5697,9 +5869,15 @@ msgstr "marcar com a nou"
msgid "dismiss"
msgstr "rebutjar"
-#: skins/default/templates/user_profile/user_info.html:19
-msgid "remove"
-msgstr "treure"
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "treure senyal"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "esborra"
#: skins/default/templates/user_profile/user_info.html:36
msgid "update profile"
@@ -5714,7 +5892,8 @@ msgid "real name"
msgstr "nom real"
#: skins/default/templates/user_profile/user_info.html:58
-msgid "member for"
+#, fuzzy
+msgid "member since"
msgstr "membre per"
#: skins/default/templates/user_profile/user_info.html:63
@@ -5722,8 +5901,9 @@ msgid "last seen"
msgstr "últim cop vist"
#: skins/default/templates/user_profile/user_info.html:69
-msgid "user website"
-msgstr "lloc web de l'usuari"
+#, fuzzy
+msgid "website"
+msgstr "Lloc web"
#: skins/default/templates/user_profile/user_info.html:75
msgid "location"
@@ -5735,7 +5915,7 @@ msgstr "edat"
#: skins/default/templates/user_profile/user_info.html:83
msgid "age unit"
-msgstr ""
+msgstr "unitat d'edat"
#: skins/default/templates/user_profile/user_info.html:88
msgid "todays unused votes"
@@ -5826,6 +6006,7 @@ msgstr ""
#: skins/default/templates/user_profile/user_moderate.html:83
msgid "Suspended users can only edit or delete their own posts."
msgstr ""
+"Els usuaris deshabilitats només poden editar o eliminar les seves entrades"
#: skins/default/templates/user_profile/user_moderate.html:86
msgid ""
@@ -5865,22 +6046,19 @@ msgid "%(username)s's network is empty"
msgstr "la xarxa de %(username)s's és buida"
#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
#: skins/default/templates/user_profile/user_tabs.html:31
msgid "activity"
msgstr "activitat"
-#: skins/default/templates/user_profile/user_recent.html:21
+#: skins/default/templates/user_profile/user_recent.html:24
#: skins/default/templates/user_profile/user_recent.html:28
msgid "source"
msgstr "font"
-#: skins/default/templates/user_profile/user_reputation.html:4
-msgid "karma"
-msgstr "reputació"
-
#: skins/default/templates/user_profile/user_reputation.html:11
msgid "Your karma change log."
-msgstr ""
+msgstr "Registre de canvis en la vostre reputació."
#: skins/default/templates/user_profile/user_reputation.html:13
#, python-format
@@ -5900,21 +6078,16 @@ msgstr[0] "<span class=\"count\">%(counter)s</span> Pregunta"
msgstr[1] "<span class=\"count\">%(counter)s</span> Preguntes"
#: skins/default/templates/user_profile/user_stats.html:16
-#, python-format
-msgid "<span class=\"count\">%(counter)s</span> Answer"
-msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-msgstr[0] "<span class=\"count\">%(counter)s</span> Resposta"
-msgstr[1] "<span class=\"count\">%(counter)s</span> Respostes"
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "Resposta"
+msgstr[1] "Respostes"
#: skins/default/templates/user_profile/user_stats.html:24
#, python-format
msgid "the answer has been voted for %(answer_score)s times"
msgstr "la resposta s'ha votat %(answer_score)s vegades"
-#: skins/default/templates/user_profile/user_stats.html:24
-msgid "this answer has been selected as correct"
-msgstr "aquesta resposta s'ha seleccionat com a correcta"
-
#: skins/default/templates/user_profile/user_stats.html:34
#, python-format
msgid "(%(comment_count)s comment)"
@@ -5952,14 +6125,14 @@ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
msgstr[0] "<span class=\"count\">%(counter)s</span> Etiqueta"
msgstr[1] "<span class=\"count\">%(counter)s</span> Etiquetes"
-#: skins/default/templates/user_profile/user_stats.html:99
+#: skins/default/templates/user_profile/user_stats.html:97
#, python-format
msgid "<span class=\"count\">%(counter)s</span> Badge"
msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
msgstr[0] "<span class=\"count\">%(counter)s</span> Insígnia"
msgstr[1] "<span class=\"count\">%(counter)s</span> Insígnies"
-#: skins/default/templates/user_profile/user_stats.html:122
+#: skins/default/templates/user_profile/user_stats.html:120
msgid "Answer to:"
msgstr "Respon a:"
@@ -5967,7 +6140,7 @@ msgstr "Respon a:"
msgid "User profile"
msgstr "Perfil d'usuari"
-#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:785
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
msgid "comments and answers to others questions"
msgstr "comentaris i respostes a altres preguntes"
@@ -5976,47 +6149,39 @@ msgid "followers and followed users"
msgstr "usuaris seguidors i seguits"
#: skins/default/templates/user_profile/user_tabs.html:21
-msgid "graph of user reputation"
+#, fuzzy
+msgid "Graph of user karma"
msgstr "gràfic de la reputació de l'usuari"
-#: skins/default/templates/user_profile/user_tabs.html:23
-msgid "reputation history"
-msgstr "històric reputació"
-
#: skins/default/templates/user_profile/user_tabs.html:25
msgid "questions that user is following"
msgstr "preguntes que l'usuari segueix"
-#: skins/default/templates/user_profile/user_tabs.html:29
-msgid "recent activity"
-msgstr "activitat recent"
-
-#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:860
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
msgid "user vote record"
msgstr "registre de vots de l'usuari"
#: skins/default/templates/user_profile/user_tabs.html:36
-msgid "casted votes"
-msgstr "vots emesos"
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "vots"
-#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:973
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
msgid "email subscription settings"
msgstr "configuració de la subscripció de correu electrònic"
-#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:211
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
msgid "moderate this user"
msgstr "moderar aquest usuari"
-#: skins/default/templates/user_profile/user_votes.html:4
-msgid "votes"
-msgstr "vots"
-
#: skins/default/templates/widgets/answer_edit_tips.html:3
-msgid "answer tips"
-msgstr "consells per respondre"
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:6
-msgid "please make your answer relevant to this community"
+#, fuzzy
+msgid "give an answer interesting to this community"
msgstr "feu una pregunta rellevant per a la comunitat"
#: skins/default/templates/widgets/answer_edit_tips.html:9
@@ -6024,8 +6189,10 @@ msgid "try to give an answer, rather than engage into a discussion"
msgstr "procureu donar una resposta, sense entrar en un discussió"
#: skins/default/templates/widgets/answer_edit_tips.html:12
-msgid "please try to provide details"
-msgstr "procureu donar detalls"
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "dóna detalls suficients"
#: skins/default/templates/widgets/answer_edit_tips.html:15
#: skins/default/templates/widgets/question_edit_tips.html:11
@@ -6039,7 +6206,8 @@ msgstr "vegeu preguntes més freqüents"
#: skins/default/templates/widgets/answer_edit_tips.html:27
#: skins/default/templates/widgets/question_edit_tips.html:22
-msgid "Markdown tips"
+#, fuzzy
+msgid "Markdown basics"
msgstr "Consells llenguatge de marques"
#: skins/default/templates/widgets/answer_edit_tips.html:31
@@ -6063,11 +6231,6 @@ msgid "**bold** or __bold__"
msgstr "**negreta** o _negreta_"
#: skins/default/templates/widgets/answer_edit_tips.html:45
-#: skins/default/templates/widgets/question_edit_tips.html:40
-msgid "link"
-msgstr "enllaç"
-
-#: skins/default/templates/widgets/answer_edit_tips.html:45
#: skins/default/templates/widgets/answer_edit_tips.html:49
#: skins/default/templates/widgets/question_edit_tips.html:40
#: skins/default/templates/widgets/question_edit_tips.html:45
@@ -6094,32 +6257,29 @@ msgstr "es poden posar etiquetes HTML bàsiques"
msgid "learn more about Markdown"
msgstr "aprendre més sobre Markdown"
-#: skins/default/templates/widgets/ask_button.html:2
-msgid "ask a question"
-msgstr "fes una pregunta"
-
#: skins/default/templates/widgets/ask_form.html:6
msgid "login to post question info"
-msgstr "entrar per publicar una pregunta2"
+msgstr "cal entrar per publicar una pregunta"
-#: skins/default/templates/widgets/ask_form.html:10
-#, python-format
+#: skins/default/templates/widgets/ask_form.html:7
msgid ""
-"must have valid %(email)s to post, \n"
-" see %(email_validation_faq_url)s\n"
-" "
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
msgstr ""
-"per publicar ha de tenir un %(email)s vàlid, \n"
-" vegeu %(email_validation_faq_url)s\n"
-" "
-
-#: skins/default/templates/widgets/ask_form.html:42
-msgid "Login/signup to post your question"
-msgstr "Entrar/registrar-se per publicar la vostre pregunta"
-#: skins/default/templates/widgets/ask_form.html:44
-msgid "Ask your question"
-msgstr "Fes la teva pregunta"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
#: skins/default/templates/widgets/contributors.html:3
msgid "Contributors"
@@ -6135,10 +6295,15 @@ msgid "about"
msgstr "sobre"
#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "ajuda"
+
+#: skins/default/templates/widgets/footer.html:42
msgid "privacy policy"
-msgstr "política de privacitat"
+msgstr "avís legal"
-#: skins/default/templates/widgets/footer.html:49
+#: skins/default/templates/widgets/footer.html:51
msgid "give feedback"
msgstr "dóna la teva opinió"
@@ -6159,29 +6324,22 @@ msgstr "gent"
msgid "badges"
msgstr "insígnies"
-#: skins/default/templates/widgets/question_edit_tips.html:3
-msgid "question tips"
-msgstr "Consells"
-
#: skins/default/templates/widgets/question_edit_tips.html:5
-msgid "please ask a relevant question"
-msgstr "fes una pregunta interessant per a la comunitat"
-
-#: skins/default/templates/widgets/question_edit_tips.html:8
-msgid "please try provide enough details"
-msgstr "dóna detalls suficients"
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "feu una pregunta rellevant per a la comunitat"
#: skins/default/templates/widgets/question_summary.html:12
msgid "view"
msgid_plural "views"
-msgstr[0] "vista"
+msgstr[0] "visita"
msgstr[1] "visites"
#: skins/default/templates/widgets/question_summary.html:29
msgid "answer"
msgid_plural "answers"
-msgstr[0] "resposta"
-msgstr[1] "respostes"
+msgstr[0] "resp."
+msgstr[1] "resp."
#: skins/default/templates/widgets/question_summary.html:40
msgid "vote"
@@ -6189,27 +6347,32 @@ msgid_plural "votes"
msgstr[0] "vot"
msgstr[1] "vots"
-#: skins/default/templates/widgets/scope_nav.html:3
+#: skins/default/templates/widgets/scope_nav.html:6
msgid "ALL"
msgstr "TOTES"
-#: skins/default/templates/widgets/scope_nav.html:5
+#: skins/default/templates/widgets/scope_nav.html:8
msgid "see unanswered questions"
msgstr "veure preguntes sense respondre"
-#: skins/default/templates/widgets/scope_nav.html:5
+#: skins/default/templates/widgets/scope_nav.html:8
+#, fuzzy
msgid "UNANSWERED"
-msgstr "SENSE RESPONDRE"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"SENSE RESP.\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"SENSE RESPONDRE"
-#: skins/default/templates/widgets/scope_nav.html:8
+#: skins/default/templates/widgets/scope_nav.html:11
msgid "see your followed questions"
-msgstr ""
+msgstr "mostrar les preguntes seguides"
-#: skins/default/templates/widgets/scope_nav.html:8
+#: skins/default/templates/widgets/scope_nav.html:11
msgid "FOLLOWED"
msgstr "SEQUIDES"
-#: skins/default/templates/widgets/scope_nav.html:11
+#: skins/default/templates/widgets/scope_nav.html:14
msgid "Please ask your question here"
msgstr "Fes la teva pregunta"
@@ -6221,23 +6384,26 @@ msgstr "reputació:"
msgid "badges:"
msgstr "insígnies:"
-#: skins/default/templates/widgets/user_navigation.html:8
-msgid "logout"
-msgstr "sortir"
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "sortir/"
-#: skins/default/templates/widgets/user_navigation.html:10
-msgid "login"
-msgstr "Registrar-se"
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "Registrar-se aquí:"
-#: skins/default/templates/widgets/user_navigation.html:14
+#: skins/default/templates/widgets/user_navigation.html:15
msgid "settings"
msgstr "configuració"
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:264
-msgid "no items in counter"
-msgstr ""
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "cap"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
msgid "Oops, apologies - there was some error"
msgstr "hi ha hagut un error"
@@ -6249,96 +6415,143 @@ msgstr "Entrar per publicar"
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr "S'ha detectar spam en el seu missatge, ho sentin si això és un error"
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "aquesta camp és requerit"
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "nom d'usuari"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "el nom d'usuari es requerit"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr "aquest nom ja existeix, trieu un altre"
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr ""
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr ""
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "adreça correu electrònic"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:139
msgid "email address is required"
msgstr ""
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr ""
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr "aquesta adreça de correu ja s'està utilitzant, trieu un altre"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "contrasenya"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "la contrasenya és necessaria"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "repetir contrasenya"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "tornar a entrar la contrasenya"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr "les contrasenyes no coincideixen, torneu a provar"
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "fa 2 dies"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "ahir"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] ""
msgstr[1] ""
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] "fa %(min)d minut"
msgstr[1] "fa %(min)d minuts"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Per preguntar per correu electrònic:</p>\n"
+"<ul>\n"
+" <li>Escriviu l'assumpte com: [Etiqueta1; Etiqueta12] Títol de la "
+"pregunta</li>\n"
+" <li>En el cos del missatge escriviu els detalls de la vostre pregunta</"
+"li>\n"
+"</ul>\n"
+"<p>Les etiquetes poden esta formades per més d'una paraula. Les etiquetes "
+"estan separades per una coma o un punt i coma</p>\n"
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>S'ha produït un error publicant la vostre pregunta; contacteu amb "
+"l'administrador de %(site)s</p> "
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Cal estar <a href=\"%(url)s\">registrat</a> per publicar preguntes s "
+"%(site)s a través del correu electrònic</p>"
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>La seva pregunta no s'ha publicat ja que el vostre compte d'usuari no té "
+"suficients privilegis</p>"
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -6351,170 +6564,188 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "Els usuaris anònims no tenen accés a la safata d'entrada"
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
msgstr "els usuaris anònims no poden votar"
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr "se li han acabat el vots per avui"
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr "Per avui li queden %(votes_left)s restants"
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
-msgstr ""
+msgstr "alguna cosa no funciona aqui ..."
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
-msgstr ""
+msgstr "Els usuaris anònims no poden acceptar respostes"
-#: views/commands.py:301
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
+"subscripció desada, %(email)s s'han de validar, veure %(details_url)s"
-#: views/commands.py:308
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
-msgstr ""
+msgstr "freqüencia d'actualització de correus diària"
-#: views/commands.py:413
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:422
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: views/commands.py:555
+#: views/commands.py:600
msgid "Please sign in to vote"
msgstr "Registrar-se per votar"
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Registrar-se per votar"
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "Sobre %(site)s"
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Gràcies pels comentaris"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:152
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Avís legal"
+
+#: views/readers.py:133
#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(q_num)s pregunta, etiquetada"
+msgstr[1] "%(q_num)s preguntes, etiquetades"
-#: views/readers.py:200
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s insígnia"
-msgstr[1] "%(badge_count)d %(badge_level)s insígnies"
-
-#: views/readers.py:416
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
-msgstr ""
+msgstr "el commentari que busca s'ha esborrat i no es pot accedir"
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr "usuari moderador"
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "perfil d'usuari"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr "resum perfil usuari"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "activitat recent de l'usuari"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "perfil - activitat recent"
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "perfil - respostes"
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "peril - vots"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "reputació de l'usuari a la comunitat"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "reputació"
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "perfil - reputació de l'usuari"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "preguntes preferides dels usuaris"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "perfil - preguntes preferides"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr "canvis desats"
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr "cancel·lat l'acutalització de correu electrònic"
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "perfil - subscripcions de correu electrònic"
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
msgstr "Els usuaris anònims no poden pujar fitxers"
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "els tipus de fitxers permesos són '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr "grandària màxima dels fitxers a penjar és de %(file_size)s"
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
"Error penjant el fitxer. Contacteu amb l'administrador del lloc. Gràcies."
-#: views/writers.py:191
-msgid "Please log in to ask questions"
-msgstr "Entrar per fer preguntes"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
msgid "Please log in to answer questions"
msgstr "Entrar per respondre preguntes"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
@@ -6523,22 +6754,442 @@ msgstr ""
"Sembla que heu sortit i no podeu posar comentaris. <a href=\"%(sign_in_url)s"
"\">Entreu</a>."
-#: views/writers.py:646
+#: views/writers.py:589
msgid "Sorry, anonymous users cannot edit comments"
msgstr "Els usuaris anònims no poden editar comentaris"
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-"Sembla que heu sortit i no podeu esborrar comentaris. <a href="
+"Sembla que heu sortit i no podeu eliminar comentaris. <a href="
"\"%(sign_in_url)s\">Entreu</a>."
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+msgstr "sembla que tenim algunes dificultats tècniques"
+
+#~ msgid "question_answered"
+#~ msgstr "pregunta resposta"
+
+#~ msgid "question_commented"
+#~ msgstr "pregunta comentada"
+
+#~ msgid "answer_commented"
+#~ msgstr "resposta comentada"
+
+#~ msgid "answer_accepted"
+#~ msgstr "resposta acceptada"
+
+#~ msgid "Incorrect username."
+#~ msgstr "Nom d'usuari incorrecta"
+
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "%(name)s, aquest és un missatge d'actualització de %(num)d pregunta"
+#~ msgstr[1] ""
+#~ "%(name)s, aquest és un missatge d'actualització de %(num)d preguntes"
+
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "per canviar la freqüencia de recepció de missatges anar a "
+#~ "%(email_settings_link)s o %(admin_email)s administrador"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "només els usuaris amb més de %(min_rep)s punts de reputació poden penjar "
+#~ "imatges"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr "els usuaris bloquejats no poden publicar"
+
+#~ msgid "suspended users cannot post"
+#~ msgstr "els usuaris deshabilitats no poden publicar"
+
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "no es pot senyalar un missatge com ofensiu dues vegades"
+
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "els usuaris bloquejats no poden senyalar entrades"
+
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "els usuaris deshabilitats no poden senyalar entrades"
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr "s'han de tenir més de %(min_rep)s punts per senyalar spam"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "excedit %(max_flags_per_day)s"
+
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr "els usuaris bloquejats no poden treure senyals"
+
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "els usuaris deshabilitats no poden treure senyals"
+
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] "s'han de tenir més d'%(min_rep)d punt per poder treure senyals"
+#~ msgstr[1] "s'han de tenir més de %(min_rep)d punts per poder treure senyals"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "no es pot revocar un vot antic"
+
+#~ msgid "change %(email)s info"
+#~ msgstr "canviar informació %(email)s"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "el correu electrònic és necessari, consulteu %(gravatar_faq_url)s"
+
+#~ msgid "Your new Email"
+#~ msgstr "El seu nou correu electrònic"
+
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr "validar la informació %(email)s o anar a %(change_email_url)s"
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr "es manté l'antic %(email)s, si vol pot anar a %(change_email_url)s"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "per això es pot usar el %(email)s actual"
+
+#~ msgid "thanks for verifying email"
+#~ msgstr "gràcies per verificar el correu electrònic"
+
+#~ msgid "email key not sent"
+#~ msgstr "no s'ha enviat la clau de verificació de correu electrònic"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "no s'ha enviat la clau de correu electrònic %(email)s, canviar el correu "
+#~ "a %(change_link)s"
+
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "registrar-se a través de %(provider)s; consulteu %(gravatar_faq_url)s"
+
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "%(username)s ja existeix, seleccioneu un altre nom per \n"
+#~ " %(provider)s. També és necessari el correu "
+#~ "electrònic: consulteu%(gravatar_faq_url)s\n"
+#~ " "
+
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "informació del nou compte de registre extern %(provider)s; consulteu "
+#~ "%(gravatar_faq_url)s"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr "registrar nova connexió Facebook; consulteu %(gravatar_faq_url)s"
+
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Aquest compte ja existeix, useu un altre."
+
+#~ msgid "Screen name label"
+#~ msgstr "Nom d'usuari"
+
+#~ msgid "Email address label"
+#~ msgstr "Adreça de correu electrònic"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "rebre actualitzacions"
+
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr "Al entrar, el requadre dret serà l'eina de filtre d'etiquetes"
+
+#~ msgid "create account"
+#~ msgstr "crear compte"
+
+#~ msgid "Login"
+#~ msgstr "Entrar"
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "Perquè usar OpenID?"
+
+#~ msgid "with openid it is easier"
+#~ msgstr "amb openid és més fàcil"
+
+#~ msgid "reuse openid"
+#~ msgstr "reusar openid"
+
+#~ msgid "openid is widely adopted"
+#~ msgstr "openid està àmpliament adoptat"
+
+#~ msgid "openid is supported open standard"
+#~ msgstr "openid és un estàndard obert compatible"
+
+#~ msgid "Find out more"
+#~ msgstr "Cercar més"
+
+#~ msgid "Get OpenID"
+#~ msgstr "Obtenir OpenID"
+
+#~ msgid "Traditional signup info"
+#~ msgstr "Informació de registre tradicional"
+
+#~ msgid "Create Account"
+#~ msgstr "Crear un compte"
+
+#~ msgid "answer permanent link"
+#~ msgstr "enllaç permanent a la resposta"
+
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "%(question_author)s ha seleccionat aquesta resposta com a correcta"
+
+#~ msgid "Related tags"
+#~ msgstr "Etiquetes relacionades"
+
+#~ msgid "Ask a question"
+#~ msgstr "Feu una pregunta"
+
+#~ msgid "Badges summary"
+#~ msgstr "Resum insígnies"
+
+#~ msgid "gold badge description"
+#~ msgstr "descripció de la insígnia d'or"
+
+#~ msgid "silver badge description"
+#~ msgstr "descripció de la insígnia de plata"
+
+#~ msgid "bronze badge description"
+#~ msgstr "descripció de la insígnia de bronze"
+
+#~ 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 ""
+#~ "aquest és un lloc de Preguntes i Respostes, no un grup de discussió. Per "
+#~ "tant eviteu tenir discussions en la vostre resposta. L'opció de fer "
+#~ "comentaris permet, fins cert punt, breus discussions."
+
+#~ msgid "Rep system summary"
+#~ msgstr "Resum del sistema de reputació"
+
+#~ msgid "use tags"
+#~ msgstr "usar etiquetes"
+
+#~ msgid "what is gravatar"
+#~ msgstr "què és gravatar"
+
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "m'agrada aquesta pregunta (feu clic de nou per cancel·lar)"
+
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "m'agrada aquesta resposta (feu clic de nou per cancel·lar)"
+
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "no m'agrada aquesta pregunta (feu clic de nou per cancel·lar)"
+
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "no m'agrada aquesta resposta (feu clic de nou per cancel·lar)"
+
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] "veure <strong>%(counter)s</strong> comentar més"
+#~ msgstr[1] "veure <strong>%(counter)s</strong> comentaris més"
+
+#~ msgid "Change tags"
+#~ msgstr "Canviar etiquetes"
+
+#~ msgid "reputation"
+#~ msgstr "reputació"
+
+#~ msgid "oldest answers"
+#~ msgstr "respostes més antigues"
+
+#~ msgid "newest answers"
+#~ msgstr "respostes recents"
+
+#~ msgid "popular answers"
+#~ msgstr "respostes populars"
+
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "podeu respondre anònimament i després registrar-vos"
+
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "respon la seva pròpia pregunta només per donar una resposta"
+
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "si us plau només proporcionar una resposta, no discutir"
+
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Entrar/Registrar-se per publicar la seva resposta"
+
+#~ msgid "Answer the question"
+#~ msgstr "Respon la pregunta"
+
+#~ msgid "question asked"
+#~ msgstr "pregunta feta"
+
+#~ msgid "question was seen"
+#~ msgstr "s'ha vist la pregunta"
+
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "Aviseu-me un cop al dia quan hi ha noves respostes"
+
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "Aviseu-me de seguida quan hi ha noves respostes"
+
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr ""
+#~ "Pot ajustar la freqüència de les actualitzacions de correu electrònic des "
+#~ "de la seva %(profile_url)s"
+
+#~ msgid "email subscription settings info"
+#~ msgstr "Informació de la subscripció de correu electrònic"
+
+#~ msgid "Stop sending email"
+#~ msgstr "No enviar més correus electrònics"
+
+#~ msgid "user website"
+#~ msgstr "lloc web de l'usuari"
+
+#~ msgid "reputation history"
+#~ msgstr "històric reputació"
+
+#~ msgid "recent activity"
+#~ msgstr "activitat recent"
+
+#~ msgid "casted votes"
+#~ msgstr "vots emesos"
+
+#~ msgid "answer tips"
+#~ msgstr "consells per respondre"
+
+#~ msgid "please try to provide details"
+#~ msgstr "procureu donar detalls"
+
+#~ msgid "ask a question"
+#~ msgstr "fes una pregunta"
+
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "per publicar ha de tenir un %(email)s vàlid, \n"
+#~ " vegeu %(email_validation_faq_url)s\n"
+#~ " "
+
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Entrar/registrar-se per publicar la vostre pregunta"
+
+#~ msgid "question tips"
+#~ msgstr "Consells"
+
+#~ msgid "please ask a relevant question"
+#~ msgstr "fes una pregunta interessant per a la comunitat"
+
+#~ msgid "logout"
+#~ msgstr "sortir"
+
+#~ msgid "login"
+#~ msgstr "Registrar-se"
+
+#~ msgid "no items in counter"
+#~ msgstr "no"
+
+#~ msgid "your email address"
+#~ msgstr "adreça correu electrònic"
+
+#~ msgid "choose password"
+#~ msgstr "contrasenya"
+
+#~ msgid "retype password"
+#~ msgstr "repetir contrasenya"
+
+#~ msgid "user reputation in the community"
+#~ msgstr "reputació de l'usuari a la comunitat"
+
+#~ msgid "Please log in to ask questions"
+#~ msgstr "Entrar per fer preguntes"
+
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "aquest correu electrònic s'enllaçarà al Gravatar"
+
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Visita el fòrum i mira les noves preguntes i respostes. Potser algú que "
+#~ "coneixes pot ajudar responen alguna de les preguntes o pot estar "
+#~ "interessat en publicar algunapregunta."
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "La subscripció més freqüent que té és la 'diària' de preguntes "
+#~ "seleccionades. Si rep més d'un missatge al dia, informi aquest fet a "
+#~ "l'administrador del lloc."
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "La subscripció més freqüent que té és 'setmanal'. Si rep aquest missatge "
+#~ "més d'un cop per setmana, informi aquest fet a l'administrador del lloc."
+
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "És possible que rebi enllaços ja consultats abans, es tracte d'una "
+#~ "qüestió tècnica que es resoldrà."
+
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s ha modificat la pregunta"
+
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s han publicat %(new_answer_count)s noves respostes"
+
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s han comentat la pregunta"
+
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s han comentat respostes"
+
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s han comentat una resposta"
+
+#~ msgid "remove all flags"
+#~ msgstr "treure senyals"
+
+#~ msgid "posts per page"
+#~ msgstr "entrades per pàgina"
+
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Resposta"
+#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Respostes"
+
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s insígnia"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s insígnies"
+
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "la pregunta ha de tenir més de 10 caràcters"
#~ msgid "(please enter a valid email)"
#~ msgstr "(entrar una adreça vàlida de correu electrònic)"
@@ -6563,9 +7214,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Tags"
-#~ msgid "questions"
-#~ msgstr "preguntes"
-
#~ msgid "search"
#~ msgstr "cerca"
diff --git a/askbot/locale/ca/LC_MESSAGES/djangojs.mo b/askbot/locale/ca/LC_MESSAGES/djangojs.mo
index 30a5a601..c1bba84e 100644
--- a/askbot/locale/ca/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/ca/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/ca/LC_MESSAGES/djangojs.po b/askbot/locale/ca/LC_MESSAGES/djangojs.po
index 390d8e0c..f64685b0 100644
--- a/askbot/locale/ca/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ca/LC_MESSAGES/djangojs.po
@@ -2,14 +2,13 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:58-0600\n"
+"POT-Creation-Date: 2012-04-18 18:56-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Last-Translator: Jordi Bofill <jordi.bofill@upc.edu>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
@@ -18,324 +17,317 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "Vol eliminar l'entrada %s?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Afegir un o més mètodes d'entrada."
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"Actualment no teniu cap mètode d'entrada, afegiu-ne un clicant una de les "
+"icones."
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "les contrasenyes no coincideixen"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Mostrar/canviar els mètodes d'entrada actuals"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "Entrar el vostre %s per continuar"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "Connectar el compte %(provider_name)s a %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "Canviar la contrasenya %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Canviar contrasenya"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "Crear una contrasenya per %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Crear contrasenya"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Crear un compte protegit amb contrasenya"
#: skins/common/media/js/post.js:28
msgid "loading..."
-msgstr ""
-
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
+msgstr "càrrega..."
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr ""
+msgstr "permisos insuficients "
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
-msgstr ""
+msgstr "no es pot escollir resp. pròpia com a millor"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr ""
+msgstr "entrar"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "usuaris anònims no poden seguir preguntes"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "usuaris anònims no poden subscriures a preguntes"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr ""
+msgstr "usuaris anònims no poden votar"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
-msgstr ""
+msgstr "confirmar com ofensiu"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "confirmar com ofensiu"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
-msgstr ""
+msgstr "usuaris anònims no poden senyalar entrades com ofensives"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
-msgstr ""
+msgstr "confirmar eliminar"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
-msgstr ""
+msgstr "usuaris anònims no poden eliminar/recuperar"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
-msgstr ""
+msgstr "entrada recuperada"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
-msgstr ""
-
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
+msgstr "entrada eliminada"
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] "%s seguidor"
-msgstr[1] "%s seguidors"
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr "<div>Seguint</div><div class=\"unfollow\">Deixar de seguir</div>"
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
-msgstr ""
+msgstr "afegir comentari"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
+msgstr "desar comentari"
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr "Títol de la pregunta (més de 10 caràcters)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr "Coincidències de la etiqueta:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr "i %s més què no es mostren ..."
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "Seleccinar com a mínim un ítem"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "Eliminar aquesta notificació?"
+msgstr[1] "Eliminar aquestes notificacions"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "eliminar aquest comentari"
+msgstr[1] "eliminar aquest comentari"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "eliminar aquest comentari"
+msgstr[1] "eliminar aquest comentari"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr "<a href=\"%(signin_url)s\">Entrar</a> per seguir a %(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr "deixar de seguir a %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr "seguint a %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr "seguir a %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
+msgstr "clicar per tancar"
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
-msgstr ""
+msgstr "negreta"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
-msgstr ""
+msgstr "cursiva"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
-msgstr ""
+msgstr "enllaç"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
-msgstr ""
+msgstr "citar"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr ""
+msgstr "format predefinit "
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
-msgstr ""
+msgstr "imatge"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "adjunt"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
-msgstr ""
+msgstr "llista numerada"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
-msgstr ""
+msgstr "llista de pics"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
-msgstr ""
+msgstr "encapçalament"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr ""
+msgstr "barra horitzontal"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
-msgstr ""
+msgstr "desfer"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
-msgstr ""
+msgstr "refer"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
-msgstr ""
+msgstr "entrar url de la imatge"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
-msgstr ""
+msgstr "entrar l'url"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "pujar arxiu adjunt"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "Les etiquetes no poden estar buides"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "el contingut no pot estar buit"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "%s contingut mín caràct."
+
+#~ msgid "please enter title"
+#~ msgstr "entrar títol"
+
+#~ msgid "%s title minchars"
+#~ msgstr "%s títol mín caràct."
+
+#~ msgid "Follow"
+#~ msgstr "Seguir"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s seguidor"
+#~ msgstr[1] "%s seguidors"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Seguint</div><div class=\"unfollow\">Deixar de seguir</div>"
+
+#~ msgid "undelete"
+#~ msgstr "recuperar"
+
+#~ msgid "delete"
+#~ msgstr "eliminar"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "introduir %s caràcters més"
+
+#~ msgid "%s characters left"
+#~ msgstr "queden %s caràcters"
+
+#~ msgid "cancel"
+#~ msgstr "anul·lar"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "confirmar abandó del commenari"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "conformar eliminar comentari"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "clicar per modificar aquest comentari"
+
+#~ msgid "edit"
+#~ msgstr "modificar"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "veure preguntes etiquetades '%s'"
+
+#~ msgid "image description"
+#~ msgstr "descripció de la imatge"
+
+#~ msgid "file name"
+#~ msgstr "nom del fitxer"
+
+#~ msgid "link text"
+#~ msgstr "text de l'enllaç"
diff --git a/askbot/locale/de/LC_MESSAGES/django.mo b/askbot/locale/de/LC_MESSAGES/django.mo
index a48a1401..26cc1c07 100644
--- a/askbot/locale/de/LC_MESSAGES/django.mo
+++ b/askbot/locale/de/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/de/LC_MESSAGES/django.po b/askbot/locale/de/LC_MESSAGES/django.po
index 4e94d72c..51a244e8 100644
--- a/askbot/locale/de/LC_MESSAGES/django.po
+++ b/askbot/locale/de/LC_MESSAGES/django.po
@@ -2,20 +2,20 @@
# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the Askbot package.
# Pekka Gaiser <EMAIL@ADDRESS>, YEAR.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:26-0600\n"
+"POT-Creation-Date: 2012-04-18 18:57-0500\n"
"PO-Revision-Date: 2010-05-06 02:23\n"
"Last-Translator: <who@email.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n!= 1;\n"
+"X-Generator: Virtaal 0.7.0\n"
"X-Translated-Using: django-rosetta 0.5.3\n"
#: exceptions.py:13
@@ -23,16 +23,16 @@ msgstr ""
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "Gastbenutzer können nicht abstimmen"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
+#: feed.py:28
#, fuzzy
msgid "Individual question feed"
msgstr "Individuell ausgewählte Fragen"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "Neueste Fragen"
@@ -43,14 +43,17 @@ msgstr "Zugang löschen"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "País"
#: forms.py:91
#, fuzzy
msgid "Country field is required"
msgstr "Dieses Feld wird benötigt"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "Titel"
@@ -58,61 +61,81 @@ msgstr "Titel"
msgid "please enter a descriptive title for your question"
msgstr "Bitte geben Sie einen Aussagekräftigen Titel für Ihre Frage ein."
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "Der Titel muß länger als 10 Zeichen sein."
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "Der Titel muß länger als 10 Zeichen sein."
+msgstr[1] "Der Titel muß länger als 10 Zeichen sein."
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
-#: forms.py:119
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "Inhalt"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "Der Fragentext muß länger als 10 Buchstaben sein."
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "Tags"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Tags sind kurze Stichwörter. Sie dürfen keine Leerzeichen enthalten. Bis zu "
+"fünf Tags können vergeben werden."
+msgstr[1] ""
"Tags sind kurze Stichwörter. Sie dürfen keine Leerzeichen enthalten. Bis zu "
"fünf Tags können vergeben werden."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "Mindestens ein Tag muß gesetzt sein."
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "Bitte %(tag_count)d Tags oder weniger benutzen"
msgstr[1] "Bitte %(tag_count)d Tags oder weniger benutzen"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Es requereixen com a mínim una de les etiquetes següents: %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
msgstr[1] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "Diese Buchstaben dürfen in Tags vorkommen"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
+"wiki comunitari (no es concedeix reputació; altres usuaris poden editar "
+"l'entrada)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -121,11 +144,11 @@ msgstr ""
"Antworten keine Bewertungspunkte vergeben, und der Name des Autors wird "
"nicht angezeigt."
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "Zusammenfassung der Ãœberarbeitung:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -134,241 +157,281 @@ msgstr ""
"Rechtschreibung, Tippfehler korrigiert, Grammatik, Stil verbessert) "
"Freiwillige Angabe."
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr ""
+msgstr "Introduir el nombre de punts a sumar o restar"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
-msgstr ""
+msgstr "aprovat"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
-msgstr ""
+msgstr "vist"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
#, fuzzy
msgid "suspended"
msgstr "aktualisiert"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
-msgstr ""
+msgstr "bloquejat"
-#: forms.py:346
+#: forms.py:405
#, fuzzy
msgid "administrator"
msgstr "Ihr Forumsteam"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
#, fuzzy
msgid "moderator"
msgstr "benutzer-moderieren/"
-#: forms.py:367
+#: forms.py:426
#, fuzzy
msgid "Change status to"
msgstr "Tags ändern"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
-msgstr ""
+msgstr "quin?"
-#: forms.py:415
+#: forms.py:474
#, fuzzy
msgid "Cannot change own status"
msgstr "Über selbst verfaßte Beiträge kann nicht abgestimmt werden"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
-msgstr ""
+msgstr "No es pot canviar l'altre usuari a moderador"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
-msgstr ""
+msgstr "No es pot canviar l'estat d'un altre moderador"
-#: forms.py:434
+#: forms.py:493
#, fuzzy
msgid "Cannot change status to admin"
msgstr "Über selbst verfaßte Beiträge kann nicht abgestimmt werden"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"Si es vol canviar l'estat de %(username)s, feu una selecció amb significat"
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
-msgstr ""
+msgstr "Línia d'assumpte"
-#: forms.py:456
+#: forms.py:515
#, fuzzy
msgid "Message text"
msgstr "Nachrichtentext:"
-#: forms.py:542
+#: forms.py:530
#, fuzzy
msgid "Your name (optional):"
msgstr "Ihr Name:"
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr "E-Mail"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "Ihre Nachricht:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "No donar el meu correu electrònic or rebre respostes:"
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "Marcar l'opció \"No donar el meu correu electrònic\"."
-#: forms.py:611
+#: forms.py:599
#, fuzzy
msgid "ask anonymously"
msgstr "Anonym"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
+msgstr "Marcar si no voleu mostrar el vostre nom al fer aquesta pregunta"
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
msgstr ""
-#: forms.py:773
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Heu fet aquesta pregunta anònimament, si voleu mostrar la vostra identitat "
+"marqueu aquesta opció."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
-msgstr ""
+msgstr "mostrar identitat"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"Només l'autor de la pregunta anònima pot mostrar la seva identitat. "
+"Desmarqueu l'opció"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"Sembla què les regles han canviat; ara no es poden fer preguntes anònimament."
+"Si us plau, marqueu «mostrar identitat» o tornareu a carregar aquesta pàgina "
+"i editeu de nou la pregunta"
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "Diese E-Mail muß nicht mit Gravatar verknüpft werden."
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Echter Name"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Website"
-#: forms.py:907
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "Ciutat"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "Mostrar país"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Geburtsdatum"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"wird nicht angezeigt, aber für die Altersberechnung verwendet. Format: JJJJ-"
"MM-TT, Beispiel: 1980-05-27 für den 27. Mai 1980"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Nickname"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr ""
"Ein Zugang mit dieser E-Mail-Adresse existiert bereits. Bitte verwenden Sie "
"eine andere E-Mail-Adresse."
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "E-Mail-Tag-Filter festlegen"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Von mir gefragt"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Von mir beantwortet"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Individuell ausgewählt"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Das ganze Forum (Tag-gefiltert)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
-msgstr ""
+msgstr "Comentaris i entrades us mencionen"
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "Bitte wählen Sie eine der obenstehenden Optionen aus"
#: forms.py:1115
msgid "okay, let's try!"
msgstr "Okay, versuchen wir's!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "Ich möchte gar keine E-Mails erhalten, danke"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "Bitte wählen Sie eine der obenstehenden Optionen aus"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
-#: urls.py:57
+#: urls.py:41
msgid "about/"
msgstr "ueber/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "faq/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "datenschutz/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+#, fuzzy
+msgid "help/"
+msgstr "ajuda"
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "antworten/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "bearbeiten/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "revisionen/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Fragen\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"preguntes"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "fragen/"
@@ -397,52 +460,57 @@ msgstr "antwort/"
msgid "vote/"
msgstr "abstimmen/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr "tags/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "subscriure-per-etiquetes/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "benutzer/"
-#: urls.py:214
+#: urls.py:219
#, fuzzy
msgid "subscriptions/"
msgstr "E-Mail-Abonnements"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "usuaris/actualitzacio_te_avatar_personalitzat/"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "auszeichnungen/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "nachrichten/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "gelesen_markieren/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "upload/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "feedback/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "frage/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "zugang/"
@@ -453,7 +521,7 @@ msgstr "einstellungen"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "Permetre accedir al fòrum únicament als usuaris registrats"
#: conf/badges.py:13
#, fuzzy
@@ -462,15 +530,15 @@ msgstr "einstellungen"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
-msgstr ""
+msgstr "Disciplinat: mínim vots positius per entrada esborrada"
#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Pressió Companys: mínim vots negatius per a l'entrada eliminada"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Mestre: mínim vots positius per la resposta"
#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
@@ -563,7 +631,7 @@ msgstr ""
#: conf/email.py:15
msgid "Email and email alert settings"
-msgstr ""
+msgstr "Configuració del correu electrònic i alertes per correu electrònic"
#: conf/email.py:24
#, fuzzy
@@ -577,140 +645,151 @@ msgid ""
msgstr ""
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configuració del correu electrònic i alertes per correu electrònic"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr ""
+msgstr "Màxim nombre de missatges en un avís per correu electrònic"
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr ""
+msgstr "Freqüència predeterminada de notificació per a totes les preguntes"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
+"Opció per definir la freqüència de les actualitzacions per correu de: totes "
+"les preguntes."
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Fragen mit Tag '%(tag)s' anzeigen"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"Opció per definir la freqüència de les actualitzacions per correu de: "
+"Preguntes fetes per l'usuari"
-#: conf/email.py:76
+#: conf/email.py:85
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr ""
"Beliebige Fragen und Antworten löschen und weitere Moderationsfunktionen"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"Opció per definir la freqüència de les actualitzacions per correu de: "
+"Respostes fetes per l'usuari."
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
#, fuzzy
msgid "Send periodic reminders to accept the best answer"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
#, fuzzy
msgid "Days before starting to send reminders to accept an answer"
msgstr "Es gibt hier keine unbeantworteten Fragen"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -720,22 +799,46 @@ msgstr ""
"ganz schnell. Ihre Frage wird für die Dauer des Anmeldevorgangs im "
"Hintergrund gespeichert und geht nicht verloren."
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr ""
+"<span class=\"strong big\">Sie können Ihre Frage formulieren, ohne sich "
+"vorher anmelden zu müssen</span>. Wenn Sie Ihre Frage speichern, werden Sie "
+"zum Anmeldeformular weitergeleitet. Einen neuen Zugang zu erstellen geht "
+"ganz schnell. Ihre Frage wird für die Dauer des Anmeldevorgangs im "
+"Hintergrund gespeichert und geht nicht verloren."
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -766,15 +869,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -782,11 +885,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -794,71 +897,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Passwort ändern"
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -897,11 +983,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -920,7 +1008,7 @@ msgstr ""
#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "Permetre publicar abans de registrar-se"
#: conf/forum_data_rules.py:58
msgid ""
@@ -945,111 +1033,180 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "Mindestens ein Tag muß gesetzt sein."
+
+#: conf/forum_data_rules.py:135
#, fuzzy
msgid "Mandatory tags"
msgstr "tags aktualisiert"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "unanswered questions"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "Barra lateral esquerra comuna"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Activar barra lateral esquerra"
+
+#: conf/leading_sidebar.py:29
+#, fuzzy
+msgid "HTML for the left sidebar"
+msgstr "Activar barra lateral esquerra"
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1124,16 +1281,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1311,6 +1468,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1514,28 +1675,28 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
#, fuzzy
msgid "Feedback site URL"
msgstr "Feedback"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1660,21 +1821,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1682,41 +1843,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
#, fuzzy
msgid "Select skin"
msgstr "Version auswählen"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1728,11 +1889,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1741,21 +1902,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1764,21 +1925,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1787,19 +1948,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1810,19 +1971,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1889,41 +2050,67 @@ msgstr "Andere Dienste"
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr ""
"Unsere Website benötigt Cookies, um technisch einwandfrei zu funktionieren."
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Permetre als usuaris canviar la seva adreça de correu"
+
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Avatar d'usuari per defecte"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1965,6 +2152,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "Keine Favoriten-Fragen."
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Die Frage schließen"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "Fragen aus ignorierten Tags ausblenden"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "Fragen in der Favoritenliste des Benutzers"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "Duplikat"
@@ -2003,345 +2223,361 @@ msgstr "Spam oder Werbung"
msgid "too localized"
msgstr "Zu eng gefaßt"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "neueste"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "älteste"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "aktiv"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "inaktiv"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "heißeste"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "kälteste"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "am häufigsten positiv bewertet"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "am seltensten positiv bewertet"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "Relevanz"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "alle"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "unbeantwortet"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "Favorit"
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "Tag-Liste"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "núvol"
-#: const/__init__.py:78
+#: const/__init__.py:79
#, fuzzy
msgid "Question has no answers"
msgstr "Fragen, die ich beantwortet habe"
-#: const/__init__.py:79
+#: const/__init__.py:80
#, fuzzy
msgid "Question has no accepted answers"
msgstr "Fragen, die ich beantwortet habe"
-#: const/__init__.py:122
+#: const/__init__.py:125
#, fuzzy
msgid "asked a question"
msgstr "Frage stellen"
-#: const/__init__.py:123
+#: const/__init__.py:126
#, fuzzy
msgid "answered a question"
msgstr "Unbeantwortete"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "kommentierte Frage"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "kommentierte Antwort"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "überarbeitete Frage"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "überarbeitete Antwort"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "Auszeichnung erhalten"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "als beste Antwort markiert"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "positiv bewertet"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "negativ bewertet"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "Bewertung zurückgezogen"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "Frage gelöscht"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "Antwort gelöscht"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "als beleidigend/illegal gemeldet"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "tags aktualisiert"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "Favorit ausgewählt"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "Benutzerprofil komplettiert"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "E-Mail-Update an Benutzer versandt"
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "Unbeantwortete Fragen anzeigen"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "als beste Antwort markiert"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
-msgstr ""
-
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "Frage beantwortet"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "Frage kommentiert"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "Antwort kommentiert"
+msgstr "citat en l'entrada"
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "Antwort akzeptiert"
+#, fuzzy
+msgid "answered question"
+msgstr "Unbeantwortete"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "überarbeitete Antwort"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[geschlossen]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[gelöscht]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "ursprüngliche Version"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "Tags verändert"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "no"
-#: const/__init__.py:218
+#: const/__init__.py:221
#, fuzzy
msgid "exclude ignored"
msgstr "Ignorierte Tags ausschließen"
-#: const/__init__.py:219
+#: const/__init__.py:222
#, fuzzy
msgid "only selected"
msgstr "Individuell ausgewählt"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
-msgstr ""
+msgstr "instantàniament"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "täglich"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "wöchentlich"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "Keine E-Mail"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
#, fuzzy
msgid "mystery-man"
msgstr "gestern"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "Gold"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "Silber"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "Bronze"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "Cap"
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "Avatar penjat"
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "Stellen Sie nur Fragen, die für dieses Forum relevant sind."
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "Klicken Sie, um die höchstbewerteten Fragen anzuzeigen"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
#, fuzzy
msgid "by relevance"
msgstr "Relevanz"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "Klicken Sie, um die ältesten Fragen zu sehen"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
#, fuzzy
msgid "by date"
msgstr "Update"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "Klicken Sie, um die neuesten Fragen zu sehen"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "Klicken Sie, um die ältesten bearbeiteten Fragen zu sehen"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
#, fuzzy
msgid "by activity"
msgstr "aktiv"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "Klicken Sie, um die jüngst bearbeiteten Fragen zu sehen"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
#, fuzzy
msgid "click to see the least answered questions"
msgstr "Klicken Sie, um die ältesten Fragen zu sehen"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "Antworten"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
#, fuzzy
msgid "click to see the most answered questions"
msgstr "Klicken Sie, um die höchstbewerteten Fragen anzuzeigen"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "am wenigsten positiv bewertete Fragen"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "Stimmen"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "Klicken Sie, um die höchstbewerteten Fragen anzuzeigen"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
+"Us donem la benvinguda. Introduïu en el vostre perfil l'adreça de correu "
+"electrònic (important) i el nom a mostrar, si ho creieu necessari."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-names werden nicht unterstützt."
@@ -2387,18 +2623,19 @@ msgstr ""
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Aquesta adreça de correu no figura a la base de dades"
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
msgstr "Ihr Benutzername (<i>Pflichtfeld</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Ungültiger Benutzername."
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "Es gibt keinen Benutzer dieses Namens"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "einloggen/"
@@ -2421,7 +2658,7 @@ msgstr "registrieren/"
#: deps/django_authopenid/urls.py:21
msgid "signup/"
-msgstr ""
+msgstr "registre/"
#: deps/django_authopenid/urls.py:25
msgid "logout/"
@@ -2438,8 +2675,9 @@ msgid "%(site)s user name and password"
msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Crear un compte amb contrasenya"
#: deps/django_authopenid/util.py:385
#, fuzzy
@@ -2448,7 +2686,7 @@ msgstr "Passwort ändern"
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Registrar-se mitjançant Yahoo"
#: deps/django_authopenid/util.py:480
#, fuzzy
@@ -2472,15 +2710,15 @@ msgstr "Bitte einen Benutzernamen eingeben"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "nom del blog WordPress"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "nom del blog Blogger"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "nom del blog LiveJournal"
#: deps/django_authopenid/util.py:557
#, fuzzy
@@ -2506,11 +2744,13 @@ msgstr "Passwort ändern"
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
msgstr ""
+"Clicar per comprovar que funciona el vostre registre %(provider)s per "
+"%(site_name)s"
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Crear contrasenya per %(provider)s"
#: deps/django_authopenid/util.py:625
#, fuzzy, python-format
@@ -2525,314 +2765,322 @@ msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Registrar-se amb el vostre compte de %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s ist ungültig"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
+"hi ha problemes connectant amb %(provider)s,torneu a provar-ho i useu un "
+"altre proveïdor"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
#, fuzzy
msgid "Your new password saved"
msgstr "Ihr Passwort wurde geändert."
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "La combinació usuari/contrasenya no és correcte"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Clicar una de les icones per registrar-se"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
-msgstr ""
+msgstr "S'han enviat el missatge de correu per recuperar el compte"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Afegir un o més mètodes de registre."
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
-msgstr ""
+msgstr "Afegir, treure o revalidar els seus mètodes d'entrada"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
-msgstr ""
+msgstr "S'ha recuperat el seu compte, però ..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
-msgstr ""
+msgstr "La clau de recuperació d'aquest compte ha expirat o és invàlida"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "El mètode de registre %(provider_name)s no existeix"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
"Die beiden eingegebenen Passwörter stimmen nicht überein, bitte erneut "
"versuchen"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "La vostra entrada amb %(provider)s funciona bé"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Sie müssen Ihre E-Mail-Adresse bestätigen. Mehr Informationen<a "
"id='validate_email_alert' href='%(details_url)s'>hier</a>."
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "Comproveu el vostre correu electrònic i visiteu l'enllaç inclòs."
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
#, fuzzy
msgid "Site"
msgstr "Titel"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "Principal"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
#, fuzzy
msgid "Base Settings"
msgstr "einstellungen"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "Valor per defecte: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "Valor per defecte: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "Valor per defecte: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Erlaubte Dateitypen: '%(file_types)s'"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Gratulation, Sie sind jetzt Administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+#, fuzzy
+msgid "Sites"
+msgstr "Titel"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "Ort"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Passwort ändern"
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Log out"
+msgstr "Logout"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+#, fuzzy
+msgid "Home"
+msgstr "Home"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "Frage bearbeiten"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+#, fuzzy
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Bitte folgende Eingaben korrigieren:"
+msgstr[1] "Bitte folgende Eingaben korrigieren:"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "Configuracions incloses a %(name)s."
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "No té permís per editar valors"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+#, fuzzy
+msgid "Edit Site Settings"
+msgstr "Frage bearbeiten"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Livesettings estan deshabilitats per aquest lloc"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
+"Totes les opcions de configuració s'han d'editar en el fitxer settings.py "
+"del lloc. "
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, fuzzy, python-format
+msgid "Group settings: %(name)s"
+msgstr "Frage bearbeiten"
-#: management/commands/send_accept_answer_reminders.py:57
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Desplegar tot"
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Gratulation, Sie sind jetzt Administrator"
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "Verfassen Sie die erste Antwort auf diese Frage!"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr "Klicken Sie, um die ältesten Fragen zu sehen"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
+msgstr[0] "%(question_count)d pregunta actualitzada de %(topics)s"
+msgstr[1] "%(question_count)d preguntes actualitzades de %(topics)s"
+
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:421
-#, fuzzy, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] "<p>Hallo %(name)s,</p></p>Es gibt neues zu einer Frage:</p>"
-msgstr[1] "<p>Hallo %(name)s,</p><p>Es gibt neues zu %(num)d Fragen:</p>"
-
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "Neue Frage"
-#: management/commands/send_email_alerts.py:455
-#, fuzzy
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Schauen Sie rein und entdecken Sie neue Fragen und Antworten. Empfehlen Sie "
-"uns gern auch an Freunde und Bekannte weiter!"
-
-#: management/commands/send_email_alerts.py:465
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"Die Einstellung, mit der Sie am häufigsten benachrichtigt werden, ist "
-"\"täglich\". Sollten Sie mehr als eine E-Mail pro Tag bekommen, "
-"benachrichtigen Sie uns bitte."
-
-#: management/commands/send_email_alerts.py:471
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"Die Einstellung, mit der Sie am häufigsten benachrichtigt werden, ist "
-"\"wöchentlich\". Sollten Sie mehr als eine E-Mail pro Woche bekommen, "
-"benachrichtigen Sie uns bitte."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"Aus technischen Gründen kann es manchmal vorkommen, daß Sie Links empfangen, "
-"die Sie bereits gesehen haben. "
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Sie können die Häufigkeit, mit der Sie Benachrichtigungen erhalten, "
-"jederzeit <a href='%(link)s'>hier</a> einstellen oder sie gänzlich "
-"abschalten.<br/>Falls Sie diese Nachricht irrtümlich erhalten haben, "
-"informieren Sie uns bitte unter %(email)s.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d pregunta sense contestar de %(topics)s"
+msgstr[1] "%(question_count)d preguntes sense contestar de %(topics)s"
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "Bitte einloggen"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
+"No pot acceptar o rebutjar les millors respostes ja que el seu compte està "
+"bloquejat"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
+"No pot acceptar o rebutjar les millors respostes ja que el seu compte està "
+"deshabilitat"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "Erste Antwort auf eine eigene Frage akzeptiert"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
-msgstr ""
+msgstr "Podrà acceptar aquesta resposta a partir de %(will_be_able_at)s"
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
+"Només els moderadors o l'autor original de la pregunta -%(username)s- poden "
+"acceptar i rebutjar la millor resposta"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "Über selbst verfaßte Beiträge kann nicht abgestimmt werden"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
-msgstr ""
+msgstr "El seu compte sembla que està bloquejat"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
-msgstr ""
+msgstr "El seu compte sembla que està deshabilitat"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Positiv bewerten benötigt mindestens %(points)s Punkte "
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "Negativ bewerten benötigt mindestens %(points)s Punkte"
-#: models/__init__.py:428
+#: models/__init__.py:430
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2840,7 +3088,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:429
+#: models/__init__.py:431
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2848,29 +3096,12 @@ msgstr ""
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "Das Hochladen von Dateien benötigt %(min_rep)s Punkte oder mehr"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-#, fuzzy
-msgid "blocked users cannot post"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:451 models/__init__.py:935
-#, fuzzy
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2879,58 +3110,73 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
+"Els comentaris (excepte el darrer) es poden editar durant %(minutes)s minut "
+"des de que es publiquen"
msgstr[1] ""
+"Els comentaris (excepte el darrer) es poden editar durant %(minutes)s minuts "
+"des de que es publiquen"
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
+"Només els propietaris de l'entrada o els moderadors poden editar comentaris"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
+"El seu compte està deshabilitat, només pot comentar les entrades pròpies"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
+"Per comentar una entrada es cal tenir una reputació de %(min_rep)s puntsSí "
+"podeu comentar les entrades i les respostes a les vostres preguntes"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
+"Aquesta entrada s'ha esborrat. Només els seus propietaris, l'administrador "
+"del lloc i els moderadors la poden veure."
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
+"Una entrada esborrada només la poden editar els moderadors, els "
+"administradors del lloc o els propietaris de l'entrada."
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
-msgstr ""
+msgstr "El seu compte està bloquejat, no podeu editar entrades"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
-msgstr ""
+msgstr "El seu compte està deshabilitat, només pot editar entrades pròpies"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Per editar entrades wiki s'ha de tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Per editar entrades d'altres persones s'ha de tenir una reputació mínima de "
+"%(min_rep)s"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2938,218 +3184,264 @@ msgid_plural ""
"Sorry, cannot delete your question since it has some upvoted answers posted "
"by other users"
msgstr[0] ""
+"No es pot eliminar la pregunta ja que hi ha una resposta amb vots positius "
+"d'un altre usuari"
msgstr[1] ""
+"No es pot eliminar la pregunta ja que hi ha respostes d'altres usuaris amb "
+"vots positius"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
-msgstr ""
+msgstr "El seu compte està bloquejat, no pot eliminar entrades"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
-msgstr ""
+msgstr "El seu compte està deshabilitat, només pot eliminar entrades pròpies"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
+"per eliminar entrades d'altres persones cal una reputació mínima de "
+"%(min_rep)s"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
-msgstr ""
+msgstr "El seu compte està bloquejat, no pot tancar preguntes"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
-msgstr ""
+msgstr "Des de que el seu compte està deshabilitat no pot tancar preguntes"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Per tancar entrades d'altres persones cal tenir una reputació mínima de "
+"%(min_rep)s"
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Per tancar una pregunta pròpia cal tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
+"Només els moderadors, els administradors del lloc o els propietaris de les "
+"entrades amb reputació mínim de %(min_rep)s poden reobrir preguntes."
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Per reobrir una pregunta pròpia cal tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
+#: models/__init__.py:783
#, fuzzy
-msgid "blocked users cannot flag posts"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "El seu compte està bloquejat, no pot eliminar entrades"
-#: models/__init__.py:763
-#, fuzzy
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "El seu compte està bloquejat, no pot eliminar entrades"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
+msgstr[1] ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "No té permís per treure totes les senyals"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
+"Només els propietaris de de la pregunta, els moderadors i els administradors "
+"podenreetiquetar una pregunta esborrada"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
-msgstr ""
+msgstr "El seu compte està bloquejat, no pot reetiquetar preguntes"
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
+"El seu compte està deshabilitat, només pot reetiquetar les preguntes pròpies"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Per reetiquetar una pregunta ha de tenir una reputació mínima de %(min_rep)s "
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
-msgstr ""
+msgstr "El seu compte està bloquejat, no pot eliminar un comentari"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
+"El seu compte està deshabilitat, només pot eliminar els comentaris pròpies"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
+"Per eliminar comentaris ha de tenir una reputació mínima de %(min_rep)s"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "Bewertung kann nicht mehr zurückgenommen werden"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
-msgstr ""
+msgstr "a %(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
-msgstr ""
+msgstr "en dos dies"
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "demà"
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "vor %(hr)d Stunde"
msgstr[1] "vor %(hr)d Stunden"
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "vor %(min)d Minute"
msgstr[1] "vor %(min)d Minuten"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(days)d dia"
+msgstr[1] "%(days)d dies"
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
+"Els usuaris nous han d'esperar %(days)s per respondre la seva pròpia "
+"pregunta. Podeu publicar una resposta %(left)s"
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "Anonym"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
#, fuzzy
msgid "Site Adminstrator"
msgstr "Ihr Forumsteam"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
-msgstr ""
+msgstr "Moderador del Fòrum"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
#, fuzzy
msgid "Suspended User"
msgstr "Der Absender ist"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
-msgstr ""
+msgstr "Usuari Bloquejat"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
#, fuzzy
msgid "Registered User"
msgstr "Registrierter Benutzer"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
-msgstr ""
+msgstr "Usuari Observat"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
-msgstr ""
+msgstr "Usuari Habilitat"
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "Punkte-Logbuch von %(user_name)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "una insígnia d'or"
+msgstr[1] "%(count)d insígnies d'or"
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3160,44 +3452,40 @@ msgstr[1] ""
"Silberne Auszeichnungen erzielt man durch regelmäßige, geduldige Teilnahme "
"am Forum."
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "Aktive Forumsteilnehmer werden in Bronze ausgezeichnet."
msgstr[1] "Aktive Forumsteilnehmer werden in Bronze ausgezeichnet."
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s i %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
+msgstr "%(user)s té %(badges)s"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
+#: models/__init__.py:2389
#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "Tags"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
+"Ha rebut una insígnia '%(badge_name)s'. Vegeu la <a href=\"%(user_profile)s"
+"\">perfil d'usuari</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
+msgstr "S'ha desat la seva subscripció d'etiquetes"
#: models/badges.py:129
#, fuzzy, python-format
@@ -3221,6 +3509,7 @@ msgstr "Gruppenzwang"
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
msgstr ""
+"Reb un mínim de %(votes)s vots positius per una resposta per primera vegada"
#: models/badges.py:178
msgid "Teacher"
@@ -3404,7 +3693,7 @@ msgstr "Erste Bearbeitung eines Beitrags"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Editor Associat"
#: models/badges.py:627
#, fuzzy, python-format
@@ -3442,12 +3731,12 @@ msgstr "Favoritenfrage"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Entusiasta"
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Visita el lloc cada dia durant %(num)s dies seguits"
#: models/badges.py:732
#, fuzzy
@@ -3468,203 +3757,1315 @@ msgstr "Tag-Schöpfer"
msgid "Created a tag used by %(num)s questions"
msgstr "Tag formuliert, das in 50 Fragen verwendet wurde"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "Experte"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Sehr aktiv in einem bestimmten Tag"
-#: models/content.py:549
+#: models/post.py:1071
#, fuzzy
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "Die Frage wurde als Favorit ausgewählt"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
+"La resposat que cerca ja no es vàlida, ja què s'ha tret la pregunta original "
-#: models/content.py:572
+#: models/post.py:1094
#, fuzzy
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "Die Frage wurde als Favorit ausgewählt"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
+"El comentari que cerca ja no es pot accedir ja què s'ha tret la pregunta "
+"original"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
+"El comentari que cerca ja no es pot accedir ja què s'ha tret la resposta "
+"original"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" i \"%s\""
-#: models/question.py:66
+#: models/question.py:57
#, fuzzy
msgid "\" and more"
msgstr "Mehr Informationen"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s hat die Frage bearbeitet"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s Benutzer haben %(new_answer_count)s neue Antworten verfaßt"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s Benutzer haben die Frage kommentiert"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s Benutzer haben Kommentare zu Antworten verfaßt"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s Benutzer haben Kommentare zu einer Antwort verfaßt"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "E-Mail-Adresse überprüfen"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
-msgstr ""
+msgstr "<em>Canviar pel moderador. Raó:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
+"S'han afegit %(points)s punts a %(username)s per la seva contribució a la "
+"pregunta %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
+"S'han tret %(points)s punts a %(username)s per la seva contribució a la "
+"pregunta %(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "Interessant"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "Ignorieren"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Gesamtes Forum"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Fragen, die ich gestellt habe"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Fragen, die ich beantwortet habe"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Individuell ausgewählte Fragen"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
-msgstr ""
+msgstr "Cites i comentaris a respostes"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
-msgstr ""
+msgstr "Instantàniament"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Täglich"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Wöchentlich"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Keine E-Mail"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
+
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# msgstr "Introduïu el vostre <span>nom d'usuari</span> i inicieu la sessió"
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+#, fuzzy
+msgid "Sign in"
+msgstr "einloggen/"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "E-Mail-Adresse ändern"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "E-Mail-Adresse speichern"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "E-Mail-Adresse speichern"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "E-Mail-Adresse überprüfen"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "E-Mail-Adresse nicht geändert"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "E-Mail-Adresse geändert"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "E-Mail-Adresse bestätigt"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "E-Mail-Adresse überprüfen"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "Registrieren"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Registrieren"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Registrieren"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "Vielen Dank für Ihre Registrierung!"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "Ihre Zugangsdaten:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "Benutzername:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Passwort:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "Bitte hier anmelden:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr "Ihr Forumsteam"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Grüße vom Forumsteam"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "Um das Forum zu benutzen, klicken Sie auf untenstehenden Link:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
"Die Bestätigung der E-Mail-Adresse durch den Link hilft uns, Spam zu "
"vermeiden."
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"Falls Sie diese Nachricht irrtümlich erhalten haben, brauchen Sie nichts zu "
"unternehmen. Bitte ignorieren Sie diese E-Mail einfach - wir entschuldigen "
"uns für die Unannehmlichkeiten."
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Logout"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "Ha entrar correctament"
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+"Potser encara està registrar amb el seu proveïdor OpenID. Podeu sortir del "
+"proveïdor si voleu."
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Benutzerlogin"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Ihre Antwort auf </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">wurde gespeichert "
+"und wird veröffentlicht, sobald Sie sich einloggen.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, fuzzy, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Ihre Frage</span> <i>\"<strong>%(title)s</strong> "
+"%(summary)s...\"</i> <span class=\"strong big\"> wurde gespeichert und wird "
+"veröffentlicht, sobald Sie sich einloggen.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+#, fuzzy
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+"Seleccioneu un dels serveis per entrar usant OpenID segur o tecnologies "
+"similars. La contrasenya del servei extern es manté sempre confidencial, no "
+"ha de crear o recordar una contrasenya nova."
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+"Per comprovar, canviar o afegir nous mètodes d'entrada, feu clic en "
+"qualsevol dels icones següents."
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+"Eviteu entrar cada vegada via correu electrònic. Per afegir un mètode "
+"d'entrada més permanent feu clic en un dels icones següents"
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+"Per afegir un nou mètode d'entrada o revalidar un d'existent feu clic en un "
+"dels icones següents"
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+"No teniu cap mètode d'entrada, per afegir-ne un o més feu clic en qualsevol "
+"dels icones següents"
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+"Comproveu el vostre correu electrònic i seguiu l'enllaç adjunt per re-"
+"connectar al vostre compte"
+
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Bitte hier anmelden:"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "No s'ha pogut entrar, torneu a provar"
+
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "Keine E-Mail"
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Passwort"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr "Per canviar la vostre contrasenya, introduïu la nova dues vegades"
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Neues Passwort angelegt"
+
+#: skins/common/templates/authopenid/signin.html:133
+#, fuzzy
+msgid "Please, retype"
+msgstr "Bitte geben Sie Ihr Passwort erneut ein"
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Aquests són els seus mètodes d'entrada actuals"
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "proveïdor"
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "Zuletzt gesehen"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "esborra, si voleu"
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "löschen"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "Zugang gelöscht."
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Sie haben noch Fragen?"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Entreu la vostra adreça de correu electrònic per tenir una nova clau"
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+"Per recuperar el vostre compte entrar la vostra adreça de correu electrònic"
+
+#: skins/common/templates/authopenid/signin.html:202
+#, fuzzy
+msgid "recover your account via email"
+msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "Enviar una nova clau de recuperació"
+
+#: skins/common/templates/authopenid/signin.html:215
+#, fuzzy
+msgid "Recover your account via email"
+msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Benutzernamen und Passwort anlegen"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Benutzernamen und Passwort anlegen"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"Bitte geben Sie zum Schutz vor Spam die untenstehenden zwei Wörter ein."
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "oder"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "zum OpenID-Login zurückkehren"
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Tags ändern"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr "Ihre Zugangsdaten:"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "No heu penjat encara un avatar. Podeu penjar-ne un ara."
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Penjar una Nova Imatge"
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "Veränderungen gespeichert"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "Trieu Defecte nou"
+
+#: skins/common/templates/avatar/change.html:22
+#, fuzzy
+msgid "Upload"
+msgstr "upload/"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "Antwort gelöscht"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "Seleccioneu els avatars que voleu eliminar."
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+"No teniu cap avatar per eliminar. Podeu <a href=\"%(avatar_change_url)s"
+"\">pujar-ne un</a> ara."
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+#, fuzzy
+msgid "Delete These"
+msgstr "Antwort gelöscht"
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Frage beantworten"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "Link"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "Link"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "Wiederherstellen"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "als beleidigend/illegal gemeldet"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "Alle Tags zeigen"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"Beitrag melden (z.B. Spam, unerwünschte Werbung, Beleidigungen, illegale "
+"Inhalte usw.)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "Als beleidigend melden"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "bearbeiten"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "Diese Antwort ist als korrekt ausgewählt worden"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr "Zur Favoritenliste hinzufügen (zum Abbrechen erneut klicken)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"Die Frage wurde aus den folgenden Gründen: \"%(close_reason)s\" geschlossen "
+"von"
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "Schließungszeitpunkt close date %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "wieder öffnen"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "schließen"
+
+#: skins/common/templates/question/question_controls.html:35
+#, fuzzy
+msgid "retag"
+msgstr "Tags verändert"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "Dieses Feld wird benötigt"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(Pflichtfeld)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Die Markdown-Echtzeit-Vorschau ein- oder ausblenden"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "Vorschau ausblenden"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Tags, die mich interessieren"
+
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# posem un signe + per què 'afegir' es talla i queda 'afegi'
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "Hinzufügen"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Ignorierte Tags"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+#, fuzzy
+msgid "Display tag filter"
+msgstr "E-Mail-Tag-Filter festlegen"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Pàgina no trobada"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Die angeforderte Seite konnte nicht gefunden werden."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Dies könnte einen der folgenden Gründe haben:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "Diese Frage oder Antwort wurde gelöscht;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "Die eingegebene Adresse ist fehlerhaft - bitte überprüfen;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"Die angeforderte Seite ist geschützt oder Sie haben nicht genug Punkte, um "
+"sie anzuschauen, siehe"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "Häufige Fragen"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "Falls dieser Fehler nicht hätte passieren sollen, "
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "melden Sie uns das Problem bitte."
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "Zurück zur vorigen Seite"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "Alle Fragen zeigen"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "Alle Tags zeigen"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"Der Fehler wurde aufgezeichnet, und wir werden ihn so bald wie möglich "
+"beheben."
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "Bitte melden Sie uns den Fehler, falls Sie möchten."
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "Zeige neueste Fragen"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "Zeige Tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Antwort bearbeiten"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "Zurück"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "Version"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "Version auswählen"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Ãœberarbeitung speichern"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "Vorschau einblenden"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Stellen Sie Ihre Frage"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Auszeichnung"
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr "Insígnia \"%(name)s\""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr "E-Mail-Abonnements"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "Benutzer hat dieses Abzeichen:"
+msgstr[1] "Benutzer haben dieses Abzeichen:"
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Auszeichnungen"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"Rege Teilnahme mit qualitativ hochwertigen Fragen und Antworten führt zum "
+"Erhalt von Auszeichnungen."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Es gibt im Moment drei Stufen von Auszeichnungen: <strong>Gild</strong>, "
+"<strong>Silber</strong> und <strong>Bronze</strong>.\n"
+"\n"
+"Falls Sie Ideen für neue Auszeichnungen haben, senden Sie uns diese über die "
+"<a href='%(feedback_faq_url)s'>Feedback</a></strong>-Seite."
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Auszeichnungs-Stufen"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "insígnia d'or: l'honor més alt i és molt rara"
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+"insígnia de plata: atorgada ocasionalment per contribucions de molta alta "
+"qualitat"
+
+#: skins/default/templates/badges.html:51
+#, fuzzy
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+"insígnia de plata: atorgada ocasionalment per contribucions de molta alta "
+"qualitat"
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+"Bronzene Auszeichnungen sind die einfachste Auszeichnungsstufe. Man erhält "
+"einige von ihnen durch einigermaßen aktive Teilnahme. Sie werden oft als "
+"Ehrenauszeichnung verliehen."
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Frage schließen"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Die Frage schließen"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Gründe"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "OK zu schließen"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Häufig gestellte Fragen"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Was für Fragen kann ich hier stellen?"
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"Das allerwichtigste - Fragen sollten für dieses Forum <strong>relevant</"
+"strong> und <strong>themenbezogen</strong> sein."
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Bevor Sie fragen: Bitte benutzen Sie die Suchfunktion, um sicherzustellen, "
+"daß die Frage nicht bereits gestellt wurde."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "Was für Fragen sollten nicht gestellt werden?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Bitte verzichten Sie auf Fragen, die für dieses Forum nicht relevant sind, "
+"oder die zu subjektiv sind und zu Diskussionen verleiten."
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Was sollte ich in meinen Antworten vermeiden?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Wer moderiert diese Forum?"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Die Antwort ist: <strong>Sie!</strong>"
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Dieses Forum wird von seinen Benutzern moderiert."
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Je höher der Punktestand eines Benutzers, desto mehr Funktionen stehen ihm "
+"zur Verfügung, z.B. das Bearbeiten und später auch Löschen anderer Beiträge."
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "Wie funktioniert das Punktesystem?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, fuzzy, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Wenn Sie zum Beispiel eine interessante Frage stellen oder eine hilfreiche "
+"Antwort geben, wird Ihr Beitrag von anderen Benutzern positiv bewertet. Wenn "
+"die Frage schlecht gestellt oder eine Antwort falsch ist, kann er auch "
+"negativ bewertet werden. Eine positive Bewertung bringt <strong>10</strong> "
+"Punkte, eine negative zieht <strong>2</strong> Punkte ab. \n"
+"\n"
+"Für jede gestellte Frage oder verfaßte Antwort können maximal 200 Punkte "
+"erzielt werden."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "Positiv bewerten"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "Kommentare hinzufügen"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "Negativ bewerten"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "Erste Antwort auf eine eigene Frage akzeptiert"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "Eigene Fragen öffnen und schließen"
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "Vergebene Tags bearbeiten"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "Als \"Community Wiki\" markierte Fragen beantworten"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "Beliebige Antworten bearbeiten"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "Kommentare löschen"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Muß ich ein neues Passwort anlegen, um mich zu registrieren?"
+
+#: skins/default/templates/faq_static.html:72
+#, fuzzy
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"Nein. Sie können sich über jeden Dienst einloggen, der OpenID unterstützt, "
+"zum Beispiel Google, Yahoo, AOL usw."
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Jetzt einloggen"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Warum können andere Benutzer meine Fragen und Antworten bearbeiten?"
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Das Ziel dieser Seite ist:"
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Fragen und Antworten nach dem Wiki-Prinzip für alle bearbeitbar zu machen, "
+"sodaß jeder die Qualität der Beiträge verbessern kann."
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+"Falls Ihnen dies nicht gefällt, ist unser Forum vielleicht nicht das "
+"richtige für Sie."
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Sie haben noch Fragen?"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Bitte <a href='%(ask_question_url)s'>stellen</a> Sie Ihre Frage und helfen "
+"Sie uns, das Forum stetig zu verbessern!"
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Feedback"
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Senden Sie uns Ihr Feedback!"
+
+#: skins/default/templates/feedback.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Hallo %(user_name)s</span>, wir freuen uns darauf, "
+"von Ihnen zu hören.\n"
+"Bitte geben Sie hier Ihre Nachricht ein."
+
+#: skins/default/templates/feedback.html:21
+#, fuzzy
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Hallo</span>, wir freuen uns darauf, von Ihnen zu "
+"hören.\n"
+"Bitte geben Sie hier Ihre Nachricht ein."
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+"(per saber de nosaltres entar un correu electrònic vàlid o clicar la casella "
+"inferior"
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(Pflichtfeld)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(Entrar el captcha)"
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Feedback absenden"
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
#, fuzzy, python-format
msgid ""
"\n"
@@ -3673,30 +5074,1615 @@ msgstr ""
"\n"
"Hallo, dies ist Feedback zu %(site_title)s \n"
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "Benvingut-uda %(username)s"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Benvingut"
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>%(receiving_user_name)s,</p>"
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha deixat <a href=\"%(post_url)s\">un nou "
+"comentari nou</a>:</p>\n"
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha deixat <a href=\"%(post_url)s\">un comentari "
+"nou</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a respòs una pregunta \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha publicat una pregunta nova \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha actualitzat una resposta a la pregunta\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha actualitzat una pregunta \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Tingeu en compte que fàcilment podeu <a href=\"%(user_subscriptions_url)s"
+"\">canviar</a>\n"
+"la freqüència en que rebeu aquestes notificacions o cancel·lar la "
+"subscripció. Gràcies pel seu interès en el fòrum!</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
msgstr ""
-"Falls Sie diese Nachricht irrtümlich erhalten haben, brauchen Sie nichts zu "
-"unternehmen. Bitte ignorieren Sie diese E-Mail einfach - wir entschuldigen "
-"uns für die Unannehmlichkeiten."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "Diese Frage wieder eröffnen"
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "seguir a %(alias)s"
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "no seguir a %(alias)s"
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "seguint a %(alias)s"
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "Aktuelle Anzahl Bewertungen"
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr "Anonym"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "aquesta entrada està marcaa com a wiki comunitari"
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Aquesta entrada és un wiki.\n"
+" Qualsevol amb una reputació de més de %(wiki_min_rep)s pot contribuir"
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "gefragt"
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "geantwortet"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "veröffentlicht"
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "aktualisiert"
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "Fragen mit Tag '%(tag)s' anzeigen"
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "Kommentar löschen"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "%(username)s Gravatar-Bild"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "Punkte-Logbuch von %(user_name)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "Vorige"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "aktuelle Seite"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "Seite %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "Nächste Seite"
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "Bitte einen Benutzernamen eingeben"
+
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "Reaktionen"
+msgstr[1] "Reaktionen"
+
+#: skins/default/templates/macros.html:613
+#, fuzzy
+msgid "no new responses yet"
+msgstr "Reaktionen"
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "Erster gemeldeter Beitrag"
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts"
+msgstr "Erster gemeldeter Beitrag"
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, fuzzy, python-format
+msgid "%(seen)s flagged posts"
+msgstr "Erster gemeldeter Beitrag"
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Fragen"
+
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr "<strong>1</strong> mehr"
+
+#: skins/default/templates/question.html:113
+#, fuzzy
+msgid "see <strong>some</strong> more"
+msgstr "<strong>1</strong> mehr"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "Kommentar hinzufügen"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Eigene Frage beantworten"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "Ihre Antwort"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr ""
+"Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
+"endgültig zu speichern."
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Frage bearbeiten"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Verwandte / ähnliche Fragen"
+
+#: skins/default/templates/question_retag.html:21
+#, fuzzy
+msgid "Retag"
+msgstr "Tags"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Warum Tags verwenden und bearbeiten?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+"Les etiquetes ajuden a mantenir el contingut més organitzat i faciliten la "
+"cerca"
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+"Benutzer, die Tags bearbeiten, bekommen spezielle Auszeichnungen verliehen."
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "Bis zu 5 Tags mit jeweils weniger als 20 Buchstaben"
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Frage wieder eröffnen"
+
+#: skins/default/templates/reopen.html:6
+#, fuzzy
+msgid "Title"
+msgstr "Titel"
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"Aquesta pregunta l'ha tancat \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+
+#: skins/default/templates/reopen.html:16
+#, fuzzy
+msgid "Close reason:"
+msgstr "Frage schließen"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Quan:"
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Diese Frage wieder eröffnen"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Diese Frage wieder eröffnen"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Versionsgeschichte"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "Klicken, um Version anzuzeigen/zu verstecken"
+
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "revisionen/"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "Tags benutzen"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+#, fuzzy
+msgid "Please, subscribe for the following tags:"
+msgstr "Die Frage wurde aus folgendem Grund geschlossen"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "Tags benutzen"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "Etiquetes que coincideixen \"%(stag)s\""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Tag-Liste"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+#, fuzzy
+msgid "Sort by &raquo;"
+msgstr "Sortieren nach:"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "Alphabetisch sortiert"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "nach Namen"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "nach Tag-Verwendungshäufigkeit"
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "nach Popularität"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Nichts gefunden"
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Benutzer"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "veure les persones amb la reputació més alta"
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "reputació"
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "veure les persones que s'han afegit recentment"
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "neueste"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "veure les primeres persones que es van afegir al lloc"
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "veure la gent ordenada per nom"
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "nach Benutzernamen"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "Benutzer mit Wort %(suser)s"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Nichts gefunden."
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, fuzzy, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s Frage"
+msgstr[1] "%(q_num)s Fragen"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "mit Beiträgen von %(author_name)s"
+
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "Getaggt"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Suchtipps:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "Autor zurücksetzen"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#, fuzzy
+msgid " or "
+msgstr "oder"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "Tags zurücksetzen"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "Von vorn beginnen"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+"- um den Kontext zu erweitern, oder graben Sie sich ein, indem Sie weitere "
+"Tags hinzufügen und die Suchabfrage überarbeiten."
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Suchtipp:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+"Tags und eine Suchabfrage hinzufügen, um genauere Suchergebnisse zu erzielen"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "Es gibt hier keine unbeantworteten Fragen"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "Keine Favoriten-Fragen."
+
+#: skins/default/templates/main_page/nothing_found.html:8
+#, fuzzy
+msgid "Please follow some questions or follow some users."
+msgstr ""
+"Bitte fügen Sie Fragen, die Ihnen besonders gut gefallen, zu Ihrer "
+"Favoritenliste hinzu."
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Sie können Ihre Suche erweitern, indem Sie"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "die Autorenbeschränkung entfernen"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "die Tag-Beschränkung entfernen"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "ganz von Vorne beginnen"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "Sie können jederzeit gern Ihre eigene Frage stellen!"
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Sie haben nicht gefunden, wonach Sie gesucht haben?"
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Bitte stellen Sie Ihre Frage!"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "Fragen-RSS-Feed abonnieren"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+"Si us plau, tingui en compte que %(app_name)s necessita javascript per "
+"funcionar, habiliti el javascript del seu navegador (<a href="
+"\"%(noscript_url)s\">com?</a>)"
+
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
+msgstr[1] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
+
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "Bitte %(tag_count)d Tags oder weniger benutzen"
+msgstr[1] "Bitte %(tag_count)d Tags oder weniger benutzen"
+
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "Bis zu 5 Tags mit jeweils weniger als 20 Buchstaben"
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s Resposta:\n"
+" "
+msgstr[1] ""
+"\n"
+" %(counter)s Respostes:\n"
+" "
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Ordenar per »"
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "Älteste Antworten werden als Erstes angezeigt"
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "Neueste werden zuerst angezeigt"
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "Höchstbewertete werden zuerst angezeigt"
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr ""
+"Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
+"endgültig zu speichern."
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Ihre Antwort"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Verfassen Sie die erste Antwort auf diese Frage!"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+"Coneix algun que sap la resposta? Compareix l'<a href=\"%(question_url)s"
+"\">enllaç</a> a aquesta pregunta via"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+#, fuzzy
+msgid " or"
+msgstr "oder"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "E-Mail"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Tags"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "Fragen mit den meisten Antworten"
+
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Alle Fragen"
+
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Alle Fragen"
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "Fragen mit den meisten Antworten"
+
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Alle Fragen"
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s seguidor"
+msgstr[1] "%(count)s seguidors"
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "E-Mail-Benachrichtigungen abgestellt"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+"<strong>Aquí</strong> (un cop connectat) es pot inscriure per rebre "
+"actualitzacions periòdiques sobre aquesta pregunta"
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "Fragen-RSS-Feed abonnieren"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "Fragen-RSS-Feed abonnieren"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "Estadístiques"
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "gefragt"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "mal"
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Zuletzt aktualisiert"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Verwandte / ähnliche Fragen"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Benachrichtigung bei neuen Antworten</strong> einmal wöchentlich per "
+"E-Mail"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Hier</span> können Sie regelmäßige Benachrichtigungen "
+"für diese Frage abonnieren, sobald Sie sich eingeloggt haben."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+#, fuzzy
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+"<strong>Aquí</strong> (un cop connectat) es pot inscriure per rebre "
+"actualitzacions periòdiques sobre aquesta pregunta"
+
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "Benutzerprofil"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Benutzerprofil bearbeiten"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "Profil bearbeiten"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "Bild ändern"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "treure"
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Registrierter Benutzer"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Nickname"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(no es pot canviar)"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Update"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr "E-Mail-Abonnements"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "E-Mail-Abonnementeinstellungen"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Ihre E-Mail-Adresse</strong> (wird<strong>nicht</strong> öffentlich "
+"angezeigt; muß eine gültige Adresse sein)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Alle Fragen"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "safata d'entrada"
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "Fragen"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "respostes en forum (%(re_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "Bitte %(tag_count)d Tags oder weniger benutzen"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+#, fuzzy
+msgid "select:"
+msgstr "löschen"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "Zuletzt gesehen"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+#, fuzzy
+msgid "new"
+msgstr "neueste"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+#, fuzzy
+msgid "none"
+msgstr "Bronze"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "Zuletzt gesehen"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+#, fuzzy
+msgid "mark as new"
+msgstr "als beste Antwort markiert"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "rebutjar"
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "Alle Tags zeigen"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "löschen"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "Profil aktualisieren"
+
+#: skins/default/templates/user_profile/user_info.html:40
+#, fuzzy
+msgid "manage login methods"
+msgstr "Bitte einloggen"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "Realname"
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "Mitglied seit"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "Zuletzt gesehen"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "Website"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "Ort"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "Alter"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "Jahre "
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "Ungenutzte Bewertungs-Stimmen heute"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "Stimmen übrig"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "Ort"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, fuzzy, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "Punkte-Logbuch von %(user_name)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+#, fuzzy
+msgid "User status changed"
+msgstr "Punktestand des Benutzers"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+#, fuzzy
+msgid "Save"
+msgstr "Ãœberarbeitung speichern"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "La seva reputació actual és de %(reputation)s punts"
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "La reputació actual de l'usuari és de %(reputation)s punts"
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "Punktestand des Benutzers"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Restar"
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "Bitte einen Benutzernamen eingeben"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"S'enviarà un correu electrònic a l'usuari amb el camp 'respon-a' amb la seva "
+"adreça de correu. Comproveu que heu entrar correctament la vostra adreça."
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "nachrichten/"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+#, fuzzy
+msgid "Send message"
+msgstr "nachrichten/"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "xarxa"
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "Seguit per %(count)s person"
+msgstr[1] "Seguit per %(count)s persones"
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "Seguint %(count)s person"
+msgstr[1] "Seguint %(count)s persones"
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+"La sev xarxa està buida. Voleu seguir algú?Només heu de visitar la seva "
+"pàgina de configuració i clicar \"seguir\""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "Benutzerprofil"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+#, fuzzy
+msgid "activity"
+msgstr "aktiv"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "font"
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Ihr Punkte-Logbuch."
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Punkte-Logbuch von %(user_name)s"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "Ãœbersicht"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">1</span> Frage"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Fragen"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "Resposta"
+msgstr[1] "Respostes"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "Diese Antwort ist %(answer_score)s mal positiv bewertet worden"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, fuzzy, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "1 Kommentar"
+msgstr[1] "%(comment_count)s mal kommentiert"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">1</span> Bewertung"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> Bewertungen"
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "+1"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "Benutzer hat positiv bewertet"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "-1"
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "Benutzer hat negativ bewertet"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">1</span> Tag"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Tags"
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">1</span> Auszeichnung"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Auszeichnungen"
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "Tipps"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Benutzerprofil"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "Kommentare und Antworten"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "usuaris seguidors i seguits"
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "Punkte-Statistik"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+#, fuzzy
+msgid "questions that user is following"
+msgstr "Vom Benutzer als Favoriten markierte Fragen"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "Abstimmungsverhalten"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "Stimmen"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "E-Mail-Abonnementeinstellungen"
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+#, fuzzy
+msgid "moderate this user"
+msgstr "Diesen Benutzer verwalten"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr ""
+"Bitte formulieren Sie Ihre Frage so, daß sie für dieses Forum relevant ist."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"Bitte versuchen Sie, eine konkrete Antwort zu geben, und nicht in eine "
+"Diskussion einzusteigen."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "Bitte erwähnen Sie in Ihrer Frage genügend Details."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "Seien Sie klar und deutlich."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "Siehe die häufig gestellten Fragen"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Tipps zu Markdown"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*itàlica*"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**negreta**"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+#, fuzzy
+msgid "*italic* or _italic_"
+msgstr "*kursiv* oder __kursiv__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**fett** oder __fett__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "Text"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "Bild"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "Nummerierte Liste:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "Grundlegende HTML-Tags werden ebenfalls unterstützt."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "Mehr Informationen über Markdown"
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">Sie können Ihre Frage formulieren, ohne sich "
+"vorher anmelden zu müssen</span>. Wenn Sie Ihre Frage speichern, werden Sie "
+"zum Anmeldeformular weitergeleitet. Einen neuen Zugang zu erstellen geht "
+"ganz schnell. Ihre Frage wird für die Dauer des Anmeldevorgangs im "
+"Hintergrund gespeichert und geht nicht verloren."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
msgstr ""
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Beitragende"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "El contingut d'aquest lloc està sota una llicència %(license)s"
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "Ãœber uns"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "ajuda"
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "Datenschutzrichtlinien"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "Feedback geben"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "Zurück zur Startseite"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "logo %(site)s"
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "Benutzer"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "Auszeichnungen"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr ""
+"Bitte formulieren Sie Ihre Frage so, daß sie für dieses Forum relevant ist."
+
+#: skins/default/templates/widgets/question_summary.html:12
+#, fuzzy
+msgid "view"
+msgid_plural "views"
+msgstr[0] "Einblendungen"
+msgstr[1] "Einblendungen"
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "Antwort"
+msgstr[1] "Antwort"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "abstimmen/"
+msgstr[1] "abstimmen/"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "TOTES"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "Unbeantwortete Fragen anzeigen"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "SENSE RESPONDRE"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "Favoritenliste anzeigen"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "SEQUIDES"
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "Bitte stellen Sie Ihre Frage!"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "reputació:"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "Auszeichnungen"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "ausloggen/"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "Bitte hier anmelden:"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+#, fuzzy
+msgid "settings"
+msgstr "die Tag-Beschränkung entfernen"
+
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "Bronze"
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "hi ha hagut un error"
+
#: utils/decorators.py:109
#, fuzzy
msgid "Please login to post"
@@ -3704,106 +6690,153 @@ msgstr "Bitte einloggen"
#: utils/decorators.py:205
msgid "Spam was detected on your post, sorry for if this is a mistake"
-msgstr ""
+msgstr "S'ha detectar spam en el seu missatge, ho sentin si això és un error"
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "Dieses Feld wird benötigt"
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "Bitte einen Benutzernamen eingeben"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "Der Benutzername wird benötigt"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr ""
"Dieser Benutzername ist bereits vergeben. Bitte wählen Sie einen anderen"
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr "Dieser Benutzername ist nicht erlaubt. Bitte wählen Sie einen anderen"
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr "Es gibt keinen Benutzer dieses Namens"
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
"Interner Fehler: Derselbe Benutzername ist von mehreren Benutzern "
"registriert. Bitte melden Sie diesen Fehler dem Administrator. Vielen Dank."
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
"Der Benutzername kann aus Buchstaben, Leerzeichen und Unterstrichen bestehen"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr "Eine E-Mail-Adresse wird benötigt"
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein"
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr ""
"Diese E-Mail-Adresse ist bereits in Benutzung, bitte geben Sie eine andere "
"ein"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Passwort"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "Ein Passwort wird benötigt"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Passwort <i>(bitte neu eingeben)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "Bitte geben Sie Ihr Passwort erneut ein"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr ""
"Die beiden eingegebenen Passwörter stimmen nicht überein, bitte erneut "
"versuchen"
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "vor 2 Tagen"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "gestern"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] "vor %(hr)d Stunde"
msgstr[1] "vor %(hr)d Stunden"
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] "vor %(min)d Minute"
msgstr[1] "vor %(min)d Minuten"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Per preguntar per correu electrònic:</p>\n"
+"<ul>\n"
+" <li>Escriviu l'assumpte com: [Etiqueta1; Etiqueta12] Títol de la "
+"pregunta</li>\n"
+" <li>En el cos del missatge escriviu els detalls de la vostre pregunta</"
+"li>\n"
+"</ul>\n"
+"<p>Les etiquetes poden esta formades per més d'una paraula. Les etiquetes "
+"estan separades per una coma o un punt i coma</p>\n"
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>S'ha produït un error publicant la vostre pregunta; contacteu amb "
+"l'administrador de %(site)s</p> "
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Cal estar <a href=\"%(url)s\">registrat</a> per publicar preguntes s "
+"%(site)s a través del correu electrònic</p>"
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>La seva pregunta no s'ha publicat ja que el vostre compte d'usuari no té "
+"suficients privilegis</p>"
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -3816,274 +6849,381 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: views/commands.py:83
+#, fuzzy
+msgid "Sorry, but anonymous users cannot access the inbox"
msgstr "Gastbenutzer können nicht abstimmen"
-#: views/commands.py:59
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
+msgstr "Gastbenutzer können nicht abstimmen"
+
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
-msgstr ""
+msgstr "se li han acabat el vots per avui"
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
-msgstr ""
-
-#: views/commands.py:122
-#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "Gastbenutzer können nicht abstimmen"
+msgstr "Per avui li queden %(votes_left)s restants"
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
-msgstr ""
+msgstr "alguna cosa no funciona aqui ..."
-#: views/commands.py:207
+#: views/commands.py:229
#, fuzzy
msgid "Sorry, but anonymous users cannot accept answers"
msgstr "Gastbenutzer können nicht abstimmen"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"Ihre Abonnementeinstellungen wurden gespeichert, aber %(email)s muß noch "
"bestätigt werden. <a href='%(details_url)s'>Details hier</a>."
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr "Die Häufigkeit der Benachrichtigungen wurde auf \"täglich\" gesetzt."
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: views/commands.py:542
+#: views/commands.py:600
#, fuzzy
msgid "Please sign in to vote"
msgstr "Bitte hier anmelden:"
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Bitte hier anmelden:"
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "Sobre %(site)s"
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr "Forums-Feedback"
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Vielen Dank für Ihr Feedback!"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr "Wir freuen uns auf Ihr Feedback! Gerne auch nächstes Mal :)"
-#: views/readers.py:151
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Datenschutzrichtlinien"
+
+#: views/readers.py:133
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "%(q_num)s Frage"
msgstr[1] "%(q_num)s Fragen"
-#: views/readers.py:159
-#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s Frage"
-msgstr[1] "%(q_num)s Fragen"
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-msgstr[1] ""
-
-#: views/readers.py:415
+#: views/readers.py:388
#, fuzzy
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "Die Frage wurde als Favorit ausgewählt"
-#: views/users.py:211
-#, fuzzy
-msgid "moderate this user"
-msgstr "Diesen Benutzer verwalten"
-
-#: views/users.py:212
+#: views/users.py:206
#, fuzzy
msgid "moderate user"
msgstr "benutzer-moderieren/"
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "Benutzerprofil"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr "Benutzerprofil-Ãœbersicht"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "Neueste Aktivitäten"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "Profil - neueste Aktivitäten"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "Kommentare und Antworten"
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "Profil - Reaktionen"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "Abstimmungsverhalten"
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "Abgegebene Bewertungen"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "Punktestand des Benutzers"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "reputació"
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "Profil - Punktestand des Benutzers"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "Fragen in der Favoritenliste des Benutzers"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "Fragen in der Favoritenliste"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr "Veränderungen gespeichert"
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr "E-Mail-Benachrichtigungen abgestellt"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "E-Mail-Abonnementeinstellungen"
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "E-Mail-Abonnements"
-#: views/writers.py:58
+#: views/writers.py:60
#, fuzzy
msgid "Sorry, anonymous users cannot upload files"
msgstr "Gastbenutzer können nicht abstimmen"
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "Erlaubte Dateitypen: '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, fuzzy, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr "Die Maximalgröße beim Hochladen beträgt %s Kilobyte."
-#: views/writers.py:99
+#: views/writers.py:92
#, fuzzy
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
"Fehler beim Hochladen der Datei. Bitte nehmen Sie Kontakt mit dem "
"Administrator auf. %s"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "Sie können jederzeit gern Ihre eigene Frage stellen!"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
#, fuzzy
msgid "Please log in to answer questions"
msgstr "Unbeantwortete Fragen anzeigen"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
+"Sembla que heu sortit i no podeu posar comentaris. <a href=\"%(sign_in_url)s"
+"\">Entreu</a>."
-#: views/writers.py:646
+#: views/writers.py:589
#, fuzzy
msgid "Sorry, anonymous users cannot edit comments"
msgstr "Gastbenutzer können nicht abstimmen"
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
+"Sembla que heu sortit i no podeu eliminar comentaris. <a href="
+"\"%(sign_in_url)s\">Entreu</a>."
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+msgstr "sembla que tenim algunes dificultats tècniques"
-#, fuzzy
-#~ msgid "Sites"
-#~ msgstr "Titel"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "Diese Buchstaben dürfen in Tags vorkommen"
#, fuzzy
-#~ msgid "Documentation"
-#~ msgstr "Ort"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "Diese E-Mail muß nicht mit Gravatar verknüpft werden."
-#~ msgid "Change password"
+#, fuzzy
+#~ msgid "Explain how to change LDAP password"
#~ msgstr "Passwort ändern"
+#~ msgid "question_answered"
+#~ msgstr "Frage beantwortet"
+
+#~ msgid "question_commented"
+#~ msgstr "Frage kommentiert"
+
+#~ msgid "answer_commented"
+#~ msgstr "Antwort kommentiert"
+
+#~ msgid "answer_accepted"
+#~ msgstr "Antwort akzeptiert"
+
+#~ msgid "Incorrect username."
+#~ msgstr "Ungültiger Benutzername."
+
#, fuzzy
-#~ msgid "Log out"
-#~ msgstr "Logout"
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] "<p>Hallo %(name)s,</p></p>Es gibt neues zu einer Frage:</p>"
+#~ msgstr[1] "<p>Hallo %(name)s,</p><p>Es gibt neues zu %(num)d Fragen:</p>"
#, fuzzy
-#~ msgid "Home"
-#~ msgstr "Home"
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Schauen Sie rein und entdecken Sie neue Fragen und Antworten. Empfehlen "
+#~ "Sie uns gern auch an Freunde und Bekannte weiter!"
#, fuzzy
-#~ msgid "Edit Group Settings"
-#~ msgstr "Frage bearbeiten"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Die Einstellung, mit der Sie am häufigsten benachrichtigt werden, ist "
+#~ "\"täglich\". Sollten Sie mehr als eine E-Mail pro Tag bekommen, "
+#~ "benachrichtigen Sie uns bitte."
#, fuzzy
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Bitte folgende Eingaben korrigieren:"
-#~ msgstr[1] "Bitte folgende Eingaben korrigieren:"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Die Einstellung, mit der Sie am häufigsten benachrichtigt werden, ist "
+#~ "\"wöchentlich\". Sollten Sie mehr als eine E-Mail pro Woche bekommen, "
+#~ "benachrichtigen Sie uns bitte."
+
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "Aus technischen Gründen kann es manchmal vorkommen, daß Sie Links "
+#~ "empfangen, die Sie bereits gesehen haben. "
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Sie können die Häufigkeit, mit der Sie Benachrichtigungen erhalten, "
+#~ "jederzeit <a href='%(link)s'>hier</a> einstellen oder sie gänzlich "
+#~ "abschalten.<br/>Falls Sie diese Nachricht irrtümlich erhalten haben, "
+#~ "informieren Sie uns bitte unter %(email)s.</p>"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "Das Hochladen von Dateien benötigt %(min_rep)s Punkte oder mehr"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "Bitte wählen Sie eine der oben genannten Optionen"
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "einloggen/"
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
-#~ msgid "Change email"
-#~ msgstr "E-Mail-Adresse ändern"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "no es pot senyalar un missatge com ofensiu dues vegades"
-#~ msgid "Save your email address"
-#~ msgstr "E-Mail-Adresse speichern"
+#, fuzzy
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr "s'han de tenir més de %(min_rep)s punts per senyalar spam"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "excedit %(max_flags_per_day)s"
+
+#, fuzzy
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] "s'han de tenir més d'%(min_rep)d punt per poder treure senyals"
+#~ msgstr[1] "s'han de tenir més de %(min_rep)d punts per poder treure senyals"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "Bewertung kann nicht mehr zurückgenommen werden"
+
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s hat die Frage bearbeitet"
+
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr ""
+#~ "%(people)s Benutzer haben %(new_answer_count)s neue Antworten verfaßt"
+
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s Benutzer haben die Frage kommentiert"
+
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s Benutzer haben Kommentare zu Antworten verfaßt"
+
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s Benutzer haben Kommentare zu einer Antwort verfaßt"
#~ msgid "change %(email)s info"
#~ msgstr ""
@@ -4106,20 +7246,6 @@ msgstr ""
#~ "<strong>Ihre neue E-Mail-Adresse:</strong> (wird<strong>nicht</strong> "
#~ "öffentlich angezeigt; muß eine gültige Adresse sein)"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Ihre E-Mail-Adresse</strong> (wird<strong>nicht</strong> "
-#~ "öffentlich angezeigt; muß eine gültige Adresse sein)"
-
-#~ msgid "Save Email"
-#~ msgstr "E-Mail-Adresse speichern"
-
-#~ msgid "Cancel"
-#~ msgstr "Abbrechen"
-
-#~ msgid "Validate email"
-#~ msgstr "E-Mail-Adresse überprüfen"
-
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">Eine E-Mail mit einem Bestätigungslink wurde "
@@ -4127,21 +7253,15 @@ msgstr ""
#~ "der E-Mail</strong> oder geben Sie ihn via Kopieren+Einfügen in Ihren "
#~ "Internet-Browser ein. Die E-Mail-Überprüfung dient Ihrem und unserem "
#~ "Schutz vor Spam. Falls Sie eine <strong>andere E-Mail-Adresse</strong> "
-#~ "verwenden möchten, können Sie sie <a href='%(change_email_url)"
-#~ "s'><strong>erneut ändern</strong></a>."
-
-#~ msgid "Email not changed"
-#~ msgstr "E-Mail-Adresse nicht geändert"
+#~ "verwenden möchten, können Sie sie <a "
+#~ "href='%(change_email_url)s'><strong>erneut ändern</strong></a>."
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">Ihre E-Mail-Adresse %(email)s wurde nicht "
#~ "geändert.</span> Falls Sie sie später ändern möchten, können Sie dieses "
-#~ "jederzeit in Ihrem Benutzerprofil oder im <a href='%(change_email_url)"
-#~ "s'><strong>vorigen Formular</strong></a> tun."
-
-#~ msgid "Email changed"
-#~ msgstr "E-Mail-Adresse geändert"
+#~ "jederzeit in Ihrem Benutzerprofil oder im <a "
+#~ "href='%(change_email_url)s'><strong>vorigen Formular</strong></a> tun."
#~ msgid "your current %(email)s can be used for this"
#~ msgstr ""
@@ -4149,9 +7269,6 @@ msgstr ""
#~ "verändert.</span> Sie erhalten alle eventuell abonnierten E-Mail-"
#~ "Benachrichtigungen nun an diese Adresse."
-#~ msgid "Email verified"
-#~ msgstr "E-Mail-Adresse bestätigt"
-
#~ msgid "thanks for verifying email"
#~ msgstr ""
#~ "<span class=\"big strong\">Vielen Dank für die Bestätigung Ihrer E-Mail-"
@@ -4168,12 +7285,8 @@ msgstr ""
#~ msgstr ""
#~ "<span class='big strong'>Ihre momentane E-Mail-Adresse %(email)s wurde "
#~ "bereits bestätigt</span>. Es wurde keine neue Bestätigungsmail versandt. "
-#~ "Sie können Ihre E-Mail-Adresse bei Bedarf <a href='%(change_link)"
-#~ "s'>ändern</a>."
-
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Registrieren"
+#~ "Sie können Ihre E-Mail-Adresse bei Bedarf <a "
+#~ "href='%(change_link)s'>ändern</a>."
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
@@ -4217,8 +7330,8 @@ msgstr ""
#~ "strong> fest und hinterlegen Sie Ihre <strong>E-Mail-Adresse</strong>. "
#~ "Die E-Mail-Adresse ermöglicht <strong>Benachrichtigungen bei besonders "
#~ "interessanten Fragen</strong> und wird als Grundlage für Ihr "
-#~ "Individuelles Benutzerbild, den <a href='%(gravatar_faq_url)"
-#~ "s'><strong>Gravatar</strong></a>, benutzt.</p>"
+#~ "Individuelles Benutzerbild, den <a "
+#~ "href='%(gravatar_faq_url)s'><strong>Gravatar</strong></a>, benutzt.</p>"
#~ msgid "This account already exists, please use another."
#~ msgstr ""
@@ -4241,9 +7354,6 @@ msgstr ""
#~ "auch wirklich Neues gibt.<br/>Sie können die Benachrichtigungshäufigkeit "
#~ "jederzeit in Ihrem Benutzerprofil anpassen."
-#~ msgid "please select one of the options above"
-#~ msgstr "Bitte wählen Sie eine der oben genannten Optionen"
-
#~ msgid "Tag filter tool will be your right panel, once you log in."
#~ msgstr ""
#~ "Das Tag-Filterwerkzeug finden Sie nach dem Einloggen in der rechten "
@@ -4252,79 +7362,18 @@ msgstr ""
#~ msgid "create account"
#~ msgstr "Zugang anlegen"
-#~ msgid "Logout"
-#~ msgstr "Logout"
-
-#~ msgid "User login"
-#~ msgstr "Benutzerlogin"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Ihre Antwort auf </span> <i>\"<strong>%(title)"
-#~ "s</strong> %(summary)s...\"</i> <span class=\"strong big\">wurde "
-#~ "gespeichert und wird veröffentlicht, sobald Sie sich einloggen.</span>"
-
-#, fuzzy
#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
#~ msgstr ""
-#~ "<span class=\"strong big\">Ihre Frage</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\"> wurde "
-#~ "gespeichert und wird veröffentlicht, sobald Sie sich einloggen.</span>"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "Keine E-Mail"
-
-#~ msgid "Password"
-#~ msgstr "Passwort"
+#~ "Falls Sie diese Nachricht irrtümlich erhalten haben, brauchen Sie nichts "
+#~ "zu unternehmen. Bitte ignorieren Sie diese E-Mail einfach - wir "
+#~ "entschuldigen uns für die Unannehmlichkeiten."
#~ msgid "Login"
#~ msgstr "Login"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Neues Passwort angelegt"
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "Bitte geben Sie Ihr Passwort erneut ein"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "Zuletzt gesehen"
-
-#~ msgid "delete"
-#~ msgstr "löschen"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Zugang gelöscht."
-
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Sie haben noch Fragen?"
-
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
-
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Legen Sie ein neues Passwort für Ihren Zugang fest."
-
#~ msgid "Why use OpenID?"
#~ msgstr "Warum OpenID verwenden?"
@@ -4352,20 +7401,6 @@ msgstr ""
#~ msgid "Get OpenID"
#~ msgstr "Einen OpenID-Zugang anlegen"
-#~ msgid "Signup"
-#~ msgstr "Registrieren"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Bitte wählen Sie eine der oben genannten Optionen"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Benutzernamen und Passwort anlegen"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Benutzernamen und Passwort anlegen"
-
#~ msgid "Traditional signup info"
#~ msgstr ""
#~ "<span class='strong big'>Falls Sie möchten, können Sie auch einen "
@@ -4376,245 +7411,29 @@ msgstr ""
#~ "Wenn Sie z.B. einen Zugang bei Google haben, haben Sie bereits auch einen "
#~ "OpenID-Zugang."
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "Bitte geben Sie zum Schutz vor Spam die untenstehenden zwei Wörter ein."
-
#~ msgid "Create Account"
#~ msgstr "Zugang anlegen"
-#~ msgid "or"
-#~ msgstr "oder"
-
-#~ msgid "return to OpenID login"
-#~ msgstr "zum OpenID-Login zurückkehren"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Tags ändern"
-
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Ihre Zugangsdaten:"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Veränderungen gespeichert"
-
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "Antwort gelöscht"
-
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "Antwort gelöscht"
-
#~ msgid "answer permanent link"
#~ msgstr "Link zur Antwort"
-#~ msgid "permanent link"
-#~ msgstr "Link"
-
-#~ msgid "edit"
-#~ msgstr "bearbeiten"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "Beitrag melden (z.B. Spam, unerwünschte Werbung, Beleidigungen, illegale "
-#~ "Inhalte usw.)"
-
-#~ msgid "flag offensive"
-#~ msgstr "Als beleidigend melden"
-
-#~ msgid "undelete"
-#~ msgstr "Wiederherstellen"
-
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Frage beantworten"
-
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "Zur Favoritenliste hinzufügen (zum Abbrechen erneut klicken)"
+#~ msgid "remove all flags"
+#~ msgstr "Alle Tags zeigen"
#, fuzzy
#~ msgid "%(question_author)s has selected this answer as correct"
#~ msgstr "Der Fragesteller hat diese Antwort als die korrekte markiert"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr ""
-#~ "Die Frage wurde aus den folgenden Gründen: \"%(close_reason)s\" "
-#~ "geschlossen von"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "Schließungszeitpunkt close date %(closed_at)s"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "Tags verändert"
-
-#~ msgid "reopen"
-#~ msgstr "wieder öffnen"
-
-#~ msgid "close"
-#~ msgstr "schließen"
-
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "Dieses Feld wird benötigt"
-
-#~ msgid "(required)"
-#~ msgstr "(Pflichtfeld)"
-
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Die Markdown-Echtzeit-Vorschau ein- oder ausblenden"
-
-#~ msgid "hide preview"
-#~ msgstr "Vorschau ausblenden"
-
#~ msgid "Related tags"
#~ msgstr "Tags"
-#~ msgid "Interesting tags"
-#~ msgstr "Tags, die mich interessieren"
-
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Hinzufügen"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Ignorierte Tags"
-
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "E-Mail-Tag-Filter festlegen"
-
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Die angeforderte Seite konnte nicht gefunden werden."
-
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Dies könnte einen der folgenden Gründe haben:"
-
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "Diese Frage oder Antwort wurde gelöscht;"
-
-#~ msgid "url has error - please check it;"
-#~ msgstr "Die eingegebene Adresse ist fehlerhaft - bitte überprüfen;"
-
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "Die angeforderte Seite ist geschützt oder Sie haben nicht genug Punkte, "
-#~ "um sie anzuschauen, siehe"
-
-#~ msgid "faq"
-#~ msgstr "Häufige Fragen"
-
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "Falls dieser Fehler nicht hätte passieren sollen, "
-
-#~ msgid "report this problem"
-#~ msgstr "melden Sie uns das Problem bitte."
-
-#~ msgid "back to previous page"
-#~ msgstr "Zurück zur vorigen Seite"
-
-#~ msgid "see all questions"
-#~ msgstr "Alle Fragen zeigen"
-
-#~ msgid "see all tags"
-#~ msgstr "Alle Tags zeigen"
-
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "Der Fehler wurde aufgezeichnet, und wir werden ihn so bald wie möglich "
-#~ "beheben."
-
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "Bitte melden Sie uns den Fehler, falls Sie möchten."
-
-#~ msgid "see latest questions"
-#~ msgstr "Zeige neueste Fragen"
-
-#~ msgid "see tags"
-#~ msgstr "Zeige Tags"
-
-#~ msgid "Edit answer"
-#~ msgstr "Antwort bearbeiten"
-
-#~ msgid "back"
-#~ msgstr "Zurück"
-
-#~ msgid "revision"
-#~ msgstr "Version"
-
-#~ msgid "select revision"
-#~ msgstr "Version auswählen"
-
-#~ msgid "Save edit"
-#~ msgstr "Ãœberarbeitung speichern"
-
-#~ msgid "show preview"
-#~ msgstr "Vorschau einblenden"
-
#~ msgid "Ask a question"
#~ msgstr "Frage stellen"
-#~ msgid "Badge"
-#~ msgstr "Auszeichnung"
-
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "E-Mail-Abonnements"
-
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "Benutzer hat dieses Abzeichen:"
-#~ msgstr[1] "Benutzer haben dieses Abzeichen:"
-
#~ msgid "Badges summary"
#~ msgstr "Zusammenfassung Auszeichnungen"
-#~ msgid "Badges"
-#~ msgstr "Auszeichnungen"
-
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "Rege Teilnahme mit qualitativ hochwertigen Fragen und Antworten führt zum "
-#~ "Erhalt von Auszeichnungen."
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Es gibt im Moment drei Stufen von Auszeichnungen: <strong>Gild</strong>, "
-#~ "<strong>Silber</strong> und <strong>Bronze</strong>.\n"
-#~ "\n"
-#~ "Falls Sie Ideen für neue Auszeichnungen haben, senden Sie uns diese über "
-#~ "die <a href='%(feedback_faq_url)s'>Feedback</a></strong>-Seite."
-
-#~ msgid "Community badges"
-#~ msgstr "Auszeichnungs-Stufen"
-
#~ msgid "gold badge description"
#~ msgstr ""
#~ "Goldene Auszeichnungen erreicht man mit regelmäßiger, "
@@ -4625,60 +7444,9 @@ msgstr ""
#~ "Silberne Auszeichnungen erzielt man durch regelmäßige, geduldige "
#~ "Teilnahme am Forum."
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr ""
-#~ "Bronzene Auszeichnungen sind die einfachste Auszeichnungsstufe. Man "
-#~ "erhält einige von ihnen durch einigermaßen aktive Teilnahme. Sie werden "
-#~ "oft als Ehrenauszeichnung verliehen."
-
#~ msgid "bronze badge description"
#~ msgstr "Aktive Forumsteilnehmer werden in Bronze ausgezeichnet."
-#~ msgid "Close question"
-#~ msgstr "Frage schließen"
-
-#~ msgid "Close the question"
-#~ msgstr "Die Frage schließen"
-
-#~ msgid "Reasons"
-#~ msgstr "Gründe"
-
-#~ msgid "OK to close"
-#~ msgstr "OK zu schließen"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Häufig gestellte Fragen"
-
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Was für Fragen kann ich hier stellen?"
-
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "Das allerwichtigste - Fragen sollten für dieses Forum <strong>relevant</"
-#~ "strong> und <strong>themenbezogen</strong> sein."
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Bevor Sie fragen: Bitte benutzen Sie die Suchfunktion, um "
-#~ "sicherzustellen, daß die Frage nicht bereits gestellt wurde."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Was für Fragen sollten nicht gestellt werden?"
-
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Bitte verzichten Sie auf Fragen, die für dieses Forum nicht relevant "
-#~ "sind, oder die zu subjektiv sind und zu Diskussionen verleiten."
-
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Was sollte ich in meinen Antworten vermeiden?"
-
#~ 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 "
@@ -4689,26 +7457,6 @@ msgstr ""
#~ "Diskussionen. Kurze Gespräche, Kritik und Klärungen sind über die "
#~ "Kommentarfunktion möglich. "
-#~ msgid "Who moderates this community?"
-#~ msgstr "Wer moderiert diese Forum?"
-
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Die Antwort ist: <strong>Sie!</strong>"
-
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Dieses Forum wird von seinen Benutzern moderiert."
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Je höher der Punktestand eines Benutzers, desto mehr Funktionen stehen "
-#~ "ihm zur Verfügung, z.B. das Bearbeiten und später auch Löschen anderer "
-#~ "Beiträge."
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "Wie funktioniert das Punktesystem?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "Wenn eine Frage oder Antwort positiv bewertet wird, erhält der Autor "
@@ -4716,62 +7464,9 @@ msgstr ""
#~ "Benutzer von der Gemeinschaft vertraut wird. Mit wachsendem Punktestand "
#~ "werden immer mehr Möglichkeiten freigeschaltet."
-#, fuzzy
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Wenn Sie zum Beispiel eine interessante Frage stellen oder eine "
-#~ "hilfreiche Antwort geben, wird Ihr Beitrag von anderen Benutzern positiv "
-#~ "bewertet. Wenn die Frage schlecht gestellt oder eine Antwort falsch ist, "
-#~ "kann er auch negativ bewertet werden. Eine positive Bewertung bringt "
-#~ "<strong>10</strong> Punkte, eine negative zieht <strong>2</strong> Punkte "
-#~ "ab. \n"
-#~ "\n"
-#~ "Für jede gestellte Frage oder verfaßte Antwort können maximal 200 Punkte "
-#~ "erzielt werden."
-
-#~ msgid "upvote"
-#~ msgstr "Positiv bewerten"
-
#~ msgid "use tags"
#~ msgstr "Tags benutzen"
-#~ msgid "add comments"
-#~ msgstr "Kommentare hinzufügen"
-
-#~ msgid "downvote"
-#~ msgstr "Negativ bewerten"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Erste Antwort auf eine eigene Frage akzeptiert"
-
-#~ msgid "open and close own questions"
-#~ msgstr "Eigene Fragen öffnen und schließen"
-
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "Vergebene Tags bearbeiten"
-
-#~ msgid "edit community wiki questions"
-#~ msgstr "Als \"Community Wiki\" markierte Fragen beantworten"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "Beliebige Antworten bearbeiten"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "Kommentare löschen"
-
#~ msgid "what is gravatar"
#~ msgstr "Wie verändert man sein Profilbild (Avatar) und was ist Gravatar?"
@@ -4792,98 +7487,6 @@ msgstr ""
#~ "Schritten. Laden Sie kein Profilbild hoch, wird ein neutrales Standard-"
#~ "Symbol angezeigt.</p>"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Muß ich ein neues Passwort anlegen, um mich zu registrieren?"
-
-#, fuzzy
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "Nein. Sie können sich über jeden Dienst einloggen, der OpenID "
-#~ "unterstützt, zum Beispiel Google, Yahoo, AOL usw."
-
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Jetzt einloggen"
-
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "Warum können andere Benutzer meine Fragen und Antworten bearbeiten?"
-
-#~ msgid "Goal of this site is..."
-#~ msgstr "Das Ziel dieser Seite ist:"
-
-#~ 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 ""
-#~ "Fragen und Antworten nach dem Wiki-Prinzip für alle bearbeitbar zu "
-#~ "machen, sodaß jeder die Qualität der Beiträge verbessern kann."
-
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr ""
-#~ "Falls Ihnen dies nicht gefällt, ist unser Forum vielleicht nicht das "
-#~ "richtige für Sie."
-
-#~ msgid "Still have questions?"
-#~ msgstr "Sie haben noch Fragen?"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Bitte <a href='%(ask_question_url)s'>stellen</a> Sie Ihre Frage und "
-#~ "helfen Sie uns, das Forum stetig zu verbessern!"
-
-#~ msgid "Feedback"
-#~ msgstr "Feedback"
-
-#~ msgid "Give us your feedback!"
-#~ msgstr "Senden Sie uns Ihr Feedback!"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Hallo %(user_name)s</span>, wir freuen uns "
-#~ "darauf, von Ihnen zu hören.\n"
-#~ "Bitte geben Sie hier Ihre Nachricht ein."
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Hallo</span>, wir freuen uns darauf, von Ihnen "
-#~ "zu hören.\n"
-#~ "Bitte geben Sie hier Ihre Nachricht ein."
-
-#~ msgid "(this field is required)"
-#~ msgstr "(Pflichtfeld)"
-
-#~ msgid "Send Feedback"
-#~ msgstr "Feedback absenden"
-
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Diese Frage wieder eröffnen"
-
#, fuzzy
#~ msgid "i like this question (click again to cancel)"
#~ msgstr ""
@@ -4893,9 +7496,6 @@ msgstr ""
#~ msgstr ""
#~ "Ich halte diese Antwort für hilfreich (zum Abbrechen erneut klicken)"
-#~ msgid "current number of votes"
-#~ msgstr "Aktuelle Anzahl Bewertungen"
-
#, fuzzy
#~ msgid "i dont like this question (click again to cancel)"
#~ msgstr "Ich halte nichts von diesem Beitrag (Zum Abbrechen erneut klicken)"
@@ -4905,37 +7505,6 @@ msgstr ""
#~ "Ich halte diese Antwort für nicht hilfreich (zum Abbrechen erneut klicken)"
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "Anonym"
-
-#~ msgid "asked"
-#~ msgstr "gefragt"
-
-#~ msgid "answered"
-#~ msgstr "geantwortet"
-
-#~ msgid "posted"
-#~ msgstr "veröffentlicht"
-
-#~ msgid "updated"
-#~ msgstr "aktualisiert"
-
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Fragen mit Tag '%(tag)s' anzeigen"
-
-#~ msgid "delete this comment"
-#~ msgstr "Kommentar löschen"
-
-#~ msgid "add comment"
-#~ msgstr "Kommentar hinzufügen"
-
-#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "<strong>1</strong> mehr"
-#~ msgstr[1] "<strong>%(counter)s</strong> mehr"
-
-#, fuzzy
#~ msgid "see <strong>%(counter)s</strong> more comment"
#~ msgid_plural ""
#~ "see <strong>%(counter)s</strong> more comments\n"
@@ -4943,245 +7512,15 @@ msgstr ""
#~ msgstr[0] "<strong>1</strong> weiterer Kommentar"
#~ msgstr[1] "<strong>%(counter)s</strong> weitere Kommentare"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "Punkte-Logbuch von %(user_name)s"
-
-#~ msgid "previous"
-#~ msgstr "Vorige"
-
-#~ msgid "current page"
-#~ msgstr "aktuelle Seite"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Seite %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "Nächste Seite"
-
#~ msgid "posts per page"
#~ msgstr "Beiträge pro Seite"
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "Bitte einen Benutzernamen eingeben"
-
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "Reaktionen"
-#~ msgstr[1] "Reaktionen"
-
-#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "Reaktionen"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "Erster gemeldeter Beitrag"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Erster gemeldeter Beitrag"
-
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Erster gemeldeter Beitrag"
-
-#~ msgid "Questions"
-#~ msgstr "Fragen"
-
-#~ msgid "Privacy policy"
-#~ msgstr "Datenschutzrichtlinien"
-
-#~ msgid "Edit question"
-#~ msgstr "Frage bearbeiten"
-
#~ msgid "Change tags"
#~ msgstr "Tags ändern"
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "Tags"
-
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Warum Tags verwenden und bearbeiten?"
-
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr ""
-#~ "Benutzer, die Tags bearbeiten, bekommen spezielle Auszeichnungen "
-#~ "verliehen."
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "Bis zu 5 Tags mit jeweils weniger als 20 Buchstaben"
-
-#~ msgid "Reopen question"
-#~ msgstr "Frage wieder eröffnen"
-
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "Titel"
-
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Frage schließen"
-
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Diese Frage wieder eröffnen"
-
-#~ msgid "Reopen this question"
-#~ msgstr "Diese Frage wieder eröffnen"
-
-#~ msgid "Revision history"
-#~ msgstr "Versionsgeschichte"
-
-#~ msgid "click to hide/show revision"
-#~ msgstr "Klicken, um Version anzuzeigen/zu verstecken"
-
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "revisionen/"
-
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "Tags benutzen"
-
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Die Frage wurde aus folgendem Grund geschlossen"
-
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "Tags benutzen"
-
-#~ msgid "Tag list"
-#~ msgstr "Tag-Liste"
-
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Sortieren nach:"
-
-#~ msgid "sorted alphabetically"
-#~ msgstr "Alphabetisch sortiert"
-
-#~ msgid "by name"
-#~ msgstr "nach Namen"
-
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "nach Tag-Verwendungshäufigkeit"
-
-#~ msgid "by popularity"
-#~ msgstr "nach Popularität"
-
-#~ msgid "Nothing found"
-#~ msgstr "Nichts gefunden"
-
-#~ msgid "Users"
-#~ msgstr "Benutzer"
-
#~ msgid "reputation"
#~ msgstr "Punktestand"
-#~ msgid "recent"
-#~ msgstr "neueste"
-
-#~ msgid "by username"
-#~ msgstr "nach Benutzernamen"
-
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "Benutzer mit Wort %(suser)s"
-
-#~ msgid "Nothing found."
-#~ msgstr "Nichts gefunden."
-
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "mit Beiträgen von %(author_name)s"
-
-#~ msgid "Search tips:"
-#~ msgstr "Suchtipps:"
-
-#~ msgid "reset author"
-#~ msgstr "Autor zurücksetzen"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "oder"
-
-#~ msgid "reset tags"
-#~ msgstr "Tags zurücksetzen"
-
-#~ msgid "start over"
-#~ msgstr "Von vorn beginnen"
-
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr ""
-#~ "- um den Kontext zu erweitern, oder graben Sie sich ein, indem Sie "
-#~ "weitere Tags hinzufügen und die Suchabfrage überarbeiten."
-
-#~ msgid "Search tip:"
-#~ msgstr "Suchtipp:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr ""
-#~ "Tags und eine Suchabfrage hinzufügen, um genauere Suchergebnisse zu "
-#~ "erzielen"
-
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Es gibt hier keine unbeantworteten Fragen"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Keine Favoriten-Fragen."
-
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr ""
-#~ "Bitte fügen Sie Fragen, die Ihnen besonders gut gefallen, zu Ihrer "
-#~ "Favoritenliste hinzu."
-
-#~ msgid "You can expand your search by "
-#~ msgstr "Sie können Ihre Suche erweitern, indem Sie"
-
-#~ msgid "resetting author"
-#~ msgstr "die Autorenbeschränkung entfernen"
-
-#~ msgid "resetting tags"
-#~ msgstr "die Tag-Beschränkung entfernen"
-
-#~ msgid "starting over"
-#~ msgstr "ganz von Vorne beginnen"
-
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Sie können jederzeit gern Ihre eigene Frage stellen!"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Sie haben nicht gefunden, wonach Sie gesucht haben?"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "Bitte stellen Sie Ihre Frage!"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "Fragen-RSS-Feed abonnieren"
-
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
-#~ msgstr[1] "Tags müssen kürzer als %(max_chars)d Zeichen sein"
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "Bitte %(tag_count)d Tags oder weniger benutzen"
-#~ msgstr[1] "Bitte %(tag_count)d Tags oder weniger benutzen"
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "Bis zu 5 Tags mit jeweils weniger als 20 Buchstaben"
-
#, fuzzy
#~ msgid ""
#~ "\n"
@@ -5198,39 +7537,15 @@ msgstr ""
#~ "\n"
#~ "%(counter)s Antworten:"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "Älteste Antworten werden als Erstes angezeigt"
-
#~ msgid "oldest answers"
#~ msgstr "älteste"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "Neueste werden zuerst angezeigt"
-
#~ msgid "newest answers"
#~ msgstr "Neueste Antworten"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "Höchstbewertete werden zuerst angezeigt"
-
#~ msgid "popular answers"
#~ msgstr "Höchstbewertet"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Eigene Frage beantworten"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr ""
-#~ "Bitte loggen Sie sich ein oder registrieren Sie sich, um die Antwort "
-#~ "endgültig zu speichern."
-
-#~ msgid "Your answer"
-#~ msgstr "Ihre Antwort"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Verfassen Sie die erste Antwort auf diese Frage!"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Beginnen Sie Ihre Antwort als anonymer Gast</"
@@ -5270,62 +7585,17 @@ msgstr ""
#~ msgid "Answer the question"
#~ msgstr "Frage beantworten"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "oder"
-
-#~ msgid "email"
-#~ msgstr "E-Mail"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "Fragen mit den meisten Antworten"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "Fragen mit den meisten Antworten"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "E-Mail-Benachrichtigungen abgestellt"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "Fragen-RSS-Feed abonnieren"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "Fragen-RSS-Feed abonnieren"
-
#~ msgid "question asked"
#~ msgstr "Gefragt"
#~ msgid "question was seen"
#~ msgstr "Frage betrachtet:"
-#~ msgid "times"
-#~ msgstr "mal"
-
-#~ msgid "last updated"
-#~ msgstr "Zuletzt aktualisiert"
-
-#~ msgid "Related questions"
-#~ msgstr "Verwandte / ähnliche Fragen"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal täglich per "
#~ "E-Mail"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Benachrichtigung bei neuen Antworten</strong> einmal wöchentlich "
-#~ "per E-Mail"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
@@ -5339,41 +7609,6 @@ msgstr ""
#~ "<strong><a href='%(profile_url)s?sort=email_subscriptions'>Profil</a></"
#~ "strong> ändern)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Hier</span> können Sie regelmäßige "
-#~ "Benachrichtigungen für diese Frage abonnieren, sobald Sie sich eingeloggt "
-#~ "haben."
-
-#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "Benutzerprofil"
-
-#~ msgid "Edit user profile"
-#~ msgstr "Benutzerprofil bearbeiten"
-
-#~ msgid "edit profile"
-#~ msgstr "Profil bearbeiten"
-
-#~ msgid "change picture"
-#~ msgstr "Bild ändern"
-
-#~ msgid "Registered user"
-#~ msgstr "Registrierter Benutzer"
-
-#~ msgid "Screen Name"
-#~ msgstr "Nickname"
-
-#~ msgid "Update"
-#~ msgstr "Update"
-
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "E-Mail-Abonnements"
-
-#~ msgid "Email subscription settings"
-#~ msgstr "E-Mail-Abonnementeinstellungen"
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Häufigkeit von E-Mail-Benachrichtigungen "
@@ -5385,276 +7620,33 @@ msgstr ""
#~ msgid "Stop sending email"
#~ msgstr "Keine E-Mails mehr senden"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Alle Fragen"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "Fragen"
-
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "Bitte %(tag_count)d Tags oder weniger benutzen"
-
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "löschen"
-
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "Zuletzt gesehen"
-
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "neueste"
-
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "Bronze"
-
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "Zuletzt gesehen"
-
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "als beste Antwort markiert"
-
-#~ msgid "update profile"
-#~ msgstr "Profil aktualisieren"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "Bitte einloggen"
-
-#~ msgid "real name"
-#~ msgstr "Realname"
-
-#~ msgid "member for"
-#~ msgstr "Mitglied seit"
-
-#~ msgid "last seen"
-#~ msgstr "Zuletzt gesehen"
-
#~ msgid "user website"
#~ msgstr "Website"
-#~ msgid "location"
-#~ msgstr "Ort"
-
-#~ msgid "age"
-#~ msgstr "Alter"
-
-#~ msgid "age unit"
-#~ msgstr "Jahre "
-
-#~ msgid "todays unused votes"
-#~ msgstr "Ungenutzte Bewertungs-Stimmen heute"
-
-#~ msgid "votes left"
-#~ msgstr "Stimmen übrig"
-
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "Ort"
-
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "Punkte-Logbuch von %(user_name)s"
-
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "Punktestand des Benutzers"
-
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "Ãœberarbeitung speichern"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "Punktestand des Benutzers"
-
-#~ msgid "Add"
-#~ msgstr "Hinzufügen"
-
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Bitte einen Benutzernamen eingeben"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "nachrichten/"
-
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "nachrichten/"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "Benutzerprofil"
-
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "aktiv"
-
-#~ msgid "Your karma change log."
-#~ msgstr "Ihr Punkte-Logbuch."
-
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "Punkte-Logbuch von %(user_name)s"
-
-#~ msgid "overview"
-#~ msgstr "Ãœbersicht"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">1</span> Frage"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Fragen"
-
#, fuzzy
#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
#~ msgstr[0] "<span class=\"count\">1</span> Antwort"
#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Antworten"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "Diese Antwort ist %(answer_score)s mal positiv bewertet worden"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "Diese Antwort ist als korrekt ausgewählt worden"
-
-#, fuzzy
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "1 Kommentar"
-#~ msgstr[1] "%(comment_count)s mal kommentiert"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">1</span> Bewertung"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> Bewertungen"
-
-#~ msgid "thumb up"
-#~ msgstr "+1"
-
-#~ msgid "user has voted up this many times"
-#~ msgstr "Benutzer hat positiv bewertet"
-
-#~ msgid "thumb down"
-#~ msgstr "-1"
-
-#~ msgid "user voted down this many times"
-#~ msgstr "Benutzer hat negativ bewertet"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">1</span> Tag"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Tags"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">1</span> Auszeichnung"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Auszeichnungen"
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Tipps"
-
-#~ msgid "User profile"
-#~ msgstr "Benutzerprofil"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Punkte-Statistik"
-
#~ msgid "reputation history"
#~ msgstr "Punkte-Protokoll"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "Vom Benutzer als Favoriten markierte Fragen"
-
#~ msgid "recent activity"
#~ msgstr "Jüngste Aktivitäten"
#~ msgid "casted votes"
#~ msgstr "abgegebene Stimmen"
-#~ msgid "votes"
-#~ msgstr "Stimmen"
-
#~ msgid "answer tips"
#~ msgstr "Tipps"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr ""
-#~ "Bitte formulieren Sie Ihre Frage so, daß sie für dieses Forum relevant "
-#~ "ist."
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "Bitte versuchen Sie, eine konkrete Antwort zu geben, und nicht in eine "
-#~ "Diskussion einzusteigen."
-
#~ msgid "please try to provide details"
#~ msgstr "Bitte versuchen Sie, Details einzubringen."
-#~ msgid "be clear and concise"
-#~ msgstr "Seien Sie klar und deutlich."
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "Siehe die häufig gestellten Fragen"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Tipps zu Markdown"
-
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*kursiv* oder __kursiv__"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**fett** oder __fett__"
-
-#~ msgid "link"
-#~ msgstr "Link"
-
-#~ msgid "text"
-#~ msgstr "Text"
-
-#~ msgid "image"
-#~ msgstr "Bild"
-
-#~ msgid "numbered list:"
-#~ msgstr "Nummerierte Liste:"
-
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "Grundlegende HTML-Tags werden ebenfalls unterstützt."
-
-#~ msgid "learn more about Markdown"
-#~ msgstr "Mehr Informationen über Markdown"
-
#~ msgid "ask a question"
#~ msgstr "Frage stellen"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Sie können Ihre Frage formulieren, ohne sich "
-#~ "vorher anmelden zu müssen</span>. Wenn Sie Ihre Frage speichern, werden "
-#~ "Sie zum Anmeldeformular weitergeleitet. Einen neuen Zugang zu erstellen "
-#~ "geht ganz schnell. Ihre Frage wird für die Dauer des Anmeldevorgangs im "
-#~ "Hintergrund gespeichert und geht nicht verloren."
-
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
#~ " see %(email_validation_faq_url)s\n"
@@ -5669,81 +7661,52 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "Bitte einloggen, um Frage zu veröffentlichen"
-#~ msgid "Ask your question"
-#~ msgstr "Stellen Sie Ihre Frage"
-
-#~ msgid "Contributors"
-#~ msgstr "Beitragende"
-
-#~ msgid "about"
-#~ msgstr "Ãœber uns"
-
-#~ msgid "privacy policy"
-#~ msgstr "Datenschutzrichtlinien"
-
-#~ msgid "give feedback"
-#~ msgstr "Feedback geben"
-
-#~ msgid "back to home page"
-#~ msgstr "Zurück zur Startseite"
-
-#~ msgid "users"
-#~ msgstr "Benutzer"
-
-#~ msgid "badges"
-#~ msgstr "Auszeichnungen"
-
#~ msgid "question tips"
#~ msgstr "Tipps für Fragen"
#~ msgid "please ask a relevant question"
#~ msgstr "Stellen Sie nur Fragen, die für dieses Forum relevant sind."
-#~ msgid "please try provide enough details"
-#~ msgstr "Bitte erwähnen Sie in Ihrer Frage genügend Details."
-
-#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "Einblendungen"
-#~ msgstr[1] "Einblendungen"
+#~ msgid "logout"
+#~ msgstr "Ausloggen"
-#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "Antwort"
-#~ msgstr[1] "Antwort"
+#~ msgid "login"
+#~ msgstr "Einloggen"
-#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "abstimmen/"
-#~ msgstr[1] "abstimmen/"
+#~ msgid "no items in counter"
+#~ msgstr "no"
-#~ msgid "see unanswered questions"
-#~ msgstr "Unbeantwortete Fragen anzeigen"
+#~ msgid "your email address"
+#~ msgstr "Ihre E-Mail-Adresse <i>(wird nie veröffentlicht)</i>"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Favoritenliste anzeigen"
+#~ msgid "choose password"
+#~ msgstr "Passwort"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "Auszeichnungen"
+#~ msgid "retype password"
+#~ msgstr "Passwort <i>(bitte neu eingeben)</i>"
-#~ msgid "logout"
-#~ msgstr "Ausloggen"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s insígnia"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s insígnies"
-#~ msgid "login"
-#~ msgstr "Einloggen"
+#~ msgid "user reputation in the community"
+#~ msgstr "Punktestand des Benutzers"
#, fuzzy
-#~ msgid "settings"
-#~ msgstr "die Tag-Beschränkung entfernen"
+#~ msgid "Please log in to ask questions"
+#~ msgstr "Sie können jederzeit gern Ihre eigene Frage stellen!"
#, fuzzy
+#~ msgid "question content must be > 10 characters"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Der Fragentext muß länger als 10 Buchstaben sein.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "la pregunta ha de tenir més de 10 caràcters"
+
#~ msgid "(please enter a valid email)"
-#~ msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein"
+#~ msgstr "(entrar una adreça vàlida de correu electrònic)"
#~ msgid "i like this post (click again to cancel)"
#~ msgstr ""
@@ -5759,7 +7722,6 @@ msgstr ""
#~ "Die Frage wurde aus den folgenden Gründen: \"%(close_reason)s\" "
#~ "geschlossen von"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " %(counter)s Answer:\n"
@@ -5770,10 +7732,12 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "Eine Antwort:"
+#~ " %(counter)s Resposta:\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "%(counter)s Antworten:"
+#~ " %(counter)s Respostes:\n"
+#~ " "
#~ msgid "mark this answer as favorite (click again to undo)"
#~ msgstr "Zur Favoritenliste hinzufügen (zum Abbrechen erneut klicken)"
@@ -5781,11 +7745,13 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Tags"
-#~ msgid "questions"
-#~ msgstr "Fragen"
-
+#, fuzzy
#~ msgid "search"
-#~ msgstr "Suche"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Suche\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "cerca"
#, fuzzy
#~ msgid "Please star (bookmark) some questions or follow some users."
@@ -5796,15 +7762,16 @@ msgstr ""
#~ msgid "In:"
#~ msgstr "In:"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Alle Fragen"
-
#~ msgid "Sort by:"
#~ msgstr "Sortieren nach:"
+#, fuzzy
#~ msgid "Email (not shared with anyone):"
-#~ msgstr "Ihre E-Mail-Adresse (wird nicht angezeigt):"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ihre E-Mail-Adresse (wird nicht angezeigt):\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Correu electrònic (no es comparteix amb ningú)"
#, fuzzy
#~ msgid "Site modes"
@@ -5858,8 +7825,13 @@ msgstr ""
#~ msgid "MyOpenid user name"
#~ msgstr "nach Benutzernamen"
+#, fuzzy
#~ msgid "Email verification subject line"
-#~ msgstr "Bestätigung Ihrer E-Mail-Adresse"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Bestätigung Ihrer E-Mail-Adresse\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Verification Email from Q&A forum"
#~ msgid "disciplined"
#~ msgstr "diszipliniert"
@@ -6045,10 +8017,12 @@ msgstr ""
#~ msgid "how to validate email title"
#~ msgstr "Wie bestätigt man seine E-Mail-Adresse und warum?"
+#, fuzzy
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
#~ "s'><p><span class=\"bigger strong\">Wie?</span> Falls Sie soeben eine "
#~ "neue E-Mail-Adresse eingegeben haben oder Ihre bestehende verändert - "
@@ -6064,7 +8038,21 @@ msgstr ""
#~ "die Fragen abonnieren, die Sie am meisten interessieren. Mit einer E-Mail-"
#~ "Adresse können Sie über den <a href='%(gravatar_faq_url)"
#~ "s'><strong>Gravatar</strong></a>-Dienst auch ein persönliches Profilbild "
-#~ "einstellen, das neben Ihrem Namen erscheint.</p>"
+#~ "einstellen, das neben Ihrem Namen erscheint.</p>\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
#~ msgid "."
#~ msgstr "."
@@ -6075,14 +8063,21 @@ msgstr ""
#~ msgid "Message body:"
#~ msgstr "Nachrichtentext:"
+#, fuzzy
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
#~ "or permanently remove your account."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Der Klick auf <strong>Logout</strong> beendet Ihre Sitzung hier im Forum, "
#~ "aber nicht bei Ihrem OpenID-Anbietet.</p><p> Vergessen Sie nicht, sich "
#~ "auch bei Ihrem Anbieter auszuloggen, falls Sie sich an diesem Computer "
-#~ "komplett ausloggen möchten."
+#~ "komplett ausloggen möchten.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
#~ msgid "Logout now"
#~ msgstr "Jetzt ausloggen"
@@ -6116,9 +8111,6 @@ msgstr ""
#~ "\n"
#~ "%(rev_count)s Versionen"
-#~ msgid "tagged"
-#~ msgstr "Getaggt"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr ""
#~ "'%(tag_name)s' von der Liste der Tags, die mich interessieren, entfernen"
@@ -6126,9 +8118,6 @@ msgstr ""
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "'%(tag_name)s' von der Liste der ignorierten Tags entfernen"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "Fragen aus ignorierten Tags ausblenden"
-
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
@@ -6273,8 +8262,13 @@ msgstr ""
#~ msgid "views"
#~ msgstr "Einblendungen"
+#, fuzzy
#~ msgid "reputation points"
-#~ msgstr "Punkte"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Punkte\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "karma"
#, fuzzy
#~ msgid "badges: "
@@ -6973,3 +8967,16 @@ msgstr ""
#~ msgstr[1] ""
#~ "\n"
#~ "<div class=\"questions-count\">%(q_num)s</div><p>questions<p>"
+
+#~ msgid ""
+#~ "\n"
+#~ " %(counter)s Answer\n"
+#~ msgid_plural ""
+#~ "\n"
+#~ " %(counter)s Answers\n"
+#~ msgstr[0] ""
+#~ "\n"
+#~ " %(counter)s Resposta\n"
+#~ msgstr[1] ""
+#~ "\n"
+#~ " %(counter)s Respostes\n"
diff --git a/askbot/locale/de/LC_MESSAGES/djangojs.mo b/askbot/locale/de/LC_MESSAGES/djangojs.mo
index ef480e40..6e89d231 100644
--- a/askbot/locale/de/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/de/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/de/LC_MESSAGES/djangojs.po b/askbot/locale/de/LC_MESSAGES/djangojs.po
index ed5cd459..c6e5cc45 100644
--- a/askbot/locale/de/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/de/LC_MESSAGES/djangojs.po
@@ -2,23 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:58-0600\n"
+"POT-Creation-Date: 2012-04-18 18:57-0500\n"
"PO-Revision-Date: 2011-09-28 04:28-0800\n"
"Last-Translator: Rosandra Cuello <rosandra.cuello@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,146 +75,77 @@ msgstr ""
msgid "loading..."
msgstr "Lade..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "Tags dürfen nicht leer sein"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "Inhalt darf nicht leer sein"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "Bitte mindestens %s Zeichen eingeben"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "Bitte Titel eingeben"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "Bitte mindestens %s Zeichen eingeben"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "nicht genügend Rechte"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "Eigene Antworten können nicht als die korrekte akzeptiert werden"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "Bitte einloggen"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "Gastbenutzer können nicht abstimmen "
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr "Bitte beleidigenden/regelwidrigen Beitrag bestätigen"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "Bitte beleidigenden/regelwidrigen Beitrag bestätigen"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "Gastbenutzer können Beiträge nicht melden"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "Löschen bestätigen"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "Gastbenutzer können Beiträge nicht löschen oder wiederherstellen"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "Beitrag wiederhergestellt"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "Beitrag gelöscht"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "wiederherstellen"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "löschen"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "OK"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "%s characters left"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "%s characters left"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "Diesen Kommentar löschen"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "Löschen des Kommentars bestätigen"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -228,115 +159,140 @@ msgid_plural "Delete these notifications?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "Diesen Kommentar löschen"
+msgstr[1] "Diesen Kommentar löschen"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "Diesen Kommentar löschen"
+msgstr[1] "Diesen Kommentar löschen"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "Fett"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "Kursiv"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "Link"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "Zitat"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "Vorformatierter Text"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "Bild"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "Nummerierte Liste"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "Liste"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "Titel"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "horizontaler Balken"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "Rückgängig"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "Wiederholen"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"Bild-URL eingeben, zum Beispiel <br />http://www.ihredomain.de/bildname.jpg"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr "URL eingeben, zum Beispiel <br />http://www.askbot.org/ </p>"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "Tags dürfen nicht leer sein"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "Inhalt darf nicht leer sein"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "Bitte mindestens %s Zeichen eingeben"
+
+#~ msgid "please enter title"
+#~ msgstr "Bitte Titel eingeben"
+
+#~ msgid "%s title minchars"
+#~ msgstr "Bitte mindestens %s Zeichen eingeben"
+
+#~ msgid "undelete"
+#~ msgstr "wiederherstellen"
+
+#~ msgid "delete"
+#~ msgstr "löschen"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "%s characters left"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s characters left"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "Löschen des Kommentars bestätigen"
diff --git a/askbot/locale/el/LC_MESSAGES/django.mo b/askbot/locale/el/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..8f037498
--- /dev/null
+++ b/askbot/locale/el/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/el/LC_MESSAGES/django.po b/askbot/locale/el/LC_MESSAGES/django.po
new file mode 100644
index 00000000..6783c087
--- /dev/null
+++ b/askbot/locale/el/LC_MESSAGES/django.po
@@ -0,0 +1,6442 @@
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
+# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:53-0500\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"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!= 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+
+#: exceptions.py:13
+msgid "Sorry, but anonymous visitors cannot access this function"
+msgstr ""
+
+#: feed.py:28 feed.py:90
+msgid " - "
+msgstr ""
+
+#: feed.py:28
+msgid "Individual question feed"
+msgstr ""
+
+#: feed.py:90
+msgid "latest questions"
+msgstr ""
+
+#: forms.py:74
+msgid "select country"
+msgstr ""
+
+#: forms.py:83
+msgid "Country"
+msgstr ""
+
+#: forms.py:91
+msgid "Country field is required"
+msgstr ""
+
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "title"
+msgstr ""
+
+#: forms.py:105
+msgid "please enter a descriptive title for your question"
+msgstr ""
+
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
+msgid "content"
+msgstr ""
+
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
+msgid "tags"
+msgstr ""
+
+#: forms.py:188
+#, python-format
+msgid ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:222 skins/default/templates/question_retag.html:58
+msgid "tags are required"
+msgstr ""
+
+#: forms.py:232
+#, python-format
+msgid "please use %(tag_count)d tag or less"
+msgid_plural "please use %(tag_count)d tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:240
+#, python-format
+msgid "At least one of the following tags is required : %(tags)s"
+msgstr ""
+
+#: forms.py:249
+#, python-format
+msgid "each tag must be shorter than %(max_chars)d character"
+msgid_plural "each tag must be shorter than %(max_chars)d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
+
+#: forms.py:294
+msgid "community wiki (karma is not awarded & many others can edit wiki post)"
+msgstr ""
+
+#: forms.py:295
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+
+#: forms.py:311
+msgid "update summary:"
+msgstr ""
+
+#: forms.py:312
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+
+#: forms.py:386
+msgid "Enter number of points to add or subtract"
+msgstr ""
+
+#: forms.py:400 const/__init__.py:253
+msgid "approved"
+msgstr ""
+
+#: forms.py:401 const/__init__.py:254
+msgid "watched"
+msgstr ""
+
+#: forms.py:402 const/__init__.py:255
+msgid "suspended"
+msgstr ""
+
+#: forms.py:403 const/__init__.py:256
+msgid "blocked"
+msgstr ""
+
+#: forms.py:405
+msgid "administrator"
+msgstr ""
+
+#: forms.py:406 const/__init__.py:252
+msgid "moderator"
+msgstr ""
+
+#: forms.py:426
+msgid "Change status to"
+msgstr ""
+
+#: forms.py:453
+msgid "which one?"
+msgstr ""
+
+#: forms.py:474
+msgid "Cannot change own status"
+msgstr ""
+
+#: forms.py:480
+msgid "Cannot turn other user to moderator"
+msgstr ""
+
+#: forms.py:487
+msgid "Cannot change status of another moderator"
+msgstr ""
+
+#: forms.py:493
+msgid "Cannot change status to admin"
+msgstr ""
+
+#: forms.py:499
+#, python-format
+msgid ""
+"If you wish to change %(username)s's status, please make a meaningful "
+"selection."
+msgstr ""
+
+#: forms.py:508
+msgid "Subject line"
+msgstr ""
+
+#: forms.py:515
+msgid "Message text"
+msgstr ""
+
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr ""
+
+#: forms.py:531
+msgid "Email:"
+msgstr ""
+
+#: forms.py:533
+msgid "Your message:"
+msgstr ""
+
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr ""
+
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr ""
+
+#: forms.py:599
+msgid "ask anonymously"
+msgstr ""
+
+#: forms.py:601
+msgid "Check if you do not want to reveal your name when asking this question"
+msgstr ""
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
+msgid ""
+"You have asked this question anonymously, if you decide to reveal your "
+"identity, please check this box."
+msgstr ""
+
+#: forms.py:773
+msgid "reveal identity"
+msgstr ""
+
+#: forms.py:831
+msgid ""
+"Sorry, only owner of the anonymous question can reveal his or her identity, "
+"please uncheck the box"
+msgstr ""
+
+#: forms.py:844
+msgid ""
+"Sorry, apparently rules have just changed - it is no longer possible to ask "
+"anonymously. Please either check the \"reveal identity\" box or reload this "
+"page and try editing the question again."
+msgstr ""
+
+#: forms.py:888
+msgid "Real name"
+msgstr ""
+
+#: forms.py:895
+msgid "Website"
+msgstr ""
+
+#: forms.py:902
+msgid "City"
+msgstr ""
+
+#: forms.py:911
+msgid "Show country"
+msgstr ""
+
+#: forms.py:916
+msgid "Date of birth"
+msgstr ""
+
+#: forms.py:917
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr ""
+
+#: forms.py:923
+msgid "Profile"
+msgstr ""
+
+#: forms.py:932
+msgid "Screen name"
+msgstr ""
+
+#: forms.py:963 forms.py:964
+msgid "this email has already been registered, please use another one"
+msgstr ""
+
+#: forms.py:971
+msgid "Choose email tag filter"
+msgstr ""
+
+#: forms.py:1018
+msgid "Asked by me"
+msgstr ""
+
+#: forms.py:1021
+msgid "Answered by me"
+msgstr ""
+
+#: forms.py:1024
+msgid "Individually selected"
+msgstr ""
+
+#: forms.py:1027
+msgid "Entire forum (tag filtered)"
+msgstr ""
+
+#: forms.py:1031
+msgid "Comments and posts mentioning me"
+msgstr ""
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr ""
+
+#: forms.py:1115
+msgid "okay, let's try!"
+msgstr ""
+
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr ""
+
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
+msgid "about/"
+msgstr ""
+
+#: urls.py:42
+msgid "faq/"
+msgstr ""
+
+#: urls.py:43
+msgid "privacy/"
+msgstr ""
+
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
+msgid "answers/"
+msgstr ""
+
+#: urls.py:46 urls.py:87 urls.py:212
+msgid "edit/"
+msgstr ""
+
+#: urls.py:51 urls.py:117
+msgid "revisions/"
+msgstr ""
+
+#: urls.py:61
+msgid "questions"
+msgstr ""
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
+msgid "questions/"
+msgstr ""
+
+#: urls.py:82
+msgid "ask/"
+msgstr ""
+
+#: urls.py:92
+msgid "retag/"
+msgstr ""
+
+#: urls.py:97
+msgid "close/"
+msgstr ""
+
+#: urls.py:102
+msgid "reopen/"
+msgstr ""
+
+#: urls.py:107
+msgid "answer/"
+msgstr ""
+
+#: urls.py:112
+msgid "vote/"
+msgstr ""
+
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
+msgid "tags/"
+msgstr ""
+
+#: urls.py:201
+msgid "subscribe-for-tags/"
+msgstr ""
+
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
+msgid "users/"
+msgstr ""
+
+#: urls.py:219
+msgid "subscriptions/"
+msgstr ""
+
+#: urls.py:231
+msgid "users/update_has_custom_avatar/"
+msgstr ""
+
+#: urls.py:236 urls.py:241
+msgid "badges/"
+msgstr ""
+
+#: urls.py:246
+msgid "messages/"
+msgstr ""
+
+#: urls.py:246
+msgid "markread/"
+msgstr ""
+
+#: urls.py:262
+msgid "upload/"
+msgstr ""
+
+#: urls.py:263
+msgid "feedback/"
+msgstr ""
+
+#: urls.py:305
+msgid "question/"
+msgstr ""
+
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
+msgid "account/"
+msgstr ""
+
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr ""
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr ""
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:32
+msgid "Peer Pressure: minimum downvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:41
+msgid "Teacher: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:50
+msgid "Nice Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:59
+msgid "Good Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:68
+msgid "Great Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:77
+msgid "Nice Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:86
+msgid "Good Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:95
+msgid "Great Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:104
+msgid "Popular Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:113
+msgid "Notable Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:122
+msgid "Famous Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:131
+msgid "Self-Learner: minimum answer upvotes"
+msgstr ""
+
+#: conf/badges.py:140
+msgid "Civic Duty: minimum votes"
+msgstr ""
+
+#: conf/badges.py:149
+msgid "Enlightened Duty: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:158
+msgid "Guru: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:167
+msgid "Necromancer: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:176
+msgid "Necromancer: minimum delay in days"
+msgstr ""
+
+#: conf/badges.py:185
+msgid "Associate Editor: minimum number of edits"
+msgstr ""
+
+#: conf/badges.py:194
+msgid "Favorite Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:203
+msgid "Stellar Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:212
+msgid "Commentator: minimum comments"
+msgstr ""
+
+#: conf/badges.py:221
+msgid "Taxonomist: minimum tag use count"
+msgstr ""
+
+#: conf/badges.py:230
+msgid "Enthusiast: minimum days"
+msgstr ""
+
+#: conf/email.py:15
+msgid "Email and email alert settings"
+msgstr ""
+
+#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr ""
+
+#: conf/email.py:26
+msgid ""
+"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
+"value entered here will overridethe default."
+msgstr ""
+
+#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
+msgid "Maximum number of news entries in an email alert"
+msgstr ""
+
+#: conf/email.py:57
+msgid "Default notification frequency all questions"
+msgstr ""
+
+#: conf/email.py:59
+msgid "Option to define frequency of emailed updates for: all questions."
+msgstr ""
+
+#: conf/email.py:71
+msgid "Default notification frequency questions asked by the user"
+msgstr ""
+
+#: conf/email.py:73
+msgid ""
+"Option to define frequency of emailed updates for: Question asked by the "
+"user."
+msgstr ""
+
+#: conf/email.py:85
+msgid "Default notification frequency questions answered by the user"
+msgstr ""
+
+#: conf/email.py:87
+msgid ""
+"Option to define frequency of emailed updates for: Question answered by the "
+"user."
+msgstr ""
+
+#: conf/email.py:99
+msgid ""
+"Default notification frequency questions individually "
+"selected by the user"
+msgstr ""
+
+#: conf/email.py:102
+msgid ""
+"Option to define frequency of emailed updates for: Question individually "
+"selected by the user."
+msgstr ""
+
+#: conf/email.py:114
+msgid ""
+"Default notification frequency for mentions and "
+"comments"
+msgstr ""
+
+#: conf/email.py:117
+msgid ""
+"Option to define frequency of emailed updates for: Mentions and comments."
+msgstr ""
+
+#: conf/email.py:128
+msgid "Send periodic reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:130
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_unanswered_question_reminders\" (for example, via a cron job "
+"- with an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:143
+msgid "Days before starting to send reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:154
+msgid ""
+"How often to send unanswered question reminders (in days between the "
+"reminders sent)."
+msgstr ""
+
+#: conf/email.py:166
+msgid "Max. number of reminders to send about unanswered questions"
+msgstr ""
+
+#: conf/email.py:177
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: conf/email.py:179
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:192
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:203
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:215
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:227
+msgid "Require email verification before allowing to post"
+msgstr ""
+
+#: conf/email.py:228
+msgid ""
+"Active email verification is done by sending a verification key in email"
+msgstr ""
+
+#: conf/email.py:237
+msgid "Allow only one account per email address"
+msgstr ""
+
+#: conf/email.py:246
+msgid "Fake email for anonymous user"
+msgstr ""
+
+#: conf/email.py:247
+msgid "Use this setting to control gravatar for email-less user"
+msgstr ""
+
+#: conf/email.py:256
+msgid "Allow posting questions by email"
+msgstr ""
+
+#: conf/email.py:258
+msgid ""
+"Before enabling this setting - please fill out IMAP settings in the settings."
+"py file"
+msgstr ""
+
+#: conf/email.py:269
+msgid "Replace space in emailed tags with dash"
+msgstr ""
+
+#: conf/email.py:271
+msgid ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
+msgstr ""
+
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr ""
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr ""
+
+#: conf/external_keys.py:19
+msgid "Google site verification key"
+msgstr ""
+
+#: conf/external_keys.py:21
+#, python-format
+msgid ""
+"This key helps google index your site please obtain is at <a href=\"%(url)s?"
+"hl=%(lang)s\">google webmasters tools site</a>"
+msgstr ""
+
+#: conf/external_keys.py:36
+msgid "Google Analytics key"
+msgstr ""
+
+#: conf/external_keys.py:38
+#, python-format
+msgid ""
+"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
+"use Google Analytics to monitor your site"
+msgstr ""
+
+#: conf/external_keys.py:51
+msgid "Enable recaptcha (keys below are required)"
+msgstr ""
+
+#: conf/external_keys.py:62
+msgid "Recaptcha public key"
+msgstr ""
+
+#: conf/external_keys.py:70
+msgid "Recaptcha private key"
+msgstr ""
+
+#: conf/external_keys.py:72
+#, python-format
+msgid ""
+"Recaptcha is a tool that helps distinguish real people from annoying spam "
+"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:84
+msgid "Facebook public API key"
+msgstr ""
+
+#: conf/external_keys.py:86
+#, python-format
+msgid ""
+"Facebook API key and Facebook secret allow to use Facebook Connect login "
+"method at your site. Please obtain these keys at <a href=\"%(url)s"
+"\">facebook create app</a> site"
+msgstr ""
+
+#: conf/external_keys.py:99
+msgid "Facebook secret key"
+msgstr ""
+
+#: conf/external_keys.py:107
+msgid "Twitter consumer key"
+msgstr ""
+
+#: conf/external_keys.py:109
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:120
+msgid "Twitter consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:128
+msgid "LinkedIn consumer key"
+msgstr ""
+
+#: conf/external_keys.py:130
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr ""
+
+#: conf/external_keys.py:141
+msgid "LinkedIn consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:149
+msgid "ident.ca consumer key"
+msgstr ""
+
+#: conf/external_keys.py:151
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
+msgstr ""
+
+#: conf/external_keys.py:162
+msgid "ident.ca consumer secret"
+msgstr ""
+
+#: conf/flatpages.py:11
+msgid "Flatpages - about, privacy policy, etc."
+msgstr ""
+
+#: conf/flatpages.py:19
+msgid "Text of the Q&A forum About page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:22
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"about\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:32
+msgid "Text of the Q&A forum FAQ page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:35
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"faq\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:46
+msgid "Text of the Q&A forum Privacy Policy (html format)"
+msgstr ""
+
+#: conf/flatpages.py:49
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"privacy\" page to check your input."
+msgstr ""
+
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
+msgstr ""
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
+#, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr ""
+
+#: conf/forum_data_rules.py:33
+msgid "Check to enable community wiki feature"
+msgstr ""
+
+#: conf/forum_data_rules.py:42
+msgid "Allow asking questions anonymously"
+msgstr ""
+
+#: conf/forum_data_rules.py:44
+msgid ""
+"Users do not accrue reputation for anonymous questions and their identity is "
+"not revealed until they change their mind"
+msgstr ""
+
+#: conf/forum_data_rules.py:56
+msgid "Allow posting before logging in"
+msgstr ""
+
+#: conf/forum_data_rules.py:58
+msgid ""
+"Check if you want to allow users start posting questions or answers before "
+"logging in. Enabling this may require adjustments in the user login system "
+"to check for pending posts every time the user logs in. The builtin Askbot "
+"login system supports this feature."
+msgstr ""
+
+#: conf/forum_data_rules.py:73
+msgid "Allow swapping answer with question"
+msgstr ""
+
+#: conf/forum_data_rules.py:75
+msgid ""
+"This setting will help import data from other forums such as zendesk, when "
+"automatic data import fails to detect the original question correctly."
+msgstr ""
+
+#: conf/forum_data_rules.py:87
+msgid "Maximum length of tag (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr ""
+
+#: conf/forum_data_rules.py:135
+msgid "Mandatory tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:138
+msgid ""
+"At least one of these tags will be required for any new or newly edited "
+"question. A mandatory tag may be wildcard, if the wildcard tags are active."
+msgstr ""
+
+#: conf/forum_data_rules.py:150
+msgid "Force lowercase the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:152
+msgid ""
+"Attention: after checking this, please back up the database, and run a "
+"management command: <code>python manage.py fix_question_tags</code> to "
+"globally rename the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:166
+msgid "Format of tag list"
+msgstr ""
+
+#: conf/forum_data_rules.py:168
+msgid ""
+"Select the format to show tags in, either as a simple list, or as a tag cloud"
+msgstr ""
+
+#: conf/forum_data_rules.py:180
+msgid "Use wildcard tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:182
+msgid ""
+"Wildcard tags can be used to follow or ignore many tags at once, a valid "
+"wildcard tag has a single wildcard at the very end"
+msgstr ""
+
+#: conf/forum_data_rules.py:195
+msgid "Default max number of comments to display under posts"
+msgstr ""
+
+#: conf/forum_data_rules.py:206
+#, python-format
+msgid "Maximum comment length, must be < %(max_len)s"
+msgstr ""
+
+#: conf/forum_data_rules.py:216
+msgid "Limit time to edit comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:218
+msgid "If unchecked, there will be no time limit to edit the comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:229
+msgid "Minutes allowed to edit a comment"
+msgstr ""
+
+#: conf/forum_data_rules.py:230
+msgid "To enable this setting, check the previous one"
+msgstr ""
+
+#: conf/forum_data_rules.py:239
+msgid "Save comment by pressing <Enter> key"
+msgstr ""
+
+#: conf/forum_data_rules.py:248
+msgid "Minimum length of search term for Ajax search"
+msgstr ""
+
+#: conf/forum_data_rules.py:249
+msgid "Must match the corresponding database backend setting"
+msgstr ""
+
+#: conf/forum_data_rules.py:258
+msgid "Do not make text query sticky in search"
+msgstr ""
+
+#: conf/forum_data_rules.py:260
+msgid ""
+"Check to disable the \"sticky\" behavior of the search query. This may be "
+"useful if you want to move the search bar away from the default position or "
+"do not like the default sticky behavior of the text search query."
+msgstr ""
+
+#: conf/forum_data_rules.py:273
+msgid "Maximum number of tags per question"
+msgstr ""
+
+#: conf/forum_data_rules.py:285
+msgid "Number of questions to list by default"
+msgstr ""
+
+#: conf/forum_data_rules.py:295
+msgid "What should \"unanswered question\" mean?"
+msgstr ""
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/license.py:13
+msgid "Content License"
+msgstr ""
+
+#: conf/license.py:21
+msgid "Show license clause in the site footer"
+msgstr ""
+
+#: conf/license.py:30
+msgid "Short name for the license"
+msgstr ""
+
+#: conf/license.py:39
+msgid "Full name of the license"
+msgstr ""
+
+#: conf/license.py:40
+msgid "Creative Commons Attribution Share Alike 3.0"
+msgstr ""
+
+#: conf/license.py:48
+msgid "Add link to the license page"
+msgstr ""
+
+#: conf/license.py:57
+msgid "License homepage"
+msgstr ""
+
+#: conf/license.py:59
+msgid "URL of the official page with all the license legal clauses"
+msgstr ""
+
+#: conf/license.py:69
+msgid "Use license logo"
+msgstr ""
+
+#: conf/license.py:78
+msgid "License logo image"
+msgstr ""
+
+#: conf/login_providers.py:13
+msgid "Login provider setings"
+msgstr ""
+
+#: conf/login_providers.py:22
+msgid ""
+"Show alternative login provider buttons on the password \"Sign Up\" page"
+msgstr ""
+
+#: conf/login_providers.py:31
+msgid "Always display local login form and hide \"Askbot\" button."
+msgstr ""
+
+#: conf/login_providers.py:40
+msgid "Activate to allow login with self-hosted wordpress site"
+msgstr ""
+
+#: conf/login_providers.py:41
+msgid ""
+"to activate this feature you must fill out the wordpress xml-rpc setting "
+"bellow"
+msgstr ""
+
+#: conf/login_providers.py:50
+msgid ""
+"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
+"xmlrpc.php"
+msgstr ""
+
+#: conf/login_providers.py:51
+msgid ""
+"To enable, go to Settings->Writing->Remote Publishing and check the box for "
+"XML-RPC"
+msgstr ""
+
+#: conf/login_providers.py:60
+msgid "Upload your icon"
+msgstr ""
+
+#: conf/login_providers.py:90
+#, python-format
+msgid "Activate %(provider)s login"
+msgstr ""
+
+#: conf/login_providers.py:95
+#, python-format
+msgid ""
+"Note: to really enable %(provider)s login some additional parameters will "
+"need to be set in the \"External keys\" section"
+msgstr ""
+
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr ""
+
+#: conf/markup.py:41
+msgid "Enable code-friendly Markdown"
+msgstr ""
+
+#: conf/markup.py:43
+msgid ""
+"If checked, underscore characters will not trigger italic or bold formatting "
+"- bold and italic text can still be marked up with asterisks. Note that "
+"\"MathJax support\" implicitly turns this feature on, because underscores "
+"are heavily used in LaTeX input."
+msgstr ""
+
+#: conf/markup.py:58
+msgid "Mathjax support (rendering of LaTeX)"
+msgstr ""
+
+#: conf/markup.py:60
+#, python-format
+msgid ""
+"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
+"installed on your server in its own directory."
+msgstr ""
+
+#: conf/markup.py:74
+msgid "Base url of MathJax deployment"
+msgstr ""
+
+#: conf/markup.py:76
+msgid ""
+"Note - <strong>MathJax is not included with askbot</strong> - you should "
+"deploy it yourself, preferably at a separate domain and enter url pointing "
+"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+msgstr ""
+
+#: conf/markup.py:91
+msgid "Enable autolinking with specific patterns"
+msgstr ""
+
+#: conf/markup.py:93
+msgid ""
+"If you enable this feature, the application will be able to detect patterns "
+"and auto link to URLs"
+msgstr ""
+
+#: conf/markup.py:106
+msgid "Regexes to detect the link patterns"
+msgstr ""
+
+#: conf/markup.py:108
+msgid ""
+"Enter valid regular expressions for the patters, one per line. For example "
+"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
+"The numbers captured by the pattern in the parentheses will be transferred "
+"to the link url template. Please look up more information about regular "
+"expressions elsewhere."
+msgstr ""
+
+#: conf/markup.py:127
+msgid "URLs for autolinking"
+msgstr ""
+
+#: conf/markup.py:129
+msgid ""
+"Here, please enter url templates for the patterns entered in the previous "
+"setting, also one entry per line. <strong>Make sure that number of lines in "
+"this setting and the previous one are the same</strong> For example template "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
+"shown above and the entry in the post #123 will produce link to the bug 123 "
+"in the redhat bug tracker."
+msgstr ""
+
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
+
+#: conf/minimum_reputation.py:22
+msgid "Upvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:31
+msgid "Downvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:40
+msgid "Answer own question immediately"
+msgstr ""
+
+#: conf/minimum_reputation.py:49
+msgid "Accept own answer"
+msgstr ""
+
+#: conf/minimum_reputation.py:58
+msgid "Flag offensive"
+msgstr ""
+
+#: conf/minimum_reputation.py:67
+msgid "Leave comments"
+msgstr ""
+
+#: conf/minimum_reputation.py:76
+msgid "Delete comments posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:85
+msgid "Delete questions and answers posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:94
+msgid "Upload files"
+msgstr ""
+
+#: conf/minimum_reputation.py:103
+msgid "Close own questions"
+msgstr ""
+
+#: conf/minimum_reputation.py:112
+msgid "Retag questions posted by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:121
+msgid "Reopen own questions"
+msgstr ""
+
+#: conf/minimum_reputation.py:130
+msgid "Edit community wiki posts"
+msgstr ""
+
+#: conf/minimum_reputation.py:139
+msgid "Edit posts authored by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:148
+msgid "View offensive flags"
+msgstr ""
+
+#: conf/minimum_reputation.py:157
+msgid "Close questions asked by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:166
+msgid "Lock posts"
+msgstr ""
+
+#: conf/minimum_reputation.py:175
+msgid "Remove rel=nofollow from own homepage"
+msgstr ""
+
+#: conf/minimum_reputation.py:177
+msgid ""
+"When a search engine crawler will see a rel=nofollow attribute on a link - "
+"the link will not count towards the rank of the users personal site."
+msgstr ""
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
+msgstr ""
+
+#: conf/reputation_changes.py:23
+msgid "Maximum daily reputation gain per user"
+msgstr ""
+
+#: conf/reputation_changes.py:32
+msgid "Gain for receiving an upvote"
+msgstr ""
+
+#: conf/reputation_changes.py:41
+msgid "Gain for the author of accepted answer"
+msgstr ""
+
+#: conf/reputation_changes.py:50
+msgid "Gain for accepting best answer"
+msgstr ""
+
+#: conf/reputation_changes.py:59
+msgid "Gain for post owner on canceled downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:68
+msgid "Gain for voter on canceling downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:78
+msgid "Loss for voter for canceling of answer acceptance"
+msgstr ""
+
+#: conf/reputation_changes.py:88
+msgid "Loss for author whose answer was \"un-accepted\""
+msgstr ""
+
+#: conf/reputation_changes.py:98
+msgid "Loss for giving a downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:108
+msgid "Loss for owner of post that was flagged offensive"
+msgstr ""
+
+#: conf/reputation_changes.py:118
+msgid "Loss for owner of post that was downvoted"
+msgstr ""
+
+#: conf/reputation_changes.py:128
+msgid "Loss for owner of post that was flagged 3 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:138
+msgid "Loss for owner of post that was flagged 5 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:148
+msgid "Loss for post owner when upvote is canceled"
+msgstr ""
+
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_question.py:19
+msgid "Custom sidebar header"
+msgstr ""
+
+#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_question.py:22
+msgid ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_main.py:36
+msgid "Show avatar block in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:38
+msgid "Uncheck this if you want to hide the avatar block from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:49
+msgid "Limit how many avatars will be displayed on the sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:59
+msgid "Show tag selector in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:61
+msgid ""
+"Uncheck this if you want to hide the options for choosing interesting and "
+"ignored tags "
+msgstr ""
+
+#: conf/sidebar_main.py:72
+msgid "Show tag list/cloud in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:74
+msgid ""
+"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_question.py:75
+msgid "Custom sidebar footer"
+msgstr ""
+
+#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_question.py:78
+msgid ""
+"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
+"When using this option (as well as the sidebar header), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:11
+msgid "Question page sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:35
+msgid "Show tag list in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:37
+msgid "Uncheck this if you want to hide the tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_question.py:48
+msgid "Show meta information in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:50
+msgid ""
+"Uncheck this if you want to hide the meta information about the question "
+"(post date, views, last updated). "
+msgstr ""
+
+#: conf/sidebar_question.py:62
+msgid "Show related questions in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:64
+msgid "Uncheck this if you want to hide the list of related questions. "
+msgstr ""
+
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
+
+#: conf/site_modes.py:74
+msgid "Activate a \"Bootstrap\" mode"
+msgstr ""
+
+#: conf/site_modes.py:76
+msgid ""
+"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
+"more suitable for the smaller communities, <strong>WARNING:</strong> your "
+"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
+"changed after you modify this setting."
+msgstr ""
+
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
+
+#: conf/site_settings.py:21
+msgid "Site title for the Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:30
+msgid "Comma separated list of Q&A site keywords"
+msgstr ""
+
+#: conf/site_settings.py:39
+msgid "Copyright message to show in the footer"
+msgstr ""
+
+#: conf/site_settings.py:49
+msgid "Site description for the search engines"
+msgstr ""
+
+#: conf/site_settings.py:58
+msgid "Short name for your Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:67
+msgid "Base URL for your Q&A forum, must start with http or https"
+msgstr ""
+
+#: conf/site_settings.py:78
+msgid "Check to enable greeting for anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:89
+msgid "Text shown in the greeting message shown to the anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:93
+msgid "Use HTML to format the message "
+msgstr ""
+
+#: conf/site_settings.py:102
+msgid "Feedback site URL"
+msgstr ""
+
+#: conf/site_settings.py:104
+msgid "If left empty, a simple internal feedback form will be used instead"
+msgstr ""
+
+#: conf/skin_counter_settings.py:11
+msgid "Skin: view, vote and answer counters"
+msgstr ""
+
+#: conf/skin_counter_settings.py:19
+msgid "Vote counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:29
+msgid "Background color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
+#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
+#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
+#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
+#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
+#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
+#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
+#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
+#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
+#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
+msgid "HTML color name or hex value"
+msgstr ""
+
+#: conf/skin_counter_settings.py:40
+msgid "Foreground color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:51
+msgid "Background color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:61
+msgid "Foreground color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:71
+msgid "Background color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:84
+msgid "Foreground color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:95
+msgid "View counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:105
+msgid "Background color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:116
+msgid "Foreground color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:127
+msgid "Background color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:137
+msgid "Foreground color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:147
+msgid "Background color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:162
+msgid "Foreground color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:173
+msgid "Answer counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:185
+msgid "Background color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:195
+msgid "Foreground color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:205
+msgid "Background color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:215
+msgid "Foreground color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:227
+msgid "Background color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:238
+msgid "Foreground color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:251
+msgid "Background color for accepted"
+msgstr ""
+
+#: conf/skin_counter_settings.py:261
+msgid "Foreground color for accepted answer"
+msgstr ""
+
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
+
+#: conf/skin_general_settings.py:23
+msgid "Q&A site logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:25
+msgid "To change the logo, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/skin_general_settings.py:37
+msgid "Show logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:39
+msgid ""
+"Check if you want to show logo in the forum header or uncheck in the case "
+"you do not want the logo to appear in the default location"
+msgstr ""
+
+#: conf/skin_general_settings.py:51
+msgid "Site favicon"
+msgstr ""
+
+#: conf/skin_general_settings.py:53
+#, python-format
+msgid ""
+"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
+"browser user interface. Please find more information about favicon at <a "
+"href=\"%(favicon_info_url)s\">this page</a>."
+msgstr ""
+
+#: conf/skin_general_settings.py:69
+msgid "Password login button"
+msgstr ""
+
+#: conf/skin_general_settings.py:71
+msgid ""
+"An 88x38 pixel image that is used on the login screen for the password login "
+"button."
+msgstr ""
+
+#: conf/skin_general_settings.py:84
+msgid "Show all UI functions to all users"
+msgstr ""
+
+#: conf/skin_general_settings.py:86
+msgid ""
+"If checked, all forum functions will be shown to users, regardless of their "
+"reputation. However to use those functions, moderation rules, reputation and "
+"other limits will still apply."
+msgstr ""
+
+#: conf/skin_general_settings.py:101
+msgid "Select skin"
+msgstr ""
+
+#: conf/skin_general_settings.py:112
+msgid "Customize HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:121
+msgid "Custom portion of the HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:123
+msgid ""
+"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
+"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
+"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
+"meta&gt; may be added. Please, keep in mind that adding external javascript "
+"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
+"pages. Instead, it will be more efficient to place links to the javascript "
+"files into the footer. <strong>Note:</strong> if you do use this setting, "
+"please test the site with the W3C HTML validator service."
+msgstr ""
+
+#: conf/skin_general_settings.py:145
+msgid "Custom header additions"
+msgstr ""
+
+#: conf/skin_general_settings.py:147
+msgid ""
+"Header is the bar at the top of the content that contains user info and site "
+"links, and is common to all pages. Use this area to enter contents of the "
+"headerin the HTML format. When customizing the site header (as well as "
+"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
+"sure that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:162
+msgid "Site footer mode"
+msgstr ""
+
+#: conf/skin_general_settings.py:164
+msgid ""
+"Footer is the bottom portion of the content, which is common to all pages. "
+"You can disable, customize, or use the default footer."
+msgstr ""
+
+#: conf/skin_general_settings.py:181
+msgid "Custom footer (HTML format)"
+msgstr ""
+
+#: conf/skin_general_settings.py:183
+msgid ""
+"<strong>To enable this function</strong>, please select option 'customize' "
+"in the \"Site footer mode\" above. Use this area to enter contents of the "
+"footer in the HTML format. When customizing the site footer (as well as the "
+"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
+"that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:198
+msgid "Apply custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:200
+msgid ""
+"Check if you want to change appearance of your form by adding custom style "
+"sheet rules (please see the next item)"
+msgstr ""
+
+#: conf/skin_general_settings.py:212
+msgid "Custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:214
+msgid ""
+"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
+"option above. The CSS rules added in this window will be applied after the "
+"default style sheet rules. The custom style sheet will be served dynamically "
+"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
+"depends (default is empty string) on the url configuration in your urls.py."
+msgstr ""
+
+#: conf/skin_general_settings.py:230
+msgid "Add custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:233
+msgid "Check to enable javascript that you can enter in the next field"
+msgstr ""
+
+#: conf/skin_general_settings.py:243
+msgid "Custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:245
+msgid ""
+"Type or paste plain javascript that you would like to run on your site. Link "
+"to the script will be inserted at the bottom of the HTML output and will be "
+"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
+"your javascript code may break other functionalities of the site and that "
+"the behavior may not be consistent across different browsers (<strong>to "
+"enable your custom code</strong>, check \"Add custom javascript\" option "
+"above)."
+msgstr ""
+
+#: conf/skin_general_settings.py:263
+msgid "Skin media revision number"
+msgstr ""
+
+#: conf/skin_general_settings.py:265
+msgid "Will be set automatically but you can modify it if necessary."
+msgstr ""
+
+#: conf/skin_general_settings.py:276
+msgid "Hash to update the media revision number automatically."
+msgstr ""
+
+#: conf/skin_general_settings.py:280
+msgid "Will be set automatically, it is not necesary to modify manually."
+msgstr ""
+
+#: conf/social_sharing.py:11
+msgid "Sharing content on social networks"
+msgstr ""
+
+#: conf/social_sharing.py:20
+msgid "Check to enable sharing of questions on Twitter"
+msgstr ""
+
+#: conf/social_sharing.py:29
+msgid "Check to enable sharing of questions on Facebook"
+msgstr ""
+
+#: conf/social_sharing.py:38
+msgid "Check to enable sharing of questions on LinkedIn"
+msgstr ""
+
+#: conf/social_sharing.py:47
+msgid "Check to enable sharing of questions on Identi.ca"
+msgstr ""
+
+#: conf/social_sharing.py:56
+msgid "Check to enable sharing of questions on Google+"
+msgstr ""
+
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
+msgstr ""
+
+#: conf/spam_and_moderation.py:18
+msgid "Enable Akismet spam detection(keys below are required)"
+msgstr ""
+
+#: conf/spam_and_moderation.py:21
+#, python-format
+msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
+msgstr ""
+
+#: conf/spam_and_moderation.py:31
+msgid "Akismet key for spam detection"
+msgstr ""
+
+#: conf/super_groups.py:5
+msgid "Reputation, Badges, Votes & Flags"
+msgstr ""
+
+#: conf/super_groups.py:6
+msgid "Static Content, URLS & UI"
+msgstr ""
+
+#: conf/super_groups.py:7
+msgid "Data rules & Formatting"
+msgstr ""
+
+#: conf/super_groups.py:8
+msgid "External Services"
+msgstr ""
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:14
+msgid "User settings"
+msgstr ""
+
+#: conf/user_settings.py:23
+msgid "Allow editing user screen name"
+msgstr ""
+
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr ""
+
+#: conf/user_settings.py:41
+msgid "Allow account recovery by email"
+msgstr ""
+
+#: conf/user_settings.py:50
+msgid "Allow adding and removing login methods"
+msgstr ""
+
+#: conf/user_settings.py:60
+msgid "Minimum allowed length for screen name"
+msgstr ""
+
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr ""
+
+#: conf/user_settings.py:99
+msgid ""
+"This option allows you to set the default avatar type for email addresses "
+"without associated gravatar images. For more information, please visit <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:109
+msgid "Name for the Anonymous user"
+msgstr ""
+
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
+
+#: conf/vote_rules.py:24
+msgid "Number of votes a user can cast per day"
+msgstr ""
+
+#: conf/vote_rules.py:33
+msgid "Maximum number of flags per user per day"
+msgstr ""
+
+#: conf/vote_rules.py:42
+msgid "Threshold for warning about remaining daily votes"
+msgstr ""
+
+#: conf/vote_rules.py:51
+msgid "Number of days to allow canceling votes"
+msgstr ""
+
+#: conf/vote_rules.py:60
+msgid "Number of days required before answering own question"
+msgstr ""
+
+#: conf/vote_rules.py:69
+msgid "Number of flags required to automatically hide posts"
+msgstr ""
+
+#: conf/vote_rules.py:78
+msgid "Number of flags required to automatically delete posts"
+msgstr ""
+
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr ""
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr ""
+
+#: const/__init__.py:10
+msgid "duplicate question"
+msgstr ""
+
+#: const/__init__.py:11
+msgid "question is off-topic or not relevant"
+msgstr ""
+
+#: const/__init__.py:12
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: const/__init__.py:13
+msgid "not a real question"
+msgstr ""
+
+#: const/__init__.py:14
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: const/__init__.py:15
+msgid "question is not relevant or outdated"
+msgstr ""
+
+#: const/__init__.py:16
+msgid "question contains offensive or malicious remarks"
+msgstr ""
+
+#: const/__init__.py:17
+msgid "spam or advertising"
+msgstr ""
+
+#: const/__init__.py:18
+msgid "too localized"
+msgstr ""
+
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
+msgid "newest"
+msgstr ""
+
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
+msgid "oldest"
+msgstr ""
+
+#: const/__init__.py:45
+msgid "active"
+msgstr ""
+
+#: const/__init__.py:46
+msgid "inactive"
+msgstr ""
+
+#: const/__init__.py:47
+msgid "hottest"
+msgstr ""
+
+#: const/__init__.py:48
+msgid "coldest"
+msgstr ""
+
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
+msgid "most voted"
+msgstr ""
+
+#: const/__init__.py:50
+msgid "least voted"
+msgstr ""
+
+#: const/__init__.py:51
+msgid "relevance"
+msgstr ""
+
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
+msgid "all"
+msgstr ""
+
+#: const/__init__.py:64
+msgid "unanswered"
+msgstr ""
+
+#: const/__init__.py:65
+msgid "favorite"
+msgstr ""
+
+#: const/__init__.py:70
+msgid "list"
+msgstr ""
+
+#: const/__init__.py:71
+msgid "cloud"
+msgstr ""
+
+#: const/__init__.py:79
+msgid "Question has no answers"
+msgstr ""
+
+#: const/__init__.py:80
+msgid "Question has no accepted answers"
+msgstr ""
+
+#: const/__init__.py:125
+msgid "asked a question"
+msgstr ""
+
+#: const/__init__.py:126
+msgid "answered a question"
+msgstr ""
+
+#: const/__init__.py:127 const/__init__.py:203
+msgid "commented question"
+msgstr ""
+
+#: const/__init__.py:128 const/__init__.py:204
+msgid "commented answer"
+msgstr ""
+
+#: const/__init__.py:129
+msgid "edited question"
+msgstr ""
+
+#: const/__init__.py:130
+msgid "edited answer"
+msgstr ""
+
+#: const/__init__.py:131
+msgid "received badge"
+msgstr ""
+
+#: const/__init__.py:132
+msgid "marked best answer"
+msgstr ""
+
+#: const/__init__.py:133
+msgid "upvoted"
+msgstr ""
+
+#: const/__init__.py:134
+msgid "downvoted"
+msgstr ""
+
+#: const/__init__.py:135
+msgid "canceled vote"
+msgstr ""
+
+#: const/__init__.py:136
+msgid "deleted question"
+msgstr ""
+
+#: const/__init__.py:137
+msgid "deleted answer"
+msgstr ""
+
+#: const/__init__.py:138
+msgid "marked offensive"
+msgstr ""
+
+#: const/__init__.py:139
+msgid "updated tags"
+msgstr ""
+
+#: const/__init__.py:140
+msgid "selected favorite"
+msgstr ""
+
+#: const/__init__.py:141
+msgid "completed user profile"
+msgstr ""
+
+#: const/__init__.py:142
+msgid "email update sent to user"
+msgstr ""
+
+#: const/__init__.py:145
+msgid "reminder about unanswered questions sent"
+msgstr ""
+
+#: const/__init__.py:149
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:151
+msgid "mentioned in the post"
+msgstr ""
+
+#: const/__init__.py:202
+msgid "answered question"
+msgstr ""
+
+#: const/__init__.py:205
+msgid "accepted answer"
+msgstr ""
+
+#: const/__init__.py:209
+msgid "[closed]"
+msgstr ""
+
+#: const/__init__.py:210
+msgid "[deleted]"
+msgstr ""
+
+#: const/__init__.py:211 views/readers.py:566
+msgid "initial version"
+msgstr ""
+
+#: const/__init__.py:212
+msgid "retagged"
+msgstr ""
+
+#: const/__init__.py:220
+msgid "off"
+msgstr ""
+
+#: const/__init__.py:221
+msgid "exclude ignored"
+msgstr ""
+
+#: const/__init__.py:222
+msgid "only selected"
+msgstr ""
+
+#: const/__init__.py:226
+msgid "instantly"
+msgstr ""
+
+#: const/__init__.py:227
+msgid "daily"
+msgstr ""
+
+#: const/__init__.py:228
+msgid "weekly"
+msgstr ""
+
+#: const/__init__.py:229
+msgid "no email"
+msgstr ""
+
+#: const/__init__.py:236
+msgid "identicon"
+msgstr ""
+
+#: const/__init__.py:237
+msgid "mystery-man"
+msgstr ""
+
+#: const/__init__.py:238
+msgid "monsterid"
+msgstr ""
+
+#: const/__init__.py:239
+msgid "wavatar"
+msgstr ""
+
+#: const/__init__.py:240
+msgid "retro"
+msgstr ""
+
+#: const/__init__.py:287 skins/default/templates/badges.html:38
+msgid "gold"
+msgstr ""
+
+#: const/__init__.py:288 skins/default/templates/badges.html:48
+msgid "silver"
+msgstr ""
+
+#: const/__init__.py:289 skins/default/templates/badges.html:55
+msgid "bronze"
+msgstr ""
+
+#: const/__init__.py:301
+msgid "None"
+msgstr ""
+
+#: const/__init__.py:302
+msgid "Gravatar"
+msgstr ""
+
+#: const/__init__.py:303
+msgid "Uploaded Avatar"
+msgstr ""
+
+#: const/message_keys.py:21
+msgid "most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:22
+msgid "click to see most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:23
+msgid "by relevance"
+msgstr ""
+
+#: const/message_keys.py:24
+msgid "click to see the oldest questions"
+msgstr ""
+
+#: const/message_keys.py:25
+msgid "by date"
+msgstr ""
+
+#: const/message_keys.py:26
+msgid "click to see the newest questions"
+msgstr ""
+
+#: const/message_keys.py:27
+msgid "click to see the least recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:28
+msgid "by activity"
+msgstr ""
+
+#: const/message_keys.py:29
+msgid "click to see the most recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:30
+msgid "click to see the least answered questions"
+msgstr ""
+
+#: const/message_keys.py:31
+msgid "by answers"
+msgstr ""
+
+#: const/message_keys.py:32
+msgid "click to see the most answered questions"
+msgstr ""
+
+#: const/message_keys.py:33
+msgid "click to see least voted questions"
+msgstr ""
+
+#: const/message_keys.py:34
+msgid "by votes"
+msgstr ""
+
+#: const/message_keys.py:35
+msgid "click to see most voted questions"
+msgstr ""
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
+msgid ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
+msgid "i-names are not supported"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:233
+#, python-format
+msgid "Please enter your %(username_token)s"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:259
+msgid "Please, enter your user name"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:263
+msgid "Please, enter your password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
+msgid "Please, enter your new password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:285
+msgid "Passwords did not match"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:297
+#, python-format
+msgid "Please choose password > %(len)s characters"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:335
+msgid "Current password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:346
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:399
+msgid "Sorry, we don't have this email address in the database"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:435
+msgid "Your user name (<i>required</i>)"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:450
+msgid "sorry, there is no such user name"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
+msgid "signin/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:10
+msgid "signout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:12
+msgid "complete/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:15
+msgid "complete-oauth/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:19
+msgid "register/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:21
+msgid "signup/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:25
+msgid "logout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:30
+msgid "recover/"
+msgstr ""
+
+#: deps/django_authopenid/util.py:378
+#, python-format
+msgid "%(site)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
+msgid "Create a password-protected account"
+msgstr ""
+
+#: deps/django_authopenid/util.py:385
+msgid "Change your password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:473
+msgid "Sign in with Yahoo"
+msgstr ""
+
+#: deps/django_authopenid/util.py:480
+msgid "AOL screen name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:488
+msgid "OpenID url"
+msgstr ""
+
+#: deps/django_authopenid/util.py:517
+msgid "Flickr user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:525
+msgid "Technorati user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:533
+msgid "WordPress blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:541
+msgid "Blogger blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:549
+msgid "LiveJournal blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:557
+msgid "ClaimID user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:565
+msgid "Vidoop user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:573
+msgid "Verisign user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:608
+#, python-format
+msgid "Change your %(provider)s password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:612
+#, python-format
+msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:621
+#, python-format
+msgid "Create password for %(provider)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:625
+#, python-format
+msgid "Connect your %(provider)s account to %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:634
+#, python-format
+msgid "Signin with %(provider)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:641
+#, python-format
+msgid "Sign in with your %(provider)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:149
+#, python-format
+msgid "OpenID %(openid_url)s is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
+#, python-format
+msgid ""
+"Unfortunately, there was some problem when connecting to %(provider)s, "
+"please try again or use another provider"
+msgstr ""
+
+#: deps/django_authopenid/views.py:358
+msgid "Your new password saved"
+msgstr ""
+
+#: deps/django_authopenid/views.py:462
+msgid "The login password combination was not correct"
+msgstr ""
+
+#: deps/django_authopenid/views.py:564
+msgid "Please click any of the icons below to sign in"
+msgstr ""
+
+#: deps/django_authopenid/views.py:566
+msgid "Account recovery email sent"
+msgstr ""
+
+#: deps/django_authopenid/views.py:569
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: deps/django_authopenid/views.py:571
+msgid "If you wish, please add, remove or re-validate your login methods"
+msgstr ""
+
+#: deps/django_authopenid/views.py:573
+msgid "Please wait a second! Your account is recovered, but ..."
+msgstr ""
+
+#: deps/django_authopenid/views.py:575
+msgid "Sorry, this account recovery key has expired or is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:648
+#, python-format
+msgid "Login method %(provider_name)s does not exist"
+msgstr ""
+
+#: deps/django_authopenid/views.py:654
+msgid "Oops, sorry - there was some error - please try again"
+msgstr ""
+
+#: deps/django_authopenid/views.py:745
+#, python-format
+msgid "Your %(provider)s login works fine"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
+#, python-format
+msgid "your email needs to be validated see %(details_url)s"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1083
+#, python-format
+msgid "Recover your %(site)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1155
+msgid "Please check your email and visit the enclosed link."
+msgstr ""
+
+#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
+msgid "Site"
+msgstr ""
+
+#: deps/livesettings/values.py:69
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:128
+msgid "Base Settings"
+msgstr ""
+
+#: deps/livesettings/values.py:235
+msgid "Default value: \"\""
+msgstr ""
+
+#: deps/livesettings/values.py:242
+msgid "Default value: "
+msgstr ""
+
+#: deps/livesettings/values.py:245
+#, python-format
+msgid "Default value: %s"
+msgstr ""
+
+#: deps/livesettings/values.py:629
+#, python-format
+msgid "Allowed image file types are %(types)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+msgstr[1] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, python-format
+msgid "Group settings: %(name)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr ""
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:63
+msgid "Please accept the best answer for this question:"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:65
+msgid "Please accept the best answer for these questions:"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:414
+#, python-format
+msgid "%(question_count)d updated question about %(topics)s"
+msgid_plural "%(question_count)d updated questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:449
+msgid "new question"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:474
+#, python-format
+msgid ""
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
+
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
+msgid "%(question_count)d unanswered question about %(topics)s"
+msgid_plural "%(question_count)d unanswered questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr ""
+
+#: models/__init__.py:320
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"blocked"
+msgstr ""
+
+#: models/__init__.py:324
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"suspended"
+msgstr ""
+
+#: models/__init__.py:337
+#, python-format
+msgid ""
+">%(points)s points required to accept or unaccept your own answer to your "
+"own question"
+msgstr ""
+
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+
+#: models/__init__.py:367
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+msgstr ""
+
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr ""
+
+#: models/__init__.py:394
+msgid "Sorry your account appears to be blocked "
+msgstr ""
+
+#: models/__init__.py:399
+msgid "Sorry your account appears to be suspended "
+msgstr ""
+
+#: models/__init__.py:409
+#, python-format
+msgid ">%(points)s points required to upvote"
+msgstr ""
+
+#: models/__init__.py:415
+#, python-format
+msgid ">%(points)s points required to downvote"
+msgstr ""
+
+#: models/__init__.py:430
+msgid "Sorry, blocked users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:431
+msgid "Sorry, suspended users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
+
+#: models/__init__.py:482
+#, python-format
+msgid ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minute from posting"
+msgid_plural ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minutes from posting"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:494
+msgid "Sorry, but only post owners or moderators can edit comments"
+msgstr ""
+
+#: models/__init__.py:519
+msgid ""
+"Sorry, since your account is suspended you can comment only your own posts"
+msgstr ""
+
+#: models/__init__.py:523
+#, python-format
+msgid ""
+"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
+"required. You can still comment your own posts and answers to your questions"
+msgstr ""
+
+#: models/__init__.py:553
+msgid ""
+"This post has been deleted and can be seen only by post owners, site "
+"administrators and moderators"
+msgstr ""
+
+#: models/__init__.py:570
+msgid ""
+"Sorry, only moderators, site administrators and post owners can edit deleted "
+"posts"
+msgstr ""
+
+#: models/__init__.py:585
+msgid "Sorry, since your account is blocked you cannot edit posts"
+msgstr ""
+
+#: models/__init__.py:589
+msgid "Sorry, since your account is suspended you can edit only your own posts"
+msgstr ""
+
+#: models/__init__.py:594
+#, python-format
+msgid ""
+"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:601
+#, python-format
+msgid ""
+"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:664
+msgid ""
+"Sorry, cannot delete your question since it has an upvoted answer posted by "
+"someone else"
+msgid_plural ""
+"Sorry, cannot delete your question since it has some upvoted answers posted "
+"by other users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:679
+msgid "Sorry, since your account is blocked you cannot delete posts"
+msgstr ""
+
+#: models/__init__.py:683
+msgid ""
+"Sorry, since your account is suspended you can delete only your own posts"
+msgstr ""
+
+#: models/__init__.py:687
+#, python-format
+msgid ""
+"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
+"is required"
+msgstr ""
+
+#: models/__init__.py:707
+msgid "Sorry, since your account is blocked you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:711
+msgid "Sorry, since your account is suspended you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:715
+#, python-format
+msgid ""
+"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:724
+#, python-format
+msgid ""
+"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:748
+#, python-format
+msgid ""
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
+msgstr ""
+
+#: models/__init__.py:754
+#, python-format
+msgid ""
+"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
+msgid ""
+"Sorry, only question owners, site administrators and moderators can retag "
+"deleted questions"
+msgstr ""
+
+#: models/__init__.py:894
+msgid "Sorry, since your account is blocked you cannot retag questions"
+msgstr ""
+
+#: models/__init__.py:898
+msgid ""
+"Sorry, since your account is suspended you can retag only your own questions"
+msgstr ""
+
+#: models/__init__.py:902
+#, python-format
+msgid ""
+"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:921
+msgid "Sorry, since your account is blocked you cannot delete comment"
+msgstr ""
+
+#: models/__init__.py:925
+msgid ""
+"Sorry, since your account is suspended you can delete only your own comments"
+msgstr ""
+
+#: models/__init__.py:929
+#, python-format
+msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
+
+#: models/__init__.py:1469 utils/functions.py:78
+#, python-format
+msgid "on %(date)s"
+msgstr ""
+
+#: models/__init__.py:1471
+msgid "in two days"
+msgstr ""
+
+#: models/__init__.py:1473
+msgid "tomorrow"
+msgstr ""
+
+#: models/__init__.py:1475
+#, python-format
+msgid "in %(hr)d hour"
+msgid_plural "in %(hr)d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1477
+#, python-format
+msgid "in %(min)d min"
+msgid_plural "in %(min)d mins"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1478
+#, python-format
+msgid "%(days)d day"
+msgid_plural "%(days)d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1480
+#, python-format
+msgid ""
+"New users must wait %(days)s before answering their own question. You can "
+"post an answer %(left)s"
+msgstr ""
+
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
+msgid "Anonymous"
+msgstr ""
+
+#: models/__init__.py:1749
+msgid "Site Adminstrator"
+msgstr ""
+
+#: models/__init__.py:1751
+msgid "Forum Moderator"
+msgstr ""
+
+#: models/__init__.py:1753
+msgid "Suspended User"
+msgstr ""
+
+#: models/__init__.py:1755
+msgid "Blocked User"
+msgstr ""
+
+#: models/__init__.py:1757
+msgid "Registered User"
+msgstr ""
+
+#: models/__init__.py:1759
+msgid "Watched User"
+msgstr ""
+
+#: models/__init__.py:1761
+msgid "Approved User"
+msgstr ""
+
+#: models/__init__.py:1870
+#, python-format
+msgid "%(username)s karma is %(reputation)s"
+msgstr ""
+
+#: models/__init__.py:1880
+#, python-format
+msgid "one gold badge"
+msgid_plural "%(count)d gold badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1887
+#, python-format
+msgid "one silver badge"
+msgid_plural "%(count)d silver badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1894
+#, python-format
+msgid "one bronze badge"
+msgid_plural "%(count)d bronze badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1905
+#, python-format
+msgid "%(item1)s and %(item2)s"
+msgstr ""
+
+#: models/__init__.py:1909
+#, python-format
+msgid "%(user)s has %(badges)s"
+msgstr ""
+
+#: models/__init__.py:2389
+#, python-format
+msgid "\"%(title)s\""
+msgstr ""
+
+#: models/__init__.py:2542
+#, python-format
+msgid ""
+"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
+"href=\"%(user_profile)s\">your profile</a>."
+msgstr ""
+
+#: models/__init__.py:2745 views/commands.py:460
+msgid "Your tag subscription was saved, thanks!"
+msgstr ""
+
+#: models/badges.py:129
+#, python-format
+msgid "Deleted own post with %(votes)s or more upvotes"
+msgstr ""
+
+#: models/badges.py:133
+msgid "Disciplined"
+msgstr ""
+
+#: models/badges.py:151
+#, python-format
+msgid "Deleted own post with %(votes)s or more downvotes"
+msgstr ""
+
+#: models/badges.py:155
+msgid "Peer Pressure"
+msgstr ""
+
+#: models/badges.py:174
+#, python-format
+msgid "Received at least %(votes)s upvote for an answer for the first time"
+msgstr ""
+
+#: models/badges.py:178
+msgid "Teacher"
+msgstr ""
+
+#: models/badges.py:218
+msgid "Supporter"
+msgstr ""
+
+#: models/badges.py:219
+msgid "First upvote"
+msgstr ""
+
+#: models/badges.py:227
+msgid "Critic"
+msgstr ""
+
+#: models/badges.py:228
+msgid "First downvote"
+msgstr ""
+
+#: models/badges.py:237
+msgid "Civic Duty"
+msgstr ""
+
+#: models/badges.py:238
+#, python-format
+msgid "Voted %(num)s times"
+msgstr ""
+
+#: models/badges.py:252
+#, python-format
+msgid "Answered own question with at least %(num)s up votes"
+msgstr ""
+
+#: models/badges.py:256
+msgid "Self-Learner"
+msgstr ""
+
+#: models/badges.py:304
+msgid "Nice Answer"
+msgstr ""
+
+#: models/badges.py:309 models/badges.py:321 models/badges.py:333
+#, python-format
+msgid "Answer voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:316
+msgid "Good Answer"
+msgstr ""
+
+#: models/badges.py:328
+msgid "Great Answer"
+msgstr ""
+
+#: models/badges.py:340
+msgid "Nice Question"
+msgstr ""
+
+#: models/badges.py:345 models/badges.py:357 models/badges.py:369
+#, python-format
+msgid "Question voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:352
+msgid "Good Question"
+msgstr ""
+
+#: models/badges.py:364
+msgid "Great Question"
+msgstr ""
+
+#: models/badges.py:376
+msgid "Student"
+msgstr ""
+
+#: models/badges.py:381
+msgid "Asked first question with at least one up vote"
+msgstr ""
+
+#: models/badges.py:414
+msgid "Popular Question"
+msgstr ""
+
+#: models/badges.py:418 models/badges.py:429 models/badges.py:441
+#, python-format
+msgid "Asked a question with %(views)s views"
+msgstr ""
+
+#: models/badges.py:425
+msgid "Notable Question"
+msgstr ""
+
+#: models/badges.py:436
+msgid "Famous Question"
+msgstr ""
+
+#: models/badges.py:450
+msgid "Asked a question and accepted an answer"
+msgstr ""
+
+#: models/badges.py:453
+msgid "Scholar"
+msgstr ""
+
+#: models/badges.py:495
+msgid "Enlightened"
+msgstr ""
+
+#: models/badges.py:499
+#, python-format
+msgid "First answer was accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:507
+msgid "Guru"
+msgstr ""
+
+#: models/badges.py:510
+#, python-format
+msgid "Answer accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:518
+#, python-format
+msgid ""
+"Answered a question more than %(days)s days later with at least %(votes)s "
+"votes"
+msgstr ""
+
+#: models/badges.py:525
+msgid "Necromancer"
+msgstr ""
+
+#: models/badges.py:548
+msgid "Citizen Patrol"
+msgstr ""
+
+#: models/badges.py:551
+msgid "First flagged post"
+msgstr ""
+
+#: models/badges.py:563
+msgid "Cleanup"
+msgstr ""
+
+#: models/badges.py:566
+msgid "First rollback"
+msgstr ""
+
+#: models/badges.py:577
+msgid "Pundit"
+msgstr ""
+
+#: models/badges.py:580
+msgid "Left 10 comments with score of 10 or more"
+msgstr ""
+
+#: models/badges.py:612
+msgid "Editor"
+msgstr ""
+
+#: models/badges.py:615
+msgid "First edit"
+msgstr ""
+
+#: models/badges.py:623
+msgid "Associate Editor"
+msgstr ""
+
+#: models/badges.py:627
+#, python-format
+msgid "Edited %(num)s entries"
+msgstr ""
+
+#: models/badges.py:634
+msgid "Organizer"
+msgstr ""
+
+#: models/badges.py:637
+msgid "First retag"
+msgstr ""
+
+#: models/badges.py:644
+msgid "Autobiographer"
+msgstr ""
+
+#: models/badges.py:647
+msgid "Completed all user profile fields"
+msgstr ""
+
+#: models/badges.py:663
+#, python-format
+msgid "Question favorited by %(num)s users"
+msgstr ""
+
+#: models/badges.py:689
+msgid "Stellar Question"
+msgstr ""
+
+#: models/badges.py:698
+msgid "Favorite Question"
+msgstr ""
+
+#: models/badges.py:710
+msgid "Enthusiast"
+msgstr ""
+
+#: models/badges.py:714
+#, python-format
+msgid "Visited site every day for %(num)s days in a row"
+msgstr ""
+
+#: models/badges.py:732
+msgid "Commentator"
+msgstr ""
+
+#: models/badges.py:736
+#, python-format
+msgid "Posted %(num_comments)s comments"
+msgstr ""
+
+#: models/badges.py:752
+msgid "Taxonomist"
+msgstr ""
+
+#: models/badges.py:756
+#, python-format
+msgid "Created a tag used by %(num)s questions"
+msgstr ""
+
+#: models/badges.py:774
+msgid "Expert"
+msgstr ""
+
+#: models/badges.py:777
+msgid "Very active in one tag"
+msgstr ""
+
+#: models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1110
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1117
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent answer has been removed"
+msgstr ""
+
+#: models/question.py:54
+#, python-format
+msgid "\" and \"%s\""
+msgstr ""
+
+#: models/question.py:57
+msgid "\" and more"
+msgstr ""
+
+#: models/reply_by_email.py:71
+msgid "edited by email"
+msgstr ""
+
+#: models/repute.py:143
+#, python-format
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr ""
+
+#: models/repute.py:154
+#, python-format
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
+msgstr ""
+
+#: models/repute.py:159
+#, python-format
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
+msgstr ""
+
+#: models/tag.py:106
+msgid "interesting"
+msgstr ""
+
+#: models/tag.py:106
+msgid "ignored"
+msgstr ""
+
+#: models/user.py:266
+msgid "Entire forum"
+msgstr ""
+
+#: models/user.py:267
+msgid "Questions that I asked"
+msgstr ""
+
+#: models/user.py:268
+msgid "Questions that I answered"
+msgstr ""
+
+#: models/user.py:269
+msgid "Individually selected questions"
+msgstr ""
+
+#: models/user.py:270
+msgid "Mentions and comment responses"
+msgstr ""
+
+#: models/user.py:273
+msgid "Instantly"
+msgstr ""
+
+#: models/user.py:274
+msgid "Daily"
+msgstr ""
+
+#: models/user.py:275
+msgid "Weekly"
+msgstr ""
+
+#: models/user.py:276
+msgid "No email"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Change Email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+msgid "Validation email not sent"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:23
+msgid "User registration"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:9
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:19
+msgid "remove offensive flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+msgid "tags:"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr ""
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+msgid "Ask Your Question"
+msgstr ""
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr ""
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr ""
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr ""
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr ""
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:20
+msgid "How does karma system work?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:80
+#, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr ""
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr ""
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr ""
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr ""
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr ""
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr ""
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr ""
+
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr ""
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, python-format
+msgid "page %(num)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr ""
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+msgid "post a comment"
+msgstr ""
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr ""
+
+#: skins/default/templates/question.html:140
+msgid "Post Your Answer"
+msgstr ""
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
+msgstr ""
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+msgid "Retag question"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr ""
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr ""
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr ""
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr ""
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr ""
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr ""
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr ""
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr ""
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr ""
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:54
+msgid "Last updated"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+msgid "Stop Email"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:58
+msgid "member since"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:69
+msgid "website"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+msgid "give an answer interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr ""
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+msgid "ask a question interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr ""
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
+
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
+
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr ""
+
+#: utils/forms.py:60
+msgid "Choose a screen name"
+msgstr ""
+
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr ""
+
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr ""
+
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr ""
+
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr ""
+
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr ""
+
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr ""
+
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+
+#: utils/forms.py:170
+msgid "password is required"
+msgstr ""
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr ""
+
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr ""
+
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr ""
+
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
+
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
+
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+msgid "Sorry, anonymous users cannot vote"
+msgstr ""
+
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
+
+#: views/commands.py:339
+#, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr ""
+
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr ""
+
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+
+#: views/users.py:206
+msgid "moderate user"
+msgstr ""
+
+#: views/users.py:381
+msgid "user profile"
+msgstr ""
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr ""
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr ""
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr ""
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr ""
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr ""
+
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
+
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr ""
+
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr ""
+
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr ""
+
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr ""
+
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr ""
+
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr ""
+
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
+
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
+
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
+
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
diff --git a/askbot/locale/el/LC_MESSAGES/djangojs.mo b/askbot/locale/el/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..32ddaca3
--- /dev/null
+++ b/askbot/locale/el/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/el/LC_MESSAGES/djangojs.po b/askbot/locale/el/LC_MESSAGES/djangojs.po
new file mode 100644
index 00000000..8d5c554f
--- /dev/null
+++ b/askbot/locale/el/LC_MESSAGES/djangojs.po
@@ -0,0 +1,264 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:53-0500\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"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, perl-format
+msgid "Are you sure you want to remove your %s login?"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:90
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:93
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:135
+msgid "passwords do not match"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:161
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:228
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:327
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:343
+msgid "Create a password-protected account"
+msgstr ""
+
+#: skins/common/media/js/post.js:28
+msgid "loading..."
+msgstr ""
+
+#: skins/common/media/js/post.js:318
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:319
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:324
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:326
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:327
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:328
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:330
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:333
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:334
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:335
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:336
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:1206
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1209
+msgid "save comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1874
+msgid "Please enter question title (>10 characters)"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:15
+msgid "Tag \"<span></span>\" matches:"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:84
+#, perl-format
+msgid "and %s more, not shown..."
+msgstr ""
+
+#: skins/common/media/js/user.js:14
+msgid "Please select at least one item"
+msgstr ""
+
+#: skins/common/media/js/user.js:58
+msgid "Delete this notification?"
+msgid_plural "Delete these notifications?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:159
+msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
+msgstr ""
+
+#: skins/common/media/js/user.js:191
+#, perl-format
+msgid "unfollow %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:194
+#, perl-format
+msgid "following %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:200
+#, perl-format
+msgid "follow %s"
+msgstr ""
+
+#: skins/common/media/js/utils.js:44
+msgid "click to close"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:26
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:27
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:28
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:29
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:30
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:47
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:48
+msgid "enter url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:49
+msgid "upload file attachment"
+msgstr ""
diff --git a/askbot/locale/en/LC_MESSAGES/django.mo b/askbot/locale/en/LC_MESSAGES/django.mo
index f8eac3d5..de084b1e 100644
--- a/askbot/locale/en/LC_MESSAGES/django.mo
+++ b/askbot/locale/en/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/en/LC_MESSAGES/django.po b/askbot/locale/en/LC_MESSAGES/django.po
index 7e4ee03d..8cbfc93b 100644
--- a/askbot/locale/en/LC_MESSAGES/django.po
+++ b/askbot/locale/en/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-12 09:14-0600\n"
+"POT-Creation-Date: 2012-04-18 18:58-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Evgeny Fadeev <evgeny.fadeev@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,15 +21,15 @@ msgstr ""
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr ""
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr ""
-#: feed.py:26
+#: feed.py:28
msgid "Individual question feed"
msgstr ""
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr ""
@@ -56,25 +56,33 @@ msgstr ""
msgid "please enter a descriptive title for your question"
msgstr ""
-#: forms.py:110
-msgid "title must be > 10 characters"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
msgstr ""
-#: forms.py:119
-msgid "content"
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
msgstr ""
-#: forms.py:125
-msgid "question content must be > 10 characters"
+#: forms.py:149
+msgid "content"
msgstr ""
-#: forms.py:134 skins/common/templates/widgets/edit_post.html:20
-#: skins/common/templates/widgets/edit_post.html:32
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr ""
-#: forms.py:137
+#: forms.py:188
#, python-format
msgid ""
"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
@@ -85,274 +93,300 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: forms.py:170 skins/default/templates/question_retag.html:58
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr ""
-#: forms.py:179
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] ""
msgstr[1] ""
-#: forms.py:187
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:196
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] ""
msgstr[1] ""
-#: forms.py:204
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:239
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:240
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
msgstr ""
-#: forms.py:256
+#: forms.py:311
msgid "update summary:"
msgstr ""
-#: forms.py:257
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
msgstr ""
-#: forms.py:333
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:347 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr ""
-#: forms.py:348 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr ""
-#: forms.py:349 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr ""
-#: forms.py:350 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr ""
-#: forms.py:352
+#: forms.py:405
msgid "administrator"
msgstr ""
-#: forms.py:353 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr ""
-#: forms.py:373
+#: forms.py:426
msgid "Change status to"
msgstr ""
-#: forms.py:400
+#: forms.py:453
msgid "which one?"
msgstr ""
-#: forms.py:421
+#: forms.py:474
msgid "Cannot change own status"
msgstr ""
-#: forms.py:427
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-#: forms.py:434
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr ""
-#: forms.py:440
+#: forms.py:493
msgid "Cannot change status to admin"
msgstr ""
-#: forms.py:446
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
-#: forms.py:455
+#: forms.py:508
msgid "Subject line"
msgstr ""
-#: forms.py:462
+#: forms.py:515
msgid "Message text"
msgstr ""
-#: forms.py:548
+#: forms.py:530
msgid "Your name (optional):"
msgstr ""
-#: forms.py:549
+#: forms.py:531
msgid "Email:"
msgstr ""
-#: forms.py:551
+#: forms.py:533
msgid "Your message:"
msgstr ""
-#: forms.py:556
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:578
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:617
+#: forms.py:599
msgid "ask anonymously"
msgstr ""
-#: forms.py:619
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:779
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:783
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:841
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:854
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:892
-msgid "this email will be linked to gravatar"
-msgstr ""
-
-#: forms.py:899
+#: forms.py:888
msgid "Real name"
msgstr ""
-#: forms.py:906
+#: forms.py:895
msgid "Website"
msgstr ""
-#: forms.py:913
+#: forms.py:902
msgid "City"
msgstr ""
-#: forms.py:922
+#: forms.py:911
msgid "Show country"
msgstr ""
-#: forms.py:927
+#: forms.py:916
msgid "Date of birth"
msgstr ""
-#: forms.py:928
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:934
+#: forms.py:923
msgid "Profile"
msgstr ""
-#: forms.py:943
+#: forms.py:932
msgid "Screen name"
msgstr ""
-#: forms.py:974 forms.py:975
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:982
+#: forms.py:971
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:1029
+#: forms.py:1018
msgid "Asked by me"
msgstr ""
-#: forms.py:1032
+#: forms.py:1021
msgid "Answered by me"
msgstr ""
-#: forms.py:1035
+#: forms.py:1024
msgid "Individually selected"
msgstr ""
-#: forms.py:1038
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1042
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr ""
-#: forms.py:1121
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr ""
+
+#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1122
-msgid "no community email please, thanks"
-msgstr "no askbot email please, thanks"
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr ""
-#: forms.py:1126
-msgid "please choose one of the options above"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr ""
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr ""
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr ""
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr ""
-#: urls.py:61 urls.py:87 urls.py:212
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr ""
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr ""
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:123 urls.py:299
-#: skins/default/templates/question/javascript.html:16
+#: urls.py:61
+msgid "questions"
+msgstr ""
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr ""
@@ -376,7 +410,7 @@ msgstr ""
msgid "answer/"
msgstr ""
-#: urls.py:112 skins/default/templates/question/javascript.html:16
+#: urls.py:112
msgid "vote/"
msgstr ""
@@ -393,7 +427,6 @@ msgid "subscribe-for-tags/"
msgstr ""
#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
-#: skins/default/templates/main_page/javascript.html:39
msgid "users/"
msgstr ""
@@ -425,12 +458,11 @@ msgstr ""
msgid "feedback/"
msgstr ""
-#: urls.py:305 skins/default/templates/main_page/javascript.html:38
-#: skins/default/templates/question/javascript.html:15
+#: urls.py:305
msgid "question/"
msgstr ""
-#: urls.py:312 setup_templates/settings.py:208
+#: urls.py:312 setup_templates/settings.py:210
#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr ""
@@ -558,151 +590,173 @@ msgid ""
msgstr ""
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr ""
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
msgid "Allow posting questions by email"
msgstr ""
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr ""
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -733,15 +787,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -749,11 +803,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -761,70 +815,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr ""
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -863,11 +901,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -910,108 +950,175 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr ""
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
msgstr ""
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr ""
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1085,16 +1192,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1258,6 +1365,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1455,27 +1566,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1600,21 +1711,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1622,40 +1733,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1667,11 +1778,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1680,21 +1791,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1703,21 +1814,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1726,19 +1837,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1749,19 +1860,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1826,38 +1937,64 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
msgid "User settings"
msgstr ""
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr ""
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
msgstr ""
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1964,326 +2101,336 @@ msgstr ""
msgid "too localized"
msgstr ""
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr ""
-#: const/__init__.py:42 skins/default/templates/users.html:27
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr ""
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr ""
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr ""
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr ""
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr ""
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr ""
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr ""
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr ""
-#: const/__init__.py:57
+#: const/__init__.py:63
#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr ""
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr ""
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr ""
-#: const/__init__.py:64
+#: const/__init__.py:70
msgid "list"
msgstr ""
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr ""
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr ""
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr ""
-#: const/__init__.py:128
-msgid "received award"
-msgstr "received badge"
+#: const/__init__.py:131
+msgid "received badge"
+msgstr ""
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:142
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
msgstr ""
-#: const/__init__.py:146
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
msgstr ""
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "answered question"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "commented question"
-
-#: const/__init__.py:201
-msgid "answer_commented"
+#: const/__init__.py:202
+msgid "answered question"
msgstr ""
-#: const/__init__.py:202
-msgid "answer_accepted"
+#: const/__init__.py:205
+msgid "accepted answer"
msgstr ""
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr ""
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:208 views/readers.py:590
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr ""
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr ""
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr ""
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr ""
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr ""
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr ""
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr ""
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
msgid "wavatar"
msgstr ""
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284 skins/default/templates/badges.html:37
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr ""
-#: const/__init__.py:285 skins/default/templates/badges.html:46
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr ""
-#: const/__init__.py:286 skins/default/templates/badges.html:53
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr ""
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
msgid "most relevant questions"
msgstr ""
-#: const/message_keys.py:16
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
msgstr ""
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr "relevance"
+msgstr ""
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr ""
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
-msgstr "date"
+msgstr ""
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr ""
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr ""
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
-msgstr "activity"
+msgstr ""
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr ""
-#: const/message_keys.py:24
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
msgstr ""
-#: const/message_keys.py:25
+#: const/message_keys.py:31
msgid "by answers"
-msgstr "answers"
+msgstr ""
-#: const/message_keys.py:26
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
msgstr ""
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr ""
-#: const/message_keys.py:28
+#: const/message_keys.py:34
msgid "by votes"
-msgstr "votes"
+msgstr ""
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr ""
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr ""
@@ -2332,11 +2479,11 @@ msgid "Your user name (<i>required</i>)"
msgstr ""
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "sorry, there is no such user name"
+msgid "sorry, there is no such user name"
+msgstr ""
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:208
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr ""
@@ -2374,7 +2521,7 @@ msgid "%(site)s user name and password"
msgstr ""
#: deps/django_authopenid/util.py:384
-#: skins/common/templates/authopenid/signin.html:108
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2456,78 +2603,78 @@ msgstr ""
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr ""
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:577
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:661
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:667
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:758
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1069 deps/django_authopenid/views.py:1075
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1096
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1166
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2535,28 +2682,28 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr ""
@@ -2572,7 +2719,7 @@ msgstr ""
#: deps/livesettings/templates/livesettings/group_settings.html:11
#: deps/livesettings/templates/livesettings/site_settings.html:23
-#: skins/common/templates/authopenid/signin.html:132
+#: skins/common/templates/authopenid/signin.html:143
msgid "Change password"
msgstr ""
@@ -2632,121 +2779,52 @@ msgstr ""
msgid "Congratulations, you are now an Administrator"
msgstr ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
-
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
msgstr ""
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"<p>Dear %(name)s,</p></p>The following question has been updated on the Q&A "
-"forum:</p>"
msgstr[1] ""
-"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
-"the Q&A forum:</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr ""
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a "
-"href='%(email_settings_link)s'>adjust</a> frequency of the email updates or "
-"turn them off entirely.<br/>If you believe that this message was sent in an "
-"error, please email about it the forum administrator at %(admin_email)s.</"
-"p><p>Sincerely,</p><p>Your friendly Q&A forum server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
@@ -2758,89 +2836,74 @@ msgstr[1] ""
msgid "Please log in to use %s"
msgstr ""
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:356
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:364
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:392
-msgid "cannot vote for own posts"
-msgstr "Sorry, you cannot vote for your own posts"
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr ""
-#: models/__init__.py:395
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:400
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:410
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
-msgstr ">%(points)s points required to upvote "
+msgstr ""
-#: models/__init__.py:416
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
-msgstr ">%(points)s points required to downvote "
+msgstr ""
-#: models/__init__.py:431
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:432
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:434
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "sorry, file uploading requires karma >%(min_rep)s"
-
-#: models/__init__.py:453 models/__init__.py:520 models/__init__.py:986
-msgid "blocked users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:454 models/__init__.py:989
-msgid "suspended users cannot post"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:481
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2851,56 +2914,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:493
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:506
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:510
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:538
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:555
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:570
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:574
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:579
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:586
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:649
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2910,280 +2973,269 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:664
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:668
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:672
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:692
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:696
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:700
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:709
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:733
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:739
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:759
-msgid "cannot flag message as offensive twice"
-msgstr "You have flagged this question before and cannot do it more than once"
-
-#: models/__init__.py:764
-msgid "blocked users cannot flag posts"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-"Sorry, since your account is blocked you cannot flag posts as offensive"
-#: models/__init__.py:766
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:768
+#: models/__init__.py:794
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
-msgstr ""
+msgid ""
"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
"required"
+msgstr ""
-#: models/__init__.py:787
+#: models/__init__.py:815
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr ""
+msgid ""
"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
"offensive flags per day."
+msgstr ""
-#: models/__init__.py:798
+#: models/__init__.py:827
msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:803
-msgid "blocked users cannot remove flags"
-msgstr "Sorry, since your account is blocked you cannot remove flags"
-
-#: models/__init__.py:805
-msgid "suspended users cannot remove flags"
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
msgstr ""
+
+#: models/__init__.py:837
+msgid ""
"Sorry, your account appears to be suspended and you cannot remove flags. "
"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#: models/__init__.py:809
+#: models/__init__.py:843
#, python-format
-msgid "need > %(min_rep)d point to remove flag"
-msgid_plural "need > %(min_rep)d points to remove flag"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
msgstr[0] ""
-"Sorry, to flag posts a minimum reputation of %(min_rep)d is "
-"required"
msgstr[1] ""
-"Sorry, to flag posts a minimum reputation of %(min_rep)d is "
-"required"
-#: models/__init__.py:828
+#: models/__init__.py:862
msgid "you don't have the permission to remove all flags"
msgstr ""
-#: models/__init__.py:829
+#: models/__init__.py:863
msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:853
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:860
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:864
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:868
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:887
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:891
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:895
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:918
-msgid "cannot revoke old vote"
-msgstr "sorry, but older votes cannot be revoked"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1393 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1395
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1397
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1399
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1401
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1402
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1404
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1570 skins/default/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1666 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr ""
-#: models/__init__.py:1668 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1670 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1672 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1674 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1676
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1678
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1787
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1797
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1804
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1811
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1822
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1826
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2296
+#: models/__init__.py:2389
#, python-format
msgid "\"%(title)s\""
msgstr ""
-#: models/__init__.py:2433
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2626 views/commands.py:409
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3441,155 +3493,135 @@ msgstr ""
msgid "Created a tag used by %(num)s questions"
msgstr ""
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr ""
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr ""
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr ""
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr ""
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr ""
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr ""
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr ""
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
+#: models/reply_by_email.py:71
+msgid "edited by email"
msgstr ""
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr ""
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr ""
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr ""
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr ""
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr ""
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr ""
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr ""
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr ""
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr ""
-#: skins/common/templates/authopenid/authopenid_macros.html:53
+#: skins/common/templates/authopenid/authopenid_macros.html:63
msgid "Please enter your <span>user name</span>, then sign in"
msgstr ""
-#: skins/common/templates/authopenid/authopenid_macros.html:54
-#: skins/common/templates/authopenid/signin.html:90
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
msgid "(or select another login method above)"
msgstr ""
-#: skins/common/templates/authopenid/authopenid_macros.html:56
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
msgid "Sign in"
msgstr ""
#: skins/common/templates/authopenid/changeemail.html:2
#: skins/common/templates/authopenid/changeemail.html:8
-#: skins/common/templates/authopenid/changeemail.html:36
-msgid "Change email"
-msgstr "Change Email"
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Change Email"
+msgstr ""
#: skins/common/templates/authopenid/changeemail.html:10
msgid "Save your email address"
@@ -3597,40 +3629,38 @@ msgstr ""
#: skins/common/templates/authopenid/changeemail.html:15
#, python-format
-msgid "change %(email)s info"
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
msgstr ""
-"<span class=\"strong big\">Enter your new email into the box below</span> if "
-"you'd like to use another email for <strong>update subscriptions</strong>."
-"<br>Currently you are using <strong>%(email)s</strong>"
-#: skins/common/templates/authopenid/changeemail.html:17
+#: skins/common/templates/authopenid/changeemail.html:19
#, python-format
-msgid "here is why email is required, see %(gravatar_faq_url)s"
-msgstr ""
+msgid ""
"<span class='strong big'>Please enter your email address in the box below.</"
-"span> Valid email address is required on this Q&amp;A forum. If you like, "
-"you can <strong>receive updates</strong> on interesting questions or entire "
-"forum via email. Also, your email is used to create a unique <a "
-"href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
-"account. Email addresses are never shown or otherwise shared with anybody "
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
"else."
-
-#: skins/common/templates/authopenid/changeemail.html:29
-msgid "Your new Email"
msgstr ""
-"<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
-"anyone, must be valid)"
-#: skins/common/templates/authopenid/changeemail.html:29
-msgid "Your Email"
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
msgstr ""
-"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: skins/common/templates/authopenid/changeemail.html:36
+#: skins/common/templates/authopenid/changeemail.html:49
msgid "Save Email"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:38
+#: skins/common/templates/authopenid/changeemail.html:51
#: skins/default/templates/answer_edit.html:25
#: skins/default/templates/close.html:16
#: skins/default/templates/feedback.html:64
@@ -3638,172 +3668,111 @@ msgstr ""
#: skins/default/templates/question_retag.html:22
#: skins/default/templates/reopen.html:27
#: skins/default/templates/subscribe_for_tags.html:16
-#: skins/default/templates/user_profile/user_edit.html:84
+#: skins/default/templates/user_profile/user_edit.html:102
msgid "Cancel"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:45
+#: skins/common/templates/authopenid/changeemail.html:58
msgid "Validate email"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:48
+#: skins/common/templates/authopenid/changeemail.html:61
#, python-format
-msgid "validate %(email)s info or go to %(change_email_url)s"
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
msgstr ""
-"<span class=\"strong big\">An email with a validation link has been sent to "
-"%(email)s.</span> Please <strong>follow the emailed link</strong> with your "
-"web browser. Email validation is necessary to help insure the proper use of "
-"email on <span class=\"orange\">Q&amp;A</span>. If you would like to use "
-"<strong>another email</strong>, please <a "
-"href='%(change_email_url)s'><strong>change it again</strong></a>."
-#: skins/common/templates/authopenid/changeemail.html:52
+#: skins/common/templates/authopenid/changeemail.html:70
msgid "Email not changed"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:55
+#: skins/common/templates/authopenid/changeemail.html:73
#, python-format
-msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
msgstr ""
-"<span class=\"strong big\">Your email address %(email)s has not been changed."
-"</span> If you decide to change it later - you can always do it by editing "
-"it in your user profile or by using the <a "
-"href='%(change_email_url)s'><strong>previous form</strong></a> again."
-#: skins/common/templates/authopenid/changeemail.html:59
+#: skins/common/templates/authopenid/changeemail.html:80
msgid "Email changed"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:62
+#: skins/common/templates/authopenid/changeemail.html:83
#, python-format
-msgid "your current %(email)s can be used for this"
-msgstr ""
-"<span class='big strong'>Your email address is now set to %(email)s.</span> "
-"Updates on the questions that you like most will be sent to this address. "
-"Email notifications are sent once a day or less frequently - only when there "
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
"are any news."
+msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:66
+#: skins/common/templates/authopenid/changeemail.html:91
msgid "Email verified"
msgstr ""
-#: skins/common/templates/authopenid/changeemail.html:69
-msgid "thanks for verifying email"
-msgstr ""
-"<span class=\"big strong\">Thank you for verifying your email!</span> Now "
-"you can <strong>ask</strong> and <strong>answer</strong> questions. Also if "
-"you find a very interesting question you can <strong>subscribe for the "
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
"updates</strong> - then will be notified about changes <strong>once a day</"
-"strong> or less frequently."
-
-#: skins/common/templates/authopenid/changeemail.html:73
-msgid "email key not sent"
-msgstr "Validation email not sent"
-
-#: skins/common/templates/authopenid/changeemail.html:76
-#, python-format
-msgid "email key not sent %(email)s change email here %(change_link)s"
+"strong>\n"
+"or less frequently."
msgstr ""
-"<span class='big strong'>Your current email address %(email)s has been "
-"validated before</span> so the new key was not sent. You can <a "
-"href='%(change_link)s'>change</a> email used for update subscriptions if "
-"necessary."
-#: skins/common/templates/authopenid/complete.html:21
-#: skins/common/templates/authopenid/complete.html:23
-msgid "Registration"
-msgstr ""
-
-#: skins/common/templates/authopenid/complete.html:27
-#, python-format
-msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-msgstr ""
-"<p><span class=\"big strong\">You are here for the first time with your "
-"%(provider)s login.</span> Please create your <strong>screen name</strong> "
-"and save your <strong>email</strong> address. Saved email address will let "
-"you <strong>subscribe for the updates</strong> on the most interesting "
-"questions and will be used to create and retrieve your unique avatar image - "
-"<a href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-
-#: skins/common/templates/authopenid/complete.html:30
-#, python-format
-msgid ""
-"%(username)s already exists, choose another name for \n"
-" %(provider)s. Email is required too, see "
-"%(gravatar_faq_url)s\n"
-" "
+#: skins/common/templates/authopenid/changeemail.html:102
+msgid "Validation email not sent"
msgstr ""
-"<p><span class='strong big'>Oops... looks like screen name %(username)s is "
-"already used in another account.</span></p><p>Please choose another screen "
-"name to use with your %(provider)s login. Also, a valid email address is "
-"required on the <span class='orange'>Q&amp;A</span> forum. Your email is "
-"used to create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
-"strong></a> image for your account. If you like, you can <strong>receive "
-"updates</strong> on the interesting questions or entire forum by email. "
-"Email addresses are never shown or otherwise shared with anybody else.</p>"
-#: skins/common/templates/authopenid/complete.html:34
+#: skins/common/templates/authopenid/changeemail.html:105
#, python-format
msgid ""
-"register new external %(provider)s account info, see %(gravatar_faq_url)s"
-msgstr ""
-"<p><span class=\"big strong\">You are here for the first time with your "
-"%(provider)s login.</span></p><p>You can either keep your <strong>screen "
-"name</strong> the same as your %(provider)s login name or choose some other "
-"nickname.</p><p>Also, please save a valid <strong>email</strong> address. "
-"With the email you can <strong>subscribe for the updates</strong> on the "
-"most interesting questions. Email address is also used to create and "
-"retrieve your unique avatar image - <a "
-"href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-
-#: skins/common/templates/authopenid/complete.html:37
-#, python-format
-msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
msgstr ""
-"<p><span class=\"big strong\">You are here for the first time with your "
-"Facebook login.</span> Please create your <strong>screen name</strong> and "
-"save your <strong>email</strong> address. Saved email address will let you "
-"<strong>subscribe for the updates</strong> on the most interesting questions "
-"and will be used to create and retrieve your unique avatar image - <a "
-"href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#: skins/common/templates/authopenid/complete.html:40
-msgid "This account already exists, please use another."
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
msgstr ""
-#: skins/common/templates/authopenid/complete.html:59
-msgid "Screen name label"
-msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-
-#: skins/common/templates/authopenid/complete.html:66
-msgid "Email address label"
+#: skins/common/templates/authopenid/complete.html:23
+msgid "User registration"
msgstr ""
-"<strong>Email Address</strong> (<i>will <strong>not</strong> be shared with "
-"anyone, must be valid</i>)"
-#: skins/common/templates/authopenid/complete.html:72
-#: skins/common/templates/authopenid/signup_with_password.html:36
-msgid "receive updates motivational blurb"
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
msgstr ""
-"<strong>Receive forum updates by email</strong> - this will help our "
-"community grow and become more useful.<br/>By default <span "
-"class='orange'>Q&amp;A</span> forum sends up to <strong>one email digest per "
-"week</strong> - only when there is anything new.<br/>If you like, please "
-"adjust this now or any time later from your user account."
-#: skins/common/templates/authopenid/complete.html:76
-#: skins/common/templates/authopenid/signup_with_password.html:40
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
msgid "please select one of the options above"
msgstr ""
-#: skins/common/templates/authopenid/complete.html:79
-msgid "Tag filter tool will be your right panel, once you log in."
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
msgstr ""
-#: skins/common/templates/authopenid/complete.html:80
-msgid "create account"
-msgstr "Signup"
-
#: skins/common/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr ""
@@ -3828,10 +3797,8 @@ msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:13
msgid ""
"Sincerely,\n"
-"Forum Administrator"
-msgstr ""
-"Sincerely,\n"
"Q&A Forum Administrator"
+msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
@@ -3847,8 +3814,8 @@ msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
@@ -3895,9 +3862,9 @@ msgstr ""
#: skins/common/templates/authopenid/signin.html:28
msgid ""
-"Take a pick of your favorite service below to sign in using secure OpenID or "
-"similar technology. Your external service password always stays confidential "
-"and you don't have to rememeber or create another one."
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
msgstr ""
#: skins/common/templates/authopenid/signin.html:31
@@ -3931,122 +3898,88 @@ msgid ""
"account"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:87
-msgid "Please enter your <span>user name and password</span>, then sign in"
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
msgstr ""
#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:100
msgid "Login failed, please try again"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:97
+#: skins/common/templates/authopenid/signin.html:104
msgid "Login or email"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:101
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
msgid "Password"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:106
-msgid "Login"
-msgstr "Sign in"
-
-#: skins/common/templates/authopenid/signin.html:113
+#: skins/common/templates/authopenid/signin.html:120
msgid "To change your password - please enter the new one twice, then submit"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:117
+#: skins/common/templates/authopenid/signin.html:124
msgid "New password"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:124
+#: skins/common/templates/authopenid/signin.html:133
msgid "Please, retype"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:146
+#: skins/common/templates/authopenid/signin.html:157
msgid "Here are your current login methods"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:150
+#: skins/common/templates/authopenid/signin.html:161
msgid "provider"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:151
+#: skins/common/templates/authopenid/signin.html:162
msgid "last used"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:152
+#: skins/common/templates/authopenid/signin.html:163
msgid "delete, if you like"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:166
-#: skins/common/templates/question/answer_controls.html:34
-#: skins/common/templates/question/question_controls.html:39
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
msgid "delete"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:168
+#: skins/common/templates/authopenid/signin.html:179
msgid "cannot be deleted"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:181
+#: skins/common/templates/authopenid/signin.html:192
msgid "Still have trouble signing in?"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:186
+#: skins/common/templates/authopenid/signin.html:197
msgid "Please, enter your email address below and obtain a new key"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:188
+#: skins/common/templates/authopenid/signin.html:199
msgid "Please, enter your email address below to recover your account"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:191
+#: skins/common/templates/authopenid/signin.html:202
msgid "recover your account via email"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:202
+#: skins/common/templates/authopenid/signin.html:213
msgid "Send a new recovery key"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:204
+#: skins/common/templates/authopenid/signin.html:215
msgid "Recover your account via email"
msgstr ""
-#: skins/common/templates/authopenid/signin.html:216
-msgid "Why use OpenID?"
-msgstr ""
-
-#: skins/common/templates/authopenid/signin.html:219
-msgid "with openid it is easier"
-msgstr "With the OpenID you don't need to create new username and password."
-
-#: skins/common/templates/authopenid/signin.html:222
-msgid "reuse openid"
-msgstr "You can safely re-use the same login for all OpenID-enabled websites."
-
-#: skins/common/templates/authopenid/signin.html:225
-msgid "openid is widely adopted"
-msgstr ""
-"There are > 160,000,000 OpenID account in use. Over 10,000 sites are OpenID-"
-"enabled."
-
-#: skins/common/templates/authopenid/signin.html:228
-msgid "openid is supported open standard"
-msgstr "OpenID is based on an open standard, supported by many organizations."
-
-#: skins/common/templates/authopenid/signin.html:232
-msgid "Find out more"
-msgstr ""
-
-#: skins/common/templates/authopenid/signin.html:233
-msgid "Get OpenID"
-msgstr ""
-
-#: skins/common/templates/authopenid/signup_with_password.html:4
-msgid "Signup"
-msgstr ""
-
#: skins/common/templates/authopenid/signup_with_password.html:10
msgid "Please register by clicking on any of the icons below"
msgstr ""
@@ -4060,29 +3993,29 @@ msgid "Create login name and password"
msgstr ""
#: skins/common/templates/authopenid/signup_with_password.html:26
-msgid "Traditional signup info"
-msgstr ""
-"<span class='strong big'>If you prefer, create your forum login name and "
-"password here. However</span>, please keep in mind that we also support "
-"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can "
-"simply reuse your external login (e.g. Gmail or AOL) without ever sharing "
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
"your login details with anyone and having to remember yet another password."
+msgstr ""
-#: skins/common/templates/authopenid/signup_with_password.html:44
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
msgid ""
"Please read and type in the two words below to help us prevent automated "
"account creation."
msgstr ""
-#: skins/common/templates/authopenid/signup_with_password.html:47
-msgid "Create Account"
-msgstr "Signup"
-
-#: skins/common/templates/authopenid/signup_with_password.html:49
+#: skins/common/templates/authopenid/signup_with_password.html:55
msgid "or"
msgstr ""
-#: skins/common/templates/authopenid/signup_with_password.html:50
+#: skins/common/templates/authopenid/signup_with_password.html:56
msgid "return to OpenID login"
msgstr ""
@@ -4139,57 +4072,65 @@ msgstr ""
msgid "Delete These"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:5
-msgid "answer permanent link"
-msgstr "permanent link"
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr ""
-#: skins/common/templates/question/answer_controls.html:6
+#: skins/common/templates/question/answer_controls.html:7
msgid "permanent link"
-msgstr "link"
+msgstr ""
-#: skins/common/templates/question/answer_controls.html:10
-#: skins/common/templates/question/question_controls.html:3
-#: skins/default/templates/macros.html:289
-#: skins/default/templates/revisions.html:37
-msgid "edit"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:14
-#: skins/common/templates/question/answer_controls.html:23
-#: skins/common/templates/question/question_controls.html:22
-#: skins/common/templates/question/question_controls.html:31
-msgid ""
-"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:15
-#: skins/common/templates/question/question_controls.html:23
-msgid "flag offensive"
+#: skins/common/templates/question/answer_controls.html:19
+msgid "remove offensive flag"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:24
-#: skins/common/templates/question/question_controls.html:32
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
msgid "remove flag"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:34
-#: skins/common/templates/question/question_controls.html:39
-msgid "undelete"
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
msgstr ""
-#: skins/common/templates/question/answer_controls.html:40
-msgid "swap with question"
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
msgstr ""
-#: skins/common/templates/question/answer_vote_buttons.html:13
-#: skins/common/templates/question/answer_vote_buttons.html:14
-msgid "mark this answer as correct (click again to undo)"
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
msgstr ""
-#: skins/common/templates/question/answer_vote_buttons.html:23
-#: skins/common/templates/question/answer_vote_buttons.html:24
-#, python-format
-msgid "%(question_author)s has selected this answer as correct"
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
msgstr ""
#: skins/common/templates/question/closed_question_info.html:2
@@ -4205,58 +4146,65 @@ msgid "close date %(closed_at)s"
msgstr ""
#: skins/common/templates/question/question_controls.html:6
-msgid "retag"
-msgstr ""
-
-#: skins/common/templates/question/question_controls.html:13
msgid "reopen"
msgstr ""
-#: skins/common/templates/question/question_controls.html:17
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
msgid "close"
msgstr ""
-#: skins/common/templates/widgets/edit_post.html:21
-msgid "one of these is required"
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
msgstr ""
-#: skins/common/templates/widgets/edit_post.html:33
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+msgid "tags:"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:32
msgid "(required)"
msgstr ""
-#: skins/common/templates/widgets/edit_post.html:56
+#: skins/common/templates/widgets/edit_post.html:58
msgid "Toggle the real time Markdown editor preview"
msgstr ""
-#: skins/common/templates/widgets/edit_post.html:58
+#: skins/common/templates/widgets/edit_post.html:60
#: skins/default/templates/answer_edit.html:61
#: skins/default/templates/answer_edit.html:64
#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
#: skins/default/templates/question_edit.html:73
#: skins/default/templates/question_edit.html:76
-#: skins/default/templates/question/javascript.html:89
-#: skins/default/templates/question/javascript.html:92
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
msgid "hide preview"
msgstr ""
#: skins/common/templates/widgets/related_tags.html:3
-msgid "Related tags"
-msgstr "Tags"
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
#: skins/common/templates/widgets/tag_selector.html:4
msgid "Interesting tags"
msgstr ""
-#: skins/common/templates/widgets/tag_selector.html:18
-#: skins/common/templates/widgets/tag_selector.html:34
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
msgid "add"
msgstr ""
-#: skins/common/templates/widgets/tag_selector.html:20
+#: skins/common/templates/widgets/tag_selector.html:21
msgid "Ignored tags"
msgstr ""
-#: skins/common/templates/widgets/tag_selector.html:36
+#: skins/common/templates/widgets/tag_selector.html:38
msgid "Display tag filter"
msgstr ""
@@ -4306,7 +4254,7 @@ msgid "back to previous page"
msgstr ""
#: skins/default/templates/404.jinja.html:31
-#: skins/default/templates/widgets/scope_nav.html:3
+#: skins/default/templates/widgets/scope_nav.html:6
msgid "see all questions"
msgstr ""
@@ -4335,11 +4283,6 @@ msgstr ""
msgid "see tags"
msgstr ""
-#: skins/default/templates/about.html:3 skins/default/templates/about.html:5
-#, python-format
-msgid "About %(site_name)s"
-msgstr ""
-
#: skins/default/templates/answer_edit.html:4
#: skins/default/templates/answer_edit.html:10
msgid "Edit answer"
@@ -4369,17 +4312,19 @@ msgstr ""
#: skins/default/templates/answer_edit.html:64
#: skins/default/templates/ask.html:52
#: skins/default/templates/question_edit.html:76
-#: skins/default/templates/question/javascript.html:92
+#: skins/default/templates/question/javascript.html:88
msgid "show preview"
msgstr ""
#: skins/default/templates/ask.html:4
-msgid "Ask a question"
-msgstr "Ask Your Question"
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+msgid "Ask Your Question"
+msgstr ""
#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:110
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
msgid "%(name)s"
msgstr ""
@@ -4394,8 +4339,8 @@ msgid "Badge \"%(name)s\""
msgstr ""
#: skins/default/templates/badge.html:9
-#: skins/default/templates/user_profile/user_recent.html:16
-#: skins/default/templates/user_profile/user_stats.html:108
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
#, python-format
msgid "%(description)s"
msgstr ""
@@ -4406,11 +4351,7 @@ msgid_plural "users received this badge:"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/badges.html:3
-msgid "Badges summary"
-msgstr "Badges"
-
-#: skins/default/templates/badges.html:5
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
msgid "Badges"
msgstr ""
@@ -4422,45 +4363,41 @@ msgstr ""
#, python-format
msgid ""
"Below is the list of available badges and number \n"
-"of times each type of badge has been awarded. Give us feedback at "
-"%(feedback_faq_url)s.\n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
msgstr ""
-"Below is the list of available badges and number \n"
-" of times each type of badge has been awarded. Have ideas about fun "
-"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>\n"
-#: skins/default/templates/badges.html:35
+#: skins/default/templates/badges.html:36
msgid "Community badges"
msgstr "Badge levels"
-#: skins/default/templates/badges.html:37
+#: skins/default/templates/badges.html:38
msgid "gold badge: the highest honor and is very rare"
msgstr ""
-#: skins/default/templates/badges.html:40
-msgid "gold badge description"
-msgstr ""
-"Gold badge is the highest award in this community. To obtain it have to show "
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#: skins/default/templates/badges.html:45
+#: skins/default/templates/badges.html:47
msgid ""
"silver badge: occasionally awarded for the very high quality contributions"
msgstr ""
-#: skins/default/templates/badges.html:49
-msgid "silver badge description"
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
msgstr ""
-"silver badge: occasionally awarded for the very high quality contributions"
-#: skins/default/templates/badges.html:52
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
msgid "bronze badge: often given as a special honor"
msgstr ""
-#: skins/default/templates/badges.html:56
-msgid "bronze badge description"
-msgstr "bronze badge: often given as a special honor"
-
#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
msgid "Close question"
msgstr ""
@@ -4477,11 +4414,10 @@ msgstr ""
msgid "OK to close"
msgstr ""
-#: skins/default/templates/faq.html:3
#: skins/default/templates/faq_static.html:3
#: skins/default/templates/faq_static.html:5
#: skins/default/templates/widgets/answer_edit_tips.html:20
-#: skins/default/templates/widgets/question_edit_tips.html:16
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
msgid "FAQ"
msgstr ""
@@ -4501,15 +4437,13 @@ msgstr ""
#: skins/default/templates/faq_static.html:8
msgid ""
-"Before asking the question - please make sure to use search to see whether "
-"your question has alredy been answered."
-msgstr ""
"Before you ask - please make sure to search for a similar question. You can "
"search questions by their title or tags."
+msgstr ""
#: skins/default/templates/faq_static.html:10
-msgid "What questions should I avoid asking?"
-msgstr "What kinds of questions should be avoided?"
+msgid "What kinds of questions should be avoided?"
+msgstr ""
#: skins/default/templates/faq_static.html:11
msgid ""
@@ -4523,14 +4457,11 @@ msgstr ""
#: skins/default/templates/faq_static.html:14
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 ""
"is a <strong>question and answer</strong> site - <strong>it is not a "
"discussion group</strong>. Please avoid holding debates in your answers as "
"they tend to dilute the essense of questions and answers. For the brief "
"discussions please use commenting facility."
+msgstr ""
#: skins/default/templates/faq_static.html:15
msgid "Who moderates this community?"
@@ -4546,23 +4477,21 @@ msgstr ""
#: skins/default/templates/faq_static.html:18
msgid ""
-"The reputation system allows users earn the authorization to perform a "
-"variety of moderation tasks."
-msgstr ""
"Karma system allows users to earn rights to perform a variety of moderation "
"tasks"
+msgstr ""
#: skins/default/templates/faq_static.html:20
-msgid "How does reputation system work?"
-msgstr "How does karma system work?"
+msgid "How does karma system work?"
+msgstr ""
#: skins/default/templates/faq_static.html:21
-msgid "Rep system summary"
-msgstr ""
+msgid ""
"When a question or answer is upvoted, the user who posted them will gain "
-"some points, which are called \"karma points\". These points serve as a "
+"some points, which are called \\\"karma points\\\". These points serve as a "
"rough measure of the community trust to him/her. Various moderation tasks "
"are gradually assigned to the users based on those points."
+msgstr ""
#: skins/default/templates/faq_static.html:22
#, python-format
@@ -4582,50 +4511,45 @@ msgstr ""
msgid "upvote"
msgstr ""
-#: skins/default/templates/faq_static.html:37
-msgid "use tags"
-msgstr ""
-
-#: skins/default/templates/faq_static.html:42
+#: skins/default/templates/faq_static.html:36
msgid "add comments"
msgstr ""
-#: skins/default/templates/faq_static.html:46
+#: skins/default/templates/faq_static.html:40
#: skins/default/templates/user_profile/user_votes.html:15
msgid "downvote"
msgstr ""
-#: skins/default/templates/faq_static.html:49
+#: skins/default/templates/faq_static.html:43
msgid " accept own answer to own questions"
msgstr ""
-#: skins/default/templates/faq_static.html:53
+#: skins/default/templates/faq_static.html:47
msgid "open and close own questions"
msgstr ""
-#: skins/default/templates/faq_static.html:57
+#: skins/default/templates/faq_static.html:51
msgid "retag other's questions"
msgstr ""
-#: skins/default/templates/faq_static.html:62
+#: skins/default/templates/faq_static.html:56
msgid "edit community wiki questions"
msgstr ""
-#: skins/default/templates/faq_static.html:67
-msgid "\"edit any answer"
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
msgstr ""
-#: skins/default/templates/faq_static.html:71
-msgid "\"delete any comment"
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
msgstr ""
-#: skins/default/templates/faq_static.html:74
-msgid "what is gravatar"
-msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#: skins/default/templates/faq_static.html:75
-msgid "gravatar faq info"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
"<p>The picture that appears on the users profiles is called "
"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
@@ -4639,52 +4563,51 @@ msgstr ""
"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
"be sure to use the same email address that you used to register with us). "
"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
-#: skins/default/templates/faq_static.html:76
+#: skins/default/templates/faq_static.html:71
msgid "To register, do I need to create new password?"
msgstr ""
-#: skins/default/templates/faq_static.html:77
+#: skins/default/templates/faq_static.html:72
msgid ""
"No, you don't have to. You can login through any service that supports "
"OpenID, e.g. Google, Yahoo, AOL, etc.\""
msgstr ""
-#: skins/default/templates/faq_static.html:78
+#: skins/default/templates/faq_static.html:73
msgid "\"Login now!\""
msgstr ""
-#: skins/default/templates/faq_static.html:80
+#: skins/default/templates/faq_static.html:75
msgid "Why other people can edit my questions/answers?"
msgstr ""
-#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
msgid "Goal of this site is..."
msgstr ""
-#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
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 ""
-#: skins/default/templates/faq_static.html:82
+#: skins/default/templates/faq_static.html:77
msgid "If this approach is not for you, we respect your choice."
msgstr ""
-#: skins/default/templates/faq_static.html:84
+#: skins/default/templates/faq_static.html:79
msgid "Still have questions?"
msgstr ""
-#: skins/default/templates/faq_static.html:85
+#: skins/default/templates/faq_static.html:80
#, python-format
msgid ""
-"Please ask your question at %(ask_question_url)s, help make our community "
-"better!"
-msgstr ""
-"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
"community better!"
+msgstr ""
#: skins/default/templates/feedback.html:3
msgid "Feedback"
@@ -4737,6 +4660,68 @@ msgid ""
"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr ""
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
#: skins/default/templates/import_data.html:2
#: skins/default/templates/import_data.html:4
msgid "Import StackExchange data"
@@ -4835,174 +4820,155 @@ msgstr ""
msgid "<p>Sincerely,<br/>Forum Administrator</p>"
msgstr ""
-#: skins/default/templates/macros.html:3
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
#, python-format
msgid "Share this question on %(site)s"
msgstr ""
-#: skins/default/templates/macros.html:14
-#: skins/default/templates/macros.html:470
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
#, python-format
msgid "follow %(alias)s"
msgstr ""
-#: skins/default/templates/macros.html:17
-#: skins/default/templates/macros.html:473
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
#, python-format
msgid "unfollow %(alias)s"
msgstr ""
-#: skins/default/templates/macros.html:18
-#: skins/default/templates/macros.html:474
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
#, python-format
msgid "following %(alias)s"
msgstr ""
-#: skins/default/templates/macros.html:29
-msgid "i like this question (click again to cancel)"
-msgstr ""
-
-#: skins/default/templates/macros.html:31
-msgid "i like this answer (click again to cancel)"
-msgstr ""
-
-#: skins/default/templates/macros.html:37
+#: skins/default/templates/macros.html:33
msgid "current number of votes"
msgstr ""
-#: skins/default/templates/macros.html:43
-msgid "i dont like this question (click again to cancel)"
-msgstr ""
-
-#: skins/default/templates/macros.html:45
-msgid "i dont like this answer (click again to cancel)"
-msgstr ""
-
-#: skins/default/templates/macros.html:52
+#: skins/default/templates/macros.html:46
msgid "anonymous user"
msgstr ""
-#: skins/default/templates/macros.html:80
+#: skins/default/templates/macros.html:79
msgid "this post is marked as community wiki"
msgstr ""
-#: skins/default/templates/macros.html:83
+#: skins/default/templates/macros.html:82
#, python-format
msgid ""
"This post is a wiki.\n"
" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
msgstr ""
-#: skins/default/templates/macros.html:89
+#: skins/default/templates/macros.html:88
msgid "asked"
msgstr ""
-#: skins/default/templates/macros.html:91
+#: skins/default/templates/macros.html:90
msgid "answered"
msgstr ""
-#: skins/default/templates/macros.html:93
+#: skins/default/templates/macros.html:92
msgid "posted"
msgstr ""
-#: skins/default/templates/macros.html:123
+#: skins/default/templates/macros.html:122
msgid "updated"
msgstr ""
-#: skins/default/templates/macros.html:221
+#: skins/default/templates/macros.html:202
#, python-format
msgid "see questions tagged '%(tag)s'"
msgstr ""
-#: skins/default/templates/macros.html:278
+#: skins/default/templates/macros.html:304
msgid "delete this comment"
msgstr ""
-#: skins/default/templates/macros.html:307
-#: skins/default/templates/macros.html:315
-#: skins/default/templates/question/javascript.html:24
-msgid "add comment"
-msgstr "post a comment"
-
-#: skins/default/templates/macros.html:308
-#, python-format
-msgid "see <strong>%(counter)s</strong> more"
-msgid_plural "see <strong>%(counter)s</strong> more"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/macros.html:310
-#, python-format
-msgid "see <strong>%(counter)s</strong> more comment"
-msgid_plural ""
-"see <strong>%(counter)s</strong> more comments\n"
-" "
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/default/templates/macros.html:541 templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr ""
-#: skins/default/templates/macros.html:550
+#: skins/default/templates/macros.html:516
#, python-format
msgid "%(username)s's website is %(url)s"
msgstr ""
-#: skins/default/templates/macros.html:565
-#: skins/default/templates/macros.html:566
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
msgid "previous"
msgstr ""
-#: skins/default/templates/macros.html:577
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
msgid "current page"
msgstr ""
-#: skins/default/templates/macros.html:579
-#: skins/default/templates/macros.html:586
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
#, python-format
-msgid "page number %(num)s"
-msgstr "page %(num)s"
-
-#: skins/default/templates/macros.html:590
-msgid "next page"
+msgid "page %(num)s"
msgstr ""
-#: skins/default/templates/macros.html:601
-msgid "posts per page"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
msgstr ""
-#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:607
#, python-format
msgid "responses for %(username)s"
msgstr ""
-#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:610
#, python-format
-msgid "you have a new response"
+msgid "you have %(response_count)s new response"
msgid_plural "you have %(response_count)s new responses"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/macros.html:634
+#: skins/default/templates/macros.html:613
msgid "no new responses yet"
msgstr ""
-#: skins/default/templates/macros.html:649
-#: skins/default/templates/macros.html:650
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
#, python-format
msgid "%(new)s new flagged posts and %(seen)s previous"
msgstr ""
-#: skins/default/templates/macros.html:652
-#: skins/default/templates/macros.html:653
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
#, python-format
msgid "%(new)s new flagged posts"
msgstr ""
-#: skins/default/templates/macros.html:658
-#: skins/default/templates/macros.html:659
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
#, python-format
msgid "%(seen)s flagged posts"
msgstr ""
@@ -5011,9 +4977,31 @@ msgstr ""
msgid "Questions"
msgstr ""
-#: skins/default/templates/privacy.html:3
-#: skins/default/templates/privacy.html:5
-msgid "Privacy policy"
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+msgid "post a comment"
+msgstr ""
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr ""
+
+#: skins/default/templates/question.html:140
+msgid "Post Your Answer"
+msgstr ""
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
msgstr ""
#: skins/default/templates/question_edit.html:4
@@ -5023,8 +5011,8 @@ msgstr ""
#: skins/default/templates/question_retag.html:3
#: skins/default/templates/question_retag.html:5
-msgid "Change tags"
-msgstr "Retag question"
+msgid "Retag question"
+msgstr ""
#: skins/default/templates/question_retag.html:21
msgid "Retag"
@@ -5077,6 +5065,13 @@ msgstr ""
msgid "Reopen this question"
msgstr ""
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
#: skins/default/templates/revisions.html:4
#: skins/default/templates/revisions.html:7
msgid "Revision history"
@@ -5104,17 +5099,17 @@ msgstr ""
msgid "Subscribe"
msgstr ""
-#: skins/default/templates/tags.html:4 skins/default/templates/tags.html:10
-msgid "Tag list"
-msgstr "Tags"
-
#: skins/default/templates/tags.html:8
#, python-format
msgid "Tags, matching \"%(stag)s\""
msgstr ""
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
-#: skins/default/templates/main_page/tab_bar.html:14
+#: skins/default/templates/main_page/tab_bar.html:15
msgid "Sort by &raquo;"
msgstr ""
@@ -5134,7 +5129,7 @@ msgstr ""
msgid "by popularity"
msgstr ""
-#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:57
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
msgid "Nothing found"
msgstr ""
@@ -5148,8 +5143,10 @@ msgstr ""
#: skins/default/templates/users.html:15
#: skins/default/templates/user_profile/user_info.html:25
-msgid "reputation"
-msgstr "karma"
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
#: skins/default/templates/users.html:20
msgid "see people who joined most recently"
@@ -5180,7 +5177,7 @@ msgstr ""
msgid "Nothing found."
msgstr ""
-#: skins/default/templates/main_page/headline.html:4 views/readers.py:160
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
#, python-format
msgid "%(q_num)s question"
msgid_plural "%(q_num)s questions"
@@ -5192,39 +5189,43 @@ msgstr[1] ""
msgid "with %(author_name)s's contributions"
msgstr ""
-#: skins/default/templates/main_page/headline.html:23
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
msgid "Search tips:"
msgstr ""
-#: skins/default/templates/main_page/headline.html:26
+#: skins/default/templates/main_page/headline.html:27
msgid "reset author"
msgstr ""
-#: skins/default/templates/main_page/headline.html:28
-#: skins/default/templates/main_page/headline.html:31
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
#: skins/default/templates/main_page/nothing_found.html:18
#: skins/default/templates/main_page/nothing_found.html:21
msgid " or "
msgstr ""
-#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:30
msgid "reset tags"
msgstr ""
-#: skins/default/templates/main_page/headline.html:32
-#: skins/default/templates/main_page/headline.html:35
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
msgid "start over"
msgstr ""
-#: skins/default/templates/main_page/headline.html:37
+#: skins/default/templates/main_page/headline.html:38
msgid " - to expand, or dig in by adding more tags and revising the query."
msgstr ""
-#: skins/default/templates/main_page/headline.html:40
+#: skins/default/templates/main_page/headline.html:41
msgid "Search tip:"
msgstr ""
-#: skins/default/templates/main_page/headline.html:40
+#: skins/default/templates/main_page/headline.html:41
msgid "add tags and a query to focus your search"
msgstr ""
@@ -5261,19 +5262,19 @@ msgstr ""
msgid "Please always feel free to ask your question!"
msgstr ""
-#: skins/default/templates/main_page/questions_loop.html:12
+#: skins/default/templates/main_page/questions_loop.html:11
msgid "Did not find what you were looking for?"
msgstr ""
-#: skins/default/templates/main_page/questions_loop.html:13
+#: skins/default/templates/main_page/questions_loop.html:12
msgid "Please, post your question!"
msgstr ""
-#: skins/default/templates/main_page/tab_bar.html:9
+#: skins/default/templates/main_page/tab_bar.html:10
msgid "subscribe to the questions feed"
msgstr ""
-#: skins/default/templates/main_page/tab_bar.html:10
+#: skins/default/templates/main_page/tab_bar.html:11
msgid "RSS"
msgstr ""
@@ -5285,21 +5286,21 @@ msgid ""
"a>"
msgstr ""
-#: skins/default/templates/meta/editor_data.html:5
+#: skins/default/templates/meta/editor_data.html:7
#, python-format
msgid "each tag must be shorter that %(max_chars)s character"
msgid_plural "each tag must be shorter than %(max_chars)s characters"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/meta/editor_data.html:7
+#: skins/default/templates/meta/editor_data.html:9
#, python-format
msgid "please use %(tag_count)s tag"
msgid_plural "please use %(tag_count)s tags or less"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/meta/editor_data.html:8
+#: skins/default/templates/meta/editor_data.html:10
#, python-format
msgid ""
"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
@@ -5309,92 +5310,71 @@ msgstr ""
#, python-format
msgid ""
"\n"
-" %(counter)s Answer\n"
-" "
+" %(counter)s Answer\n"
+" "
msgid_plural ""
"\n"
-" %(counter)s Answers\n"
+" %(counter)s Answers\n"
" "
msgstr[0] ""
msgstr[1] ""
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
#: skins/default/templates/question/answer_tab_bar.html:14
msgid "oldest answers will be shown first"
msgstr ""
-#: skins/default/templates/question/answer_tab_bar.html:15
-msgid "oldest answers"
-msgstr "oldest"
-
#: skins/default/templates/question/answer_tab_bar.html:17
msgid "newest answers will be shown first"
msgstr ""
-#: skins/default/templates/question/answer_tab_bar.html:18
-msgid "newest answers"
-msgstr "newest"
-
#: skins/default/templates/question/answer_tab_bar.html:20
msgid "most voted answers will be shown first"
msgstr ""
-#: skins/default/templates/question/answer_tab_bar.html:21
-msgid "popular answers"
-msgstr "most voted"
-
-#: skins/default/templates/question/content.html:20
-#: skins/default/templates/question/new_answer_form.html:46
-msgid "Answer Your Own Question"
-msgstr ""
-
-#: skins/default/templates/question/new_answer_form.html:14
+#: skins/default/templates/question/new_answer_form.html:16
msgid "Login/Signup to Answer"
msgstr ""
-#: skins/default/templates/question/new_answer_form.html:22
+#: skins/default/templates/question/new_answer_form.html:24
msgid "Your answer"
msgstr ""
-#: skins/default/templates/question/new_answer_form.html:24
+#: skins/default/templates/question/new_answer_form.html:26
msgid "Be the first one to answer this question!"
msgstr ""
-#: skins/default/templates/question/new_answer_form.html:30
-msgid "you can answer anonymously and then login"
-msgstr ""
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
"<span class='strong big'>Please start posting your answer anonymously</span> "
"- your answer will be saved within the current session and published after "
"you log in or create a new account. Please try to give a <strong>substantial "
"answer</strong>, for discussions, <strong>please use comments</strong> and "
"<strong>please do remember to vote</strong> (after you log in)!"
-
-#: skins/default/templates/question/new_answer_form.html:34
-msgid "answer your own question only to give an answer"
msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
"<span class='big strong'>You are welcome to answer your own question</span>, "
"but please make sure to give an <strong>answer</strong>. Remember that you "
"can always <strong>revise your original question</strong>. Please "
"<strong>use comments for discussions</strong> and <strong>please don't "
"forget to vote :)</strong> for the answers that you liked (or perhaps did "
-"not like)! "
-
-#: skins/default/templates/question/new_answer_form.html:36
-msgid "please only give an answer, no discussions"
+"not like)!"
msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
"<span class='big strong'>Please try to give a substantial answer</span>. If "
"you wanted to comment on the question or answer, just <strong>use the "
"commenting tool</strong>. Please remember that you can always <strong>revise "
"your answers</strong> - no need to answer the same question twice. Also, "
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-
-#: skins/default/templates/question/new_answer_form.html:43
-msgid "Login/Signup to Post Your Answer"
-msgstr "Login/Signup to Post"
-
-#: skins/default/templates/question/new_answer_form.html:48
-msgid "Answer the question"
-msgstr "Post Your Answer"
+msgstr ""
#: skins/default/templates/question/sharing_prompt_phrase.html:2
#, python-format
@@ -5411,52 +5391,52 @@ msgstr ""
msgid "email"
msgstr ""
-#: skins/default/templates/question/sidebar.html:4
+#: skins/default/templates/question/sidebar.html:6
msgid "Question tools"
msgstr ""
-#: skins/default/templates/question/sidebar.html:7
+#: skins/default/templates/question/sidebar.html:9
msgid "click to unfollow this question"
msgstr ""
-#: skins/default/templates/question/sidebar.html:8
+#: skins/default/templates/question/sidebar.html:10
msgid "Following"
msgstr ""
-#: skins/default/templates/question/sidebar.html:9
+#: skins/default/templates/question/sidebar.html:11
msgid "Unfollow"
msgstr ""
-#: skins/default/templates/question/sidebar.html:13
+#: skins/default/templates/question/sidebar.html:15
msgid "click to follow this question"
msgstr ""
-#: skins/default/templates/question/sidebar.html:14
+#: skins/default/templates/question/sidebar.html:16
msgid "Follow"
msgstr ""
-#: skins/default/templates/question/sidebar.html:21
+#: skins/default/templates/question/sidebar.html:23
#, python-format
msgid "%(count)s follower"
msgid_plural "%(count)s followers"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/question/sidebar.html:27
+#: skins/default/templates/question/sidebar.html:29
msgid "email the updates"
msgstr ""
-#: skins/default/templates/question/sidebar.html:30
+#: skins/default/templates/question/sidebar.html:32
msgid ""
"<strong>Here</strong> (once you log in) you will be able to sign up for the "
"periodic email updates about this question."
msgstr ""
-#: skins/default/templates/question/sidebar.html:35
+#: skins/default/templates/question/sidebar.html:37
msgid "subscribe to this question rss feed"
msgstr ""
-#: skins/default/templates/question/sidebar.html:36
+#: skins/default/templates/question/sidebar.html:38
msgid "subscribe to rss feed"
msgstr ""
@@ -5465,56 +5445,38 @@ msgid "Stats"
msgstr ""
#: skins/default/templates/question/sidebar.html:48
-msgid "question asked"
-msgstr "Asked"
+msgid "Asked"
+msgstr ""
#: skins/default/templates/question/sidebar.html:51
-msgid "question was seen"
-msgstr "Seen"
+msgid "Seen"
+msgstr ""
#: skins/default/templates/question/sidebar.html:51
msgid "times"
msgstr ""
#: skins/default/templates/question/sidebar.html:54
-msgid "last updated"
-msgstr "Last updated"
+msgid "Last updated"
+msgstr ""
-#: skins/default/templates/question/sidebar.html:63
+#: skins/default/templates/question/sidebar.html:62
msgid "Related questions"
msgstr ""
-#: skins/default/templates/question/subscribe_by_email_prompt.html:7
-#: skins/default/templates/question/subscribe_by_email_prompt.html:9
-msgid "Notify me once a day when there are any new answers"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
msgstr ""
-"<strong>Notify me</strong> once a day by email when there are any new "
-"answers or updates"
#: skins/default/templates/question/subscribe_by_email_prompt.html:11
-msgid "Notify me weekly when there are any new answers"
-msgstr ""
-"<strong>Notify me</strong> weekly when there are any new answers or updates"
-
-#: skins/default/templates/question/subscribe_by_email_prompt.html:13
-msgid "Notify me immediately when there are any new answers"
+msgid "once you sign in you will be able to subscribe for any updates here"
msgstr ""
-"<strong>Notify me</strong> immediately when there are any new answers or "
-"updates"
-#: skins/default/templates/question/subscribe_by_email_prompt.html:16
-#, python-format
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
msgid ""
-"You can always adjust frequency of email updates from your %(profile_url)s"
-msgstr ""
-"(note: you can always <strong><a href='%(profile_url)s?"
-"sort=email_subscriptions'>change</a></strong> how often you receive updates)"
-
-#: skins/default/templates/question/subscribe_by_email_prompt.html:21
-msgid "once you sign in you will be able to subscribe for any updates here"
-msgstr ""
"<span class='strong'>Here</span> (once you log in) you will be able to sign "
"up for the periodic email updates about this question."
+msgstr ""
#: skins/default/templates/user_profile/user.html:12
#, python-format
@@ -5529,21 +5491,30 @@ msgstr ""
msgid "edit profile"
msgstr ""
-#: skins/default/templates/user_profile/user_edit.html:17
+#: skins/default/templates/user_profile/user_edit.html:21
#: skins/default/templates/user_profile/user_info.html:15
msgid "change picture"
msgstr ""
-#: skins/default/templates/user_profile/user_edit.html:20
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
msgid "Registered user"
msgstr ""
-#: skins/default/templates/user_profile/user_edit.html:27
+#: skins/default/templates/user_profile/user_edit.html:39
msgid "Screen Name"
msgstr ""
-#: skins/default/templates/user_profile/user_edit.html:83
-#: skins/default/templates/user_profile/user_email_subscriptions.html:21
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
msgid "Update"
msgstr ""
@@ -5556,18 +5527,18 @@ msgstr ""
msgid "Email subscription settings"
msgstr ""
-#: skins/default/templates/user_profile/user_email_subscriptions.html:8
-msgid "email subscription settings info"
-msgstr ""
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
"updates on interesting questions by email, <strong><br/>help the community</"
"strong> by answering questions of your colleagues. If you do not wish to "
"receive emails - select 'no email' on all items below.<br/>Updates are only "
"sent when there is any new activity on selected items."
+msgstr ""
-#: skins/default/templates/user_profile/user_email_subscriptions.html:22
-msgid "Stop sending email"
-msgstr "Stop Email"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+msgid "Stop Email"
+msgstr ""
#: skins/default/templates/user_profile/user_favorites.html:4
#: skins/default/templates/user_profile/user_tabs.html:27
@@ -5594,18 +5565,22 @@ msgid "flagged items (%(flag_count)s)"
msgstr ""
#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
msgid "select:"
msgstr ""
#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
msgid "seen"
msgstr ""
#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
msgid "new"
msgstr ""
#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
msgid "none"
msgstr ""
@@ -5621,8 +5596,12 @@ msgstr ""
msgid "dismiss"
msgstr ""
-#: skins/default/templates/user_profile/user_info.html:19
-msgid "remove"
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
msgstr ""
#: skins/default/templates/user_profile/user_info.html:36
@@ -5638,16 +5617,16 @@ msgid "real name"
msgstr ""
#: skins/default/templates/user_profile/user_info.html:58
-msgid "member for"
-msgstr "member since"
+msgid "member since"
+msgstr ""
#: skins/default/templates/user_profile/user_info.html:63
msgid "last seen"
msgstr ""
#: skins/default/templates/user_profile/user_info.html:69
-msgid "user website"
-msgstr "website"
+msgid "website"
+msgstr ""
#: skins/default/templates/user_profile/user_info.html:75
msgid "location"
@@ -5659,7 +5638,7 @@ msgstr ""
#: skins/default/templates/user_profile/user_info.html:83
msgid "age unit"
-msgstr "years old"
+msgstr ""
#: skins/default/templates/user_profile/user_info.html:88
msgid "todays unused votes"
@@ -5785,19 +5764,16 @@ msgid "%(username)s's network is empty"
msgstr ""
#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
#: skins/default/templates/user_profile/user_tabs.html:31
msgid "activity"
msgstr ""
-#: skins/default/templates/user_profile/user_recent.html:21
+#: skins/default/templates/user_profile/user_recent.html:24
#: skins/default/templates/user_profile/user_recent.html:28
msgid "source"
msgstr ""
-#: skins/default/templates/user_profile/user_reputation.html:4
-msgid "karma"
-msgstr ""
-
#: skins/default/templates/user_profile/user_reputation.html:11
msgid "Your karma change log."
msgstr ""
@@ -5820,9 +5796,8 @@ msgstr[0] ""
msgstr[1] ""
#: skins/default/templates/user_profile/user_stats.html:16
-#, python-format
-msgid "<span class=\"count\">%(counter)s</span> Answer"
-msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+msgid "Answer"
+msgid_plural "Answers"
msgstr[0] ""
msgstr[1] ""
@@ -5831,10 +5806,6 @@ msgstr[1] ""
msgid "the answer has been voted for %(answer_score)s times"
msgstr ""
-#: skins/default/templates/user_profile/user_stats.html:24
-msgid "this answer has been selected as correct"
-msgstr ""
-
#: skins/default/templates/user_profile/user_stats.html:34
#, python-format
msgid "(%(comment_count)s comment)"
@@ -5872,14 +5843,14 @@ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/user_profile/user_stats.html:99
+#: skins/default/templates/user_profile/user_stats.html:97
#, python-format
msgid "<span class=\"count\">%(counter)s</span> Badge"
msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/user_profile/user_stats.html:122
+#: skins/default/templates/user_profile/user_stats.html:120
msgid "Answer to:"
msgstr ""
@@ -5887,7 +5858,7 @@ msgstr ""
msgid "User profile"
msgstr ""
-#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:785
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
msgid "comments and answers to others questions"
msgstr ""
@@ -5896,56 +5867,47 @@ msgid "followers and followed users"
msgstr ""
#: skins/default/templates/user_profile/user_tabs.html:21
-msgid "graph of user reputation"
-msgstr "Graph of user karma"
-
-#: skins/default/templates/user_profile/user_tabs.html:23
-msgid "reputation history"
-msgstr "karma"
+msgid "Graph of user karma"
+msgstr ""
#: skins/default/templates/user_profile/user_tabs.html:25
msgid "questions that user is following"
msgstr ""
-#: skins/default/templates/user_profile/user_tabs.html:29
-msgid "recent activity"
-msgstr "activity"
-
-#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:860
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
msgid "user vote record"
msgstr ""
#: skins/default/templates/user_profile/user_tabs.html:36
-msgid "casted votes"
-msgstr "votes"
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr ""
-#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:973
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
msgid "email subscription settings"
msgstr ""
-#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:211
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
msgid "moderate this user"
msgstr ""
-#: skins/default/templates/user_profile/user_votes.html:4
-msgid "votes"
-msgstr ""
-
#: skins/default/templates/widgets/answer_edit_tips.html:3
-msgid "answer tips"
-msgstr "Tips"
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:6
-msgid "please make your answer relevant to this community"
-msgstr "ask a question interesting to this community"
+msgid "give an answer interesting to this community"
+msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:9
msgid "try to give an answer, rather than engage into a discussion"
msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:12
-msgid "please try to provide details"
-msgstr "provide enough details"
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:15
#: skins/default/templates/widgets/question_edit_tips.html:11
@@ -5959,8 +5921,8 @@ msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:27
#: skins/default/templates/widgets/question_edit_tips.html:22
-msgid "Markdown tips"
-msgstr "Markdown basics"
+msgid "Markdown basics"
+msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:31
#: skins/default/templates/widgets/question_edit_tips.html:26
@@ -5983,11 +5945,6 @@ msgid "**bold** or __bold__"
msgstr ""
#: skins/default/templates/widgets/answer_edit_tips.html:45
-#: skins/default/templates/widgets/question_edit_tips.html:40
-msgid "link"
-msgstr ""
-
-#: skins/default/templates/widgets/answer_edit_tips.html:45
#: skins/default/templates/widgets/answer_edit_tips.html:49
#: skins/default/templates/widgets/question_edit_tips.html:40
#: skins/default/templates/widgets/question_edit_tips.html:45
@@ -6014,39 +5971,29 @@ msgstr ""
msgid "learn more about Markdown"
msgstr ""
-#: skins/default/templates/widgets/ask_button.html:2
-msgid "ask a question"
-msgstr "Ask Your Question"
-
#: skins/default/templates/widgets/ask_form.html:6
msgid "login to post question info"
msgstr ""
-"<span class=\"strong big\">You are welcome to start submitting your question "
-"anonymously</span>. When you submit the post, you will be redirected to the "
-"login/signup page. Your question will be saved in the current session and "
-"will be published after you log in. Login/signup process is very simple. "
-"Login takes about 30 seconds, initial signup takes a minute or less."
-#: skins/default/templates/widgets/ask_form.html:10
-#, python-format
+#: skins/default/templates/widgets/ask_form.html:7
msgid ""
-"must have valid %(email)s to post, \n"
-" see %(email_validation_faq_url)s\n"
-" "
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
msgstr ""
-"<span class='strong big'>Looks like your email address, %(email)s has not "
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
"yet been validated.</span> To post messages you must verify your email, "
-"please see <a href='%(email_validation_faq_url)s'>more details here</a>."
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
"<br>You can submit your question now and validate email after that. Your "
-"question will saved as pending meanwhile. "
-
-#: skins/default/templates/widgets/ask_form.html:42
-msgid "Login/signup to post your question"
-msgstr "Login/Signup to Post"
-
-#: skins/default/templates/widgets/ask_form.html:44
-msgid "Ask your question"
-msgstr "Ask Your Question"
+"question will saved as pending meanwhile."
+msgstr ""
#: skins/default/templates/widgets/contributors.html:3
msgid "Contributors"
@@ -6062,10 +6009,15 @@ msgid "about"
msgstr ""
#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
msgid "privacy policy"
msgstr ""
-#: skins/default/templates/widgets/footer.html:49
+#: skins/default/templates/widgets/footer.html:51
msgid "give feedback"
msgstr ""
@@ -6086,17 +6038,9 @@ msgstr "people"
msgid "badges"
msgstr ""
-#: skins/default/templates/widgets/question_edit_tips.html:3
-msgid "question tips"
-msgstr "Tips"
-
#: skins/default/templates/widgets/question_edit_tips.html:5
-msgid "please ask a relevant question"
-msgstr "ask a question interesting to this community"
-
-#: skins/default/templates/widgets/question_edit_tips.html:8
-msgid "please try provide enough details"
-msgstr "provide enough details"
+msgid "ask a question interesting to this community"
+msgstr ""
#: skins/default/templates/widgets/question_summary.html:12
msgid "view"
@@ -6116,27 +6060,27 @@ msgid_plural "votes"
msgstr[0] ""
msgstr[1] ""
-#: skins/default/templates/widgets/scope_nav.html:3
+#: skins/default/templates/widgets/scope_nav.html:6
msgid "ALL"
msgstr ""
-#: skins/default/templates/widgets/scope_nav.html:5
+#: skins/default/templates/widgets/scope_nav.html:8
msgid "see unanswered questions"
msgstr ""
-#: skins/default/templates/widgets/scope_nav.html:5
+#: skins/default/templates/widgets/scope_nav.html:8
msgid "UNANSWERED"
msgstr ""
-#: skins/default/templates/widgets/scope_nav.html:8
+#: skins/default/templates/widgets/scope_nav.html:11
msgid "see your followed questions"
msgstr ""
-#: skins/default/templates/widgets/scope_nav.html:8
+#: skins/default/templates/widgets/scope_nav.html:11
msgid "FOLLOWED"
msgstr ""
-#: skins/default/templates/widgets/scope_nav.html:11
+#: skins/default/templates/widgets/scope_nav.html:14
msgid "Please ask your question here"
msgstr ""
@@ -6148,23 +6092,23 @@ msgstr ""
msgid "badges:"
msgstr ""
-#: skins/default/templates/widgets/user_navigation.html:8
-msgid "logout"
-msgstr "sign out"
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr ""
-#: skins/default/templates/widgets/user_navigation.html:10
-msgid "login"
-msgstr "Hi, there! Please sign in"
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr ""
-#: skins/default/templates/widgets/user_navigation.html:14
+#: skins/default/templates/widgets/user_navigation.html:15
msgid "settings"
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:264
-msgid "no items in counter"
-msgstr "no"
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
msgid "Oops, apologies - there was some error"
msgstr ""
@@ -6176,96 +6120,127 @@ msgstr ""
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr ""
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "Choose screen name"
+#: utils/forms.py:60
+msgid "Choose a screen name"
+msgstr ""
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr ""
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr ""
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr ""
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr ""
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Your email <i>(never shared)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr ""
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr ""
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr ""
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Password"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Password <i>(please retype)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr ""
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr ""
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr ""
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr ""
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] ""
msgstr[1] ""
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] ""
msgstr[1] ""
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -6278,199 +6253,205 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "Sorry, anonymous users cannot vote"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+msgid "Sorry, anonymous users cannot vote"
+msgstr ""
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr ""
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr ""
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
msgstr ""
-#: views/commands.py:301
+#: views/commands.py:339
#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr ""
+msgid ""
"Your subscription is saved, but email address %(email)s needs to be "
-"validated, please see <a href='%(details_url)s'>more details here</a>"
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
-#: views/commands.py:308
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr ""
-#: views/commands.py:413
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:422
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: views/commands.py:555
+#: views/commands.py:600
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:84
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:152
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] ""
msgstr[1] ""
-#: views/readers.py:200
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-msgstr[1] ""
-
-#: views/readers.py:416
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr ""
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr ""
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr ""
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr ""
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr ""
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr ""
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "user karma"
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "Profile - User's Karma"
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr ""
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr ""
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr ""
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr ""
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr ""
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
msgstr ""
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr ""
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr ""
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
-#: views/writers.py:191
-msgid "Please log in to ask questions"
-msgstr ""
+#: views/writers.py:189
+msgid ""
"<span class=\"strong big\">You are welcome to start submitting your question "
"anonymously</span>. When you submit the post, you will be redirected to the "
"login/signup page. Your question will be saved in the current session and "
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
msgid "Please log in to answer questions"
msgstr ""
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:646
+#: views/writers.py:589
msgid "Sorry, anonymous users cannot edit comments"
msgstr ""
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
-#~ msgid "Question tags"
-#~ msgstr "Tags"
+#~ msgid "logout"
+#~ msgstr "sign out"
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
@@ -6501,6 +6482,3 @@ msgstr ""
#~ "the most interesting questions. Also, when you sign up for the first time "
#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
#~ "strong></a> personal image.</p>"
-
-#~ msgid "reputation points"
-#~ msgstr "karma"
diff --git a/askbot/locale/en/LC_MESSAGES/djangojs.mo b/askbot/locale/en/LC_MESSAGES/djangojs.mo
index 6f543394..cd60fb54 100644
--- a/askbot/locale/en/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/en/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/en/LC_MESSAGES/djangojs.po b/askbot/locale/en/LC_MESSAGES/djangojs.po
index 46073a5e..fa93edf1 100644
--- a/askbot/locale/en/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/en/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:58-0600\n"
+"POT-Creation-Date: 2012-04-18 18:58-0500\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"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,148 +75,81 @@ msgstr ""
msgid "loading..."
msgstr ""
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "please enter at least one tag"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, fuzzy, c-format
-msgid "%s content minchars"
-msgstr "please enter more than %s characters"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "please enter at least %s characters"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr ""
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "sorry, you cannot accept your own answer"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr ""
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "sorry, anonymous users cannot vote "
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
"are you sure this post is offensive, contains spam, advertising, malicious "
"remarks, etc.?"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr ""
+"are you sure this post is offensive, contains spam, advertising, malicious "
+"remarks, etc.?"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "are you sure you want to delete this?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "sorry, anonymous users cannot delete or undelete posts"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "your post is now restored!"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "your post has been deleted"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr "Follow"
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr ""
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr "save comment"
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "please enter at least %s more characters"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr "Are you sure you do not want to post this comment?"
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "do you really want to delete this comment?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -230,116 +163,140 @@ msgid_plural "Delete these notifications?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr "click to edit this comment"
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr "edit"
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"enter URL of the image, e.g. http://www.example.com/image.jpg or upload an "
"image file"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr "enter Web address, e.g. http://www.example.com \"page title\""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr "Please choose and upload a file:"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "please enter at least one tag"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#, fuzzy
+#~ msgid "%s content minchars"
+#~ msgstr "please enter more than %s characters"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s title minchars"
+#~ msgstr "please enter at least %s characters"
+
+#~ msgid "Follow"
+#~ msgstr "Follow"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "please enter at least %s more characters"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "Are you sure you do not want to post this comment?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "do you really want to delete this comment?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "click to edit this comment"
+
+#~ msgid "edit"
+#~ msgstr "edit"
diff --git a/askbot/locale/es/LC_MESSAGES/django.mo b/askbot/locale/es/LC_MESSAGES/django.mo
index 01d8c83e..8edbd712 100644
--- a/askbot/locale/es/LC_MESSAGES/django.mo
+++ b/askbot/locale/es/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/es/LC_MESSAGES/django.po b/askbot/locale/es/LC_MESSAGES/django.po
index 6d214740..2b3e9eb5 100644
--- a/askbot/locale/es/LC_MESSAGES/django.po
+++ b/askbot/locale/es/LC_MESSAGES/django.po
@@ -1,57 +1,57 @@
-# Spanish translation for CNPROG package.
-# Copyright (C) 2009 Gang Chen
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the CNPROG package.
-# Adolfo Fitoria, Bruno Sarlo, Francisco Espinosa 2009.
#
+# Translators:
+# Victor Trujillo <>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: Askbot\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 00:12+0200\n"
-"PO-Revision-Date: 2010-03-28 22:15-0600\n"
-"Last-Translator: Francisco Espinoza <pacoesni@gmail.com>\n"
-"Language-Team: Hasked Team <pacoesni@gmail.com>\n"
+"POT-Creation-Date: 2012-04-18 18:50-0500\n"
+"PO-Revision-Date: 2012-03-13 17:13+0000\n"
+"Last-Translator: Victor Trujillo <>\n"
+"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
+"askbot/language/es/)\n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
-"X-Poedit-Language: Spanish\n"
-"X-Poedit-Country: NICARAGUA\n"
-"X-Poedit-SourceCharset: utf-8\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: exceptions.py:13
-#, fuzzy
msgid "Sorry, but anonymous visitors cannot access this function"
-msgstr "usuarios anónimos no pueden votar"
+msgstr ""
+"Lo sentimos, pero los usuarios anónimos no pueden acceder a esta función"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "Selección individual de preguntas"
+msgstr "Feed independiente por preguntas"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "últimas preguntas"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Eliminar cuenta"
+msgstr "selecciona un país"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "País"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "este campo es requerido"
+msgstr "El campo de país es obligatorio"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "título"
@@ -59,73 +59,93 @@ msgstr "título"
msgid "please enter a descriptive title for your question"
msgstr "por favor ingrese un título descriptivo para su pregunta"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "el título debe contener más de 10 carácteres"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "el titulo debe contener mas de %d caracter"
+msgstr[1] "el titulo debe contener mas de %d caracteres"
-#: forms.py:119
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "contenido"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "la pregunta debe contener más de 10 carácteres"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "etiquetas"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"Las etiquetas son claves cortas, con o sin espacios. Puedes usar más de 5 "
-"etiquetas."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Las etiquetas son palabras claves sin espacios en blanco. Puedes añadir "
+"%(max_tags)d etiqueta."
+msgstr[1] ""
+"Las etiquetas son palabras claves sin espacios en blanco. Puedes añadir "
+"hasta %(max_tags)d etiquetas."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "etiquetas requeridas"
-#: forms.py:173
-#, fuzzy, python-format
+#: forms.py:232
+#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
-msgstr[0] "por favor, use 5 etiquetas o menos"
-msgstr[1] "por favor, use 5 etiquetas o menos"
+msgstr[0] "por favor utiliza %(tag_count)d tag o menos"
+msgstr[1] "por favor utiliza %(tag_count)d tags o menos"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Al menos una de las siguientes etiquetas se requieren : %(tags)s"
-#: forms.py:190
-#, fuzzy, python-format
+#: forms.py:249
+#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
-msgstr[0] "las etiquetas deben contener menos de 20 carácteres"
-msgstr[1] "las etiquetas deben contener menos de 20 carácteres"
+msgstr[0] "cada tag debe ser de menos de %(max_chars)d carácter"
+msgstr[1] "cada tag debe ser de menos de %(max_chars)d caracteres"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
+"wiki comunitaria (no se premia karma y cualquiera puede editar la "
+"publicación wiki)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
msgstr ""
-"si marcas la opción Wiki, la pregunta y las respuestas no generan puntos y "
-"el nombre del autor no se muestra"
+"si marcas la opción Wiki comunitaria,la pregunta y las respuestas no generan "
+"puntos y el nombre del autor no se muestra"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "actualizar resúmen:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -133,948 +153,1179 @@ msgstr ""
"ingrese un breve resumen de su revisión (por ejemplo, corregir la "
"ortografía, la gramática, el estilo mejorado, este campo es opcional)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr ""
+msgstr "Ingrese el número de puntos a añadir o quitar"
-#: forms.py:341 const/__init__.py:245
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "aprobado"
-#: forms.py:342 const/__init__.py:246
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "visto"
-#: forms.py:343 const/__init__.py:247
-#, fuzzy
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr "actualizado"
+msgstr "desactivado"
-#: forms.py:344 const/__init__.py:248
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "bloqueado"
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
-msgstr "administración"
+msgstr "administrador"
-#: forms.py:347 const/__init__.py:244
-#, fuzzy
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
-msgstr "moderar-usuario/"
+msgstr "moderador"
-#: forms.py:367
-#, fuzzy
+#: forms.py:426
msgid "Change status to"
-msgstr "Cambiar etiquetas"
+msgstr "Cambiar estado a"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
-msgstr ""
+msgstr "Cuál?"
-#: forms.py:415
-#, fuzzy
+#: forms.py:474
msgid "Cannot change own status"
-msgstr "no se puede votar por sus propias publicaciones"
+msgstr "No puedes cambiar tu propio estado"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "No tiene permitido habilitar a otros usuarios como moderadores"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "No tiene permitido cambiar el estado de otro moderador"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "no se puede votar por sus propias publicaciones"
+msgstr "No puedes cambiar el estado a Admin"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"Si deseas cambiar el estado de %(username)s, por favor haz la selección "
+"correcta"
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
-msgstr "Sujeto"
+msgstr "Línea del tema"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
-msgstr "Mensaje de Texto"
+msgstr "Texto del mensaje"
-#: forms.py:542
-msgid "Your name:"
-msgstr "Tu nombre:"
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr "Tu nombre (opcional):"
-#: forms.py:543
-msgid "Email (not shared with anyone):"
-msgstr "Email (no lo compartiremos con nadie):"
+#: forms.py:531
+msgid "Email:"
+msgstr "Email:"
-#: forms.py:544
+#: forms.py:533
msgid "Your message:"
-msgstr "Tu mensaje:"
+msgstr "Su mensaje:"
+
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr "No deseo dar mi correo electrónico o recibir una respuesta:"
+
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr "Por favor, marque el campo \"No deseo dar mi correo electrónico\"."
-#: forms.py:581
+#: forms.py:599
msgid "ask anonymously"
-msgstr ""
+msgstr "pregunte anónimamente"
-#: forms.py:583
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
+msgstr "Compruebe si no desea revelar su nombre cuando realice esta pregunta"
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
msgstr ""
-#: forms.py:743
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Ha solicitado realizar esta pregunta anónimamente, si decide revelar su "
+"identidad, por favor marque esta caja."
-#: forms.py:747
+#: forms.py:773
msgid "reveal identity"
-msgstr ""
+msgstr "revelar identidad"
-#: forms.py:805
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"Lo sentimos, sólo el propietario de la pregunta anónima puede revelar su "
+"identidad, por favor desactiva el check de la casilla"
-#: forms.py:818
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"Lo sentimos, las normas han cambiado y no es posible preguntar de forma "
+"anónima. Por favor, haz click en \"revelar identidad\" o recarga esta página "
+"e intenta editar esta pregunta de nuevo."
-#: forms.py:856
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "este email no esta vinculado con gravatar"
-
-#: forms.py:863
+#: forms.py:888
msgid "Real name"
msgstr "Nombre Real"
-#: forms.py:870
+#: forms.py:895
msgid "Website"
msgstr "Sitio Web"
-#: forms.py:877
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "Ciudad"
-#: forms.py:886
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "Mostrar país"
-#: forms.py:891
+#: forms.py:916
msgid "Date of birth"
msgstr "Fecha de nacimiento"
-#: forms.py:892
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "no será mostrada, se usa para calcular la edad, formato: Año-Mes-Dia"
-#: forms.py:898
+#: forms.py:923
msgid "Profile"
msgstr "Perfil"
-#: forms.py:907
+#: forms.py:932
msgid "Screen name"
msgstr "Nombre para mostrar"
-#: forms.py:938 forms.py:939
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr ""
"esta dirección de email ya ha sido registrada, por favor utiliza una "
"diferente"
-#: forms.py:946
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "Seleccione una etiqueta de filtro para el email"
-#: forms.py:993
+#: forms.py:1018
msgid "Asked by me"
msgstr "Preguntadas por mi"
-#: forms.py:996
+#: forms.py:1021
msgid "Answered by me"
msgstr "Respondidas por mi"
-#: forms.py:999
+#: forms.py:1024
msgid "Individually selected"
msgstr "Selección individual"
-#: forms.py:1002
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Foro completo (filtrado por etiqueta)"
-#: forms.py:1006
+#: forms.py:1031
msgid "Comments and posts mentioning me"
-msgstr ""
+msgstr "Comentarios y post que me mencionan"
-#: forms.py:1085
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "por favor seleccione una de las siguientes opciones"
+
+#: forms.py:1115
msgid "okay, let's try!"
msgstr "bien, vamos a probar!"
-#: forms.py:1086
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "no usar un email de la comunidad, por favor"
-#: forms.py:1090
-msgid "please choose one of the options above"
-msgstr "por favor seleccione una de las siguientes opciones"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
-#: urls.py:53
+#: urls.py:41
msgid "about/"
msgstr "acerca-de/"
-#: urls.py:54
+#: urls.py:42
msgid "faq/"
msgstr "faq/"
-#: urls.py:55
+#: urls.py:43
msgid "privacy/"
msgstr "privacidad/"
-#: urls.py:57 urls.py:62
+#: urls.py:44
+msgid "help/"
+msgstr "ayuda/"
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "respuestas/"
-#: urls.py:57 urls.py:83 urls.py:203
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "editar/"
-#: urls.py:62 urls.py:113
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "revisiones/"
-#: urls.py:68 urls.py:78 urls.py:83 urls.py:88 urls.py:93 urls.py:98
-#: urls.py:103 urls.py:108 urls.py:113 urls.py:290
+#: urls.py:61
+msgid "questions"
+msgstr "preguntas"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "preguntas/"
-#: urls.py:78
+#: urls.py:82
msgid "ask/"
msgstr "preguntar/"
-#: urls.py:88
-#, fuzzy
+#: urls.py:92
msgid "retag/"
-msgstr "etiquetas/"
+msgstr "retagear/"
-#: urls.py:93
+#: urls.py:97
msgid "close/"
msgstr "cerrar/"
-#: urls.py:98
+#: urls.py:102
msgid "reopen/"
msgstr "reabrir/"
-#: urls.py:103
+#: urls.py:107
msgid "answer/"
msgstr "responder/"
-#: urls.py:108
+#: urls.py:112
msgid "vote/"
msgstr "votar/"
-#: urls.py:149
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgets/"
+
+#: urls.py:158
msgid "tags/"
msgstr "etiquetas/"
-#: urls.py:192
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "suscripcion-por-tags/"
-#: urls.py:197 urls.py:203 urls.py:209 urls.py:217
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "usuarios/"
-#: urls.py:210
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "suscripción por email"
+msgstr "suscripciones/"
-#: urls.py:222
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "usuarios/actualizar_avatar_personalizado/"
-#: urls.py:227 urls.py:232
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "trofeos/"
-#: urls.py:237
+#: urls.py:246
msgid "messages/"
msgstr "mensajes/"
-#: urls.py:237
+#: urls.py:246
msgid "markread/"
msgstr "marcar-como-leidos/"
-#: urls.py:253
+#: urls.py:262
msgid "upload/"
msgstr "subir/"
-#: urls.py:254
+#: urls.py:263
msgid "feedback/"
msgstr "feedback/"
-#: urls.py:296
+#: urls.py:305
msgid "question/"
msgstr "pregunta/"
-#: urls.py:303 setup_templates/settings.py:203
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "cuenta/"
-#: conf/badges.py:12
-#, fuzzy
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr "Acceder a los ajustes"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr "Permitir sólo a los usuarios registrados acceder al sitio"
+
+#: conf/badges.py:13
msgid "Badge settings"
-msgstr "Configuraciones básicas"
+msgstr "Configuración de las Medallas"
-#: conf/badges.py:21
+#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
-msgstr ""
+msgstr "Disciplinado: Borrar un mensaje propio con votaciones positivas"
-#: conf/badges.py:30
+#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Presión Popular: Borrar un mensaje propio con votaciones negativas"
-#: conf/badges.py:39
+#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Profesor: Respuestas con votos positivos"
-#: conf/badges.py:48
+#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Buena Respuesta: Respuestas votadas positivamente"
-#: conf/badges.py:57
+#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Muy Buena Respuesta: Respuestas votadas positivamente "
-#: conf/badges.py:66
+#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Gran Respuesta: Respuestas votadas positivamente"
-#: conf/badges.py:75
+#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Buena Pregunta: Preguntas votadas positivamente"
-#: conf/badges.py:84
+#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Muy Buena Pregunta: Preguntas votadas positivamente"
-#: conf/badges.py:93
+#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Gran Pregunta: Preguntas votadas positivamente"
-#: conf/badges.py:102
-#, fuzzy
+#: conf/badges.py:104
msgid "Popular Question: minimum views"
-msgstr "Formula tu pregunta"
+msgstr "Pregunta Popular: Pregunta con número de visitas"
-#: conf/badges.py:111
-#, fuzzy
+#: conf/badges.py:113
msgid "Notable Question: minimum views"
-msgstr "todas las preguntas"
+msgstr "Pregunta Notoria: Pregunta con número de visitas"
-#: conf/badges.py:120
-#, fuzzy
+#: conf/badges.py:122
msgid "Famous Question: minimum views"
-msgstr "Cerrar pregunta"
+msgstr "Pregunta Famosa: Pregunta con número de visitas"
-#: conf/badges.py:129
+#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "Autodidacta: Responder a tu propia pregunta"
-#: conf/badges.py:138
+#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "Deber Cívico: Número de votos emitidos"
-#: conf/badges.py:147
+#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "Encantado: Número de votos positivos"
-#: conf/badges.py:156
+#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Guru: Número de votos positivos"
-#: conf/badges.py:165
+#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Necromante: Número de votos positivos"
-#: conf/badges.py:174
+#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Necromante: Número de días de retraso"
-#: conf/badges.py:183
+#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Editor Asociado: Número de ediciones"
-#: conf/badges.py:192
-#, fuzzy
+#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
-msgstr "preguntas favoritas"
+msgstr "Pregunta Favorita: Pregunta marcada como favorita"
-#: conf/badges.py:201
-#, fuzzy
+#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
-msgstr "Aún tiene preguntas?"
+msgstr "Pregunta Estelar: Pregunta marcada como favorita"
-#: conf/badges.py:210
+#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Comentarista: Comentarios realizados"
-#: conf/badges.py:219
+#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "Taxónomo: Número de etiquetas"
-#: conf/badges.py:228
+#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "Entusiasta: Número de días"
-#: conf/email.py:14
+#: conf/email.py:15
msgid "Email and email alert settings"
-msgstr ""
+msgstr "Configuración de alertas y email"
#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr "Prefijo para el campo de correo electrónico"
+
+#: conf/email.py:26
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"Esta configuración se tomará por defecto dela valor de django "
+"EMAIL_SUBJECT_PREFIX. Si introduces un valor aquí se ignorará el valor por "
+"defecto."
+
+#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configuración de alertas y email"
-#: conf/email.py:36
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr ""
+msgstr "Número máximo de nuevas entradas en una alerta de email"
-#: conf/email.py:64
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr ""
+msgstr "Frecuencia de notificación por defecto para todas las preguntas"
-#: conf/email.py:66
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
+"Opción para definir la frecuencia de las actualizaciones enviadas por email "
+"para todas las preguntas"
-#: conf/email.py:78
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr "ver preguntas etiquetadas"
+msgstr ""
+"Frecuencia de notificación por defecto para las preguntas realizadas por el "
+"usuario"
-#: conf/email.py:80
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"Opción para definir la frecuencia de las actualizaciones enviadas por email "
+"para las preguntas realizadas por el usuario."
-#: conf/email.py:92
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
-"eliminar cualquier pregunta y respuesta, y agregar otras tareas de moderación"
+"Frecuencia de notificación por defecto para las respuestas realizadas por el "
+"usuario"
-#: conf/email.py:94
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"Opción para definir la frecuencia de las actualizaciones enviadas por email "
+"para las preguntas realizadas por el usuario."
-#: conf/email.py:106
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
+"Frecuencia por defecto de las notificaciones seleccionadas por el usuario"
-#: conf/email.py:109
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
+"Opción para definir la frecuencia de las actualizaciones para las preguntas "
+"seleccionadas por el usuario"
-#: conf/email.py:121
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
+"Frecuencia por defecto de las notificaciones de las menciones y los "
+"comentarios"
-#: conf/email.py:124
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
+"Opción para definir la frecuencia de las actualizaciones enviadas por email "
+"para las menciones y comentarios"
-#: conf/email.py:135
-#, fuzzy
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr "lista de preguntas sin contestar"
+msgstr "Enviar recordatorios periódicos sobre preguntas sin contestar"
-#: conf/email.py:137
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
-"- with an appropriate frequency) and an IMAP server with a dedicated inbox "
-"must be configured "
+"- with an appropriate frequency) "
msgstr ""
+"NOTA: para utilizar este ajuste, es necesario ejecutar el comando de gestión "
+"\"send_unanswered_questions_reminders\" (por ejemplo, via cron job con la "
+"frecuencia correcta)"
-#: conf/email.py:151
-#, fuzzy
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "lista de preguntas sin contestar"
+msgstr ""
+"Días antes de empezar a enviar recordatorios sobre preguntas sin contestar"
-#: conf/email.py:162
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
+"Frecuencia para enviar recordatorios sobre preguntas sin contestar (en días)"
-#: conf/email.py:174
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
+msgstr "Número máximo de recordatorios a enviar sobre preguntas sin contestar"
+
+#: conf/email.py:177
+msgid "Send periodic reminders to accept the best answer"
+msgstr "Enviar recordatorios periódicos para aceptar la mejor respuesta"
+
+#: conf/email.py:179
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
+msgstr ""
+"NOTA: para utilizar esta característica es necesario ejecutar el comando "
+"\"send_accept_answer_reminders\" (por ejemplo via cron job con su "
+"correspondiente frecuencia) "
+
+#: conf/email.py:192
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+"Días antes de empezar a enviar recordatorios para aceptar una respuesta"
+
+#: conf/email.py:203
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
msgstr ""
+"Con qué frecuencia se envían recordatorios para aceptar respuestas (en días "
+"entre los recordatorios enviados)"
-#: conf/email.py:186
+#: conf/email.py:215
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr "Número máximo de recordatorios a enviar para aceptar la mejor pregunta"
+
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
-msgstr "Es requerida una verificación via email antes de poder publicar"
+msgstr "Se requiere una verificación via email antes de poder publicar"
-#: conf/email.py:187
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
-msgstr "Se ha comenzado el proceso de verificación con una llave enviada a su correo electrónico"
+msgstr ""
+"Se ha comenzado el proceso de verificación con una llave enviada a su correo "
+"electrónico"
-#: conf/email.py:196
-#, fuzzy
+#: conf/email.py:237
msgid "Allow only one account per email address"
-msgstr "tu dirección de email"
+msgstr "Permitir sólo una cuenta por cada email"
-#: conf/email.py:205
+#: conf/email.py:246
msgid "Fake email for anonymous user"
-msgstr ""
+msgstr "Email falso para un usuario anónimo"
-#: conf/email.py:206
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
-msgstr ""
+msgstr "Utiliza esta configuración para controlar el email de gravatar"
-#: conf/email.py:76
-msgid "Prefix for the email subject line"
-msgstr "Prefijo para el campo de correo electrónico"
-
-#: conf/email.py:215
-#, fuzzy
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr "ingresa para publicar información de la pregunta"
+msgstr "Permitir enviar preguntas por email"
-#: conf/email.py:217
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Antes de activar esta opción, por favor completa la configuración de IMAP en "
+"el archivo settings.py"
-#: conf/email.py:228
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Reemplazar el espacio en las etiquetas con un guión"
-#: conf/email.py:230
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"Esta configuración se aplica a las etiquetas escritas en el Asunto de las "
+"preguntas preguntadas por email"
+
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "Permitir enviar preguntas por email"
-#: conf/external_keys.py:10
-msgid "Keys to connect the site with external services like Facebook, etc."
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
msgstr ""
-#: conf/external_keys.py:18
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr "Llaves para servicios externos"
+
+#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Llave de verificación de Google site"
-#: conf/external_keys.py:20
+#: conf/external_keys.py:21
#, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
+"Esta llave ayuda a google a indizar tu sitio, puedes obtenerla en <a href="
+"\"%(url)s?hl=%(lang)s\">google webmasters tools</a>"
-#: conf/external_keys.py:35
+#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "LLave de Googne Analytics"
-#: conf/external_keys.py:37
+#: conf/external_keys.py:38
#, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
+"Puedes obtener <a href=\"%(url)s\">Google Analytics</a>, si deseas utilizar "
+"Google Analytics para ver las estadísticas de tu sitio."
-#: conf/external_keys.py:50
+#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr "Habilitar recaptcha (las llaves de abajo son requeridas)"
-#: conf/external_keys.py:59
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Llave pública de Recaptcha"
-#: conf/external_keys.py:67
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Llave privada de Recaptcha"
-#: conf/external_keys.py:69
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
+"Recaptcha te permite distinguir a gente real de los robots que envían spam. "
+"Puedes obtener una clave pública aqui: <a href=\"%(url)s\">%(url)s</a>"
-#: conf/external_keys.py:81
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Llave pública para API de Facebook"
-#: conf/external_keys.py:83
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
"\">facebook create app</a> site"
msgstr ""
+"Facebook API Key y Facebook Secret te permiten utilizar Facebook Connect en "
+"tu sitio. Para obtener las llaves debes <a href=\"%(url)s\">crear aplicación "
+"en Facebook</a> site"
-#: conf/external_keys.py:96
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Llave privada de Facebook"
-#: conf/external_keys.py:104
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Twitter Key"
-#: conf/external_keys.py:106
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
+"Por favor, registra tu foro en <a href=\"%(url)s\">twitter para "
+"aplicaciones</a>"
-#: conf/external_keys.py:117
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Twitter Secret"
-#: conf/external_keys.py:125
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "LinkedIn Key"
-#: conf/external_keys.py:127
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
+"Por favor, registra tu foro en <a href=\"%(url)s\">LinkedIn para "
+"Desarrolladores</a>"
-#: conf/external_keys.py:138
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "LinkedIn Secret"
-#: conf/external_keys.py:146
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "ident.ca key"
-#: conf/external_keys.py:148
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
+"Por favor, registra tu foro en <a href=\"%(url)s\">Identi.ca aplicaciones</a>"
-#: conf/external_keys.py:159
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr ""
+msgstr "ident.ca secret"
-#: conf/external_keys.py:167
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:176
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:184
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:192
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Cambiar Contraseña"
-
-#: conf/flatpages.py:10
+#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
-msgstr ""
+msgstr "Páginas simples - sobre nosotros, política de privacidad, etc."
-#: conf/flatpages.py:17
+#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr "Texto para la página de descripción del foro (formato html)"
-#: conf/flatpages.py:20
+#: conf/flatpages.py:22
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"about\" page to check your input."
msgstr ""
+"Guarda y luego <a href=\"http://validator.w3.org/\">utiliza el validador "
+"HTML</a> en la página de \"sobre nosotros\" para comprobar el resultado."
-#: conf/flatpages.py:30
-msgid "Text of the Q&A forum Privacy Policy (html format)"
-msgstr "Texto para la página de politicas de privacidad del foro (formato html)"
+#: conf/flatpages.py:32
+msgid "Text of the Q&A forum FAQ page (html format)"
+msgstr "Texto de la página de \"FAQ\" del foro Q&A (en formato html)"
-#: conf/flatpages.py:33
+#: conf/flatpages.py:35
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
+"Guarda y luego <a href=\"http://validator.w3.org/\">utiliza el validador "
+"HTML</a> en la página de \"FAQ\" para comprobar el resultado."
+
+#: conf/flatpages.py:46
+msgid "Text of the Q&A forum Privacy Policy (html format)"
+msgstr ""
+"Texto para la página de politicas de privacidad del foro (formato html)"
-#: conf/flatpages.py:47
+#: conf/flatpages.py:49
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"privacy\" page to check your input."
msgstr ""
+"Guarda y luego <a href=\"http://validator.w3.org/\">utiliza el validador "
+"HTML</a> en la página de \"PRIVACIDAD\" para comprobar el resultado."
-#: conf/forum_data_rules.py:11
-msgid "Data entry and display"
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
+msgstr "Entrada de datos y reglas de diseño"
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
msgstr ""
-#: conf/forum_data_rules.py:20
-#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
+"Activar embeber videos. <em>Nota: por favor <a href=\"%(url)s>lee esto</a> "
+"antes.</em>"
-#: conf/forum_data_rules.py:31
+#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
-msgstr ""
+msgstr "Marca la casilla para activar la comunidad wiki"
-#: conf/forum_data_rules.py:40
+#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Permitir hacer preguntas anónimamente"
-#: conf/forum_data_rules.py:42
+#: conf/forum_data_rules.py:44
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"Los usuarios no acumulan reputación por hacer preguntas anónimas y su "
+"identidad no será revelada hasta que cambien de opinión"
-#: conf/forum_data_rules.py:54
+#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "Permitir enviar antes de hacer login"
-#: conf/forum_data_rules.py:56
+#: conf/forum_data_rules.py:58
msgid ""
"Check if you want to allow users start posting questions or answers before "
"logging in. Enabling this may require adjustments in the user login system "
"to check for pending posts every time the user logs in. The builtin Askbot "
"login system supports this feature."
msgstr ""
+"Marca la casilla para permitir a los usuarios enviar preguntas o respuestas "
+"antes de hacer login. Activar esto puede precisar ajustes en el sistema de "
+"login de usuarios para comprobar los post pendientes cada vez que el usuario "
+"hace login. Askbot soporta por defecto esta característica."
-#: conf/forum_data_rules.py:71
-#, fuzzy
+#: conf/forum_data_rules.py:73
msgid "Allow swapping answer with question"
-msgstr "no es una respuesa a la pregunta"
+msgstr "Permitir intercambiar una respuesta por una pregunta"
-#: conf/forum_data_rules.py:73
+#: conf/forum_data_rules.py:75
msgid ""
"This setting will help import data from other forums such as zendesk, when "
"automatic data import fails to detect the original question correctly."
msgstr ""
+"Este ajuste te ayudará a importar datos de otros foros como zendesk, cuando "
+"falle la importación automática de datos y no detecte la pregunta original "
+"correctamente."
-#: conf/forum_data_rules.py:85
+#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "Tamaño máximo de una etiqueta (número de caracteres)"
-#: conf/forum_data_rules.py:93
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "Tamaño minimo del titulo (numero de caracteres)"
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "Tamaño minimo de la pregunta (numero de caracteres)"
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "Tamaño minimo de la respuesta (numero de caracteres)"
+
+#: conf/forum_data_rules.py:126
#, fuzzy
+msgid "Are tags required?"
+msgstr "etiquetas requeridas"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "actualizar etiquetas"
+msgstr "Etiquetas obligatorias"
-#: conf/forum_data_rules.py:96
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
+"Al menos una de estas etiquetas será requerida por cada nueva pregunta o "
+"editada. Una etiqueta obligatoria podria ser el asterisco, si las etiquetas "
+"comodín están activadas."
-#: conf/forum_data_rules.py:108
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Forzar las minúsculas en las etiquetas"
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
+"Atención: después de marcar esto, por favor haz un backup de tu base de "
+"datos y ejecuta el siguiente comando: <code>python manage.py "
+"fix_question_tags</code> para renombrar todas las tags globalmente"
-#: conf/forum_data_rules.py:124
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "Formato de la lista de etiquetas"
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
+"Selecciona el formato para mostrar las etiquetas, como un listado simple, o "
+"como una nube de etiquetas"
-#: conf/forum_data_rules.py:138
-#, fuzzy
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr "Etiquetas relacionadas"
+msgstr "Utilizar etiquetas comodín"
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
+"Las etiquetas comodín pueden ser utilizadas para seguir o ignorar muchas "
+"etiquetas de una vez, una etiqueta comodín válida tiene un asterisco al "
+"final de la misma"
-#: conf/forum_data_rules.py:153
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
"Cantidad máxima por defecto, de comentarios a mostrarse para cada entrada"
-#: conf/forum_data_rules.py:164
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr "Tamaño máximo de un comentario, debe ser menor a %(max_len)s"
-#: conf/forum_data_rules.py:174
-#, fuzzy
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr "%s comentarios dejados"
+msgstr "Limitar el tiempo para editar los comentarios"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
-msgstr ""
+msgstr "Si no está marcado, no existirá tiempo para editar los comentarios"
-#: conf/forum_data_rules.py:187
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Minutos permitidos para editar un comentario"
-#: conf/forum_data_rules.py:188
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Para activar este ajuste, marca el anterior"
-#: conf/forum_data_rules.py:197
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "Guardar comentario pulsando la tecla <INTRO>"
-#: conf/forum_data_rules.py:206
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr "Tamaño minimo para terminos de búsqueda Ajax "
-#: conf/forum_data_rules.py:207
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
-msgstr ""
+msgstr "Debe coincidir con el ajuste correspondiente de la base de datos"
-#: conf/forum_data_rules.py:216
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "No fijar el texto en el campo de búsqueda"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
+"Marcar para desactivar la fijación de texto en el campo de búsqueda. Esto "
+"puede servir de ayuda si quieres mover la barra de búsqueda lejos de la "
+"posición por defecto o no te gusta el comportamiento del texto fijo en la "
+"caja de búsqueda."
-#: conf/forum_data_rules.py:231
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "Número máximo de etiquetas por cada pregunta"
-#: conf/forum_data_rules.py:243
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "Número máximo de preguntas a listar por defecto"
-#: conf/forum_data_rules.py:253
-#, fuzzy
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
-msgstr "lista de preguntas sin contestar"
+msgstr "¿Qué debería significar \"pregunta sin responder\"?"
-#: conf/license.py:12
-#, fuzzy
-msgid "License settings"
-msgstr "Configuraciones básicas"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
-#: conf/license.py:19
-msgid "Show license clause in the site footer"
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "Utiliza la autenticación LDAP para el password del login"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
msgstr ""
-#: conf/license.py:28
-msgid "Short name for the license"
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
msgstr ""
-#: conf/license.py:37
-msgid "Full name of the license"
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
msgstr ""
-#: conf/license.py:38
-msgid "Creative Commons Attribution Share Alike 3.0"
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "Proveedor de servicio LDAP"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
msgstr ""
-#: conf/license.py:46
-msgid "Add link to the license page"
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "Proveedor de servicio LDAP"
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "Columna lateral de la izquierda"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Activar columna lateral de la izquierda"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr "HTML para la columna lateral de la izquierda"
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
msgstr ""
+"Utiliza este area para introducir contenido en la columna de la izquierda en "
+"formato HTML. Cuando utilices esta opcion, asegurate de validar tu codigo "
+"HTML para que funcione en todos los navegadores."
-#: conf/license.py:55
+#: conf/license.py:13
#, fuzzy
-msgid "License homepage"
-msgstr "volver a inicio"
+msgid "Content License"
+msgstr "Licencia de Contenido"
+
+#: conf/license.py:21
+msgid "Show license clause in the site footer"
+msgstr "Mostrar información de licencia en el pie de la página"
+
+#: conf/license.py:30
+msgid "Short name for the license"
+msgstr "Nombre corto para la licencia"
+
+#: conf/license.py:39
+msgid "Full name of the license"
+msgstr "Nombre completo para la licencia"
+
+#: conf/license.py:40
+msgid "Creative Commons Attribution Share Alike 3.0"
+msgstr "Creative Commons Reconocimiento-CompartirIgual 3.0"
+
+#: conf/license.py:48
+msgid "Add link to the license page"
+msgstr "Añadir enlace a la licencia de la página"
#: conf/license.py:57
+msgid "License homepage"
+msgstr "Página Principal de la Licencia"
+
+#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "Dirección de la página legal con toda la información oficial"
-#: conf/license.py:67
+#: conf/license.py:69
msgid "Use license logo"
-msgstr ""
+msgstr "Utilizar el logotipo de la licencia"
-#: conf/license.py:76
+#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Imagen del logotipo de la licencia"
-#: conf/login_providers.py:12
+#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "Configuración del login del proveedor"
-#: conf/login_providers.py:20
+#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgstr "Mostrar botones de login alternativos en la página de registro"
-#: conf/login_providers.py:29
+#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
+"Mostrar siempre el formulario de login local y esconder el botón de Askbot"
-#: conf/login_providers.py:38
+#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
+"Activar para permitir hacer login con un sitio wordpress en hosting propio"
-#: conf/login_providers.py:39
+#: conf/login_providers.py:41
msgid ""
"to activate this feature you must fill out the wordpress xml-rpc setting "
"bellow"
msgstr ""
+"para activar esta característica debes rellenar la configuración de "
+"wordpress xml-rpc de abajo"
-#: conf/login_providers.py:48
+#: conf/login_providers.py:50
msgid ""
"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
"xmlrpc.php"
msgstr ""
+"Introducir la url de xml-rpc de wordpress, normalmente http://misitio.com/"
+"xmlrpc.php"
-#: conf/login_providers.py:49
+#: conf/login_providers.py:51
msgid ""
"To enable, go to Settings->Writing->Remote Publishing and check the box for "
"XML-RPC"
msgstr ""
+"Para activar, ve a Configuracion-> Escritura-> Publicación Remota y "
+"comprueba la caja de XML-RPC"
#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "Subir tu icono"
#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
-msgstr ""
+msgstr "Activar el login de %(provider)s"
#: conf/login_providers.py:95
#, python-format
@@ -1082,60 +1333,74 @@ msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
"need to be set in the \"External keys\" section"
msgstr ""
+"Nota: para activar el login de %(provider)s necesitas configurar algunos "
+"parámetros adicionales en la sección \"Llaves externas\""
-#: conf/markup.py:14
-msgid "Markup formatting"
-msgstr ""
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr "Código de los posts"
-#: conf/markup.py:39
+#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Activar marcas de código"
-#: conf/markup.py:41
+#: conf/markup.py:43
msgid ""
"If checked, underscore characters will not trigger italic or bold formatting "
"- bold and italic text can still be marked up with asterisks. Note that "
"\"MathJax support\" implicitly turns this feature on, because underscores "
"are heavily used in LaTeX input."
msgstr ""
+"Si está marcado, los guiones bajos no llevarán letra itálica o negrita, "
+"aunque podrán seguir marcándose con asteriscos. Nota: el \"Soporte MathJax"
+"\" activa esta característica automáticamente, porque los guiones bajos son "
+"muy usados por LaTeX."
-#: conf/markup.py:56
+#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
-msgstr ""
+msgstr "Soporte para Mathjax (generado de LaTeX)"
-#: conf/markup.py:58
+#: conf/markup.py:60
#, python-format
msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
msgstr ""
+"Si activas esta característica, <a href=\"%(url)s\">mathjax</a> será "
+"instalado en tu servidor con su propio directorio."
-#: conf/markup.py:72
+#: conf/markup.py:74
msgid "Base url of MathJax deployment"
-msgstr ""
+msgstr "Dirección URL base para activar Mathjax"
-#: conf/markup.py:74
+#: conf/markup.py:76
msgid ""
"Note - <strong>MathJax is not included with askbot</strong> - you should "
"deploy it yourself, preferably at a separate domain and enter url pointing "
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
+"Nota - <strong>MathJax no está incluido con askbot</strong> - debes "
+"activarlo tu mismo, preferiblemente en un dominio independiente y "
+"introduciendo una URL que apunte a la carpeta \"mathjax\" (por ejemplo: "
+"http://misitio.com/mathjax)"
-#: conf/markup.py:89
+#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
-msgstr ""
+msgstr "Activar autoenlazado con cadenas específicas"
-#: conf/markup.py:91
+#: conf/markup.py:93
msgid ""
"If you enable this feature, the application will be able to detect patterns "
"and auto link to URLs"
msgstr ""
+"Si activas esta característica, la aplicación podrá detectar cadenas y "
+"autoenlazar a URLs"
-#: conf/markup.py:104
+#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "Regex para detectar cadenas de enlaces"
-#: conf/markup.py:106
+#: conf/markup.py:108
msgid ""
"Enter valid regular expressions for the patters, one per line. For example "
"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
@@ -1143,12 +1408,17 @@ msgid ""
"to the link url template. Please look up more information about regular "
"expressions elsewhere."
msgstr ""
+"Introduce expresiones regulares validas para encontrar cadenas, una por "
+"linea. Por ejemplo, para detectar un error en la cadena #error123, utiliza "
+"la siguiente expresion: #bug(\\d+) Los numeros capturados entre parentesis "
+"seran enviados al enlace de la plantilla. Para conocer mas sobre las "
+"expresiones regulares consulta en internet."
-#: conf/markup.py:125
+#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "Direcciones URL para autoenlazar"
-#: conf/markup.py:127
+#: conf/markup.py:129
msgid ""
"Here, please enter url templates for the patterns entered in the previous "
"setting, also one entry per line. <strong>Make sure that number of lines in "
@@ -1157,341 +1427,356 @@ msgid ""
"shown above and the entry in the post #123 will produce link to the bug 123 "
"in the redhat bug tracker."
msgstr ""
+"Introduce aqui las direcciones URL de las plantillas para cada una de las "
+"cadenas que has introducido previamente, solo una entrada por cada linea de "
+"texto. <strong>Asegurate que el numero de lineas coincida con el anterior "
+"ajuste.</strong> Por ejemplo la plantilla https://bugzilla.redhat.com/"
+"show_bug.cgi?id=\\1 debe ir junto a la cadena que se muestra arriba en la "
+"entrada del post 123 y tendra como resultado un enlace al error 123 en el "
+"tracking de errores de Redhat."
-#: conf/minimum_reputation.py:11
-msgid "Minimum reputation required to perform actions"
-msgstr "Para realizar acciones es requerido una reputación mínima"
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr "Límites del Karma"
-#: conf/minimum_reputation.py:20
-#, fuzzy
+#: conf/minimum_reputation.py:22
msgid "Upvote"
-msgstr "voto positivo"
+msgstr "Voto positivo"
-#: conf/minimum_reputation.py:29
-#, fuzzy
+#: conf/minimum_reputation.py:31
msgid "Downvote"
-msgstr "voto negativo"
+msgstr "Voto negativo"
-#: conf/minimum_reputation.py:38
-#, fuzzy
+#: conf/minimum_reputation.py:40
msgid "Answer own question immediately"
-msgstr "Responde tu pregunta"
+msgstr "Contestar tu propia pregunta inmediatamente"
-#: conf/minimum_reputation.py:47
-#, fuzzy
+#: conf/minimum_reputation.py:49
msgid "Accept own answer"
-msgstr "editar cualquier respuesta"
+msgstr "Aceptar respuesta propia"
-#: conf/minimum_reputation.py:56
-#, fuzzy
+#: conf/minimum_reputation.py:58
msgid "Flag offensive"
-msgstr "marcar como ofensivo"
+msgstr "Denunciar como ofensivo"
-#: conf/minimum_reputation.py:65
-#, fuzzy
+#: conf/minimum_reputation.py:67
msgid "Leave comments"
-msgstr "comentar"
+msgstr "Comentarios activos"
-#: conf/minimum_reputation.py:74
+#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
msgstr "Borrar comentarios creados por otros usuarios"
-#: conf/minimum_reputation.py:83
-#, fuzzy
+#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
-msgstr ""
-"eliminar cualquier pregunta y respuesta, y agregar otras tareas de moderación"
+msgstr "Eliminar preguntas y respuestas enviadas por otros usuarios"
-#: conf/minimum_reputation.py:92
-#, fuzzy
+#: conf/minimum_reputation.py:94
msgid "Upload files"
-msgstr "archivos-subidos/"
+msgstr "Subir ficheros"
-#: conf/minimum_reputation.py:101
-#, fuzzy
+#: conf/minimum_reputation.py:103
msgid "Close own questions"
-msgstr "Cerrar pregunta"
+msgstr "Cerrar preguntas propias"
-#: conf/minimum_reputation.py:110
+#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr "Re-etiquetar las preguntas creadas por otros usuarios"
-#: conf/minimum_reputation.py:119
-#, fuzzy
+#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
-msgstr "Re-abrir pregunta"
+msgstr "Reabrir preguntas propias"
-#: conf/minimum_reputation.py:128
-#, fuzzy
+#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
-msgstr "editar preguntas wiki"
+msgstr "Editar post de la wiki"
-#: conf/minimum_reputation.py:137
+#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
-msgstr ""
+msgstr "Editar posts enviados por otros usuarios"
-#: conf/minimum_reputation.py:146
-#, fuzzy
+#: conf/minimum_reputation.py:148
msgid "View offensive flags"
-msgstr "marcar como ofensivo"
+msgstr "Ver denuncias"
-#: conf/minimum_reputation.py:155
-#, fuzzy
+#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
-msgstr "ver preguntas etiquetadas"
+msgstr "Cerrar preguntas realizadas por otros"
-#: conf/minimum_reputation.py:164
+#: conf/minimum_reputation.py:166
msgid "Lock posts"
msgstr "Bloquear entradas"
-#: conf/minimum_reputation.py:173
+#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "Eliminar rel=nofollow de la Pagina de Inicio"
-#: conf/minimum_reputation.py:175
+#: conf/minimum_reputation.py:177
msgid ""
"When a search engine crawler will see a rel=nofollow attribute on a link - "
"the link will not count towards the rank of the users personal site."
msgstr ""
+"Cuando un motor de busqueda vea un rel=nofollow en un enlace - el enlace no "
+"sera tenido en cuenta para el ranking del sitio web del usuario"
-#: conf/reputation_changes.py:12
-msgid "Reputation loss and gain rules"
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
msgstr ""
-#: conf/reputation_changes.py:21
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
+msgstr "Puntos de Karma"
+
+#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
-msgstr ""
+msgstr "Reputacion maxima ganada por usuario y por dia"
-#: conf/reputation_changes.py:30
+#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
-msgstr ""
+msgstr "Ganar por recibir un voto positivo"
-#: conf/reputation_changes.py:39
+#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
-msgstr ""
+msgstr "Ganar porque un autor acepte tu respuesta"
-#: conf/reputation_changes.py:48
-#, fuzzy
+#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
-msgstr "la mejor respuesta fue marcada"
+msgstr "Ganar por aceptar la mejor respuesta"
-#: conf/reputation_changes.py:57
+#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
-msgstr ""
+msgstr "Ganar porque el autor cancele un voto negativo"
-#: conf/reputation_changes.py:66
+#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
-msgstr ""
+msgstr "Ganar porque un votante cancele un voto negativo"
-#: conf/reputation_changes.py:76
+#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr ""
+msgstr "Restar porque un votante cancele una respuesta aceptada"
-#: conf/reputation_changes.py:86
+#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
-msgstr ""
+msgstr "Restar porque el autor hizo una respuesta no aceptada"
-#: conf/reputation_changes.py:96
+#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
-msgstr ""
+msgstr "Restar por dar un voto negativo"
-#: conf/reputation_changes.py:106
+#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
-msgstr ""
+msgstr "Restar porque el dueño del post fue denunciado como ofensivo"
-#: conf/reputation_changes.py:116
+#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr ""
+msgstr "Restar porque el dueño del post ha recibido un voto negativo"
-#: conf/reputation_changes.py:126
+#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
msgstr ""
+"Restar porque el dueño del post fue denunciado 3 veces por el mismo motivo"
-#: conf/reputation_changes.py:136
+#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
msgstr ""
+"Restar porque el dueño del post fue denunciado 5 veces por el mismo motivo"
-#: conf/reputation_changes.py:146
+#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
-msgstr ""
+msgstr "Restar cuando el dueño del post cancele un voto positivo"
-#: conf/sidebar_main.py:11
-msgid "Sidebar widget settings - main page"
-msgstr ""
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
+msgstr "Columna lateral de la Página Principal"
-#: conf/sidebar_main.py:18 conf/sidebar_profile.py:18
-#: conf/sidebar_question.py:18
+#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "Personalizar columna del encabezamiento "
-#: conf/sidebar_main.py:21 conf/sidebar_profile.py:21
-#: conf/sidebar_question.py:21
+#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_question.py:22
msgid ""
"Use this area to enter content at the TOP of the sidebarin HTML format. "
"When using this option (as well as the sidebar footer), please use the HTML "
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Utiliza este area para introducir el contenido en la parte superior de la "
+"columna lateral en formato HTML. Cuando utilices esta opcion (y tambien la "
+"de la columna del pie de pagina), por favor utiliza el servicio de "
+"validacion HTML para asegurarte de que tu codigo es valido y funciona en "
+"todos los navegadores."
-#: conf/sidebar_main.py:34
+#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "Mostrar avatar dentro de la columna lateral"
-#: conf/sidebar_main.py:36
+#: conf/sidebar_main.py:38
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
msgstr ""
+"Desmarca si quieres esconder el bloque del avatar de la columna lateral"
-#: conf/sidebar_main.py:47
+#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "Limitar el numero de avatares mostrados en la columna lateral"
-#: conf/sidebar_main.py:57
+#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "Mostrar el selector de etiquetas en la columna lateral"
-#: conf/sidebar_main.py:59
+#: conf/sidebar_main.py:61
msgid ""
"Uncheck this if you want to hide the options for choosing interesting and "
"ignored tags "
msgstr ""
+"Desmarcar si quieres esconder las opciones para elegir etiquetas "
+"interesantes o ignoradas"
-#: conf/sidebar_main.py:70
+#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "Mostrar las lista/nube de etiquetas en la columna lateral"
-#: conf/sidebar_main.py:72
+#: conf/sidebar_main.py:74
msgid ""
"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
msgstr ""
+"Desmarcar si quieres esconder la lista/nube de etiquetas en la columna "
+"lateralq"
-#: conf/sidebar_main.py:83 conf/sidebar_profile.py:34
-#: conf/sidebar_question.py:74
+#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "Personalizar columna lateral del pie de pagina"
-#: conf/sidebar_main.py:86 conf/sidebar_profile.py:37
-#: conf/sidebar_question.py:77
+#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_question.py:78
msgid ""
"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
"When using this option (as well as the sidebar header), please use the HTML "
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Utiliza este area para introducir contenido al final de la columna lateral "
+"en formato HTML. Cuando uses esta opcion (tambien en la columna lateral de "
+"la cabecera) utiliza el servicio de validacion de HTML para asegurarte que "
+"el codigo es valido y funciona bien en todos los navegadores."
-#: conf/sidebar_profile.py:11
-msgid "Sidebar widget settings - profile page"
-msgstr ""
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr "Columna lateral del Perfil de Usuario"
#: conf/sidebar_question.py:11
-msgid "Sidebar widget settings - question page"
-msgstr ""
+msgid "Question page sidebar"
+msgstr "Columna lateral de la Página de Preguntas"
-#: conf/sidebar_question.py:34
+#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "Mostrar la ultima etiqueta en la columna lateral"
-#: conf/sidebar_question.py:36
+#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "Desmarcar si quieres esconder la etiqueta de la columna lateral"
-#: conf/sidebar_question.py:47
+#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "Mostrar meta informacion en la columna lateral"
-#: conf/sidebar_question.py:49
+#: conf/sidebar_question.py:50
msgid ""
"Uncheck this if you want to hide the meta information about the question "
"(post date, views, last updated). "
msgstr ""
+"Desmarcar si quieres esconder la meta informacion sobre la pregunta (fecha "
+"de envio, vistas, ultima actualizacion)"
-#: conf/sidebar_question.py:61
-#, fuzzy
+#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
-msgstr "Preguntas relacionadas"
+msgstr "Mostrar preguntas relacionadas en la columna lateral"
-#: conf/sidebar_question.py:63
-#, fuzzy
+#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr "últimas preguntas actualizadas"
+msgstr "Desmarcar si quieres esconder la lista de preguntas relacionadas"
-#: conf/site_modes.py:63
-#, fuzzy
-msgid "Site modes"
-msgstr "título"
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr "Modo autosuficiente"
-#: conf/site_modes.py:72
+#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "Activar el modo \"autosuficiente\""
-#: conf/site_modes.py:74
+#: conf/site_modes.py:76
msgid ""
"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
"more suitable for the smaller communities, <strong>WARNING:</strong> your "
"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
"changed after you modify this setting."
msgstr ""
+"El modo \"autosuficiente\" disminuye la reputacion y algunas medallas, "
+"especialmente indicado para sitios pequeños, <strong> ATENCION</strong> tu "
+"valor actual de reputacion, medallas y votaciones sera modificado cuando "
+"cambies este ajuste."
-#: conf/site_settings.py:11
-msgid "Q&A forum website parameters and urls"
-msgstr ""
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr "URLs, keywords y agradecimientos"
-#: conf/site_settings.py:19
-#, fuzzy
+#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
-msgstr "Agradecer desde foro de P&R"
+msgstr "Titulo del sitio"
-#: conf/site_settings.py:28
+#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
-msgstr ""
+msgstr "Palabras clave del sitio separadas por una coma"
-#: conf/site_settings.py:37
+#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
-msgstr ""
+msgstr "Mensaje de copyright que se muestra en el pie de pagina"
-#: conf/site_settings.py:47
+#: conf/site_settings.py:49
msgid "Site description for the search engines"
-msgstr ""
+msgstr "Descripcion del sitio para los motores de busqueda"
-#: conf/site_settings.py:56
+#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
msgstr "Nombre corto para tu foro"
-#: conf/site_settings.py:66
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
-msgstr ""
+msgstr "Direccion URL base para el sitio, debe comenzar por http o https"
-#: conf/site_settings.py:77
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr ""
+msgstr "Marca para activar el saludo a los usuarios anonimos"
-#: conf/site_settings.py:88
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr ""
+msgstr "Texto mostrado en el mensaje de agradecimiento a los usuarios anonimos"
-#: conf/site_settings.py:92
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "Utiliza HTML para formatear el mensaje"
-#: conf/site_settings.py:101
-#, fuzzy
+#: conf/site_settings.py:102
msgid "Feedback site URL"
-msgstr "Sugerencias"
+msgstr "Direccion URL de contacto"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
-msgstr ""
+msgstr "Si lo dejas en blanco, se utilizara un formulario de contacto simple"
#: conf/skin_counter_settings.py:11
msgid "Skin: view, vote and answer counters"
-msgstr ""
+msgstr "Skin: contador de vistas, votos y respuestas "
#: conf/skin_counter_settings.py:19
msgid "Vote counter value to give \"full color\""
-msgstr ""
+msgstr "Valor del voto para darle todo el color"
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr ""
+msgstr "Color del fondo para los votos=0"
#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
@@ -1504,117 +1789,121 @@ msgstr ""
#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
-msgstr ""
+msgstr "Nombre del color en HTML o valor hexadecimal"
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
-msgstr ""
+msgstr "Color de primer plano para los votos=0"
#: conf/skin_counter_settings.py:51
msgid "Background color for votes"
-msgstr ""
+msgstr "Color de fondo para los votos"
#: conf/skin_counter_settings.py:61
msgid "Foreground color for votes"
-msgstr ""
+msgstr "Color de primer plano para los votos"
#: conf/skin_counter_settings.py:71
msgid "Background color for votes = MAX"
-msgstr ""
+msgstr "Color de fondo para los votos =MAX"
#: conf/skin_counter_settings.py:84
msgid "Foreground color for votes = MAX"
-msgstr ""
+msgstr "Color de primer plano para los votos =MAX"
#: conf/skin_counter_settings.py:95
msgid "View counter value to give \"full color\""
-msgstr ""
+msgstr "Vistas para darle al contador todo el color"
#: conf/skin_counter_settings.py:105
msgid "Background color for views = 0"
-msgstr ""
+msgstr "Color de fondo para las vistas =0"
#: conf/skin_counter_settings.py:116
msgid "Foreground color for views = 0"
-msgstr ""
+msgstr "Color de primer plano para las vistas =0"
#: conf/skin_counter_settings.py:127
msgid "Background color for views"
-msgstr ""
+msgstr "Color de fondo para las vistas"
#: conf/skin_counter_settings.py:137
msgid "Foreground color for views"
-msgstr ""
+msgstr "Color de primer plano para las vistas"
#: conf/skin_counter_settings.py:147
msgid "Background color for views = MAX"
-msgstr ""
+msgstr "Color de fondo para las vistas =MAX"
#: conf/skin_counter_settings.py:162
msgid "Foreground color for views = MAX"
-msgstr ""
+msgstr "Color de primer plano para las vistas =MAX"
#: conf/skin_counter_settings.py:173
msgid "Answer counter value to give \"full color\""
-msgstr ""
+msgstr "Numero de respuestas para dar todo el color"
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr ""
+msgstr "Color de fondo para las respuestas =0"
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
-msgstr ""
+msgstr "Color de primer plano para las respuestas =0"
#: conf/skin_counter_settings.py:205
msgid "Background color for answers"
-msgstr ""
+msgstr "Color de fondo para las respuestas"
#: conf/skin_counter_settings.py:215
msgid "Foreground color for answers"
-msgstr ""
+msgstr "Color de primer plano para las respuestas"
#: conf/skin_counter_settings.py:227
msgid "Background color for answers = MAX"
-msgstr ""
+msgstr "Color de fondo para las respuestas =MAX"
#: conf/skin_counter_settings.py:238
msgid "Foreground color for answers = MAX"
-msgstr ""
+msgstr "Color de primer plano para las respuestas =MAX"
#: conf/skin_counter_settings.py:251
msgid "Background color for accepted"
-msgstr ""
+msgstr "Color de fondo para las respuestas aceptadas"
#: conf/skin_counter_settings.py:261
msgid "Foreground color for accepted answer"
-msgstr ""
+msgstr "Color de primer plano para las respuestas aceptadas"
-#: conf/skin_general_settings.py:14
-msgid "Skin and User Interface settings"
-msgstr ""
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr "Logos y código HTML"
-#: conf/skin_general_settings.py:21
+#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
-msgstr ""
+msgstr "Logotipo del sitio"
-#: conf/skin_general_settings.py:23
+#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
+"Para cambiar el logotipo, selecciona un nuevo fichero y envia el formulario "
+"completo"
#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "Mostrar logo"
#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
+"Marca si quieres mostrar el logo en la cabecera o desmarca si no quieres "
+"mostrar el logo en el sitio por defecto"
#: conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr ""
+msgstr "Favicon del sitio"
#: conf/skin_general_settings.py:53
#, python-format
@@ -1623,42 +1912,49 @@ msgid ""
"browser user interface. Please find more information about favicon at <a "
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
+"Icono pequeño de 16x16 o 32x32 pixels que se utiliza para distinguir tu "
+"sitio en el navegador del usuario. Puedes encontrar mas informacion sobre el "
+"favicon en <a href=\"%(favicon_info_url)s\">esta pagina</a>."
-#: conf/skin_general_settings.py:71
+#: conf/skin_general_settings.py:69
msgid "Password login button"
-msgstr ""
+msgstr "Boton de Password "
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
+"Imagen de 88x38 que se usa en la pantalla de login para el boton de password"
-#: conf/skin_general_settings.py:88
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
+"Mostrar todas las funciones del interfaz de usuario a todos los usuarios"
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
+"Si esta marcada, se mostrara todas las funciones del foro a todos los "
+"usuarios, independientemente de su reputacion. Sin embargo a pesar de que se "
+"muestran, no se podran utilizar."
-#: conf/skin_general_settings.py:105
-#, fuzzy
+#: conf/skin_general_settings.py:101
msgid "Select skin"
-msgstr "seleccionar revisión"
+msgstr "Seleccionar skin"
-#: conf/skin_general_settings.py:116
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "Personalizar la etiqueta <HEAD>"
-#: conf/skin_general_settings.py:125
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "Personalizar una parte de la etiqueta <HEAD>"
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1669,12 +1965,21 @@ msgid ""
"files into the footer. <strong>Note:</strong> if you do use this setting, "
"please test the site with the W3C HTML validator service."
msgstr ""
-
-#: conf/skin_general_settings.py:149
+"<strong>Para usar esta opción</strong>, marca \"Personalizar la etiqueta &lt;"
+"HEAD&gt;\" arriba. El contenido de esta caja se insertará en la sección &lt;"
+"HEAD&gt; del HTML, donde algunos elementos como &lt;script&gt;, &lt;"
+"link&gt;, &lt;meta&gt; podrian ser añadidos. Por favor, ten en cuenta que no "
+"es recomendable añadir un javascript externo al &lt;HEAD&gt; porque retarda "
+"la carga de las páginas. En vez de esto, sería más eficiente poner los "
+"enlaces de javascript en el pie de página. <strong>Nota:</strong> si "
+"utilizas este ajuste, por favor comprueba el sitio con el servicio de "
+"validación de HTML del W3C."
+
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "Personalizaciones de Cabecera adicionales"
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1682,22 +1987,31 @@ msgid ""
"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
"sure that your input is valid and works well in all browsers."
msgstr ""
+"La cabecera es la barra superior de contenido donde se encuentran la "
+"información del usuario y los enlaces del sitio y es común a todas las "
+"páginas. Utiliza este área para introducir contenido en la cabecera en "
+"formato HTML, Cuando personalizas la cabecera del sitio (y también el pie de "
+"la página y la etiqueta <HEAD>) debes utilizar el servicio de validación de "
+"HTML para asegurarte de que tu código es válido y funciona bien en todos los "
+"navegadores."
-#: conf/skin_general_settings.py:166
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "Modo Pie de la Página"
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
+"El pie es la parte inferior del contenido, y es común a todas las páginas. "
+"Puedes desactivarlo, personalizarlo o utilizar el pie por defecto."
-#: conf/skin_general_settings.py:185
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "Personalizar Pie de página (formato HTML)"
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1705,22 +2019,31 @@ msgid ""
"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
"that your input is valid and works well in all browsers."
msgstr ""
+"<strong>Para activar esta función</strong>, por favor selecciona la opción "
+"'personalizar'en el modo \"Pie de la Página\" de arriba. Utiliza este área "
+"para introducir contenidos en el pie de página en formato HTML. Cuando "
+"personalices el pie de página (y también la cabecera de la página y la "
+"etiqueta <HEAD>) debes utilizar el servicio de validación de HTML para "
+"asegurarte de que tu código es válido y funciona bien en todos los "
+"navegadores."
-#: conf/skin_general_settings.py:202
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "Aplicar hoja de estilo propio (CSS)"
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
+"Comprobar si quieres cambiar de apariencia de tu formulario añadiendo "
+"estilos personalizados (por favor leer el siguiente punto)"
-#: conf/skin_general_settings.py:216
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "Personalizar hoja de estilos (CSS)"
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1728,20 +2051,28 @@ msgid ""
"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
+"<strong>Para utilizar esta función</strong>, comprueba \"Aplicar una hoja de "
+"estilo propio con CSS\" de arriba. El código CSS añadido en esta ventana se "
+"aplicarán después del código CSS por defecto de la págna. Las hojas de "
+"estilo personalizadas se servirán dinámicamente desde la dirección url \"&lt;"
+"forum url&gt;/custom.css\", donde las parte del \"&lt;forum url&gt; depende "
+"de la url y la configuración (por defecto es un carácter vacío) de los "
+"ajustes en tu fichero urls.py."
-#: conf/skin_general_settings.py:234
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "Añadir javascript personalizado"
-#: conf/skin_general_settings.py:237
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
+"Marcar para activar el javascript que puedes introducir en el siguiente campo"
-#: conf/skin_general_settings.py:247
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "Personalizar javascript"
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1751,134 +2082,239 @@ msgid ""
"enable your custom code</strong>, check \"Add custom javascript\" option "
"above)."
msgstr ""
+"Escribe o pega codigo javascript que te gustaría ejecutar en tu sitio. El "
+"enlace al javascript será insertado en la parte inferior del HTML y será "
+"servida desde la dirección \"&lt;forum url&gt;/custom.js\". Por favor, ten "
+"en cuenta que tu código javascript puede colapsar ciertas funcionalidades "
+"del sitio y que la respuesta en diferentes navegadores puede no ser "
+"consistente (<strong>para activar el modo personalizar</strong>, marca la "
+"casilla \"Añadir javascript personalizado\" de arriba)"
-#: conf/skin_general_settings.py:267
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
-msgstr ""
+msgstr "Número de revisión de los archivos"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
-msgstr ""
+msgstr "Se cambiará automáticamente pero lo puedes modificar si es necesario"
-#: conf/skin_general_settings.py:280
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
+"Hash para actualizar el número de revisión de los archivos automáticamente"
-#: conf/skin_general_settings.py:284
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
-msgstr ""
+msgstr "Será cambiado automáticamente, no es necesario modificarlo manualmente"
-#: conf/social_sharing.py:10
+#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
-msgstr ""
+msgstr "Compartir contenido en las redes sociales"
-#: conf/social_sharing.py:18
-#, fuzzy
+#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
-msgstr "Reabrir esta pregunta"
+msgstr "Marcar para activar compartir preguntas en Twitter"
-#: conf/social_sharing.py:27
-#, fuzzy
+#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
-msgstr "última información de la pregunta"
+msgstr "Marcar para activar compartir preguntas en Facebook"
-#: conf/social_sharing.py:36
+#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr ""
+msgstr "Marcar para activar compartir preguntas en LinkedIn"
-#: conf/social_sharing.py:45
+#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr ""
+msgstr "Marcar para activar compartir preguntas en Identi.ca"
-#: conf/social_sharing.py:54
+#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
-msgstr ""
+msgstr "Marcar para activar compartir preguntas en Google +"
-#: conf/spam_and_moderation.py:9
-msgid "Spam control and content moderation"
-msgstr ""
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
+msgstr "Anti spam Akismet"
-#: conf/spam_and_moderation.py:16
+#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
+"Activar filtro anti spam Akismet (introducir abajo las llaves requeridas)"
-#: conf/spam_and_moderation.py:19
+#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
msgstr ""
+"Para obtener una llave de Akismet por favor, visita <a href=\"%(url)s"
+"\">Akismet</a>"
-#: conf/spam_and_moderation.py:29
+#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "Llave Akismet para la detección de spam"
-#: conf/user_settings.py:11
-#, fuzzy
+#: conf/super_groups.py:5
+msgid "Reputation, Badges, Votes & Flags"
+msgstr "Reputación, Medallas, Votos y Denuncias"
+
+#: conf/super_groups.py:6
+msgid "Static Content, URLS & UI"
+msgstr "Contenido estático, URLs y UI"
+
+#: conf/super_groups.py:7
+msgid "Data rules & Formatting"
+msgstr "Formato de fechas y Formato general"
+
+#: conf/super_groups.py:8
+msgid "External Services"
+msgstr "Servicios externos"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr "Login, Usuarios y Comunicación"
+
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr "Configuraciones básicas"
+msgstr "Configuración de usuarios"
-#: conf/user_settings.py:19
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
-msgstr ""
+msgstr "Permitir editar el nombre de usuario"
-#: conf/user_settings.py:28
-#, fuzzy
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Permitir a los usuarios cambiar sus propios email"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr "tu dirección de email"
+msgstr "Permitir recuperar la cuenta por email"
-#: conf/user_settings.py:37
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
-msgstr ""
+msgstr "Permitir añadir y eliminar métodos de login"
-#: conf/user_settings.py:47
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
+msgstr "Caracteres mínimos permitidos para el nombre de usuario"
+
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Avatar por defecto para los usuarios"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
msgstr ""
+"Para cambiar la imagen del avatar, selecciona una nueva imagen, luego "
+"enviala desde este formulario."
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr "Utilizar los avatars automaticos de gravatar.com"
-#: conf/user_settings.py:57
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+"Marca esta opcion si quieres permitir el uso de gravatar.com para los "
+"avatares. Por favor, ten en cuenta que este ajuste puede tardar 10 minutos "
+"para que sea 100%% operativa. Deberas activar tambien la subida de avatares. "
+"Para mas informacion visita <a href=\"http://askbot.org/doc/optional-"
+"modules.html#uploaded-avatars\">esta pagina</a>."
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
-msgstr ""
+msgstr "Icono por defecto de Gravatar"
-#: conf/user_settings.py:59
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
+"Esta opción te permite configurar por defecto el tipo de avatar para emails "
+"sin asociación a Gravatar. Para más información, visita <a href=\"http://en."
+"gravatar.com/site/implement/images/\">esta página</a>"
-#: conf/user_settings.py:69
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr ""
+msgstr "Nombre del usuario anónimo"
-#: conf/vote_rules.py:13
-msgid "Limits applicable to votes and moderation flags"
-msgstr ""
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr "Límites de las denuncias y los votos"
-#: conf/vote_rules.py:22
+#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
-msgstr ""
+msgstr "Número de votos que un usuario pueden emitir por día"
-#: conf/vote_rules.py:31
+#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
-msgstr ""
+msgstr "Máximo de denuncias por día y por usuario"
-#: conf/vote_rules.py:40
+#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr ""
+msgstr "Límite para avisar sobre los votos diarios restantes"
-#: conf/vote_rules.py:49
+#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
-msgstr ""
+msgstr "Número de días para permitir cancelar votos"
-#: conf/vote_rules.py:58
+#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
-msgstr ""
+msgstr "Número de días necesarios para responder una pregunta propia"
-#: conf/vote_rules.py:67
+#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
-msgstr ""
+msgstr "Número de denuncias necesarias para esconder los posts automáticamente"
-#: conf/vote_rules.py:76
+#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
+msgstr "Número de denuncias necesarias para borrar los posts automáticamente"
+
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
msgstr ""
+"Mínimo de días para aceptar una respuesta, si no ha sido aceptada por el que "
+"envió la pregunta"
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "Widgets embebidos"
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "Número de preguntas para mostrar"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+"Para insertar el widget, añade el siguiente código a tu sitio (y completa la "
+"dirección url base, las etiquetas preferidas, el ancho y el alto):<iframe "
+"src=\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width="
+"\"100%\" height=\"300\"scrolling=\"no\"><p>Tu navegador no soporta iframes.</"
+"p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "CSS para las preguntas del widget"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "Header para las preguntas del widget"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "Pie de página para las preguntas del widget"
#: const/__init__.py:10
msgid "duplicate question"
@@ -1886,30 +2322,27 @@ msgstr "pregunta duplicada"
#: const/__init__.py:11
msgid "question is off-topic or not relevant"
-msgstr "la pregunta esta fuera de luga o no es relevante"
+msgstr "la pregunta está fuera de lugar o no es relevante"
#: const/__init__.py:12
msgid "too subjective and argumentative"
msgstr "demasiado subjetivo y argumentativo"
#: const/__init__.py:13
-#, fuzzy
msgid "not a real question"
-msgstr "preguntar"
+msgstr "no es una pregunta real"
#: const/__init__.py:14
msgid "the question is answered, right answer was accepted"
msgstr "la pregunta ha sido respondida, la respuesta correcta ha sido aceptada"
#: const/__init__.py:15
-#, fuzzy
msgid "question is not relevant or outdated"
-msgstr "no es reproducible o esta desactualizado"
+msgstr "la pregunta no es relevante o no está actualizada"
#: const/__init__.py:16
-#, fuzzy
msgid "question contains offensive or malicious remarks"
-msgstr "la pregunta contiene comentarios inapropiados, ofensivo o malicioso"
+msgstr "la pregunta contiene puntos ofensivos o maliciosos"
#: const/__init__.py:17
msgid "spam or advertising"
@@ -1917,384 +2350,371 @@ msgstr "spam o publicidad"
#: const/__init__.py:18
msgid "too localized"
-msgstr ""
+msgstr "demasiado localizada"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "nuevas"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
-msgstr "viejos"
+msgstr "viejas"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "activa"
-#: const/__init__.py:44
-#, fuzzy
+#: const/__init__.py:46
msgid "inactive"
-msgstr "activa"
+msgstr "inactiva"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "lo más caliente"
-#: const/__init__.py:46
-#, fuzzy
+#: const/__init__.py:48
msgid "coldest"
-msgstr "viejos"
+msgstr "lo más frío"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
-msgstr "más votado"
+msgstr "lo más votado"
-#: const/__init__.py:48
-#, fuzzy
+#: const/__init__.py:50
msgid "least voted"
-msgstr "más votado"
+msgstr "lo menos votado"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
-msgstr ""
+msgstr "relevantes"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
-msgstr ""
+msgstr "todos"
-#: const/__init__.py:58
-#, fuzzy
+#: const/__init__.py:64
msgid "unanswered"
-msgstr "sinrespuesta/"
+msgstr "sin contestar"
-#: const/__init__.py:59
-#, fuzzy
+#: const/__init__.py:65
msgid "favorite"
-msgstr "favoritos"
+msgstr "favorito"
-#: const/__init__.py:64
-#, fuzzy
+#: const/__init__.py:70
msgid "list"
-msgstr "Lista de etiquetas"
+msgstr "lista"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "nube"
-#: const/__init__.py:78
-#, fuzzy
+#: const/__init__.py:79
msgid "Question has no answers"
-msgstr "Preguntas que he respondido"
+msgstr "la pregunta no tiene respuestas"
-#: const/__init__.py:79
-#, fuzzy
+#: const/__init__.py:80
msgid "Question has no accepted answers"
-msgstr "Preguntas que he respondido"
+msgstr "la pregunta no tiene respuestas aceptadas"
-#: const/__init__.py:121
-#, fuzzy
+#: const/__init__.py:125
msgid "asked a question"
-msgstr "preguntar"
+msgstr "hizo una pregunta"
-#: const/__init__.py:122
-#, fuzzy
+#: const/__init__.py:126
msgid "answered a question"
-msgstr "preguntas sin contestar"
+msgstr "contestó una pregunta"
-#: const/__init__.py:123
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
-msgstr "comentar pregunta"
+msgstr "pregunta comentada"
-#: const/__init__.py:124
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
-msgstr "comentar respuesta"
+msgstr "respuesta comentada"
-#: const/__init__.py:125
+#: const/__init__.py:129
msgid "edited question"
-msgstr "editar pregunta"
+msgstr "pregunta editada"
-#: const/__init__.py:126
+#: const/__init__.py:130
msgid "edited answer"
-msgstr "editar respuesta"
+msgstr "respuesta editada"
-#: const/__init__.py:127
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "recibió un trofeo"
-#: const/__init__.py:128
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "la mejor respuesta fue marcada"
-#: const/__init__.py:129
+#: const/__init__.py:133
msgid "upvoted"
msgstr "voto positivo"
-#: const/__init__.py:130
+#: const/__init__.py:134
msgid "downvoted"
msgstr "voto negativo"
-#: const/__init__.py:131
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "voto cancelado"
-#: const/__init__.py:132
+#: const/__init__.py:136
msgid "deleted question"
-msgstr "eliminar pregunta"
+msgstr "pregunta eliminada"
-#: const/__init__.py:133
+#: const/__init__.py:137
msgid "deleted answer"
-msgstr "eliminar respuesta"
+msgstr "respuesta eliminada"
-#: const/__init__.py:134
+#: const/__init__.py:138
msgid "marked offensive"
-msgstr "marcar como ofensivo"
+msgstr "marcado como ofensivo"
-#: const/__init__.py:135
+#: const/__init__.py:139
msgid "updated tags"
-msgstr "actualizar etiquetas"
+msgstr "etiquetas actualizadas"
-#: const/__init__.py:136
+#: const/__init__.py:140
msgid "selected favorite"
-msgstr "seleccionar favorito"
+msgstr "favorito seleccionado"
-#: const/__init__.py:137
+#: const/__init__.py:141
msgid "completed user profile"
-msgstr "completar perfil de usuario"
+msgstr "perfil de usuario completado"
-#: const/__init__.py:138
+#: const/__init__.py:142
msgid "email update sent to user"
-msgstr "enviar actualizaciones al usuario"
+msgstr "actualizaciones enviadas al usuario"
-#: const/__init__.py:141
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "preguntas sin contestar"
+msgstr "enviado recordatorio sobre preguntas no contestadas"
-#: const/__init__.py:143
-msgid "mentioned in the post"
-msgstr ""
-
-#: const/__init__.py:194
-msgid "question_answered"
-msgstr "pregunta_respondida"
+#: const/__init__.py:149
+msgid "reminder about accepting the best answer sent"
+msgstr "recordatorio para aceptar la mejor respuesta enviada"
-#: const/__init__.py:195
-msgid "question_commented"
-msgstr "pregunta_comentada"
+#: const/__init__.py:151
+msgid "mentioned in the post"
+msgstr "mencionado en el post"
-#: const/__init__.py:196
-msgid "answer_commented"
-msgstr "respuesta_comentada"
+#: const/__init__.py:202
+#, fuzzy
+msgid "answered question"
+msgstr "contestó una pregunta"
-#: const/__init__.py:197
-msgid "answer_accepted"
-msgstr "respuesta_aceptada"
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "respuesta editada"
-#: const/__init__.py:201
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[cerrado]"
-#: const/__init__.py:202
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[eliminado]"
-#: const/__init__.py:203 views/readers.py:613
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "versión inicial"
-#: const/__init__.py:204
+#: const/__init__.py:212
msgid "retagged"
msgstr "re-etiquetado"
-#: const/__init__.py:212
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "cerrado"
-#: const/__init__.py:213
-#, fuzzy
+#: const/__init__.py:221
msgid "exclude ignored"
-msgstr "excluir etiquetas ignoradas"
+msgstr "excluir las ignoradas"
-#: const/__init__.py:214
-#, fuzzy
+#: const/__init__.py:222
msgid "only selected"
-msgstr "Selección individual"
+msgstr "solo seleccionadas"
-#: const/__init__.py:218
+#: const/__init__.py:226
msgid "instantly"
-msgstr ""
+msgstr "en el momento"
-#: const/__init__.py:219
+#: const/__init__.py:227
msgid "daily"
msgstr "diario"
-#: const/__init__.py:220
+#: const/__init__.py:228
msgid "weekly"
msgstr "semanal"
-#: const/__init__.py:221
+#: const/__init__.py:229
msgid "no email"
-msgstr "no enviar emails"
+msgstr "sin emails"
-#: const/__init__.py:228
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identicon"
-#: const/__init__.py:229
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "ayer"
+msgstr "mystery-man"
-#: const/__init__.py:230
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "monsterid"
-#: const/__init__.py:231
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "que es gravatar"
+msgstr "wavatar"
-#: const/__init__.py:232
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "retro"
-#: const/__init__.py:279
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "oro"
-#: const/__init__.py:280
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "plata"
-#: const/__init__.py:281
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronce"
-#: const/__init__.py:293
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "ninguno"
-#: const/__init__.py:294
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr ""
+msgstr "Gravatar"
-#: const/__init__.py:295
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "Avatar subido"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr "últimas preguntas respondidas"
+msgstr "preguntas más relevantes"
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "preguntas más votadas"
+msgstr "haz click para ver las preguntas más relevantes"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr ""
+msgstr "relevancia"
-#: const/message_keys.py:18
-#, fuzzy
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
-msgstr "ver las últimas preguntas"
+msgstr "haz click para ver las preguntas más antiguas"
-#: const/message_keys.py:19
-#, fuzzy
+#: const/message_keys.py:25
msgid "by date"
-msgstr "Actualizar"
+msgstr "fecha"
-#: const/message_keys.py:20
-#, fuzzy
+#: const/message_keys.py:26
msgid "click to see the newest questions"
-msgstr "ver las últimas preguntas"
+msgstr "haz click para ver las preguntas más recientes"
-#: const/message_keys.py:21
-#, fuzzy
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
-msgstr "últimas preguntas actualizadas"
+msgstr "haz click para ver las preguntas actualizadas más recientes"
-#: const/message_keys.py:22
-#, fuzzy
+#: const/message_keys.py:28
msgid "by activity"
-msgstr "activa"
+msgstr "actividad"
-#: const/message_keys.py:23
-#, fuzzy
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
-msgstr "últimas preguntas actualizadas"
+msgstr "haz click para ver las preguntas más recientes"
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "ver las últimas preguntas"
+msgstr "haz click para ver las preguntas menos contestadas"
-#: const/message_keys.py:25
-#, fuzzy
+#: const/message_keys.py:31
msgid "by answers"
msgstr "respuestas"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "preguntas más votadas"
+msgstr "haz click para ver las preguntas más respondidas"
-#: const/message_keys.py:27
-#, fuzzy
+#: const/message_keys.py:33
msgid "click to see least voted questions"
-msgstr "preguntas más votadas"
+msgstr "haz click para ver las preguntas menos votadas"
-#: const/message_keys.py:28
-#, fuzzy
+#: const/message_keys.py:34
msgid "by votes"
msgstr "votos"
-#: const/message_keys.py:29
-#, fuzzy
+#: const/message_keys.py:35
msgid "click to see most voted questions"
-msgstr "preguntas más votadas"
+msgstr "haz click para ver las preguntas más votadas"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
+"Bienvenido! Por favor, configura tu email (importante!) en tu perfil y elige "
+"tu nombre de usuario si es necesario."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
-#, fuzzy
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
-msgstr "HTML básico es soportado"
+msgstr "i-names no soportados"
#: deps/django_authopenid/forms.py:233
-#, fuzzy, python-format
+#, python-format
msgid "Please enter your %(username_token)s"
-msgstr "Ingrese su nombre de usuario"
+msgstr "Por favor introduce tu %(username_token)s"
#: deps/django_authopenid/forms.py:259
-#, fuzzy
msgid "Please, enter your user name"
-msgstr "Ingrese su nombre de usuario"
+msgstr "Por favor, introduce tu nombre de usuario"
#: deps/django_authopenid/forms.py:263
-#, fuzzy
msgid "Please, enter your password"
-msgstr "Ingrese su contraseña"
+msgstr "Por favor, introduce tu contraseña"
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
-#, fuzzy
msgid "Please, enter your new password"
-msgstr "Ingrese su contraseña"
+msgstr "Por favor, introduce tu nuevo contraseña"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Las contraseñas no coinciden"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr ""
+msgstr "Por favor, elige tu contraseña con más de %(len)s caracteres"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
@@ -2305,281 +2725,271 @@ msgid ""
"Old password is incorrect. Please enter the correct "
"password."
msgstr ""
-"Contraseña antigua es incorrecta. Por favor ingrese la "
-"contraseña correcta."
+"La contraseña antigua es incorrecta. Por favor ingrese "
+"la contraseña correcta."
#: deps/django_authopenid/forms.py:399
-#, fuzzy
msgid "Sorry, we don't have this email address in the database"
-msgstr "Lo sentimos, pero este email no esta en nuestra base de datos"
+msgstr "Perdona, no tenemos este email en la base de datos."
#: deps/django_authopenid/forms.py:435
-#, fuzzy
msgid "Your user name (<i>required</i>)"
-msgstr "nombre de usuario es requerido"
+msgstr "Tu nombre de usuario (<i>obligatorio</i>)"
#: deps/django_authopenid/forms.py:450
#, fuzzy
-msgid "Incorrect username."
-msgstr "seleccione un nombre de usuario"
+msgid "sorry, there is no such user name"
+msgstr "los sentimos, no hay usuarios con este nombre"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:203
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
-msgstr "ingresar/"
+msgstr "sign-in/"
#: deps/django_authopenid/urls.py:10
msgid "signout/"
msgstr "eliminar-cuenta/"
#: deps/django_authopenid/urls.py:12
-#, fuzzy
msgid "complete/"
-msgstr "comentarios/"
+msgstr "completar/"
#: deps/django_authopenid/urls.py:15
-#, fuzzy
msgid "complete-oauth/"
-msgstr "comentarios/"
+msgstr "completar-oauth/"
#: deps/django_authopenid/urls.py:19
msgid "register/"
msgstr "registrar/"
#: deps/django_authopenid/urls.py:21
-#, fuzzy
msgid "signup/"
-msgstr "eliminar-cuenta/"
+msgstr "registrar/"
#: deps/django_authopenid/urls.py:25
msgid "logout/"
msgstr "salir/"
#: deps/django_authopenid/urls.py:30
-#, fuzzy
msgid "recover/"
-msgstr "remover/"
+msgstr "recuperar/"
#: deps/django_authopenid/util.py:378
-#, fuzzy, python-format
+#, python-format
msgid "%(site)s user name and password"
-msgstr "Ingrese su nombre de usuario y contraseña."
+msgstr "usuario y contraseña de %(site)s"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Crear una cuenta protegida con contraseña"
#: deps/django_authopenid/util.py:385
-#, fuzzy
msgid "Change your password"
-msgstr "Cambiar Contraseña"
+msgstr "Cambiar contraseña"
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Registro con Yahoo"
#: deps/django_authopenid/util.py:480
-#, fuzzy
msgid "AOL screen name"
-msgstr "Nombre para mostrar"
+msgstr "Usuario AOL"
#: deps/django_authopenid/util.py:488
-#, fuzzy
msgid "OpenID url"
-msgstr "Obetener OpenID"
+msgstr "Url de OpenID"
#: deps/django_authopenid/util.py:517
-#, fuzzy
msgid "Flickr user name"
-msgstr "nombr de usuario"
+msgstr "Usuario Flickr"
#: deps/django_authopenid/util.py:525
-#, fuzzy
msgid "Technorati user name"
-msgstr "seleccione un nombre de usuario"
+msgstr "Usuario Technorati"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "Nombre de Blog en Wordpress"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "Nombre de Blog en Blogger"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "Nombre de Blog en LiveJournal"
#: deps/django_authopenid/util.py:557
-#, fuzzy
msgid "ClaimID user name"
-msgstr "nombr de usuario"
+msgstr "Usuario ClaimID"
#: deps/django_authopenid/util.py:565
-#, fuzzy
msgid "Vidoop user name"
-msgstr "nombr de usuario"
+msgstr "Usuario Vidoop"
#: deps/django_authopenid/util.py:573
-#, fuzzy
msgid "Verisign user name"
-msgstr "nombr de usuario"
+msgstr "Usuario Verisign"
#: deps/django_authopenid/util.py:608
-#, fuzzy, python-format
+#, python-format
msgid "Change your %(provider)s password"
-msgstr "Cambiar Contraseña"
+msgstr "Cambiar la contraseña de %(provider)s"
#: deps/django_authopenid/util.py:612
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
msgstr ""
+"Haz click para ver si el registro de tu %(provider)s sigue funcionando para "
+"%(site_name)s "
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Crear contraseña para %(provider)s"
#: deps/django_authopenid/util.py:625
-#, fuzzy, python-format
+#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr "Conectar tu OpenID con tu cuenta en este sitio"
+msgstr "Conecta con la cuenta de tu %(provider)s para %(site_name)s"
#: deps/django_authopenid/util.py:634
-#, fuzzy, python-format
+#, python-format
msgid "Signin with %(provider)s user name and password"
-msgstr "Ingrese su nombre de usuario y contraseña."
+msgstr "Registro usuario y contraseña con %(provider)s "
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Regístrate con la cuenta de %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
-msgstr ""
+msgstr "OpenID %(openid_url)s incorrecto"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:415
-#: deps/django_authopenid/views.py:443
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
+"Lo sentimos, hay problemas de conexion con %(provider)s, por favor intenta "
+"de nuevo o utiliza otro proveedor."
-#: deps/django_authopenid/views.py:365
-#, fuzzy
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
-msgstr "Tu contraseña ha sido cambiada."
+msgstr "Nueva contraseña guardada"
-#: deps/django_authopenid/views.py:469
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "La combinación de login y contraseña no es correcta"
-#: deps/django_authopenid/views.py:573
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Por favor elige cualquiera de los iconos de abajo para registrarte"
-#: deps/django_authopenid/views.py:575
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr "Se envio el correo para recuperación de cuenta"
-#: deps/django_authopenid/views.py:578
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Por favor añade uno o más métodos de login"
-#: deps/django_authopenid/views.py:580
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
-msgstr ""
+msgstr "Si quieres, puedes añadir, eliminar o editar tus métodos de login"
-#: deps/django_authopenid/views.py:582
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
-msgstr ""
+msgstr "Por favor espera un momento, tu cuenta se ha recuperado, pero..."
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
+"Lo sentimos, la llave de recuperación de esta cuenta ha expirado o es "
+"inválida"
-#: deps/django_authopenid/views.py:657
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "El método de login de %(provider_name)s no existe"
-#: deps/django_authopenid/views.py:663
-#, fuzzy
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
-msgstr ""
-"lo sentimos, las contraseñas que haz ingresado no coinciden, intenta de nuevo"
+msgstr "Lo siento, se ha producido un error, inténtalo de nuevo."
-#: deps/django_authopenid/views.py:754
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "Tu login de %(provider)s funciona correctamente"
-#: deps/django_authopenid/views.py:1065 deps/django_authopenid/views.py:1071
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
+#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
-"subscrición guardada, necesitamos una validación de %(email)s , mira %"
-"(details_url)s"
+"Tu email necesita validación. Encuentra más detalles <a "
+"id='validate_email_alert' href='%(details_url)s'>aqui</a>."
-#: deps/django_authopenid/views.py:1092
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1083
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "Obtener una nueva contraseña"
+msgstr "Recupera la cuenta de %(site)s"
-#: deps/django_authopenid/views.py:1162
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "Por favor, comprueba tu email y visita el enlace."
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
-#, fuzzy
msgid "Site"
-msgstr "título"
+msgstr "Sitio"
-#: deps/livesettings/values.py:106
-#, fuzzy
+#: deps/livesettings/values.py:69
+msgid "Main"
+msgstr "Principal"
+
+#: deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr "Configuraciones básicas"
+msgstr "Configuración Básica"
-#: deps/livesettings/values.py:213
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "Valor por defecto:\"\""
-#: deps/livesettings/values.py:220
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "Valor por defecto:"
-#: deps/livesettings/values.py:223
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "Valor por defecto:%s"
-#: deps/livesettings/values.py:601
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
-msgstr ""
+msgstr "Imágenes permitidas %(types)s"
#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
-#, fuzzy
msgid "Sites"
-msgstr "título"
+msgstr "Sitios"
#: deps/livesettings/templates/livesettings/group_settings.html:11
#: deps/livesettings/templates/livesettings/site_settings.html:23
-#, fuzzy
msgid "Documentation"
-msgstr "Localización"
+msgstr "Documentación"
#: deps/livesettings/templates/livesettings/group_settings.html:11
#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
msgid "Change password"
msgstr "Cambiar Contraseña"
#: deps/livesettings/templates/livesettings/group_settings.html:11
#: deps/livesettings/templates/livesettings/site_settings.html:23
-#, fuzzy
msgid "Log out"
msgstr "Salir"
@@ -2589,260 +2999,188 @@ msgid "Home"
msgstr "Inicio"
#: deps/livesettings/templates/livesettings/group_settings.html:15
-#, fuzzy
msgid "Edit Group Settings"
-msgstr "Editar pregunta"
+msgstr "Editar Ajustes de Grupo"
#: deps/livesettings/templates/livesettings/group_settings.html:22
#: deps/livesettings/templates/livesettings/site_settings.html:50
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Por favor, corrige el error de abajo."
+msgstr[1] "Por favor, corrige los errores de abajo."
#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
msgid "Settings included in %(name)s."
-msgstr ""
+msgstr "Ajustes incluidos en %(name)s."
#: deps/livesettings/templates/livesettings/group_settings.html:62
#: deps/livesettings/templates/livesettings/site_settings.html:97
msgid "You don't have permission to edit values."
-msgstr ""
-
-#: deps/livesettings/templates/livesettings/group_settings.html:68
-#, fuzzy
-msgid "Setting groups"
-msgstr "Etiquetas de interes"
+msgstr "No tienes permiso para editar los valores."
#: deps/livesettings/templates/livesettings/site_settings.html:27
msgid "Edit Site Settings"
-msgstr ""
+msgstr "Editar los ajustes del Sitio"
#: deps/livesettings/templates/livesettings/site_settings.html:43
msgid "Livesettings are disabled for this site."
-msgstr ""
+msgstr "Los ajustes directos están desactivados para este sitio"
#: deps/livesettings/templates/livesettings/site_settings.html:44
msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
+"Todas las opciones de configuración deben editarse en el archivo settings.py "
+"del sitio"
#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
msgid "Group settings: %(name)s"
-msgstr ""
+msgstr "Ajustes del grupo: %(name)s"
#: deps/livesettings/templates/livesettings/site_settings.html:93
msgid "Uncollapse all"
-msgstr ""
+msgstr "Expandir todo"
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
-msgstr ""
+msgstr "Enhorabuena, eres Administrador"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:55
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the %(site)"
-"s administrator</p>"
-msgstr ""
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr "Aceptar la mejor respuesta para %(question_count)d de tus preguntas"
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href=\"%"
-"(url)s\">register first</a></p>"
-msgstr ""
+#: management/commands/send_accept_answer_reminders.py:63
+msgid "Please accept the best answer for this question:"
+msgstr "Por favor, acepta la mejor respuesta para la pregunta:"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: management/commands/send_accept_answer_reminders.py:65
+msgid "Please accept the best answer for these questions:"
+msgstr "Por favor, acepta la mejor respuesta para estas preguntas:"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d pregunta actualizada de %(topics)s"
+msgstr[1] "%(question_count)d preguntas actualizadas de %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "nueva pregunta"
-#: management/commands/send_email_alerts.py:455
-#, fuzzy
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Por favor, visita el foro y mira lo que hay de nuevo. ¿Podría correr la voz "
-"sobre ello - conoce a alguien que sepa la respuesta a las preguntas?"
-
-#: management/commands/send_email_alerts.py:465
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"Usted ha configurado recibir un email 'diario' sobre las preguntas "
-"seleccionadas. Si usted está recibiendo más de un correo electrónico al día, "
-"por favor no dude en reportar acerca de este problema al administrador del "
-"foro."
-
-#: management/commands/send_email_alerts.py:471
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"Usted ha configurado recibir un email 'semanal' sobre las preguntas "
-"seleccionadas. Si usted está recibiendo más de un correo electrónico a la "
-"semana, por favor no dude en reportar acerca de este problema al "
-"administrador del foro."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"Existe la posibilidad de que usted puede estar recibiendo enlaces visto "
-"antes - debido a un tecnicismo que a la larga va a desaparecer."
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or %"
-"(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"ir a %(link)s para cambiar la frecuencia de notificaciones por email o "
-"contacte al administrador"
-#: management/commands/send_unanswered_question_reminders.py:80
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d pregunta sin responder de %(topics)s"
+msgstr[1] "%(question_count)d preguntas sin responder de %(topics)s"
+
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr "Por favor, haz log in para utilizar %s"
-#: models/__init__.py:316
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
+"Lo sentimos, no puedes aceptar o cancelar las mejores respuestas porque tu "
+"cuenta está bloqueada"
-#: models/__init__.py:320
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
+"Lo sentimos, no puedes aceptar o cancelar las mejores respuestas porque tu "
+"cuenta ha sido suspendida"
-#: models/__init__.py:333
-#, fuzzy, python-format
+#: models/__init__.py:337
+#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
-msgstr "Primer respuesta aceptada a un pregunta tuya"
+msgstr ""
+">%(points)s puntos necesarios para aceptar o cancelar tu propia respuesta o "
+"tu propia pregunta"
+
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+"Lo siento, sólo podrás aceptar esta pregunta después de %(will_be_able_at)s"
-#: models/__init__.py:347
+#: models/__init__.py:367
#, python-format
msgid ""
-"Sorry, only original author of the question - %(username)s - can accept or "
-"unaccept the best answer"
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
msgstr ""
+"Lo siento, sólo los moderadores o el autor de la pregunta %(username)s "
+"pueden aceptar o cancelar la mejor respuesta"
-#: models/__init__.py:375
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "no se puede votar por sus propias publicaciones"
-#: models/__init__.py:378
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
-msgstr ""
+msgstr "Lo sentimos, tu cuenta ha sido bloqueada"
-#: models/__init__.py:383
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
-msgstr ""
+msgstr "Lo sentimos, tu cuenta ha sido suspendida"
-#: models/__init__.py:393
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s puntos requeridos para votar positivamente "
-#: models/__init__.py:399
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s puntos requeridos para votar negativamente"
-#: models/__init__.py:414
-#, fuzzy
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+msgstr "Lo sentimos, los usuarios bloqueados no pueden subir ficheros"
-#: models/__init__.py:415
-#, fuzzy
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
+msgstr "Lo sentimos, los usuarios suspendidos no pueden subir ficheros"
-#: models/__init__.py:417
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
-#, fuzzy
-msgid "blocked users cannot post"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:437 models/__init__.py:921
-#, fuzzy
-msgid "suspended users cannot post"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-
-#: models/__init__.py:464
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2851,58 +3189,81 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
+"Lo sentimos, los comentarios (a excepción del último) sólo se pueden editar "
+"al %(minutes)s minuto de enviar"
msgstr[1] ""
+"Lo sentimos, los comentarios (a excepción del último) sólo se pueden editar "
+"a los %(minutes)s minutos de enviar"
-#: models/__init__.py:476
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
+"Lo sentimos, pero sólo los dueños de los posts o los moderadores pueden "
+"editar comentarios"
-#: models/__init__.py:489
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida no puedes comentar tus "
+"propios posts"
-#: models/__init__.py:493
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
+"Lo sentimos, para comentar cualquier post se requiere un mínimo de "
+"%(min_rep)s de reputación. Aunque también puedes comentar tus propios posts "
+"y respuestas a tus preguntas."
-#: models/__init__.py:521
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
+"Este post ha sido eliminado y puede ser visto sólo por los dueños de los "
+"posts, el administrador del sitio y los moderadores."
-#: models/__init__.py:538
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
+"Lo sentimos, sólo los moderadores, los administradores del sitio y los "
+"dueños de los comentarios pueden editar posts eliminados."
-#: models/__init__.py:553
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
+"Lo sentimos, debido a que tu cuenta ha sido bloqueda, no se pueden editar "
+"los posts"
-#: models/__init__.py:557
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida sólo puedes editar tus "
+"propios posts"
-#: models/__init__.py:562
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Lo sentimos, para editar los post de la wiki, se necesitan un mínimo de "
+"%(min_rep)s puntos de reputación "
-#: models/__init__.py:569
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Lo sentimos, para editar los post de otras personas, se necesitan un mínimo "
+"de %(min_rep)s puntos de reputación"
-#: models/__init__.py:632
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2910,451 +3271,484 @@ msgid_plural ""
"Sorry, cannot delete your question since it has some upvoted answers posted "
"by other users"
msgstr[0] ""
+"Lo sentimos, no puedes eliminar tus preguntas debido a que tiene una "
+"respuestas con votos positivos enviada por otro usuarios"
msgstr[1] ""
+"Lo sentimos, no puedes eliminar tus preguntas debido a que tiene varias "
+"respuestas con votos positivos enviadas por otros usuarios"
-#: models/__init__.py:647
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está bloqueada no puedes eliminar posts"
-#: models/__init__.py:651
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida sólo puedes eliminar tus "
+"propios posts"
-#: models/__init__.py:655
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
+"Lo sentimos, para eliminar los posts de otra gente, se necesita un mínimo de "
+"%(min_rep)s puntos de reputación"
-#: models/__init__.py:675
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está bloqueda no puedes cerrar las "
+"preguntas"
-#: models/__init__.py:679
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida no puedes cerrar "
+"preguntas"
-#: models/__init__.py:683
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Lo sentimos, para cerrar posts de otros usuarios, se necesita una reputación "
+"mínima de %(min_rep)s puntos"
-#: models/__init__.py:692
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Lo sentimos, para cerrar tu propia pregunta, necesitas un mínimo de "
+"%(min_rep)s puntos de reputación"
-#: models/__init__.py:716
+#: models/__init__.py:748
#, python-format
msgid ""
-"Sorry, only administrators, moderators or post owners with reputation > %"
-"(min_rep)s can reopen questions."
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
msgstr ""
+"Lo sentimos, sólo los administradores, moderadores y los dueños de los posts "
+"con reputación mayor de %(min_rep)s pueden reabrir las preguntas"
-#: models/__init__.py:722
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Lo sentimos, para reabrir una pregunta se necesita un mínimo de %(min_rep)s "
+"de puntos de reputación"
-#: models/__init__.py:742
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:747
+#: models/__init__.py:783
#, fuzzy
-msgid "blocked users cannot flag posts"
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+"Lo sentimos, debido a que tu cuenta está bloqueada no puedes eliminar posts"
-#: models/__init__.py:749
-#, fuzzy
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
+"Lo sentimos, para re-etiquetar preguntas es necesario un mínimo de "
+"%(min_rep)s puntos de reputación"
-#: models/__init__.py:751
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-#: models/__init__.py:770
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr "no se puede eliminar una denuncia no existente"
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está bloqueada no puedes eliminar posts"
-#: models/__init__.py:785
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Lo sentimos, para re-etiquetar preguntas es necesario un mínimo de "
+"%(min_rep)s puntos de reputación"
+msgstr[1] ""
+"Lo sentimos, para re-etiquetar preguntas es necesario un mínimo de "
+"%(min_rep)s puntos de reputación"
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "no tienes permiso para eliminar todas las denuncias"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr "no existen denuncias para esta entrada"
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
+"Lo sentimos, sólo los dueños de las preguntas, los administradores del sitio "
+"y los moderadores pueden re-etiquetar las preguntas eliminadas"
-#: models/__init__.py:792
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está bloqueada no puedes re-etiquetar "
+"preguntas"
-#: models/__init__.py:796
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida, sólo puedes re-"
+"etiquetar tus propias preguntas"
-#: models/__init__.py:800
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Lo sentimos, para re-etiquetar preguntas es necesario un mínimo de "
+"%(min_rep)s puntos de reputación"
-#: models/__init__.py:819
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
+"Lo sentimos, debido a que tu cuenta ha sido bloqueada no puedes borrar "
+"comentarios"
-#: models/__init__.py:823
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
+"Lo sentimos, debido a que tu cuenta está suspendida sólo puedes borrar tus "
+"propios comentarios"
-#: models/__init__.py:827
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
+"Lo sentimos, para eliminar comentarios necesitas %(min_rep)s puntos de "
+"reputación "
-#: models/__init__.py:850
-msgid "cannot revoke old vote"
-msgstr "no puede revocar un voto viejo"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1325 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
-msgstr ""
+msgstr "el %(date)s"
-#: models/__init__.py:1327
+#: models/__init__.py:1471
msgid "in two days"
-msgstr ""
+msgstr "en dos días"
-#: models/__init__.py:1329
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "mañana"
-#: models/__init__.py:1331
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "en %(hr)d hora"
+msgstr[1] "en %(hr)d horas"
-#: models/__init__.py:1333
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "en %(min)d minuto"
+msgstr[1] "en %(min)d minutos"
-#: models/__init__.py:1334
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(days)d día"
+msgstr[1] "%(days)d días"
-#: models/__init__.py:1336
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
+"Los nuevos usuarios deben esperar %(days)s antes de poder responder a sus "
+"propias preguntas. Puedes enviar tu respuesta %(left)s"
-#: models/__init__.py:1502
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr ""
+msgstr "Anónimo"
-#: models/__init__.py:1598 views/users.py:365
-#, fuzzy
+#: models/__init__.py:1749
msgid "Site Adminstrator"
-msgstr ""
-"Sinceramente,<br />\n"
-" Administrador del Foro"
+msgstr "Administrador del sitio"
-#: models/__init__.py:1600 views/users.py:367
+#: models/__init__.py:1751
msgid "Forum Moderator"
-msgstr ""
+msgstr "Moderador"
-#: models/__init__.py:1602 views/users.py:369
-#, fuzzy
+#: models/__init__.py:1753
msgid "Suspended User"
-msgstr "Enviar enlace"
+msgstr "Usuario Suspendido"
-#: models/__init__.py:1604 views/users.py:371
+#: models/__init__.py:1755
msgid "Blocked User"
-msgstr ""
+msgstr "Usuario Bloqueado"
-#: models/__init__.py:1606 views/users.py:373
-#, fuzzy
+#: models/__init__.py:1757
msgid "Registered User"
-msgstr "Usuario registrado"
+msgstr "Usuario Registrado"
-#: models/__init__.py:1608
+#: models/__init__.py:1759
msgid "Watched User"
-msgstr ""
+msgstr "Usuario Visto"
-#: models/__init__.py:1610
-#, fuzzy
+#: models/__init__.py:1761
msgid "Approved User"
-msgstr "proveedores/"
+msgstr "Usuario Aprobado"
-#: models/__init__.py:1719
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr ""
+msgstr "el karma de %(username)s es %(reputation)s"
-#: models/__init__.py:1729
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "una medalla de oro"
+msgstr[1] "%(count)d medallas de oro"
-#: models/__init__.py:1736
-#, fuzzy, python-format
+#: models/__init__.py:1887
+#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] "descripción de la medalla de plata"
-msgstr[1] "descripción de la medalla de plata"
+msgstr[0] "una medalla de plata"
+msgstr[1] "%(count)d medallas de plata"
-#: models/__init__.py:1743
-#, fuzzy, python-format
+#: models/__init__.py:1894
+#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] "descripción de la medalla de bronce"
-msgstr[1] "descripción de la medalla de bronce"
+msgstr[0] "una medalla de bronce"
+msgstr[1] "%(count)d medallas de bronce"
-#: models/__init__.py:1754
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s y %(item2)s"
-#: models/__init__.py:1758
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
+msgstr "%(user)s tiene %(badges)s"
-#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
-#: models/__init__.py:2181
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2186 models/__init__.py:2191
-#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
-msgstr "Etiquetas de la pregunta"
+msgid "\"%(title)s\""
+msgstr "\"%(title)s\""
-#: models/__init__.py:2372
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
+"Enhorabuena, has recibido una medalla '%(badge_name)s'. Puedes comprobarlo "
+"en <a href=\"%(user_profile)s\">tu perfil</a>."
-#: models/__init__.py:2551 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
-
-#: models/answer.py:105
-msgid ""
-"Sorry, the answer you are looking for is no longer available, because the "
-"parent question has been removed"
-msgstr ""
-
-#: models/answer.py:112
-#, fuzzy
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "esta pregunta ha sido seleccionada como la favorita"
+msgstr "Tu suscripción a la etiqueta se ha guardado, gracias!"
#: models/badges.py:129
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr "Elminió su propio post con %s puntos o inferior"
+msgstr "Post propio eliminado con %(votes)s o más votos positivos"
#: models/badges.py:133
msgid "Disciplined"
-msgstr ""
+msgstr "Disciplinado"
#: models/badges.py:151
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr "Elminió su propio post con %s puntos o inferior"
+msgstr "Post propio eliminado con %(votes)s o más votos negativos"
#: models/badges.py:155
msgid "Peer Pressure"
-msgstr ""
+msgstr "Presión Popular"
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
-msgstr ""
+msgstr "Recibidos %(votes)s votos positivos por responder la primera vez"
#: models/badges.py:178
-#, fuzzy
msgid "Teacher"
-msgstr "buscar"
+msgstr "Profesor"
#: models/badges.py:218
-#, fuzzy
msgid "Supporter"
-msgstr "voto positivo"
+msgstr "Ayudante"
#: models/badges.py:219
-#, fuzzy
msgid "First upvote"
msgstr "Primer voto positivo"
#: models/badges.py:227
msgid "Critic"
-msgstr ""
+msgstr "Crítico"
#: models/badges.py:228
-#, fuzzy
msgid "First downvote"
msgstr "Primer voto negativo"
#: models/badges.py:237
msgid "Civic Duty"
-msgstr ""
+msgstr "Deber Civil"
#: models/badges.py:238
-#, fuzzy, python-format
+#, python-format
msgid "Voted %(num)s times"
-msgstr "Votado %s veces"
+msgstr "Votada %(num)s veces"
#: models/badges.py:252
-#, fuzzy, python-format
+#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr "Respondido a su propia pregunta con un mínimo de hasta %s votos"
+msgstr "Contestó una pregunta propia con al menos %(num)s votos positivos"
#: models/badges.py:256
msgid "Self-Learner"
-msgstr ""
+msgstr "Autodidacta"
#: models/badges.py:304
-#, fuzzy
msgid "Nice Answer"
-msgstr "editar respuesta"
+msgstr "Buena Respuesta"
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
-#, fuzzy, python-format
+#, python-format
msgid "Answer voted up %(num)s times"
-msgstr "Respuesta votada %s veces"
+msgstr "Respuesta votada positivamente %(num)s veces"
#: models/badges.py:316
-#, fuzzy
msgid "Good Answer"
-msgstr "antiguar respuestas"
+msgstr "Muy Buena Respuesta"
#: models/badges.py:328
-#, fuzzy
msgid "Great Answer"
-msgstr "respuesta"
+msgstr "Gran Respuesta"
#: models/badges.py:340
-#, fuzzy
msgid "Nice Question"
-msgstr "Preguntas"
+msgstr "Buena Pregunta"
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
-#, fuzzy, python-format
+#, python-format
msgid "Question voted up %(num)s times"
-msgstr "Pregunta votada %s veces"
+msgstr "Pregunta votada positivamente %(num)s veces"
#: models/badges.py:352
-#, fuzzy
msgid "Good Question"
-msgstr "Preguntas"
+msgstr "Muy Buena Pregunta"
#: models/badges.py:364
-#, fuzzy
msgid "Great Question"
-msgstr "re-etiquetar preguntas"
+msgstr "Gran Pregunta"
#: models/badges.py:376
msgid "Student"
-msgstr ""
+msgstr "Estudiante"
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
msgstr "Primera pregunta con al menos un voto"
#: models/badges.py:414
-#, fuzzy
msgid "Popular Question"
-msgstr "Formula tu pregunta"
+msgstr "Pregunta Popular"
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
-#, fuzzy, python-format
+#, python-format
msgid "Asked a question with %(views)s views"
-msgstr "Hizo una pregunta con %s visitas"
+msgstr "Hizo una pregunta con %(views)s vistas"
#: models/badges.py:425
-#, fuzzy
msgid "Notable Question"
-msgstr "todas las preguntas"
+msgstr "Pregunta Notable"
#: models/badges.py:436
-#, fuzzy
msgid "Famous Question"
-msgstr "Cerrar pregunta"
+msgstr "Pregunta Famosa"
#: models/badges.py:450
-#, fuzzy
msgid "Asked a question and accepted an answer"
-msgstr "Preguntas que he respondido"
+msgstr "Hizo una pregunta y aceptó una respuesta"
#: models/badges.py:453
msgid "Scholar"
-msgstr ""
+msgstr "Escolar"
#: models/badges.py:495
msgid "Enlightened"
-msgstr ""
+msgstr "Pregunta Estelar"
#: models/badges.py:499
-#, fuzzy, python-format
+#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr "Primera respuesta que fue aceptada con un mínimo de %s votos"
+msgstr "La primera respuesta fué aceptada con %(num)s o más votos"
#: models/badges.py:507
msgid "Guru"
-msgstr ""
+msgstr "Guru"
#: models/badges.py:510
-#, fuzzy, python-format
+#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr "Primera respuesta que fue aceptada con un mínimo de %s votos"
+msgstr "Respuesta aceptada con %(num)s o más votos"
#: models/badges.py:518
-#, fuzzy, python-format
+#, python-format
msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
msgstr ""
-"Respondio una pregunta más de `%(dif_days)s` días con al menos `%(up_votes)"
-"s` votos"
+"Respondió una pregunta más de %(days)s después con al menos %(votes)s votos"
#: models/badges.py:525
msgid "Necromancer"
-msgstr ""
+msgstr "Nigromante"
#: models/badges.py:548
msgid "Citizen Patrol"
-msgstr ""
+msgstr "Patrulla Ciudadana"
#: models/badges.py:551
msgid "First flagged post"
@@ -3362,26 +3756,23 @@ msgstr "Primer comentario reportado"
#: models/badges.py:563
msgid "Cleanup"
-msgstr ""
+msgstr "Limpieza"
#: models/badges.py:566
msgid "First rollback"
msgstr "Reversión Primera"
#: models/badges.py:577
-#, fuzzy
msgid "Pundit"
-msgstr "editar"
+msgstr "Ilustrado"
#: models/badges.py:580
-#, fuzzy
msgid "Left 10 comments with score of 10 or more"
-msgstr "Elminió su propio post con %s puntos o inferior"
+msgstr "Dejó 10 comentarios con puntuación de 10 o más"
#: models/badges.py:612
-#, fuzzy
msgid "Editor"
-msgstr "editar"
+msgstr "Editor"
#: models/badges.py:615
msgid "First edit"
@@ -3389,16 +3780,16 @@ msgstr "Primer edicion"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Editor Asociado"
#: models/badges.py:627
-#, fuzzy, python-format
+#, python-format
msgid "Edited %(num)s entries"
-msgstr "Ha editado %s entradas"
+msgstr "Editó %(num)s entradas"
#: models/badges.py:634
msgid "Organizer"
-msgstr ""
+msgstr "Organizador"
#: models/badges.py:637
msgid "First retag"
@@ -3406,2834 +3797,3766 @@ msgstr "Primer re-etiquetado"
#: models/badges.py:644
msgid "Autobiographer"
-msgstr ""
+msgstr "Autobiógrafo"
#: models/badges.py:647
msgid "Completed all user profile fields"
msgstr "Completar todos los campos del perfil de usuario"
#: models/badges.py:663
-#, fuzzy, python-format
+#, python-format
msgid "Question favorited by %(num)s users"
-msgstr "Pregunta marcada como favorita por %s usuarios"
+msgstr "Pregunta añadida a favoritos por %(num)s usuarios"
#: models/badges.py:689
-#, fuzzy
msgid "Stellar Question"
-msgstr "Aún tiene preguntas?"
+msgstr "Pregunta Estelar"
#: models/badges.py:698
-#, fuzzy
msgid "Favorite Question"
-msgstr "preguntas favoritas"
+msgstr "Pregunta Favorita"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Entusiasta"
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Visitó el sitio cada día, %(num)s días seguidos"
#: models/badges.py:732
-#, fuzzy
msgid "Commentator"
-msgstr "Localización"
+msgstr "Comentador"
#: models/badges.py:736
#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr ""
+msgstr "Envió %(num_comments)s comentarios"
#: models/badges.py:752
msgid "Taxonomist"
-msgstr ""
+msgstr "Taxonomista"
#: models/badges.py:756
-#, fuzzy, python-format
+#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr "Creo una etiqueta usada por %s preguntas"
+msgstr "Creó una etiqueta utilizada por %(num)s preguntas"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
-msgstr ""
+msgstr "Experto"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
+msgstr "Muy activo con una etiqueta"
+
+#: models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr "Lo sentimos, esta pregunta se ha eliminado y no puedes acceder a ella"
+
+#: models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
msgstr ""
+"Lo sentimos, la respuesta que estás buscando no se encuentra disponible, "
+"debido a que la pregunta de la que depende se ha eliminado"
-#: models/meta.py:112
+#: models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "Lo sentimos, esta respuesta ha sido eliminada y ya no está accesible"
+
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
+"Lo sentimos, el comentario que estás buscando ya no se encuentra accesible "
+"porque la pregunta de la que dependía se ha eliminado."
-#: models/meta.py:119
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
+"Lo sentimos, el comentario que estás buscando ya no se encuentra accesible "
+"porque la respuesta de la que dependía se ha eliminado."
-#: models/question.py:72
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" y \"%s\""
-#: models/question.py:75
-#, fuzzy
+#: models/question.py:57
msgid "\" and more"
-msgstr "Para saber más"
+msgstr "\" y más"
-#: models/question.py:452
+#: models/reply_by_email.py:71
#, fuzzy
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "esta pregunta ha sido seleccionada como la favorita"
+msgid "edited by email"
+msgstr "Validar email"
-#: models/question.py:908
-#, fuzzy, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s modificaron la pregunta"
-
-#: models/question.py:912
-#, fuzzy, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s publicaron %(new_answer_count)s nuevas respuestas"
-
-#: models/question.py:917
-#, fuzzy, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s comentaron la pregunta"
-
-#: models/question.py:922
-#, fuzzy, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s comentaron respuestas"
-
-#: models/question.py:924
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s comentaron una respuesta"
-
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
-msgstr ""
+msgstr "<em>Cambio del moderador. Motivo:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
-"%(points)s points were added for %(username)s's contribution to question %"
-"(question_title)s"
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
msgstr ""
+"%(points)s puntos se añadieron a tu usuario %(username)s por la pregunta "
+"%(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
+"%(points)s puntos se restaron de tu usuario %(username)s por la pregunta "
+"%(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "interesante"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "ignorado"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Foro entero"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Preguntas que he formulado"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Preguntas que he respondido"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Selección individual de preguntas"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
-msgstr ""
+msgstr "Menciones y respuestas a comentarios"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
-msgstr ""
+msgstr "Al momento"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Diario"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Semanal"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "No enviar email"
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr ""
-
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr ""
-
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr ""
-
-#: utils/decorators.py:109
-msgid "Please login to post"
-msgstr ""
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Por favor, introduce tu <span>usuario</span>, y luego haz login"
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
-msgstr ""
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr "(o selecciona otro método de login arriba)"
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "este campo es requerido"
-
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "seleccione un nombre de usuario"
-
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "nombre de usuario es requerido"
-
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "lo sentimos, el nombre que haz elegido ya esta usado, selecciona otro"
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "Regístrate"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr ""
-"lo sentimos, el nombre que haz elegido no está permitido, seleciona otro"
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Cambiar email"
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "los sentimos, no hay usuarios con este nombre"
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Guardar tu dirección de email"
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
msgstr ""
-"lo sentimos, tenermos un serio error - el nombre de usuario ha sido tomado "
-"por varios usuarios"
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Guardar Email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Validar email"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "Email no ha sido modificado"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
msgstr ""
-"nombre de usuario sólo puede constar de letras, espacio vacío y subrayado"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "tu dirección de email"
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "Email modificado"
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "dirección de email requerida"
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "ingresa una dirección de email valida"
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Email verificado"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
msgstr ""
-"este email está siendo utilizado por algún usuario, por favor selecciona otro"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "seleccionar contraseña"
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Validar email"
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "una contraseña es requerida"
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "re-escribir contraseña"
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "Registro"
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "por favor, re-escribe tu contraseña"
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Registro"
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
msgstr ""
-"lo sentimos, las contraseñas que haz ingresado no coinciden, intenta de nuevo"
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "2 días atrás"
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "selecciona una de las siguientes opciones"
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "ayer"
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Darte de alta"
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] ""
-msgstr[1] ""
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr "Gracias por Registrarte "
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] ""
-msgstr[1] ""
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr "Tus detalles de cuenta son:"
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
-msgstr ""
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr "Usuario:"
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
-msgstr ""
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr "Contraseña:"
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr "Por favor regístrate aquí:"
+
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+#, fuzzy
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
msgstr ""
+"Saludos,\n"
+"El Administrador del sitio"
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "usuarios anónimos no pueden votar"
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr "Agradecer desde foro de P&R"
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
-msgstr ""
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr "Para usar este foro, ingresa al siguiente enlace:"
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
msgstr ""
+"El enlace de arriba nos ayudará a verificar su dirección de correo "
+"electrónico."
-#: views/commands.py:122
+#: skins/common/templates/authopenid/email_validation.txt:9
#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "usuarios anónimos no pueden votar"
-
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
msgstr ""
+"Si crees que se ha enviado este mensaje por error - \n"
+"no necesitas hacer nada. Simplemente ignora este email y acepta nuestras "
+"disculpas."
-#: views/commands.py:207
-#, fuzzy
-msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "usuarios anónimos no pueden votar"
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Salir"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "Has desconectado la cuenta correctamente"
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
msgstr ""
-"subscrición guardada, necesitamos una validación de %(email)s , mira %"
-"(details_url)s"
+"Puede que sigas conectado a tu cuenta de OpenID. Por favor, desconectate de "
+"tu proveedor si deseas hacer eso."
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "la frecuencia de notificaciones por email ha sido cambiada a diario"
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Nombre de usuario"
-#: views/commands.py:400
+#: skins/common/templates/authopenid/signin.html:14
#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
+"\n"
+"<span class=\"strong big\">Tu respuesta a </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">se ha guardado y "
+"sera publicada cuando hagas login.</span>"
-#: views/commands.py:409
+#: skins/common/templates/authopenid/signin.html:21
#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
+"<span class=\"strong big\">Tu pregunta</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">se ha guardado y "
+"sera publicada cuando hagas login.</span>"
-#: views/commands.py:542
+#: skins/common/templates/authopenid/signin.html:28
#, fuzzy
-msgid "Please sign in to vote"
-msgstr "más votado"
-
-#: views/meta.py:83
-msgid "Q&A forum feedback"
-msgstr "Foro de sugerencias"
-
-#: views/meta.py:84
-msgid "Thanks for the feedback!"
-msgstr "Gracias por tus sugerencias"
-
-#: views/meta.py:92
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr "Esperamos con interés escuchar sus comentarios! :)"
-
-#: views/readers.py:131
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "nueva pregunta"
-msgstr[1] "nueva pregunta"
-
-#: views/readers.py:139
-#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "nueva pregunta"
-msgstr[1] "nueva pregunta"
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+"Utiliza los servicios externos que desees para registrarte. Tu contraseña "
+"siempre sera confidencia y no tendras que crear una nueva para utilizar este "
+"servicio."
-#: views/readers.py:177
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-msgstr[1] ""
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+"Es buena idea asegurarte que los metodos de login siguen existiendo y "
+"funcionan. Si no, puedes cambiarlos por otros nuevos, para ello haz click en "
+"cualquiera de los iconos de abajo."
-#: views/readers.py:232
-#, fuzzy
-msgid "vote"
-msgid_plural "votes"
-msgstr[0] "votar/"
-msgstr[1] "votar/"
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+"Por favor añade otros tipos de login haciendo click en los iconos de abajo "
+"para evitar tener que hacer login con tu email repetidamente."
-#: views/readers.py:235
-#, fuzzy
-msgid "answer"
-msgid_plural "answers"
-msgstr[0] "respuesta"
-msgstr[1] "respuesta"
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+"Haz click en los iconos de abajo para añadir nuevos metodos de login o "
+"revalidar los existentes."
-#: views/readers.py:238
-#, fuzzy
-msgid "view"
-msgid_plural "views"
-msgstr[0] "vistas"
-msgstr[1] "vistas"
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+"No tienes ningun metodo de login en estos momentos, por favor añade uno o "
+"mas haciendo click en cualquiera de los iconos de abajo."
-#: views/readers.py:440
-#, fuzzy
+#: skins/common/templates/authopenid/signin.html:42
msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "esta pregunta ha sido seleccionada como la favorita"
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+"Por favor, comprueba tu email y haz click en el link que te enviamos para "
+"reconectar tu cuenta"
-#: views/users.py:224
+#: skins/common/templates/authopenid/signin.html:89
#, fuzzy
-msgid "moderate this user"
-msgstr "Moderar este usuario"
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Por favor introduce tu <span>nombre de usuario</span>, y haz login"
-#: views/users.py:225
+#: skins/common/templates/authopenid/signin.html:93
#, fuzzy
-msgid "moderate user"
-msgstr "moderar-usuario/"
+msgid "Please, sign in"
+msgstr "Por favor regístrate aquí:"
-#: views/users.py:380
-msgid "user profile"
-msgstr "perfil de usuario"
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "Login erroneo, por favor intentalo de nuevo"
-#: views/users.py:381
-msgid "user profile overview"
-msgstr "vista del perfil de usuario"
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr "Login o email"
-#: views/users.py:685
-msgid "recent user activity"
-msgstr "actividad reciente del usuario"
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Contraseña"
-#: views/users.py:686
-msgid "profile - recent activity"
-msgstr "perfil - actividad reciente"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+"Para modificar tu contraseña por favor introduce la nueva dos veces y pulsa "
+"el boton"
-#: views/users.py:772
-msgid "comments and answers to others questions"
-msgstr "comentar y responder otras preguntas"
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "Nueva contraseña"
-#: views/users.py:773
-msgid "profile - responses"
-msgstr "perfil - respuestas"
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr "Por favor, teclea de nuevo"
-#: views/users.py:847
-msgid "user vote record"
-msgstr "registro de votos de este usuario"
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Estos son tus metodos actuales de login"
-#: views/users.py:848
-msgid "profile - votes"
-msgstr "pefil - votos"
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "proveedor"
-#: views/users.py:883
-msgid "user reputation in the community"
-msgstr "reputación del usuario en la comunidad"
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr "ultima vez utilizado"
-#: views/users.py:884
-msgid "profile - user reputation"
-msgstr "perfil - reputación del usuario"
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "eliminar, si lo deseas"
-#: views/users.py:911
-msgid "users favorite questions"
-msgstr "preguntas favoritas del usuario"
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "eliminar"
-#: views/users.py:912
-msgid "profile - favorite questions"
-msgstr "pefil - preguntas favoritas"
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr "no puede ser eliminado"
-#: views/users.py:932 views/users.py:936
-msgid "changes saved"
-msgstr "cambios guardados"
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr "Sigues teniendo problemas de registro?"
-#: views/users.py:942
-msgid "email updates canceled"
-msgstr "notificaciones por email cancelada"
-
-#: views/users.py:960
-msgid "email subscription settings"
-msgstr "configuraciones de suscripción por email"
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Por favor, introduce tu email y obten una nueva llave"
-#: views/users.py:961
-msgid "profile - email subscriptions"
-msgstr "perfil - notificación por email"
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr "Por favor, introduce tu email para recuperar tu cuenta"
-#: views/writers.py:58
-#, fuzzy
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "usuarios anónimos no pueden votar"
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr "recupera tu cuenta con tu email"
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "Enviar una nueva llave de recuperacion"
-#: views/writers.py:91
-#, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "Recuperar tu cuenta con tu email"
-#: views/writers.py:99
-#, fuzzy
-msgid "Error uploading file. Please contact the site administrator. Thank you."
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
msgstr ""
-"Error al subir el archivo. Por favor contacte el administrador del sitio. "
-"Gracias. %s"
+"Por favor, registrate haciendo click en cualquiera de los iconos de abajo"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "por favor, haz que tu pregunta sea relevante"
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr "o crea un nuevo usuario y contraseña aqui"
-#: views/writers.py:492
-#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "preguntas sin contestar"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Crear nombre de usuario y contraseña"
-#: views/writers.py:598
-#, python-format
+#: skins/common/templates/authopenid/signup_with_password.html:26
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
msgstr ""
-#: views/writers.py:646
-#, fuzzy
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "usuarios anónimos no pueden votar"
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#: views/writers.py:654
-#, python-format
+#: skins/common/templates/authopenid/signup_with_password.html:50
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
msgstr ""
+"Por favor introduce las dos palabras de abajo para evitar la creacion de "
+"cuentas de spam"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "o"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Lo sentimos, no hemos encontrado la pagina que haz solicitado"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "volver al login de OpenID"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Estas son las posibles razones:"
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "añadir avatar"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "la pregunta o respuesta ha sido eliminada;"
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "Cambiar avatar"
-#~ msgid "url has error - please check it;"
-#~ msgstr "la url es errónea - por favor verificala;"
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "Tu avatar actual:"
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "la pagina a la que estás intentando acceder esta protegida y no tienes "
-#~ "los suficientes puntos para verla"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "No has subido ningun avatar todavia. Subelo ahora"
-#~ msgid "faq"
-#~ msgstr "faq"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Subir nueva imagen"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr ""
-#~ "Si usted cree que este error 404 no debería haber ocurrido, por favor"
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr "Re-etiquetar pregunta"
-#~ msgid "report this problem"
-#~ msgstr "reporte este problema"
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "Elegir nuevo por defecto"
-#~ msgid "back to previous page"
-#~ msgstr "regrese a la pagina anterior"
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "Subir"
-#~ msgid "see all questions"
-#~ msgstr "ver todas las preguntas"
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "eliminar avatar"
-#~ msgid "see all tags"
-#~ msgstr "ver todas las etiquetas"
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "Por favor, selecciona los avatares que quieres eliminar"
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "cada error del sistema es registrado, el error será corregido tan pronto "
-#~ "como sea posible"
-
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "por favor reporte el error con el administrador de este sitio"
-
-#~ msgid "see latest questions"
-#~ msgstr "ver las últimas preguntas"
-
-#~ msgid "see tags"
-#~ msgstr "ver las etiquetas"
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+"No tienes avatars para eliminar. Por favor <a href=\"%(avatar_change_url)s"
+"\">sube uno</a> ahora."
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr "Eliminar este"
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr "cambiar con pregunta"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "enlace permanente"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "enlace"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "revivir"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Ver denuncias"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "eliminar etiqueta"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"reportar como ofensivo (por ej. si tiene spam, pubicidad, material "
+"malicioso, etc.)"
-#~ msgid "Edit answer"
-#~ msgstr "Editar respuesta"
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "marcar como ofensivo"
-#~ msgid "back"
-#~ msgstr "regresar"
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "editar"
-#~ msgid "revision"
-#~ msgstr "revisión"
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "esta respuesta ha sido seleccionada como la correcta"
-#~ msgid "select revision"
-#~ msgstr "seleccionar revisión"
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr "marcar esta respuesta como correcta (haz click de nuevo para deshacer)"
-#~ msgid "Save edit"
-#~ msgstr "Guardar edición"
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"La pregunta ha sido cerrada por el siguiente motivo <b>\"%(close_reason)s\"</"
+"b> <i>por"
-#~ msgid "Cancel"
-#~ msgstr "Cancelar"
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "fecha de cierre %(closed_at)s"
-#~ msgid "hide preview"
-#~ msgstr "ocultar vista previa"
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "reabrir"
-#~ msgid "show preview"
-#~ msgstr "mostrar vista previa"
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "cerrar"
-#~ msgid "Ask a question"
-#~ msgstr "Formula una pregunta"
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "re-etiquetar"
-#~ msgid "Badge"
-#~ msgstr "Medalla"
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "una de las siguientes es requerida"
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "suscripción por email"
+msgid "tags:"
+msgstr "etiquetas"
-#~ msgid "Badges summary"
-#~ msgstr "Resúmen de medallas"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(requerido)"
-#~ msgid "Badges"
-#~ msgstr "Medallas"
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Vista preliminar en tiempo real del editor Markdown"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr "La comunidad le da premios a sus preguntas, respuestas y votos."
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "ocultar vista previa"
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at %"
-#~ "(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "A continuación se muestra una lista de las medallas disponibles y el "
-#~ "numero \n"
-#~ " de veces que ha sido otorgada. Dinos que piensas al respecto en %"
-#~ "(feedback_faq_url)s.\n"
-#~ " "
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
-#~ msgid "Community badges"
-#~ msgstr "Medallas de la comunidad"
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Etiquetas de interes"
-#~ msgid "gold badge description"
-#~ msgstr "descripción de la medalla de oro"
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "añadir"
-#~ msgid "silver badge description"
-#~ msgstr "descripción de la medalla de plata"
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Ignorar etiqueta"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "medalla de bronce: a menudo como un honor especial"
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Mostrar filtro de etiquetas"
-#~ msgid "bronze badge description"
-#~ msgstr "descripción de la medalla de bronce"
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Página no encontrada"
-#~ msgid "Close question"
-#~ msgstr "Cerrar pregunta"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Lo sentimos, no hemos encontrado la pagina que haz solicitado"
-#~ msgid "Close the question"
-#~ msgstr "Cerrar la pregunta"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Estas son las posibles razones:"
-#~ msgid "Reasons"
-#~ msgstr "Razones"
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "la pregunta o respuesta ha sido eliminada;"
-#~ msgid "OK to close"
-#~ msgstr "Ok cerrar"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "la url es errónea - por favor verificala;"
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Preguntas más frecuentes"
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"la pagina a la que estás intentando acceder esta protegida y no tienes los "
+"suficientes puntos para verla"
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Que tipo de preguntas puedo hacer aquí?"
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "faq"
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "Los más importante - las preguntas debe de ser <strong>relevantes</"
-#~ "strong> para esta comunidad."
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "Si usted cree que este error 404 no debería haber ocurrido, por favor"
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Antes de hacer una pregunta - asegurate de haber buscado sobre ella, "
-#~ "quizas ya encuentres una respuesta concreta."
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "reporte este problema"
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "¿Qué preguntas debo evitar hacer?"
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "regrese a la pagina anterior"
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Por favor, evite hacer preguntas que no son relevantes para esta "
-#~ "comunidad, demasiado subjetivas y argumentativas."
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "ver todas las preguntas"
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "¿Qué debo evitar en mis respuestas?"
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "ver todas las etiquetas"
-#~ 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 ""
-#~ "es un un sitio de Preguntas y Respuestas, no un grupo de discusión. Si "
-#~ "quieres discutir, hazlo en los comentarios sobrelas respuestas."
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "Error Interno del Servidor"
-#~ msgid "Who moderates this community?"
-#~ msgstr "Quien modera esta comunidad?"
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"cada error del sistema es registrado, el error será corregido tan pronto "
+"como sea posible"
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "La respuesta corta es: <strong>tu</ strong>."
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "por favor reporte el error con el administrador de este sitio"
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Este sitio es moderado por los usuarios."
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "ver las últimas preguntas"
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "El sistema de reputación/karma permite a los usuarios obtener la "
-#~ "autorización para realizar una variedad de tareas de moderación."
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "ver las etiquetas"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Editar respuesta"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "regresar"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "revisión"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "seleccionar revisión"
-#~ msgid "How does reputation system work?"
-#~ msgstr "Cómo funciona este sistema de reputación?"
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Guardar edición"
-#~ msgid "Rep system summary"
-#~ msgstr "Resumen de reputación del sistema"
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "mostrar vista previa"
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
#, fuzzy
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>%"
-#~ "(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Por ejemplo, si una pregunta es interesante o da una respuesta útil, su "
-#~ "entrada será votada positiva. Por otra parte, si la respuesta es engañosa "
-#~ "- será votada negativa. Cada voto a favor generará <strong>10</ strong> "
-#~ "puntos, cada voto en contra resta <strong>2</ strong> puntos. Hay un "
-#~ "límite de <strong>200</ strong> puntos que se pueden acumular por cada "
-#~ "pregunta o respuesta. La siguiente tabla muestra los puntos necesarios en "
-#~ "la reputación para obtener autorización de realizar diversas tareas de "
-#~ "moderación."
-
-#~ msgid "upvote"
-#~ msgstr "voto positivo"
+msgid "Ask Your Question"
+msgstr "Formula tu pregunta"
-#~ msgid "use tags"
-#~ msgstr "usar etiquetas"
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
-#~ msgid "add comments"
-#~ msgstr "comentar"
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Medalla"
-#~ msgid "downvote"
-#~ msgstr "voto negativo"
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr "Medalla \"%(name)s\""
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Primer respuesta aceptada a un pregunta tuya"
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr "%(description)s"
-#~ msgid "open and close own questions"
-#~ msgstr "abrir y cerrar preguntas propias"
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "el usuario recibió la medalla:"
+msgstr[1] "los usuarios recibieron la medalla:"
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "re-etiquetar preguntas"
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Medallas"
-#~ msgid "edit community wiki questions"
-#~ msgstr "editar preguntas wiki"
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr "La comunidad le da premios a sus preguntas, respuestas y votos."
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "editar cualquier respuesta"
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Abajo encontrarás la lista disponible de medallas y el número de veces que "
+"se han entregado cada tipo de medalla. Te gustaría añadir más medallas? Por "
+"favor, envíanos tu <a href='%(feedback_faq_url)s'>feedback</a>\n"
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "eliminar cualquier comentario"
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Medallas de la comunidad"
-#~ msgid "what is gravatar"
-#~ msgstr "que es gravatar"
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "medalla de oro: el mejor de los honores, raramente ofrecida"
-#~ msgid "gravatar faq info"
-#~ msgstr "información de gravatar"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Para registrarme, necesito crear una contraseña?"
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+"medalla de plata: ofrecida ocasionalmente por contribuciones muy importantes"
+#: skins/default/templates/badges.html:51
#, fuzzy
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "No, no la necesitas. Puedes usar los datos de tus servicios que son "
-#~ "compatibles con OpenID, como Google, Yahoo, AOL, etc."
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+"medalla de plata: ofrecida ocasionalmente por contribuciones muy importantes"
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Ingresar ahora!"
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "medalla de bronce: a menudo como un honor especial"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "Por que otras personas puede editar mis preguntas/respuestas?"
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Cerrar pregunta"
-#~ msgid "Goal of this site is..."
-#~ msgstr "Objetivo de este sitio es ..."
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Cerrar la pregunta"
-#~ 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 ""
-#~ "Entonces, la presguntas y respuestas pueden ser editas comos los sitios "
-#~ "wiki (como Wikipedia) por usuarios con experiencia en ese sitio, y todo "
-#~ "con el objetivo de aumentar la calidad del contenido."
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Razones"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "Si este enfoque no es para usted, nosotros respetaremos su opción."
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "Ok cerrar"
-#~ msgid "Still have questions?"
-#~ msgstr "Aún tiene preguntas?"
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "Ayuda"
-#, fuzzy
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Por favor formula tus inquietudes en %(ask_question_url)s, ayudanos a ser "
-#~ "una mejor comunidad!"
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Preguntas más frecuentes"
-#~ msgid "Feedback"
-#~ msgstr "Sugerencias"
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "¿Que tipo de preguntas puedo hacer aquí?"
-#~ msgid "Give us your feedback!"
-#~ msgstr "Danos tu Feedback!"
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"Los más importante - las preguntas debe de ser <strong>relevantes</strong> "
+"para esta comunidad."
+#: skins/default/templates/faq_static.html:8
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>Querido %(user_name)s</span>, "
-#~ "esperamos con entusiasmo tus sugerencias. \n"
-#~ " Por favor escriba y nos envíe su mensaje a continuación.\n"
-#~ " "
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Antes de hacer una pregunta - asegurate de haber buscado sobre ella, quizas "
+"ya encuentres una respuesta concreta."
+#: skins/default/templates/faq_static.html:10
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>Querido visitante</span>, esperamos "
-#~ "con entusiasmo tus sugerencias.\n"
-#~ " Por favor escriba y nos envíe su mensaje a continuación.\n"
-#~ " "
+msgid "What kinds of questions should be avoided?"
+msgstr "¿Qué preguntas debo evitar hacer?"
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "ingresa una dirección de email valida"
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Por favor, evite hacer preguntas que no son relevantes para esta comunidad, "
+"demasiado subjetivas y argumentativas."
-#~ msgid "(this field is required)"
-#~ msgstr "(este campo es requerido)"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "¿Qué debo evitar en mis respuestas?"
-#~ msgid "Send Feedback"
-#~ msgstr "Enviar sugerencias"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "Sinceramente,<br />\n"
-#~ " Administrador del Foro"
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Quien modera esta comunidad?"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "La respuesta corta es: <strong>tu</ strong>."
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Este sitio es moderado por los usuarios."
+
+#: skins/default/templates/faq_static.html:18
#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Reabrir esta pregunta"
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"El sistema de reputación/karma permite a los usuarios obtener la "
+"autorización para realizar una variedad de tareas de moderación."
+#: skins/default/templates/faq_static.html:20
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "medallas"
+msgid "How does karma system work?"
+msgstr "Cómo funciona este sistema de reputación?"
-#~ msgid "previous"
-#~ msgstr "anterior"
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#~ msgid "current page"
-#~ msgstr "pagina actual"
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Si haces una pregunta interesante o envias una respuesta que sea de ayuda, "
+"te valoraran positivamente. Pero si la respuesta es confusa podran valorarte "
+"negativamente. Cada voto positivo generara <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> puntos , cada voto negativo te "
+"restara <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> puntos. "
+"Dispones de un limite de <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
+"puntos que puedes ganar cada dia con cada pregunta. La tabla de abajo te "
+"muestra como funcionan los puntos de reputacion para cada tipo de tarea de "
+"moderacion."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "voto positivo"
-#, fuzzy
-#~ msgid "page number %(num)s"
-#~ msgstr "numero de pagina"
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "comentar"
-#~ msgid "next page"
-#~ msgstr "pagina siguiente"
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "voto negativo"
-#~ msgid "posts per page"
-#~ msgstr "artículos por pagina"
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr "aceptar respuestas propias a tus preguntas"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "perfil de usuario"
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "abrir y cerrar preguntas propias"
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "usuarios anónimos no pueden votar"
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "re-etiquetar otras preguntas"
-#~ msgid "asked"
-#~ msgstr "preguntado"
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "editar preguntas wiki"
-#~ msgid "answered"
-#~ msgstr "respondido"
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr "editar cualquier respuesta"
-#~ msgid "posted"
-#~ msgstr "publicado"
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr "eliminar cualquier comentario"
-#~ msgid "updated"
-#~ msgstr "actualizado"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
-#, fuzzy
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "ver preguntas etiquetadas con '%(tagname)s'"
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Para registrarme, necesito crear una contraseña?"
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"No es necesario hacer esto. Puedes hacer login desde cualquier servicio que "
+"soporte OpenID, por ejemplo Google, Yahoo, AOL, etc"
-#~ msgid "delete this comment"
-#~ msgstr "eliminar este comentario"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "\"Haz Login ahora!\""
-#~ msgid "edit"
-#~ msgstr "editar"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Por que otras personas puede editar mis preguntas/respuestas?"
-#~ msgid "add comment"
-#~ msgstr "comentar"
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Objetivo de este sitio es ..."
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "este campo es requerido"
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Entonces, la presguntas y respuestas pueden ser editas comos los sitios wiki "
+"(como Wikipedia) por usuarios con experiencia en ese sitio, y todo con el "
+"objetivo de aumentar la calidad del contenido."
-#~ msgid "(required)"
-#~ msgstr "(requerido)"
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "Si este enfoque no es para usted, nosotros respetaremos su opción."
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Vista preliminar en tiempo real del editor Markdown"
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Aún tiene preguntas?"
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "seleccione un nombre de usuario"
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Por favor <a href='%(ask_question_url)s'>haz tu pregunta</a>, y ayudaras a "
+"esta comunidad a crecer!"
-#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "respuestas"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Sugerencias"
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Primer comentario reportado"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Danos tu Feedback!"
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Primer comentario reportado"
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>Estimado %(user_name)s</span>, estamos "
+"deseando leer tu opinion. \n"
+" Escribe tu mensaje abajo.\n"
+" "
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>Estimado visitanter</span>, estamos "
+"deseando leer tu opinion.\n"
+" Escribe tu mensaje abajo.\n"
+" "
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+"(para que te podamos contestar introduce un email valido o marca la casilla "
+"de abajo)"
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(este campo es requerido)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(Por favor introduce la imagen captcha)"
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Enviar sugerencias"
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Hola, esto es un mensaje de %(site_title)s.\n"
-#~ msgid "Questions"
-#~ msgstr "Preguntas"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr "Ayuda"
-#~ msgid "Privacy policy"
-#~ msgstr "Políticas de privacidad"
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "Bienvenido %(username)s,"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "me gusta este artículo (clic de nuevo para cancelar)"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Bienvenido,"
-#~ msgid "current number of votes"
-#~ msgstr "numero actual de votos"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr "Gracias por usar %(app_name)s, asi es como funciona."
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "no me gusta este artículo (clic de nuevo para cancelar)"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+"Este sitio es para preguntar y contestar pregunras, no para debates o "
+"discusiones."
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "re-etiquetado"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+"Te aconsejamos utilizar el espacio de preguntas para hacer preguntas y el de "
+"respuestas para responder."
-#~ msgid "reopen"
-#~ msgstr "reabrir"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+"A pesar de esto, puedes comentar cada pregunta y cada respuesta – \n"
+" aunque no se recomienda utilizar los comentarios para iniciar debates "
+"demasiado extensos, solo para discusiones cortas."
-#~ msgid "close"
-#~ msgstr "cerrar"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+"Votar en %(app_name)s ayuda a seleccionar las mejores respuestas y agradecer "
+"la colaboracion de nuestros mejores usuarios."
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "reportar como ofensivo (por ej. si tiene spam, pubicidad, material "
-#~ "malicioso, etc.)"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+"Por favor, vota cuando encuentres informacion de interes,\n"
+" asi ayudaras a la comunidad de %(app_name)s."
-#~ msgid "flag offensive"
-#~ msgstr "marcar como ofensivo"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+"Ademas, puedes @mencionar a los usuarios en cualquier punto de tu texto para "
+"llamar su atencion,\n"
+" seguir usuarios y denunciar contenido inapropiado haciendo click en "
+"denunciar."
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr "Disfruta."
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "Importar datos de StackExchange"
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Advertencia:</em> si tu base de datos no esta vacia, por favor haz un "
+"back up de la misma\n"
+" antes de realizar esta operacion."
-#~ msgid "undelete"
-#~ msgstr "revivir"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Sube tu fichero de backup de stackexchange en formato .zip y luego espera "
+"hasta \n"
+" que la importacion de los datos se complete. Este proceso puede "
+"tardar varios minutos.\n"
+" El feedback de esta operacion sera mostrado en texto plano."
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "Importar datos"
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"En caso de que tengas dificultades utilizando esta herramienta de "
+"importacion,\n"
+" puedes intentar importar tus datos mediante la linea de comandos: "
+"<code>python manage.py load_stackexchange path/to/your-data.zip</code>"
-#~ msgid "delete"
-#~ msgstr "eliminar"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Estimado %(receiving_user_name)s,</p>"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr ""
-#~ "Esta pregunta ha sido cerrada por las siguientes razones \"%(close_reason)"
-#~ "s\" por"
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s te ha enviado un <a href=\"%(post_url)s\">nuevo "
+"comentario</a>:</p>\n"
-#, fuzzy
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "tiempo %(closed_at)s"
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s te ha enviado un <a href=\"%(post_url)s\">nuevo "
+"comentario</a></p>\n"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "antiguar respuestas serán mostradas primero"
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s respondio a la pregunta \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "oldest answers"
-#~ msgstr "antiguar respuestas"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s envio la pregunta \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "nuevas respuestas serán mostradas primero"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s actualizo una respuesta a la pregunta\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "newest answers"
-#~ msgstr "nuevas respuestas"
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s actualizo la pregunta \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "respuestas mejor valoradas serán mostradas primero"
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Cambia la frecuencia de estas notificaciones o eliminalas desde tu <a "
+"href=\"%(user_subscriptions_url)s\">perfil</a>, Gracias!</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>Gracias,<br/>El Administrador</p>"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid "popular answers"
-#~ msgstr "respuestas populares"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "me gusta esta respuesta (clic de nuevo para cancelar)"
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr "Compartir esta pregunta en %(site)s"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "no me gusta esta respuesta (clic de nuevo para cancelar)"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "seguir a %(alias)s"
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "marcar esta respuesta como la favorita (clic de nuevo para deshacer)"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "dejar de seguir a %(alias)s"
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr ""
-#~ "el autor de esta pregunta ha seleccionado esta respuesta como la correcta"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "siguiendo a %(alias)s"
-#~ msgid "answer permanent link"
-#~ msgstr "enlace permanente a esta respuesta"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "numero actual de votos"
-#~ msgid "permanent link"
-#~ msgstr "enlace permanente"
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "usuario anonimo"
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Responde la pregunta"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "este post pertenece en la comunidad wiki"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "o"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Este post pertenece a la wiki.\n"
+" Cualquier usuario con un karma mayor a %(wiki_min_rep)s puede "
+"mejorarlo si lo desea."
-#, fuzzy
-#~ msgid "email"
-#~ msgstr "no enviar emails"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "preguntado"
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "Notificarme una vez al día cuando tenga nuevas respuestas"
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "respondido"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "Notificarme semanalmente cuando tenga alguna nueva respuesta"
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "publicado"
-#, fuzzy
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "Notificarme semanalmente cuando tenga alguna nueva respuesta"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "actualizado"
-#, fuzzy
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "\n"
-#~ " Puedes ajustar la frecuencia de emails recibidos en tu %"
-#~ "(profile_url)s\n"
-#~ " "
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "ver preguntas etiquetadas con '%(tag)s'"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "una vez que inicie sesión serás capaz de suscribirte para recibir "
-#~ "actualizaciones"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "eliminar este comentario"
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Ingresa/Registrate para publicar tu respuesta"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "Imagen Gravatar de %(username)s "
-#~ msgid "Your answer"
-#~ msgstr "Tu respuesta"
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "la pagina de %(username)s's es %(url)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "anterior"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "pagina actual"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "%(num)s pagina"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Se el primero en contestar esta pregunta"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "pagina siguiente"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "tu puedes contestar anonimamente y luego ingresar"
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "respuestas a %(username)s"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "responder a tu pregunta sólo para dar una respuesta"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "tienes una nueva respuesta"
+msgstr[1] "tienes %(response_count)s nuevas respuestas"
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "por favor intenta responder, no discutir"
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "sin respuestas todavia"
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Ingresa/Registrate para publicar tu respuesta"
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "%(new)s denuncias nuevas en posts y %(seen)s anteriores"
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s denuncias nuevas en posts"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Responde tu pregunta"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "%(seen)s denuncias en posts"
-#~ msgid "Answer the question"
-#~ msgstr "Responde la pregunta"
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Preguntas"
+#: skins/default/templates/question.html:110
#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Etiquetas de la pregunta"
+msgid "post a comment / <strong>some</strong> more"
+msgstr "ver <strong>%(counter)s</strong> mas"
+#: skins/default/templates/question.html:113
#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "preguntas calientes"
+msgid "see <strong>some</strong> more"
+msgstr "ver <strong>%(counter)s</strong> mas"
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "preguntas calientes"
+msgid "post a comment"
+msgstr "comentar"
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "notificaciones por email cancelada"
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Responde tu pregunta"
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "suscribirse al feed de esta pregunta"
+msgid "Post Your Answer"
+msgstr "Tu respuesta"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "suscribirse al feed de esta pregunta"
-
-#~ msgid "Question tags"
-#~ msgstr "Etiquetas de la pregunta"
+msgid "Login/Signup to Post"
+msgstr "Haz Login o registrate para contestar"
-#~ msgid "question asked"
-#~ msgstr "pregunta formulada"
-
-#~ msgid "question was seen"
-#~ msgstr "la pregunta ha sido vista"
-
-#~ msgid "times"
-#~ msgstr "veces"
-
-#~ msgid "last updated"
-#~ msgstr "última actualización"
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Editar pregunta"
-#~ msgid "Related questions"
-#~ msgstr "Preguntas relacionadas"
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Preguntas relacionadas"
-#~ msgid "Edit question"
-#~ msgstr "Editar pregunta"
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Re-etiquetar"
-#~ msgid "Change tags"
-#~ msgstr "Cambiar etiquetas"
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Por que usar o modificar etiquetas?"
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "etiquetas"
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+"Las etiquetas ayudan a mantener el contenido mejor organizado y mas facil de "
+"buscar"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Por que usar o modificar etiquetas?"
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "quienes etiquetan sus preguntas, son premiados por la comunidad"
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "quienes etiquetan sus preguntas, son premiados por la comunidad"
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "más de 5 etiquetas, con menos de 20 caraácteres cada una"
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "más de 5 etiquetas, con menos de 20 caraácteres cada una"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Re-abrir pregunta"
-#~ msgid "Reopen question"
-#~ msgstr "Re-abrir pregunta"
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Titulo"
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "título"
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"La pregunta ha sido cerrada por \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Cerrar pregunta"
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Razon del cierre:"
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Reabrir esta pregunta"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Cuando:"
-#~ msgid "Reopen this question"
-#~ msgstr "Reabrir esta pregunta"
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Reabrir la pregunta?"
-#~ msgid "Revision history"
-#~ msgstr "Historial de revisiones"
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Reabrir esta pregunta"
-#~ msgid "click to hide/show revision"
-#~ msgstr "clic para mostrar u ocultar revision"
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "revisiones/"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Historial de revisiones"
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "usar etiquetas"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "clic para mostrar u ocultar revision"
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "La pregunta se cerro por las siguientes razones"
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "%(number)s revisiones"
-#~ msgid "Tag list"
-#~ msgstr "Lista de etiquetas"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "Suscribir a etiquetas"
-#~ msgid "sorted alphabetically"
-#~ msgstr "mostrar alfabeticamente"
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr "Por favor, suscribete a las siguientes etiquetas:"
-#~ msgid "by name"
-#~ msgstr "por nombre"
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "Suscribir"
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "ordenar etiquetas por frecuencia de uso"
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "Etiquetas relacionadas \"%(stag)s\""
-#~ msgid "by popularity"
-#~ msgstr "por popularidad"
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Lista de etiquetas"
-#~ msgid "Nothing found"
-#~ msgstr "Nada encontrado"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "Ordenar por &raquo;"
-#~ msgid "Users"
-#~ msgstr "Usuarios"
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "mostrar alfabeticamente"
-#~ msgid "reputation"
-#~ msgstr "reputación"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "por nombre"
-#~ msgid "recent"
-#~ msgstr "reciente"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "ordenar etiquetas por frecuencia de uso"
-#~ msgid "by username"
-#~ msgstr "por nombre de usuario"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "por popularidad"
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "usurios que coinciden con la consulta %(suser)s:"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Nada encontrado"
-#~ msgid "Nothing found."
-#~ msgstr "Nada encontrado."
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Usuarios"
-#, fuzzy
-#~ msgid "Change email"
-#~ msgstr "Cambiar email"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "ver usuarios con la reputacion mas alta"
-#, fuzzy
-#~ msgid "Save your email address"
-#~ msgstr "tu dirección de email"
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "karma"
-#, fuzzy
-#~ msgid "change %(email)s info"
-#~ msgstr "Cambiar email"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "ver usuarios que se han registrado recientemente"
-#, fuzzy
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "avatar, ver información %(gravatar_faq_url)s"
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "reciente"
-#, fuzzy
-#~ msgid "Your new Email"
-#~ msgstr "Tu cuenta de email"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "ver usuarios que se registraron primero"
-#, fuzzy
-#~ msgid "Your Email"
-#~ msgstr "no enviar emails"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "ver usuarios ordenados por nombre"
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "Guardar edición"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "por nombre de usuario"
-#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "Cómo validar una email"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "usurios que coinciden con la consulta %(suser)s:"
-#, fuzzy
-#~ msgid "Email not changed"
-#~ msgstr "notificaciones por email cancelada"
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Nada encontrado."
-#, fuzzy
-#~ msgid "email key not sent"
-#~ msgstr "enviar actualizaciones al usuario"
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s pregunta"
+msgstr[1] "%(q_num)s preguntas"
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Registrar"
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "ver contribuciones de %(author_name)s's"
-#, fuzzy
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr "avatar, ver información %(gravatar_faq_url)s"
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "Etiquetado"
-#, fuzzy
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see %"
-#~ "(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Trucos de busqueda:"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Esta cuenta ya existe, por favor use otra."
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "resetear autor"
-#~ msgid "Screen name label"
-#~ msgstr "Nombre de usuario"
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr " o "
-#~ msgid "Email address label"
-#~ msgstr "Dirección de correo electrónico"
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "resetear etiquetas"
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "recibir actualizaciones de motivación"
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "empezar de nuevo"
-#~ msgid "please select one of the options above"
-#~ msgstr "selecciona una de las siguientes opciones"
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+" - expandir o buscar añadiendo mas etiquetas para extender la busqueda."
-#~ msgid "Tag filter tool will be your right panel, once you log in."
-#~ msgstr ""
-#~ "Una herramienta para filtrar por etiquetas será mostrada cuando ingreses"
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Truco de busqueda:"
-#~ msgid "create account"
-#~ msgstr "crear cuenta"
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "añadir etiqueta y una palabra clave para refinar tu busqueda"
-#, fuzzy
-#~ msgid "Your account details are:"
-#~ msgstr "Tu cuenta de email"
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "No hay preguntas sin responder aqui"
-#, fuzzy
-#~ msgid "Username:"
-#~ msgstr "nombr de usuario"
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr "No hay preguntas aqui"
-#, fuzzy
-#~ msgid "Password:"
-#~ msgstr "contraseña"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr "Por favor, sigue las preguntas o usuarios que desees"
-#, fuzzy
-#~ msgid ""
-#~ "Sincerely,\n"
-#~ "Forum Administrator"
-#~ msgstr ""
-#~ "Sinceramente,<br />\n"
-#~ " Administrador del Foro"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Puedes ampliar tu busqueda por "
-#~ msgid "Greetings from the Q&A forum"
-#~ msgstr "Agradecer desde foro de P&R"
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "reseteando autor"
-#~ msgid "To make use of the Forum, please follow the link below:"
-#~ msgstr "Para usar este foro, ingresa al siguiente enlace:"
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "reseteando etiquetas"
-#~ msgid "Following the link above will help us verify your email address."
-#~ msgstr ""
-#~ "El enlace de arriba nos ayudará a verificar su dirección de correo "
-#~ "electrónico."
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "empezando de nuevo"
-#, fuzzy
-#~ msgid ""
-#~ "If you beleive that this message was sent in mistake - \n"
-#~ "no further action is needed. Just ingore this email, we apologize\n"
-#~ "for any inconvenience"
-#~ msgstr ""
-#~ "Si crees que este mensaje ha sido enviado por error -\n"
-#~ " no es necesario que tomes acción alguna. Solo ignoralo, y disculpa\n"
-#~ " por los iconvenientes"
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "Por favor, pregunta cuando quieras!"
-#~ msgid "Logout"
-#~ msgstr "Salir"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "No encontraste lo que estabas buscando?"
-#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "selecciona una de las siguientes opciones"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Por favor, envia tu pregunta"
-#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "ingresar/"
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "suscribirse al feed de esta pregunta"
-#~ msgid "User login"
-#~ msgstr "Nombre de usuario"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " Puedes ajustar la frecuencia de emails recibidos en tu %"
-#~ "(profile_url)s\n"
-#~ " "
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+"Nota: %(app_name)s requiere javascript para que funcione correctamente, por "
+"favor activa javascript en tu navegador, aqui puedes encontrar la <a href="
+"\"%(noscript_url)s\">ayuda</a>"
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " Puedes ajustar la frecuencia de emails recibidos en tu %"
-#~ "(profile_url)s\n"
-#~ " "
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "cada etiqueta debe tener menos de %(max_chars)s caracter"
+msgstr[1] "cada etiqueta debe tener menos de %(max_chars)s caracteres"
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Ingrese su nombre de usuario y contraseña."
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "por favor utiliza %(tag_count)s etiqueta"
+msgstr[1] "por favor utiliza %(tag_count)s etiquetas o menos"
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "no enviar emails"
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+"por favor utiliza %(tag_count)s etiquetas, de menos de %(max_chars)s "
+"caracteres cada una"
-#, fuzzy
-#~ msgid "Password"
-#~ msgstr "contraseña"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s Respuesta\n"
+" "
+msgstr[1] ""
+"\n"
+" %(counter)s Respuestas\n"
+" "
-#, fuzzy
-#~ msgid "Login"
-#~ msgstr "ingresar"
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Ordenar por »"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Seleccionar nueva contraseña"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "antiguar respuestas serán mostradas primero"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "por favor, re-escribe tu contraseña"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "nuevas respuestas serán mostradas primero"
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "proveedores/"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "respuestas mejor valoradas serán mostradas primero"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "últimas visita"
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr "Haz Login o registrate para contestar"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "revivir"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Tu respuesta"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "si estas teniendo problemas para ingresar."
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Se el primero en contestar esta pregunta"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Obtener una nueva contraseña"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Obtener una nueva contraseña"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "Why use OpenID?"
-#~ msgstr "Por que usar OpenID?"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "with openid it is easier"
-#~ msgstr "con OpenID es más fácil"
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+"Conoces a alguien que quiera responder? Compartelo el enlace de esta <a href="
+"\"%(question_url)s\">pregunta</a> "
-#~ msgid "reuse openid"
-#~ msgstr "re-usar openid"
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr " o"
-#~ msgid "openid is widely adopted"
-#~ msgstr "openID es ampliamente adoptado"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "email"
-#~ msgid "openid is supported open standard"
-#~ msgstr "openID es un estándar abierto"
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr "Herramientas para Preguntar"
-#~ msgid "Find out more"
-#~ msgstr "Para saber más"
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr "haz click para dejar de seguir esta pregunta"
-#~ msgid "Get OpenID"
-#~ msgstr "Obetener OpenID"
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr "Siguiendo"
-#~ msgid "Signup"
-#~ msgstr "Darte de alta"
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr "Dejar de seguir"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "selecciona una de las siguientes opciones"
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr "haz click para seguir la pregunta"
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Crear nombre de usuario y contraseña"
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr "Seguir"
-#~ msgid "Create login name and password"
-#~ msgstr "Crear nombre de usuario y contraseña"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s followers"
+msgstr[1] "%(count)s followers"
-#~ msgid "Traditional signup info"
-#~ msgstr "Registro tradicional"
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr "enviar actualizaciones por email"
-#~ msgid "Create Account"
-#~ msgstr "Crear cuenta"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+"<strong>Aqui</strong> podras activar las actualizaciones periodicas por "
+"email (cuando hagas login)."
-#~ msgid "or"
-#~ msgstr "o"
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "suscribirte al feed rss de esta pregunta"
-#, fuzzy
-#~ msgid "return to OpenID login"
-#~ msgstr "regresar a la pagina de ingreso"
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "suscribirte al feed rss"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "que es gravatar"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "Estadisticas"
+#: skins/default/templates/question/sidebar.html:48
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Cambiar etiquetas"
+msgid "Asked"
+msgstr "preguntado"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Tu cuenta de email"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "cambios guardados"
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "veces"
+#: skins/default/templates/question/sidebar.html:54
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "subir/"
+msgid "Last updated"
+msgstr "última actualización"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "eliminar respuesta"
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Preguntas relacionadas"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "eliminar respuesta"
+msgid "Email me when there are any new answers"
+msgstr "Notificarme semanalmente cuando tenga alguna nueva respuesta"
-#~ msgid "answer tips"
-#~ msgstr "responder tips"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "por favor intenta que tu respuesta sea relevante para la comunidad"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "trata de dar una respuesta, en lugar de iniciar un debate"
-
-#~ msgid "please try to provide details"
-#~ msgstr "intenta dar algunos detalles"
-
-#~ msgid "be clear and concise"
-#~ msgstr "se claro y conciso"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "mira las preguntas más frecuentes"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown tips"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"una vez que inicie sesión serás capaz de suscribirte para recibir "
+"actualizaciones"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*italic* o __italic__"
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+"<strong>Aqui</strong> podras activar las actualizaciones periodicas por "
+"email (cuando hagas login)."
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**bold** o __bold__"
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "perfil de %(username)s"
-#~ msgid "link"
-#~ msgstr "enlace"
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Editar perfil de usuario"
-#~ msgid "text"
-#~ msgstr "texto"
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "editar perfil"
-#~ msgid "image"
-#~ msgstr "imagen"
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "modificar foto"
-#~ msgid "numbered list:"
-#~ msgstr "numerar:"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "remover"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "HTML básico es soportado"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Usuario registrado"
-#~ msgid "learn more about Markdown"
-#~ msgstr "lee acerca de Markdown"
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Nombre para mostrar"
-#~ msgid "login to post question info"
-#~ msgstr "ingresa para publicar información de la pregunta"
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(no puede modificarse)"
-#, fuzzy
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Ingresa/registrate para publicar tu pregunta"
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Actualizar"
-#~ msgid "Ask your question"
-#~ msgstr "Formula tu pregunta"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "suscripciones"
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "las etiquetas deben contener menos de 20 carácteres"
-#~ msgstr[1] "las etiquetas deben contener menos de 20 carácteres"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "Configuración de suscripciones por email"
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "por favor, use 5 etiquetas o menos"
-#~ msgstr[1] "por favor, use 5 etiquetas o menos"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "más de 5 etiquetas, con menos de 20 caraácteres cada una"
-
-#~ msgid "about"
-#~ msgstr "acerca de"
-
-#~ msgid "privacy policy"
-#~ msgstr "políticas de privacidad"
-
-#~ msgid "give feedback"
-#~ msgstr "enviar sugerencias"
-
-#~ msgid "back to home page"
-#~ msgstr "volver a inicio"
+msgid "Stop Email"
+msgstr ""
+"<strong>Tu email</strong> (<i>debe ser válido, nunca se mostrará a otros</i>)"
-#~ msgid "questions"
-#~ msgstr "preguntas"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr "preguntas seguidas"
-#~ msgid "users"
-#~ msgstr "usuarios"
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "bandeja de entrada"
-#~ msgid "badges"
-#~ msgstr "medallas"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Secciones:"
-#~ msgid "ask a question"
-#~ msgstr "preguntar"
-
-#~ msgid "logout"
-#~ msgstr "salir"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "respuestas (%(re_count)s)"
-#~ msgid "login"
-#~ msgstr "ingresar"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "denuncias (%(flag_count)s)"
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "authsettings/"
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "seleccionar:"
-#~ msgid "search"
-#~ msgstr "buscar"
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "vistos"
-#~ msgid "question tips"
-#~ msgstr "tips para preguntar"
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "nuevo"
-#~ msgid "please ask a relevant question"
-#~ msgstr "por favor, haz que tu pregunta sea relevante"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "ninguno"
-#~ msgid "please try provide enough details"
-#~ msgstr "intenta dar todos los detalles"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "marcar como visto"
-#~ msgid "Interesting tags"
-#~ msgstr "Etiquetas de interes"
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "marcar como nuevo"
-#~ msgid "Add"
-#~ msgstr "Agregar"
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "cancelar"
-#~ msgid "Ignored tags"
-#~ msgstr "Ignorar etiqueta"
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr "eliminar denuncias"
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "Seleccione una etiqueta de filtro para el email"
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr "enviar comentario"
-#, fuzzy
-#~ msgid "Please, post your question!"
-#~ msgstr "Formula tu pregunta"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "actualizar perfil"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "suscribirse al feed de esta pregunta"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "administrar metodos de login"
-#, fuzzy
-#~ msgid "Search tips:"
-#~ msgstr "Resultados de busqueda"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nombre real"
+#: skins/default/templates/user_profile/user_info.html:58
#, fuzzy
-#~ msgid "reset author"
-#~ msgstr "preguntar al autor"
+msgid "member since"
+msgstr "miembro desde"
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "o"
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "últimas visita"
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "reset tags"
-#~ msgstr "ver las etiquetas"
+msgid "website"
+msgstr "Sitio Web"
-#, fuzzy
-#~ msgid "Search tip:"
-#~ msgstr "Resultados de busqueda"
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "localización"
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "lista de preguntas sin contestar"
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "edad"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "preguntas favoritas"
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "medida de unidad"
-#, fuzzy
-#~ msgid "resetting author"
-#~ msgstr "preguntar al autor"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "votos no utilizados el día de hoy"
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "Etiquetas de interes"
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "votos restantes"
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "por favor, haz que tu pregunta sea relevante"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "moderacion"
-#~ msgid "Related tags"
-#~ msgstr "Etiquetas relacionadas"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "el estado de %(username)s's es \"%(status)s\""
-#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "preguntas sin contestar"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "El estado del usuario ha cambiado"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "preguntas favoritas del usuario"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Guardar"
-#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "perfil de usuario"
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Tu reputacion actual es de %(reputation)s puntos"
-#~ msgid "Edit user profile"
-#~ msgstr "Editar perfil de usuario"
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "La reputacion actual del usuario es de %(reputation)s puntos"
-#~ msgid "edit profile"
-#~ msgstr "editar perfil"
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "La reputacion del usuario ha sido modificada"
-#~ msgid "Registered user"
-#~ msgstr "Usuario registrado"
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Restar"
-#~ msgid "Screen Name"
-#~ msgstr "Nombre para mostrar"
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Agregar"
-#~ msgid "Update"
-#~ msgstr "Actualizar"
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Enviar mensaje a %(username)s"
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "suscripción por email"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"Se enviara un mensaje al usuario con la direccion de tu email. Por favor "
+"asegurate de que tu email es correcto."
-#~ msgid "Email subscription settings"
-#~ msgstr "Configuración de suscripciones por email"
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Mensaje enviado"
-#~ msgid "email subscription settings info"
-#~ msgstr "información de suscripciones por email"
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Enviar mensaje"
-#~ msgid "Stop sending email"
-#~ msgstr "Detener el envió de emails"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+"Los administradores tienen los mismos privilegios que los usuarios normales, "
+"pero ademas pueden asignar o resignar cualquier estado a cualquier usuario, "
+"y estan exentos de los limites en los puntos de reputacion."
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Todas las preguntas"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+"Los moderadores tienen los mismos privilegios que los administradores, pero "
+"no pueden añadir o eliminar el estado de usuario 'moderador' o "
+"'administrador'."
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "preguntas"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr "El estado 'aprobado' es el mismo que para un usuario normal."
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "eliminar"
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Los usuarios suspendidos solo pueden editar o eliminar sus propios posts"
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "últimas visita"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+"Los usuarios bloqueados solo pueden hacer login y enviar su opinion a los "
+"administradores del sitio."
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "nuevas"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "red"
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "hecho/"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "Seguido por %(count)s persona"
+msgstr[1] "Seguido por %(count)s personas"
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "últimas visita"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "Siguiendo %(count)s persona"
+msgstr[1] "Siguiendo %(count)s personas"
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "la mejor respuesta fue marcada"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+"Tu red esta vacia. Te gustaria seguir a alguien? Solo tienes que visitar los "
+"perfiles que desees y pinchar en \"seguir\""
-#~ msgid "remove"
-#~ msgstr "remover"
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr "la red de %(username)s esta vacia"
-#~ msgid "update profile"
-#~ msgstr "actualizar perfil"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "actividad"
-#~ msgid "real name"
-#~ msgstr "nombre real"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "fuente"
-#~ msgid "member for"
-#~ msgstr "miembro desde"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Tu archivo de puntos karma"
-#~ msgid "last seen"
-#~ msgstr "últimas visita"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Archivo de puntos karma de %(user_name)s's "
-#~ msgid "user website"
-#~ msgstr "sitio web del usuario"
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "descripción general"
-#~ msgid "location"
-#~ msgstr "localización"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Pregunta"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Preguntas"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "Respuesta"
+msgstr[1] "Respuestas"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "se ha votado la respuesta %(answer_score)s veces"
-#~ msgid "age"
-#~ msgstr "edad"
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s comentario)"
+msgstr[1] "la respuesta se ha comentado %(comment_count)s veces"
-#~ msgid "age unit"
-#~ msgstr "medida de unidad"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> Voto "
+msgstr[1] "<span class=\"count\">%(cnt)s</span> Votos "
-#~ msgid "todays unused votes"
-#~ msgstr "votos no utilizados el día de hoy"
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "pulgar hacia arriba"
-#~ msgid "votes left"
-#~ msgstr "votos restantes"
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "usuarios han votado positivo esto varias veces"
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "Localización"
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "pulgar hacia abajo"
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "Guardar edición"
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "usuarios han votado negativo esto varias veces"
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "reputación del usuario en la comunidad"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Etiqueta"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Etiquetas"
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "mensajes/"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Medalla"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Medallas"
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "mensajes/"
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr "Respuesta a:"
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Pefil de usuario"
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "perfil de usuario"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "comentar y responder otras preguntas"
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "activa"
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "seguidores y usuarios a los que sigues"
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "Your karma change log."
-#~ msgstr "Tu contraseña ha sido cambiada."
+msgid "Graph of user karma"
+msgstr "grafica de la reputación de este usuario"
-#~ msgid "overview"
-#~ msgstr "descripción general"
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr "preguntas que el usuario esta siguiendo"
-#, fuzzy
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "la respuesta ha sido votada %(vote_count)s veces"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "esta respuesta ha sido seleccionada como la correcta"
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "registro de votos de este usuario"
-#~ msgid "thumb up"
-#~ msgstr "pulgar hacia arriba"
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "votos"
-#~ msgid "user has voted up this many times"
-#~ msgstr "usuarios han votado positivo esto varias veces"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "configuraciones de suscripción por email"
-#~ msgid "thumb down"
-#~ msgstr "pulgar hacia abajo"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "moderar este usuario"
-#~ msgid "user voted down this many times"
-#~ msgstr "usuarios han votado negativo esto varias veces"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:6
#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "responder tips"
-
-#~ msgid "User profile"
-#~ msgstr "Pefil de usuario"
+msgid "give an answer interesting to this community"
+msgstr "por favor intenta que tu respuesta sea relevante para la comunidad"
-#~ msgid "graph of user reputation"
-#~ msgstr "grafica de la reputación de este usuario"
-
-#~ msgid "reputation history"
-#~ msgstr "historial de reputación"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "trata de dar una respuesta, en lugar de iniciar un debate"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "preguntas que el usuario seleccione como su favorito"
-
-#~ msgid "recent activity"
-#~ msgstr "actividad reciente"
+msgid "provide enough details"
+msgstr "intenta dar todos los detalles"
-#~ msgid "casted votes"
-#~ msgstr "votos emitidos"
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "se claro y conciso"
-#~ msgid "votes"
-#~ msgstr "votos"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "mira las preguntas más frecuentes"
-#~ msgid "community wiki"
-#~ msgstr "wiki"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown tips"
-#~ msgid "Location"
-#~ msgstr "Localización"
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*italica*"
-#~ msgid "command/"
-#~ msgstr "comando/"
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**negrita**"
-#~ msgid "mark-tag/"
-#~ msgstr "marcar-etiqueta/"
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*italica* o _italica_"
-#~ msgid "interesting/"
-#~ msgstr "interesante/"
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**bold** o __bold__"
-#~ msgid "ignored/"
-#~ msgstr "ignorada/"
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "texto"
-#~ msgid "unmark-tag/"
-#~ msgstr "desmarcar-etiqueta/"
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "imagen"
-#~ msgid "search/"
-#~ msgstr "buscar/"
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "numerar:"
-#, fuzzy
-#~ msgid "Askbot"
-#~ msgstr "Acerca de"
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "HTML básico es soportado"
-#~ msgid "allow only selected tags"
-#~ msgstr "permitir unicamente etiquetas seleccionadas"
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "lee acerca de Markdown"
-#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
-#~ msgstr ""
-#~ "Primera vez? Lee nuestra <a href=\"%s\">Preguntas Mas Frecuentes</a>!"
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "ingresa para publicar información de la pregunta"
-#, fuzzy
-#~ msgid "newquestion/"
-#~ msgstr "nueva pregunta"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#, fuzzy
-#~ msgid "newanswer/"
-#~ msgstr "responder/"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#, fuzzy
-#~ msgid "MyOpenid user name"
-#~ msgstr "por nombre de usuario"
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Colaboradores"
-#, fuzzy
-#~ msgid "Email verification subject line"
-#~ msgstr "Configuración de suscripciones por email"
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "El contenido de este sitio esta bajo licencia %(license)s"
-#, fuzzy
-#~ msgid "Invalid request"
-#~ msgstr "Validación incorrecta"
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "acerca de"
-#, fuzzy
-#~ msgid "Deleted own post with score of 3 or higher"
-#~ msgstr "Eliminó su propio post con %s puntos o superior"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "ayuda"
-#, fuzzy
-#~ msgid "nice-answer"
-#~ msgstr "respuesta"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "políticas de privacidad"
-#, fuzzy
-#~ msgid "nice-question"
-#~ msgstr "nueva pregunta"
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "enviar sugerencias"
-#, fuzzy
-#~ msgid "pundit"
-#~ msgstr "editar"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "volver a inicio"
-#, fuzzy
-#~ msgid "popular-question"
-#~ msgstr "pregunta"
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "logo de %(site)s"
-#, fuzzy
-#~ msgid "editor"
-#~ msgstr "editar"
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "usuarios"
-#, fuzzy
-#~ msgid "organizer"
-#~ msgstr "Tu respuesta"
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "medallas"
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "supporter"
-#~ msgstr "voto positivo"
+msgid "ask a question interesting to this community"
+msgstr "por favor intenta que tu respuesta sea relevante para la comunidad"
-#, fuzzy
-#~ msgid "teacher"
-#~ msgstr "buscar"
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "vista"
+msgstr[1] "vistas"
-#~ msgid "Answered first question with at least one up vote"
-#~ msgstr "La primera pregunta respondió con al menos un voto"
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "respuesta"
+msgstr[1] "respuestas"
-#, fuzzy
-#~ msgid "great-answer"
-#~ msgstr "respuesta"
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "voto"
+msgstr[1] "votos"
-#, fuzzy
-#~ msgid "Answer voted up 100 times"
-#~ msgstr "Respuesta votada %s veces"
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "TODOS"
-#, fuzzy
-#~ msgid "great-question"
-#~ msgstr "re-etiquetar preguntas"
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "ver preguntas sin respuesta"
-#, fuzzy
-#~ msgid "Question voted up 100 times"
-#~ msgstr "Pregunta votada %s veces"
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "SIN RESPUESTA"
-#, fuzzy
-#~ msgid "stellar-question"
-#~ msgstr "ver todas las preguntas"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr "ver preguntas seguidas"
-#, fuzzy
-#~ msgid "Question favorited by 100 users"
-#~ msgstr "Pregunta marcada como favorita por %s usuarios"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "SEGUIDAS"
-#, fuzzy
-#~ msgid "famous-question"
-#~ msgstr "pregunta"
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "Por favor haz tu pregunta desde aqui"
-#, fuzzy
-#~ msgid "Asked a question with 10,000 views"
-#~ msgstr "Hizo una pregunta con %s visitas"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "karma:"
-#, fuzzy
-#~ msgid "good-answer"
-#~ msgstr "respuesta"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "medallas:"
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "Answer voted up 25 times"
-#~ msgstr "Respuesta votada %s veces"
+msgid "sign out"
+msgstr "eliminar-cuenta/"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "good-question"
-#~ msgstr "pregunta"
+msgid "Hi, there! Please sign in"
+msgstr "Por favor regístrate aquí:"
-#, fuzzy
-#~ msgid "Question voted up 25 times"
-#~ msgstr "Pregunta votada %s veces"
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "ajustes"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "favorite-question"
-#~ msgstr "preguntas favoritas"
-
-#~ msgid "Strunk & White"
-#~ msgstr "Strunk & White"
+msgid "no"
+msgstr "ninguno"
-#, fuzzy
-#~ msgid "strunk-and-white"
-#~ msgstr "Strunk & White"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Ups, lo sentimos, ha habido un error"
-#, fuzzy
-#~ msgid "expert"
-#~ msgstr "texto"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "Por favor, haz login para enviar post"
-#, fuzzy
-#~ msgid "notable-question"
-#~ msgstr "nueva pregunta"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr "Se ha detectado spam en tu post, perdona si esto es un error"
-#, fuzzy
-#~ msgid "Asked a question with 2,500 views"
-#~ msgstr "Hizo una pregunta con %s visitas"
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "este campo es requerido"
+#: utils/forms.py:60
#, fuzzy
-#~ msgid "Accepted answer and voted up 40 times"
-#~ msgstr "Respuesta acetada y votada %s veces"
-
-#~ msgid "About"
-#~ msgstr "Acerca de"
+msgid "Choose a screen name"
+msgstr "seleccione un nombre de usuario"
-#, fuzzy
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "nombre de usuario es requerido"
-#~ msgid "how to validate email title"
-#~ msgstr "Cómo validar una email"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "lo sentimos, el nombre que haz elegido ya esta usado, selecciona otro"
-#, fuzzy
-#~ msgid ""
-#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
-#~ "s"
-#~ msgstr ""
-#~ "como validar una email con %(send_email_key_url)s %(gravatar_faq_url)s"
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr ""
+"lo sentimos, el nombre que haz elegido no está permitido, seleciona otro"
-#~ msgid "."
-#~ msgstr "."
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "los sentimos, no hay usuarios con este nombre"
-#, fuzzy
-#~ msgid "Sender is"
-#~ msgstr "Enviar enlace"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+"lo sentimos, tenermos un serio error - el nombre de usuario ha sido tomado "
+"por varios usuarios"
-#~ msgid ""
-#~ "As a registered user you can login with your OpenID, log out of the site "
-#~ "or permanently remove your account."
-#~ msgstr ""
-#~ "Como usuario registrado, puedes ingresar con tu perfil OpenID, salir del "
-#~ "sitio o eliminar permanentemente tu cuenta."
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+"nombre de usuario sólo puede constar de letras, espacio vacío y subrayado"
-#~ msgid "Logout now"
-#~ msgstr "Salir ahora"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+"por favor utiliza al menos alguna letra del alfabeto en el nombre de usuario"
-#~ msgid "mark this question as favorite (click again to cancel)"
-#~ msgstr "marcar esta pregunta como favorita (clic de nuevo para cancelar)"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#~ msgid ""
-#~ "remove favorite mark from this question (click again to restore mark)"
-#~ msgstr ""
-#~ "remover la marca de favorito de esta pregunta (clic de nuevo para "
-#~ "restaurar marca)"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "dirección de email requerida"
-#~ msgid "see questions tagged '%(tag_name)s'"
-#~ msgstr "ver etiquetas de la pregunta '%(tag_name)s'"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "ingresa una dirección de email valida"
-#, fuzzy
-#~ msgid "tagged"
-#~ msgstr "re-etiquetado"
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+"este email está siendo utilizado por algún usuario, por favor selecciona otro"
-#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
-#~ msgstr "remover '%(tag_name)s' de la lista de etiquetas interesante"
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "una contraseña es requerida"
-#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
-#~ msgstr "remover '%(tag_name)s' de la lista de etiquetas ignoradas"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "mantener ocultas las etiquetas ignoradas"
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "por favor, re-escribe tu contraseña"
-#, fuzzy
-#~ msgid ""
-#~ "see other questions with %(view_user)s's contributions tagged '%(tag_name)"
-#~ "s' "
-#~ msgstr ""
-#~ "ver otras preguntas con %(view_user)s's que ha etiquetado con '%(tag_name)"
-#~ "s' "
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+"lo sentimos, las contraseñas que haz ingresado no coinciden, intenta de nuevo"
-#~ msgid "favorites"
-#~ msgstr "favoritos"
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "2 días atrás"
-#, fuzzy
-#~ msgid "this questions was selected as favorite %(cnt)s time"
-#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
-#~ msgstr[0] "esta pregunta ha sido seleccionada como favorita"
-#~ msgstr[1] "esta pregunta ha sido seleccionada como favorita"
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "ayer"
-#, fuzzy
-#~ msgid "thumb-up on"
-#~ msgstr "thumb-up on"
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "hace %(hr)d hora"
+msgstr[1] "hace %(hr)d horas"
-#, fuzzy
-#~ msgid "thumb-up off"
-#~ msgstr "thumb-up off"
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "hace %(min)d minuto"
+msgstr[1] "hace %(min)d minutos"
-#, fuzzy
-#~ msgid "Login name"
-#~ msgstr "Ingresar ahora!"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Para preguntar por email, por favor:</p>\n"
+"<ul>\n"
+" <li>Formatea el asunto como: [Tag1; Tag2] Titulo de la pregunta</li>\n"
+" <li>Escribe los detalles de tu pregunta en el cuerpo del mensaje de "
+"email</li>\n"
+"</ul>\n"
+"<p>Nota: las etiquetas pueden ser más de una palabra y pueden estar "
+"separadas por una coma o un punto y coma</p>\n"
-#~ msgid "home"
-#~ msgstr "inicio"
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>Lo sentimos, ha habido un error enviando tu pregunta, por favor, contacta "
+"con el administrador de %(site)s</p>"
-#~ msgid "Please prove that you are a Human Being"
-#~ msgstr "Demuestranos que eres humano de verdad"
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Lo sentimos, para enviar preguntas en %(site)s por email, por favor<a "
+"href=\"%(url)s\">regístrate primero</a></p>"
-#~ msgid "I am a Human Being"
-#~ msgstr "Soy un humano de verdad"
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>Lo sentimos, tu pregunta no puede ser enviada porque no existen "
+"suficiente privilegios en tu cuenta</p>"
-#~ msgid "this answer has been accepted to be correct"
-#~ msgstr "Esta respuesta ha sido aceptada como la correcta"
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "Avatar subido con éxito"
-#~ msgid "views"
-#~ msgstr "vistas"
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "Avatar actualizado con éxito"
-#~ msgid "reputation points"
-#~ msgstr "puntos de reputación"
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "Avatares eliminados con éxito"
-#, fuzzy
-#~ msgid "badges: "
-#~ msgstr "medallas"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+"Lo sentimos, pero los usuarios anónimos no pueden acceder a la mensajería"
+#: views/commands.py:112
#, fuzzy
-#~ msgid "Bad request"
-#~ msgstr "Validación incorrecta"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "usuarios anónimos no pueden votar"
-#~ msgid "comments/"
-#~ msgstr "comentarios/"
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "Lo sentimos, te has quedado sin votos por hoy"
-#~ msgid "delete/"
-#~ msgstr "eliminar/"
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "Te quedan %(votes_left)s votos por hoy"
-#~ msgid "Please enter valid username and password (both are case-sensitive)."
-#~ msgstr ""
-#~ "Ingrese su nombre de usuario y contraseña (sensible a las mayusculas)"
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "Lo sentimos, algo no va bien aquí"
-#~ msgid "This account is inactive."
-#~ msgstr "Esta cuenta está inactiva."
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "Lo sentimos, pero los usuarios anónimos no pueden aceptar respuestas"
-#~ msgid "Login failed."
-#~ msgstr "Ingreso fallido."
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"subscrición guardada, necesitamos una validación de %(email)s , mira "
+"%(details_url)s"
-#, fuzzy
-#~ msgid ""
-#~ "Please enter a valid username and password. Note that "
-#~ "both fields are case-sensitive."
-#~ msgstr ""
-#~ "Ingrese su nombre de usuario y contraseña (sensible a las mayusculas)"
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "la frecuencia de notificaciones por email ha sido cambiada a diario"
-#, fuzzy
-#~ msgid "password/"
-#~ msgstr "contraseña"
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+"La suscripción a la etiqueta se ha cancelado (<a href=\"%(url)s\">deshacer</"
+"a>)."
-#, fuzzy
-#~ msgid "email/"
-#~ msgstr "no enviar emails"
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr "Por favor, regístrate para poder suscribirte a %(tags)s"
-#~ msgid "validate/"
-#~ msgstr "validar/"
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr "Por favor, regístrate para votar"
+#: views/commands.py:620
#, fuzzy
-#~ msgid "change/"
-#~ msgstr "edad"
+msgid "Please sign in to delete/restore posts"
+msgstr "Por favor, regístrate para votar"
-#, fuzzy
-#~ msgid "openid/"
-#~ msgstr "reabrir/"
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "Sobre %(site)s"
-#, fuzzy
-#~ msgid "Password changed."
-#~ msgstr "Tu contraseña ha sido cambiada."
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "Foro de sugerencias"
-#, fuzzy
-#~ msgid "your email was not changed"
-#~ msgstr "Tu contraseña ha sido cambiada."
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "Gracias por tus sugerencias"
-#, fuzzy
-#~ msgid "This OpenID is already associated with another account."
-#~ msgstr "Estas credenciales ya están asociadas con tu cuenta."
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "Esperamos con interés escuchar sus comentarios! :)"
-#, fuzzy
-#~ msgid "OpenID %s is now associated with your account."
-#~ msgstr "Las nuevas credenciales están ahora asociadas con tu cuenta."
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Políticas de privacidad"
-#, fuzzy
-#~ msgid "Request for new password"
-#~ msgstr "Crear contraseña"
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "%(q_num)s pregunta, etiquetada"
+msgstr[1] "%(q_num)s preguntas, etiquetadas"
-#, fuzzy
-#~ msgid ""
-#~ "A new password and the activation link were sent to your email address."
-#~ msgstr "Un correo de validación ha sido enviado a tu dirección de email."
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+"Lo sentimos, el comentario que estás buscando se ha eliminado y no se "
+"encuentra disponible"
-#~ msgid "Your question and all of it's answers have been deleted"
-#~ msgstr "Tu pregunta y todas sus respuestas han sido eliminadas"
+#: views/users.py:206
+msgid "moderate user"
+msgstr "moderar usuario"
-#~ msgid "Your question has been deleted"
-#~ msgstr "Tu pregunta ha sido eliminada"
+#: views/users.py:381
+msgid "user profile"
+msgstr "perfil de usuario"
-#~ msgid "The question and all of it's answers have been deleted"
-#~ msgstr "La pregunta y todas sus respuestas han sido eliminadas"
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "vista del perfil de usuario"
-#~ msgid "The question has been deleted"
-#~ msgstr "La pregunta ha sido eliminada"
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "actividad reciente del usuario"
-#~ msgid "question"
-#~ msgstr "pregunta"
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "perfil - actividad reciente"
-#~ msgid "Automatically accept user's contributions for the email updates"
-#~ msgstr ""
-#~ "Aceptar automáticamente las contribuciones de los usuarios para las "
-#~ "actualizaciones de correo electrónico"
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "perfil - respuestas"
-#~ msgid "unanswered/"
-#~ msgstr "sinrespuesta/"
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "pefil - votos"
+#: views/users.py:701
#, fuzzy
-#~ msgid "nimda/"
-#~ msgstr "nimda/"
-
-#~ msgid "email update message subject"
-#~ msgstr "asunto del email"
+msgid "user karma"
+msgstr "karma"
-#~ msgid "sorry, system error"
-#~ msgstr "lo sentimos, ocurrió un error del sistema"
-
-#~ msgid "Account functions"
-#~ msgstr "Funciones de la Cuenta"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
+msgstr "perfil - reputación del usuario"
-#~ msgid "Change email "
-#~ msgstr "Cambiar email"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "preguntas favoritas del usuario"
-#~ msgid "Add or update the email address associated with your account."
-#~ msgstr "Agregar o actualizar la dirección de email asociada a tu cuenta."
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "pefil - preguntas favoritas"
-#~ msgid "Change OpenID"
-#~ msgstr "Cambiar OpenID"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "cambios guardados"
-#~ msgid "Change openid associated to your account"
-#~ msgstr "Cambiar el OpenID asociado a tu cuenta"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "notificaciones por email cancelada"
-#~ msgid "Erase your username and all your data from website"
-#~ msgstr "Eliminar tu nombre de usuario y todos tus datos de este sitio"
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "perfil - notificación por email"
-#~ msgid "toggle preview"
-#~ msgstr "Vista preliminar"
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "Lo sentimos, los usuarios anónimos no pueden subir archivos"
-#~ msgid "reading channel"
-#~ msgstr "leyendo canal"
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "los ficheros permitidos son '%(file_types)s'"
-#~ msgid "[author]"
-#~ msgstr "[autor]"
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "el tamaño máximo para subir archivos es de %(file_size)sK"
-#~ msgid "[publisher]"
-#~ msgstr "[publicada por]"
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+"Error subiendo archivo. Por favor, contacta con el administrador del sitio. "
+"Gracias"
-#~ msgid "[publication date]"
-#~ msgstr "[fecha de publicación]"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "[price]"
-#~ msgstr "[precio]"
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr "Por favor, haz login para responder preguntas"
-#~ msgid "currency unit"
-#~ msgstr "unidad de medida"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Lo sentimos, estás desconectado y no puedes enviar comentarios. Por favor <a "
+"href=\"%(sign_in_url)s\">regístrate</a>."
-#~ msgid "[pages]"
-#~ msgstr "[paginas]"
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "Lo sentimos, los usuarios anónimos no pueden editar comentarios."
-#~ msgid "pages abbreviation"
-#~ msgstr "abreviacions de pagina"
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Lo sentimos, estás desconectado y no puedes eliminar comentarios. Por favor, "
+"<a href=\"%(sign_in_url)s\">regístrate</a>."
-#~ msgid "[tags]"
-#~ msgstr "[etiquetas]"
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "lo sentimos, tenemos dificultades técnicas"
-#~ msgid "author blog"
-#~ msgstr "blog del autor"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "usa-estos-caracteres-en-las-etiquetas"
-#~ msgid "book directory"
-#~ msgstr "directorio de libros"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "URL del servicio LDAP"
-#~ msgid "buy online"
-#~ msgstr "comprar online"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Explicar cómo cambiar el password LDAP"
-#~ msgid "reader questions"
-#~ msgstr "leer preguntas"
+#~ msgid "question_answered"
+#~ msgstr "pregunta respondida"
-#~ msgid "ask the author"
-#~ msgstr "preguntar al autor"
+#~ msgid "question_commented"
+#~ msgstr "pregunta comentada"
-#~ msgid "number of times"
-#~ msgstr "número de veces"
+#~ msgid "answer_commented"
+#~ msgstr "respuesta_ comentada"
-#~ msgid "the answer has been accepted to be correct"
-#~ msgstr "la respuesta ha sido aceptada como la correcta"
+#~ msgid "answer_accepted"
+#~ msgstr "respuesta_aceptada"
-#~ msgid "subscribe to book RSS feed"
-#~ msgstr "suscribirse al feed de este libro"
+#~ msgid "Incorrect username."
+#~ msgstr "lo siento, no existe el nombre de usuario"
-#~ msgid "open any closed question"
-#~ msgstr "abrir y cerrar preguntas"
+#~ msgid ""
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
+#~ msgstr ""
+#~ "Este comando puede ayudarte a migrar el sistema de autentificación de "
+#~ "contraseñas LDAP creando un registro de asociación con cada cuenta de "
+#~ "usaurio. Se supone que el user id de LDAP es el mismo que los usuarios "
+#~ "registrados en el sitio. Antes de ejecutar este comando es necesario "
+#~ "configurar los parámetros de LDAP en la sección \"Llaves externas\" de "
+#~ "los ajustes del sitio."
+
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Hola %(name)s,</p><p>Se ha actualizado la siguiente pregunta en el "
+#~ "sitio:</p>"
+#~ msgstr[1] ""
+#~ "<p>Hola %(name)s,</p><p>Se han actualizado las siguientes %(num)d "
+#~ "preguntas en el sitio:</p>"
-#~ msgid "books"
-#~ msgstr "libros"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Por favor, recuerda que siempre puedes <a "
+#~ "href='%(email_settings_link)s'>adjustar</a> la frecuencia de las "
+#~ "actualizaciones al email o desactivarlas completamente.<br/>Si piensas "
+#~ "que este mensaje te ha llegado por error, por favor, envíalo al "
+#~ "administrador del sitio a %(admin_email)s.</p><p>Saludos,</p>"
-#, fuzzy
-#~ msgid "%(rev_count)s revision"
-#~ msgid_plural "%(rev_count)s revisions"
-#~ msgstr[0] "seleccionar revisión"
-#~ msgstr[1] "seleccionar revisión"
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "Lo sentimos, subir ficheros requiere un karma mayor de %(min_rep)s"
-#~ msgid "general message about privacy"
-#~ msgstr "mensaje general sobre las privacidad"
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Lo sentimos, tu cuenta parece estar bloqueada y no puedes enviar nuevos "
+#~ "posts hasta que este problema se resuelva. Por favor, contacta con el "
+#~ "administrador para llegar a una solución."
-#~ msgid "Site Visitors"
-#~ msgstr "Visitas del sitio"
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Lo sentimos, tu cuenta parece estar suspendida y no puedes enviar nuevos "
+#~ "posts hasta que este problema se resuelva. Por favor, contacta con el "
+#~ "administrador para llegar a una solución."
-#~ msgid "what technical information is collected about visitors"
-#~ msgstr "Que información técnica es recolectada de los visitantes?"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "Has denunciado esta pregunta antes y no puedes hacerlo otra vez"
-#~ msgid "Personal Information"
-#~ msgstr "Información personal"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Lo sentimos, debido a que tu cuenta está bloqueada no puedes denunciar "
+#~ "posts como ofensivos"
-#~ msgid "details on personal information policies"
-#~ msgstr "detalles de las políticas de información personal"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Lo sentimos, debido a que tu cuenta está suspendida no puedes crear "
+#~ "nuevos posts hasta que se resuelva este problema. Sin embargo, si puedes "
+#~ "editar tus posts existentes. Por favor contacta con el administrador para "
+#~ "llegar a una solución."
-#~ msgid "Other Services"
-#~ msgstr "Otros Servicios"
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Lo sentimos, para denunciar posts como ofensivos es necesario tener un "
+#~ "mínimo de %(min_rep)s puntos de reputación "
-#~ msgid "details on sharing data with third parties"
-#~ msgstr "detalles sobre compartir datos con terceros"
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr ""
+#~ "Lo siento, has alcanzado el número máximo de %(max_flags_per_day)s "
+#~ "denuncias por día."
-#~ msgid "cookie policy details"
-#~ msgstr "politicas de las cookies"
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr ""
+#~ "Lo sentimos, debido a que tu cuenta está bloqueada no puedes eliminar "
+#~ "denuncias"
-#~ msgid "Policy Changes"
-#~ msgstr "Cambios de Políticas"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Lo sentimos, tu cuenta ha sido suspendida y no puedes eliminar denuncias. "
+#~ "Por favor, contacta con el administrador del sitio para llegar a una "
+#~ "solución."
+
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Lo sentimos, para denunciar un post se necesira un mínimo de %(min_rep)d "
+#~ "puntos de reputación"
+#~ msgstr[1] ""
+#~ "Lo sentimos, para denunciar un post se necesira un mínimo de %(min_rep)d "
+#~ "puntos de reputación"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "no puede revocar un voto viejo"
-#~ msgid "how privacy policies can be changed"
-#~ msgstr "como han cambiado las políticas"
+#~ msgid "change %(email)s info"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Introduce el nuevo email en la caja de abajo</"
+#~ "span> si quieres utilizar otro email para <strong>actualizar tus "
+#~ "suscripciones</strong>.<br>Ahora estás usando este email: <strong>"
+#~ "%(email)s</strong>"
-#~ msgid "tags help us keep Questions organized"
-#~ msgstr "las etiquetas ayudan a mantener las preguntas ordenadas"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Introduce tu email en la caja de abajo.</span> "
+#~ "Es necesario que introduzcas un email válido. Si quieres puedes "
+#~ "<strong>recibir actualizaciones</strong> de preguntas interesantes vía "
+#~ "email. También puedes utilizar tu email para crear tu <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>. Tu dirección "
+#~ "de correo no se mostrará a terceros y no la compartiremos con nadie."
-#~ msgid "Found by tags"
-#~ msgstr "Buscar etiquetas"
+#~ msgid "Your new Email"
+#~ msgstr ""
+#~ "<strong>Tu nuevo Email:</strong> (no <strong>será</strong> mostrado a "
+#~ "nadie, debe ser válido)"
-#~ msgid "Search results"
-#~ msgstr "Resultados de busqueda"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Hemos enviado un email de validación a "
+#~ "%(email)s.</span> Por favor <strong>comprueba el email enviado</strong> "
+#~ "con tu navegador. Es necesario que validemos tu email para asegurarlos "
+#~ "que realizas un uso correcto de tu cuenta en este sitio. Si quieres "
+#~ "utilizar <strong>otro email</strong>, por favor<a "
+#~ "href='%(change_email_url)s'><strong>cámbialo desde aquí</strong></a>."
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Tu email %(email)s no ha sido modificado.</"
+#~ "span> Si decides cambiarlo más tarde - siempre puedes hacerlo editándolo "
+#~ "en tu perfil o usando el anterior <a "
+#~ "href='%(change_email_url)s'><strong>formulario</strong></a> otra vez."
-#~ msgid "Found by title"
-#~ msgstr "Encontrar por título"
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Tu email se ha modificado a %(email)s.</span> "
+#~ "Las actualizaciones a las preguntas que más te gustan serán enviadas a "
+#~ "este email. Las notificaciones de email se envían una vez al día o con "
+#~ "menos frecuencia, sólo cuando hay actualizaciones."
-#~ msgid "Unanswered questions"
-#~ msgstr "Preguntas sin responder"
+#~ msgid "thanks for verifying email"
+#~ msgstr ""
+#~ "<span class=\"big strong\">Gracias por verificar tu email!</span> Ahora "
+#~ "puedes <strong>preguntar</strong> y <strong>contestar</strong> preguntas. "
+#~ "También puedes <strong>suscribirte</strong> a preguntas que consideres "
+#~ "interesantes y te notificaremos sobre los cambios <strong>una vez al día</"
+#~ "strong> o menos."
-#, fuzzy
-#~ msgid "less answers"
-#~ msgstr "antiguar respuestas"
+#~ msgid "email key not sent"
+#~ msgstr "Validación de email no enviada"
-#, fuzzy
-#~ msgid "click to see coldest questions"
-#~ msgstr "ver las últimas preguntas"
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "<span class='big strong'>Tu email actual %(email)s ya ha sido validado</"
+#~ "span> por tanto la nueva clave no se ha enviado. Puedes <a "
+#~ "href='%(change_link)s'>cambiar</a> tu email utilizado para las "
+#~ "suscripciones cuando lo desees."
-#, fuzzy
-#~ msgid "more answers"
-#~ msgstr "Tu respuesta"
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Esta es tu primera vez aquí con el login de "
+#~ "%(provider)s.</span> Por favor, crea tu <strong>usuario</strong> y guarda "
+#~ "tu <strong>email</strong>. El email te permitirá <strong>suscribirte a "
+#~ "las actualizaciones</strong> de las preguntas más interesantes y será "
+#~ "usada para crear y recuperar tu imagen de <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#, fuzzy
-#~ msgid "unpopular"
-#~ msgstr "etiquetas populars"
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<p><span class='strong big'>Ups... parece que tu nombre de usuario "
+#~ "%(username)s ya ha sido registrado.</span></p><p>Por favor elige otro "
+#~ "nombre de usuario para utilizar en tu cuenta de %(provider)s. Debes "
+#~ "introducir un correo válido para darte de alta en este sitio. Tu email "
+#~ "será utilizado para crear un <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> con imagen en "
+#~ "tu cuenta. Si lo deseas puedes <strong>recibir actualizaciones</strong> "
+#~ "de las preguntas más interesantes por email. Bajo ningún concepto los "
+#~ "emails se mostrarán a terceros ni se compartirán con ningún otro fin.</p>"
-#, fuzzy
-#~ msgid "popular"
-#~ msgstr "etiquetas populars"
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Esta es tu primera vez en %(provider)s.</"
+#~ "span></p><p>Puedes guardar tu <strong>nombre de usuario</strong> y "
+#~ "también tu cuenta de %(provider)s o elegir otro apodo.</p><p>Debes "
+#~ "introducir un correo válido para darte de alta en este sitio. Tu email "
+#~ "será utilizado para crear un <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> con imagen en "
+#~ "tu cuenta. .</p>"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Esta es tu primera vez con el login de "
+#~ "Facebook.</span> Por favor, crea tu <strong>nombre de usuario</strong> y "
+#~ "guarda tu dirección de <strong>email</strong>. Debes introducir un correo "
+#~ "válido para darte de alta en este sitio. Tu email será utilizado para "
+#~ "crear un <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> con "
+#~ "imagen en tu cuenta. .</p>"
-#~ msgid "Open the previously closed question"
-#~ msgstr "Abrir pregunta previamente cerrada"
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Esta cuenta ya existe, por favor use otra."
-#~ msgid "reason - leave blank in english"
-#~ msgstr "razones"
+#~ msgid "Screen name label"
+#~ msgstr "Nombre de usuario"
-#~ msgid "on "
-#~ msgstr "en"
+#~ msgid "Email address label"
+#~ msgstr "Dirección de correo electrónico"
-#~ msgid "date closed"
-#~ msgstr "cerrada el"
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "recibir actualizaciones de motivación"
-#, fuzzy
-#~ msgid "Account: change OpenID URL"
-#~ msgstr "Cambiar OpenID"
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr ""
+#~ "Una herramienta para filtrar por etiquetas será mostrada cuando ingreses"
-#, fuzzy
-#~ msgid ""
-#~ "This is where you can change your OpenID URL. Make sure you remember it!"
-#~ msgstr "Aquí puedes cambiar tu contraseña. Asegurate de recordarla!"
+#~ msgid "create account"
+#~ msgstr "crear cuenta"
-#~ msgid ""
-#~ "This is where you can change your password. Make sure you remember it!"
-#~ msgstr "Aquí puedes cambiar tu contraseña. Asegurate de recordarla!"
+#~ msgid "Login"
+#~ msgstr "Registro"
-#~ msgid "Connect your OpenID with this site"
-#~ msgstr "Conectar tu OpenID con este sitio"
+#~ msgid "Why use OpenID?"
+#~ msgstr "Por que usar OpenID?"
-#~ msgid "Sorry, looks like we have some errors:"
-#~ msgstr "Lo sentimos, ocurrieron algunos errores con:"
+#~ msgid "with openid it is easier"
+#~ msgstr "con OpenID es más fácil"
-#~ msgid "Existing account"
-#~ msgstr "Cuenta existente"
+#~ msgid "reuse openid"
+#~ msgstr "re-usar openid"
-#~ msgid "password"
-#~ msgstr "contraseña"
+#~ msgid "openid is widely adopted"
+#~ msgstr "openID es ampliamente adoptado"
-#~ msgid "Forgot your password?"
-#~ msgstr "Recordar contraseña"
+#~ msgid "openid is supported open standard"
+#~ msgstr "openID es un estándar abierto"
-#, fuzzy
-#~ msgid "Account: delete account"
-#~ msgstr "Eliminar cuenta"
+#~ msgid "Find out more"
+#~ msgstr "Para saber más"
-#, fuzzy
-#~ msgid "Delete account permanently"
-#~ msgstr "Eliminar cuenta"
+#~ msgid "Get OpenID"
+#~ msgstr "Obetener OpenID"
-#, fuzzy
-#~ msgid "Traditional login information"
+#~ msgid "Traditional signup info"
#~ msgstr "Registro tradicional"
-#, fuzzy
-#~ msgid "Send new password"
-#~ msgstr "Cambiar Contraseña"
-
-#, fuzzy
-#~ msgid "Reset password"
-#~ msgstr "Crear contraseña"
-
-#, fuzzy
-#~ msgid "return to login"
-#~ msgstr "regresar a la pagina de ingreso"
-
-#~ msgid "Click to sign in through any of these services."
-#~ msgstr "Haz clic sobre uno de estos servicios para ingresar"
+#~ msgid "Create Account"
+#~ msgstr "Crear cuenta"
-#, fuzzy
-#~ msgid "Enter your login name and password"
-#~ msgstr "Crear nombre de usuario y contraseña"
+#~ msgid "answer permanent link"
+#~ msgstr "enlace permanente a esta respuesta"
-#, fuzzy
-#~ msgid "Create account"
-#~ msgstr "crear cuenta"
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "%(question_author)s ha seleccionado tu respuesta como correcta"
-#, fuzzy
-#~ msgid "Connect to %(APP_SHORT_NAME)s with Facebook!"
-#~ msgstr "Conectar con %(APP_SHORT_NAME)s Facebook!"
+#~ msgid "Related tags"
+#~ msgstr "Etiquetas relacionadas"
-#~ msgid "favorite questions"
-#~ msgstr "preguntas favoritas"
+#~ msgid "Ask a question"
+#~ msgstr "Formula una pregunta"
-#~ msgid "Email Validation"
-#~ msgstr "Email de validación"
+#~ msgid "Badges summary"
+#~ msgstr "Resúmen de medallas"
-#~ msgid "Thank you, your email is now validated."
-#~ msgstr "Gracias, tu email ha sido validado."
+#~ msgid "gold badge description"
+#~ msgstr "descripción de la medalla de oro"
-#, fuzzy
-#~ msgid "Welcome back %s, you are now logged in"
-#~ msgstr "Bienvenido de vuelta %s, ahora has ingresado"
+#~ msgid "silver badge description"
+#~ msgstr "descripción de la medalla de plata"
-#~ msgid "books/"
-#~ msgstr "libros/"
+#~ msgid "bronze badge description"
+#~ msgstr "descripción de la medalla de bronce"
#~ msgid ""
-#~ "please use following characters in tags: letters 'a-z', numbers, and "
-#~ "characters '.-_#'"
+#~ "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 ""
-#~ "puedes utilizar los siguientes carácteres en las tags: letras 'a-z', "
-#~ "numeros, y carácteres ',-_#'"
-
-#~ msgid "tempsignin/"
-#~ msgstr "tiempo-de-ingreso/"
-
-#~ msgid "add/"
-#~ msgstr "agregar/"
-
-#~ msgid "admin/"
-#~ msgstr "admin/"
-
-#~ msgid "You cannot leave this field blank"
-#~ msgstr "No puedes dejar este espacio en blanco"
-
-#~ msgid "The users have been awarded with badges:"
-#~ msgstr "Los usuarios pueden ser premiado con los siguientes medallas:"
-
-#~ msgid "using tags"
-#~ msgstr "usando las siguientes etiquetas"
+#~ "es un un sitio de Preguntas y Respuestas, no un grupo de discusión. Si "
+#~ "quieres discutir, hazlo en los comentarios sobrelas respuestas."
-#~ msgid "last updated questions"
-#~ msgstr "últimas respuestas"
+#~ msgid "Rep system summary"
+#~ msgstr "Resumen de reputación del sistema"
-#~ msgid "welcome to website"
-#~ msgstr "bienvenido al sitio"
+#~ msgid "what is gravatar"
+#~ msgstr "que es gravatar"
-#~ msgid "Recent tags"
-#~ msgstr "Etiquetas recientes"
+#~ msgid "gravatar faq info"
+#~ msgstr "información de gravatar"
-#~ msgid "Recent awards"
-#~ msgstr "Medallas recientes"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "me gusta esta pregunta (haz click de nuevo para cancelar)"
-#~ msgid "all awards"
-#~ msgstr "todas las medallas"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "me gusta esta respuesta (clic de nuevo para cancelar)"
-#~ msgid "subscribe to last 30 questions by RSS"
-#~ msgstr "suscribirse a las últimas 30 preguntas por RSS"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "no me gusta esta pregunta (haz click de nuevo para cancelar)"
-#~ msgid "Still looking for more? See"
-#~ msgstr "Buscas más? Mira"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "no me gusta esta respuesta (clic de nuevo para cancelar)"
-#~ msgid "complete list of questions"
-#~ msgstr "lista completa de preguntas"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "ver <strong>%(counter)s</strong> comentario mas\n"
+#~ " "
+#~ msgstr[1] ""
+#~ "ver <strong>%(counter)s</strong> comentarios mas\n"
+#~ " "
-#~ msgid "Please help us answer"
-#~ msgstr "Ayudanos a contestar preguntas"
+#~ msgid "Change tags"
+#~ msgstr "Cambiar etiquetas"
-#~ msgid "number - make blank in english"
-#~ msgstr "numero"
+#~ msgid "reputation"
+#~ msgstr "reputación"
-#~ msgid "Questions are sorted by the <strong>time of last update</strong>."
-#~ msgstr ""
-#~ "Las preguntas han sido ordenadas según <strong>el tiempo de su última "
-#~ "actualización</strong>."
+#~ msgid "oldest answers"
+#~ msgstr "antiguar respuestas"
-#~ msgid "Most recently answered ones are shown first."
-#~ msgstr "Las preguntas contestadas recientemente serán mostradas primero."
+#~ msgid "newest answers"
+#~ msgstr "nuevas respuestas"
-#~ msgid "Questions sorted by <strong>number of responses</strong>."
-#~ msgstr "Preguntas ordenadas por <strong>el numero de respuestas</strong>."
+#~ msgid "popular answers"
+#~ msgstr "respuestas populares"
-#~ msgid "Most answered questions are shown first."
-#~ msgstr "Las preguntas con más respuestas serán mostradas primero."
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "tu puedes contestar anonimamente y luego ingresar"
-#~ msgid "Questions are sorted by the <strong>number of votes</strong>."
-#~ msgstr "Preguntas serán ordenadas por el <strong>numero de votos</strong>."
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "responder a tu pregunta sólo para dar una respuesta"
-#~ msgid "Most voted questions are shown first."
-#~ msgstr "Las preguntas mejor valoradas serán mostradas primero."
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "por favor intenta responder, no discutir"
-#~ msgid "All tags matching query"
-#~ msgstr "Mostrar todas las etiquetas usadas"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Ingresa/Registrate para publicar tu respuesta"
-#~ msgid "all tags - make this empty in english"
-#~ msgstr "todas las etiquetas"
+#~ msgid "Answer the question"
+#~ msgstr "Responde la pregunta"
-#~ msgid "image associated with your email address"
-#~ msgstr "imagen asociada con tu dirección de email"
+#~ msgid "question asked"
+#~ msgstr "pregunta formulada"
-#~ msgid "Authentication settings"
-#~ msgstr "Parametros de autentificación"
+#~ msgid "question was seen"
+#~ msgstr "la pregunta ha sido vista"
-#~ msgid ""
-#~ "These are the external authentication providers currently associated with "
-#~ "your account."
-#~ msgstr ""
-#~ "Estos son los proveedores de autenticación externa asociada a su cuenta."
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "Notificarme una vez al día cuando tenga nuevas respuestas"
-#~ msgid ""
-#~ "You currently have no external authentication provider associated with "
-#~ "your account."
+#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
-#~ "Actualmente tu cuenta no esta asociada a ningún proveedor de "
-#~ "autenticación externa."
-
-#~ msgid "Add new provider"
-#~ msgstr "Agregar nuevo proveedor"
+#~ "<strong>Notificarme</strong> inmediatamente cuando haya cualquier nueva "
+#~ "respuesta o actualizacion"
#~ msgid ""
-#~ "You can set up a password for your account, so you can login using "
-#~ "standard username and password!"
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ msgstr ""
-#~ "Haz configurado la contraseña para tu cuenta, puedes usarla para ingresar "
-#~ "con el método estandar: nombre de usuario y contraseña!"
-
-#~ msgid "You are here for the first time with "
-#~ msgstr "Usted está aquí por primera vez con"
+#~ "(siempre podras <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>cambiar</a></strong> cuando desees la "
+#~ "frecuencia de las actualizaciones)"
-#~ msgid ""
-#~ "Please create your screen name and save your email address. Saved email "
-#~ "address will let you subscribe for the updates on the most interesting "
-#~ "questions and will be used to create and retrieve your unique avatar "
-#~ "image. "
-#~ msgstr ""
-#~ "Por favor, escriba su nombre de usuario y su dirección de correo "
-#~ "electrónico. Su dirección de correo electrónico le permitirá suscribirse "
-#~ "a las actualizaciones de las preguntas más interesantes y se utilizará "
-#~ "para crear y recuperar la imagen de su avatar."
+#~ msgid "email subscription settings info"
+#~ msgstr "información de suscripciones por email"
-#~ msgid "Or..."
-#~ msgstr "o"
+#~ msgid "Stop sending email"
+#~ msgstr "Detener el envió de emails"
-#~ msgid ""
-#~ "Take the oppurtunity to validate my email next to the external provider I "
-#~ "choose."
-#~ msgstr ""
-#~ "Tomar la oportunidad de validad mi email con el proveedor que he "
-#~ "seleccionado."
+#~ msgid "user website"
+#~ msgstr "sitio web del usuario"
-#~ msgid "Click"
-#~ msgstr "Click"
+#~ msgid "reputation history"
+#~ msgstr "historial de reputación"
-#~ msgid "Enter your "
-#~ msgstr "Ingresar tu"
+#~ msgid "recent activity"
+#~ msgstr "actividad reciente"
-#~ msgid "You're seeing this because someone requested a temporary login link"
-#~ msgstr ""
-#~ "Estás viendo esto porque alguien ha solicitado un enlace de conexión "
-#~ "temporal"
+#~ msgid "casted votes"
+#~ msgstr "votos emitidos"
-#~ msgid "Following the link above will give you access to your account."
-#~ msgstr "Sigue el siguiente enlace para acceder a tu cuenta."
+#~ msgid "answer tips"
+#~ msgstr "responder tips"
-#~ msgid "Request temporary login key"
-#~ msgstr "Solicitar clave de acceso temporal"
+#~ msgid "please try to provide details"
+#~ msgstr "intenta dar algunos detalles"
-#~ msgid "Account: request temporary login key"
-#~ msgstr "Cuenta: solicitar clave de acceso temporal"
+#~ msgid "ask a question"
+#~ msgstr "preguntar"
#~ msgid ""
-#~ "\n"
-#~ " If you're experiencing problems accessing your account, or if you "
-#~ "forgot your password,\n"
-#~ " here you can request a temporary login key. Fill out your account "
-#~ "email and we'll send you a temporary access link that\n"
-#~ " will enable you to access your account. This token is valid only once "
-#~ "and for a limited period of time.\n"
-#~ " "
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
#~ msgstr ""
-#~ "\n"
-#~ " Si estas teniendo problemas de acceo a tu cuenta, u olvidaste tu "
-#~ "contraseña,\n"
-#~ " aqui puedes solicitar una clave de acceso temporal. Ingresa la "
-#~ "dirección de email asociada a tu cuenta y te enviaremos un enlace "
-#~ "temporal\n"
-#~ " para que tengas acceso a tu cuenta. Este será valido una sola vez y "
-#~ "por un período de tiempo limitado.\n"
-#~ " "
+#~ "<span class='strong big'>Tu email, %(email)s no ha sido validado todavia."
+#~ "</span> Para enviar mensajes debes verificar tu email, por favor lee <a "
+#~ "href='%(email_validation_faq_url)s'>mas detalles aqui</a>.<br>Puedes "
+#~ "enviar una pregunta ahora y validar el email despues de enviarla. Tu "
+#~ "pregunta se guardara como pendiente mientras tanto. "
-#~ msgid "administration area"
-#~ msgstr "Ãrea de Administración"
-
-#~ msgid "Administration menu"
-#~ msgstr "Menú de administración"
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Ingresa/registrate para publicar tu pregunta"
-#~ msgid "Welcome to the administration area."
-#~ msgstr "Bienvenido al área de adminstración"
+#~ msgid "question tips"
+#~ msgstr "tips para preguntar"
-#~ msgid ""
-#~ "Sorry, these login credentials belong to anoother user. Plese terminate "
-#~ "your current session and try again."
-#~ msgstr ""
-#~ "Lo sentimos, las credenciales que haz ingresado pertenecen a otro "
-#~ "usuario. Por favor termina tu sesión actual e intenta de nuevo."
+#~ msgid "please ask a relevant question"
+#~ msgstr "por favor, haz que tu pregunta sea relevante"
-#~ msgid "You are already logged in with that user."
-#~ msgstr "Ya haz ingresado con este usuario."
+#~ msgid "logout"
+#~ msgstr "salir"
-#~ msgid ""
-#~ "Oops, something went wrong in the middle of this process. Please try "
-#~ "again."
-#~ msgstr ""
-#~ "Lo sentimos, algo falló en medio del proceso. Por favor intentalo de "
-#~ "nuevo."
+#~ msgid "login"
+#~ msgstr "ingresar"
-#~ msgid "Temporary login link"
-#~ msgstr "Enlace temporal para ingresar"
+#~ msgid "no items in counter"
+#~ msgstr "no"
-#~ msgid "An email has been sent with your temporary login key"
-#~ msgstr "Un email te ha sido enviado con una clave de acceso temporal"
+#~ msgid "your email address"
+#~ msgstr "tu dirección de email"
-#~ msgid ""
-#~ "You are logged in with a temporary access key, please take the time to "
-#~ "fix your issue with authentication."
-#~ msgstr ""
-#~ "Haz ingresado con una clave de acceso temporal, tomate tu tiempo para "
-#~ "solucionar el problema de autenticación (OpenID o contraseña)."
+#~ msgid "choose password"
+#~ msgstr "seleccionar contraseña"
-#, fuzzy
-#~ msgid "You removed the association with %s"
-#~ msgstr "Haz removido la asociación con %s"
+#~ msgid "retype password"
+#~ msgstr "re-escribir contraseña"
-#~ msgid "Sorry, your Facebook session has expired, please try again"
-#~ msgstr "Lo sentimos, su sesión de Facebook ha experido, intentelo de nuevo"
+#~ msgid "user reputation in the community"
+#~ msgstr "reputación del usuario en la comunidad"
-#~ msgid ""
-#~ "The authentication with Facebook connect failed due to an invalid "
-#~ "signature"
-#~ msgstr "La autentificación con Facebook ha fallado por un perfil invalido"
+#~ msgid "Please log in to ask questions"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Bienvenido, puedes enviar tu pregunta de forma "
+#~ "anónima</span>. Cuando envíes la pregunta, serás redirigido a la página "
+#~ "de login o registro. Tu pregunta será guardada en la sesión actual y será "
+#~ "publicada después de que hagas login. Hacer login o registro es muy fácil "
+#~ "y sólo te tomará 30 segundos."
#~ msgid ""
-#~ "The authentication with Facebook connect failed, cannot find "
-#~ "authentication tokens"
+#~ "As a registered user you can login with your OpenID, log out of the site "
+#~ "or permanently remove your account."
#~ msgstr ""
-#~ "La autentificación con Facebook ha fallado, no podemos encontrar una "
-#~ "cuenta asociada"
-
-#~ msgid "local/"
-#~ msgstr "local/"
-
-#~ msgid "Error, the oauth token is not on the server"
-#~ msgstr "Error, esta cuenta no esta registrada en nuestro servidor"
-
-#~ msgid "Something went wrong! Auth tokens do not match"
-#~ msgstr "Algo esta fallando! Tu cuenta no parece coincidir"
-
-#~ msgid "Sorry, but your input is not a valid OpenId"
-#~ msgstr "Lo sentimos pero no es una cuenta OpenID valida"
-
-#~ msgid "The OpenId authentication request was canceled"
-#~ msgstr "La solicitud de autenticación OpenID ha sido cancelada"
-
-#~ msgid "The OpenId authentication failed: "
-#~ msgstr "La autenticación OpenID ha fallado:"
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
-#~ msgid "Setup needed"
-#~ msgstr "Es necesario configurar"
-
-#~ msgid "The OpenId authentication failed with an unknown status: "
-#~ msgstr "La autenticación OpenID ha fallado por razones desconocidas:"
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
-#~ msgid "Enter your OpenId Url"
-#~ msgstr "Ingresa la URL de tu OpenID"
+#~ msgid ""
+#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
+#~ "s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
-#, fuzzy
-#~ msgid "Got %s upvotes in a question tagged with \"bug\""
-#~ msgstr "Obtuvo %s votos en la pregunta marcada con \"bug\""
+#~ msgid "reputation points"
+#~ msgstr "karma"
diff --git a/askbot/locale/es/LC_MESSAGES/djangojs.mo b/askbot/locale/es/LC_MESSAGES/djangojs.mo
index 6ac986e1..9e94321b 100644
--- a/askbot/locale/es/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/es/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/es/LC_MESSAGES/djangojs.po b/askbot/locale/es/LC_MESSAGES/djangojs.po
index fd8df254..a9528c80 100644
--- a/askbot/locale/es/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/es/LC_MESSAGES/djangojs.po
@@ -1,345 +1,342 @@
# 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.
#
+# Translators:
+# Victor Trujillo <>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:58-0600\n"
-"PO-Revision-Date: 2011-09-28 04:20-0800\n"
-"Last-Translator: Rosandra Cuello <rosandra.cuello@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:51-0500\n"
+"PO-Revision-Date: 2012-03-13 16:26+0000\n"
+"Last-Translator: Victor Trujillo <>\n"
+"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
+"askbot/language/es/)\n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "Seguro que quieres eliminar el login de %s?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Por favor, añade uno o más métodos de login."
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"No tienes un método de login en este momento, por favor añade uno o más "
+"haciendo click en los iconos de abajo."
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "las contraseñas no coinciden"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Mostrar/cambiar los métodos de login actuales"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "Por favor introduce tu %s, y luego procede"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "Conéctate con la cuenta de %(provider_name)s a %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "Cambia la contraseña de %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Cambiar la contraseña"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "Crear contraseña para %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Crear contraseña"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Crear una cuenta protegida con contraseña"
#: skins/common/media/js/post.js:28
msgid "loading..."
msgstr "cargando..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "las etiquetas no pueden estar vacías"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "el contenido no puede estar vacío"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "por favor introduzca mas de %s caracteres"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "por favor ingrese un título"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "por favor introduzca al menos %s caracteres"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "privilegio insuficiente"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "no puede escoger su propia respuesta como la mejor"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "por favor inicie sesión"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "usuarios anónimos no pueden seguir preguntas"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "usuarios anónimos no pueden suscribirse a preguntas"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "usuarios anónimos no pueden votar"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr "por favor confirme ofensiva"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "por favor confirme ofensiva"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "usuarios anónimos no pueden marcar publicaciones como ofensivas"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "¿Está seguro que desea borrar esto?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "usuarios anónimos no pueden borrar o recuperar publicaciones"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "publicación recuperada"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "publicación borrada。"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "recuperar"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "borrar"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "agregar comentario"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "%s caracteres faltantes"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "%s caracteres faltantes"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
+msgstr "guardar comentario"
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "borrar este comentario"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "¿Realmente desea borrar este comentario?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "Por favor introduce el titulo de la pregunta (> de 10 letras)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "Eriqueta \"<span></span>\" corresponde:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "y %s más, no mostradas..."
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "Por favor, selecciona al menos una opción"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "Eliminar esta notificación?"
+msgstr[1] "Eliminar estas notificaciones?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "borrar este comentario"
+msgstr[1] "borrar este comentario"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "borrar este comentario"
+msgstr[1] "borrar este comentario"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
+"Por favor <a href=\"%(signin_url)s\">regístrate</a> para seguir a %(username)"
+"s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "dejar de seguir %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "siguiendo %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "seguir %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
+msgstr "haz click para cerrar"
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "negrita"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "cursiva"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "enlace"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "citar"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "texto preformateado"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "imagen"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "fichero adjunto"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "lista numerada"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "lista no numerada"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "encabezado"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "barra horizontal"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "deshacer"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "rehacer"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"introduzca la URL de la imagen, por ejemplo:<br />http://www.example.com/"
"image.jpg \"titulo de imagen\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
"introduzca direcciones web, ejemplo:<br />http://www.cnprog.com/ \"titulo "
"del enlace\"</p>"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "Por favor, selecciona y sube un archivo:"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "las etiquetas no pueden estar vacías"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "el contenido no puede estar vacío"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "por favor introduzca mas de %s caracteres"
+
+#~ msgid "please enter title"
+#~ msgstr "por favor ingrese un título"
+
+#~ msgid "%s title minchars"
+#~ msgstr "por favor introduzca al menos %s caracteres"
+
+#~ msgid "Follow"
+#~ msgstr "Seguir"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s seguidor"
+#~ msgstr[1] "%s seguidores"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Siguiendo</div><div class=\"unfollow\">Dejar de Seguir</div>"
+
+#~ msgid "undelete"
+#~ msgstr "recuperar"
+
+#~ msgid "delete"
+#~ msgstr "borrar"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "%s caracteres faltantes"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s caracteres faltantes"
+
+#~ msgid "cancel"
+#~ msgstr "cancelar"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "seguro que no quieres enviar este comentario?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "¿Realmente desea borrar este comentario?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "haz click para editar este comentario"
+
+#~ msgid "edit"
+#~ msgstr "editar"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "ver preguntas etiquetadas '%s'"
+
+#~ msgid "image description"
+#~ msgstr "descripción de la imagen"
+
+#~ msgid "file name"
+#~ msgstr "nombre del archivo"
+
+#~ msgid "link text"
+#~ msgstr "texto del enlace"
diff --git a/askbot/locale/fi/LC_MESSAGES/django.mo b/askbot/locale/fi/LC_MESSAGES/django.mo
index da22aa13..a8b51e65 100644
--- a/askbot/locale/fi/LC_MESSAGES/django.mo
+++ b/askbot/locale/fi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/fi/LC_MESSAGES/django.po b/askbot/locale/fi/LC_MESSAGES/django.po
index 51db149c..51c8bbdd 100644
--- a/askbot/locale/fi/LC_MESSAGES/django.po
+++ b/askbot/locale/fi/LC_MESSAGES/django.po
@@ -1,93 +1,111 @@
-# Finnish translation for CNPROG package.
+# English translation for CNPROG package.
# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the CNPROG package.
-# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
#
+# Translators:
+# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
+# Hannu Sehm <hannu@kipax.fi>, 2012.
+# Otto Nuoranne <otto.nuoranne@hotmail.com>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 1.0\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:31-0600\n"
-"PO-Revision-Date: 2010-06-17 05:57+0200\n"
-"Last-Translator: Pekka Järvinen <pekka.jarvinen@gmail.com>\n"
-"Language-Team: Finnish <finnish@askbot.org>\n"
+"POT-Creation-Date: 2012-04-18 18:50-0500\n"
+"PO-Revision-Date: 2012-03-15 13:54+0000\n"
+"Last-Translator: Hannu Sehm <hannu@kipax.fi>\n"
+"Language-Team: Finnish (http://www.transifex.net/projects/p/askbot/language/"
+"fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Finnish\n"
-"X-Poedit-Country: FINLAND\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: exceptions.py:13
-#, fuzzy
msgid "Sorry, but anonymous visitors cannot access this function"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
+msgstr "Valitettavasti tämä toiminto ei ole anonyymien vieraiden käytettävissä"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr " - "
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
msgstr "Valikoidut kysymykset"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "uusimmat kysymykset"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Poista tunnus"
+msgstr "valitse maa"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "Maa"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "vaadittu kenttä"
+msgstr "Maa-kenttä on pakollinen"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "otsikko"
#: forms.py:105
msgid "please enter a descriptive title for your question"
-msgstr "kirjoita mahdollisimman kuvaava otsikko kysymyksellesi"
+msgstr "kirjoita kuvaava otsikko kysymyksellesi"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "otsikon tulee olla yli 10 merkkiä pitkä"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "Otsikon on oltava > %d merkin pituinen"
+msgstr[1] "Otsikon on oltava > %d merkin pituinen"
-#: forms.py:119
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "sisältö"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "kysymyksen sisällön tulee olla vähintään kymmenen merkkiä pitkä"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "tagit"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"Tagit ovat lyhyitä apusanoja, joissa ei ole välilyöntejä. Viisi tagia voi "
-"syöttää maksimissaan."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Tagit ovat lyhyitä avainsanoja ilman välejä. Voit käyttää enintään "
+"%(max_tags)d tagiä."
+msgstr[1] ""
+"Tagit ovat lyhyitä avainsanoja ilman välejä. Voit käyttää enintään "
+"%(max_tags)d tagiä."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "tagit ovat pakollisia"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
@@ -95,12 +113,12 @@ msgstr[0] ""
"käytä vähintään <span class=\"hidden\">%(tag_count)d</span>yhtä tagia"
msgstr[1] "käytä vähintään %(tag_count)d tagia"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Ainakin yksi seuraavista tageistä on pakollinen: %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
@@ -109,15 +127,15 @@ msgstr[0] ""
"span>yhden merkin pituinen"
msgstr[1] "jokaisen tagin tulee olla vähintään %(max_chars)d merkin pituinen"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "käytä-näitä-merkkejä-tageissa"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
-msgstr ""
+msgstr "Yhteisöwiki (mainepisteitä ei annta & muut voivat muokata viestiä)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -125,11 +143,11 @@ msgstr ""
"jos valitset yhteisön muokattavissa olevan asetuksen, kysymykset ja "
"vastaukset eivät anna pisteitä kirjoittajalle eikä kirjoittajan nimeä näy"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
-msgstr "päivitysvedos:"
+msgstr "yhteenveto päivityksistä:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -137,238 +155,264 @@ msgstr ""
"kirjoita lyhyt yhteenveto mitä teit (esim. kirjotusvirheiden korjaus, "
"paranneltiin tekstisijoittelua, jne. Ei pakollinen.)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr ""
+msgstr "Lisää tai vähennä pisteitä"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
-msgstr ""
+msgstr "hyväksytty"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
-msgstr ""
+msgstr "katsottu"
-#: forms.py:343 const/__init__.py:252
-#, fuzzy
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr "päivitetty"
+msgstr "jäähyllä"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
-msgstr ""
+msgstr "lukittu"
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
-msgstr "Terveisin ylläpito"
+msgstr "ylläpitäjä"
-#: forms.py:347 const/__init__.py:249
-#, fuzzy
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
-msgstr "hallitse-kayttajaa/"
+msgstr "moderaattori"
-#: forms.py:367
-#, fuzzy
+#: forms.py:426
msgid "Change status to"
-msgstr "Vaihda tageja"
+msgstr "Vaihda statuksesi"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
-msgstr ""
+msgstr "mikä?"
-#: forms.py:415
-#, fuzzy
+#: forms.py:474
msgid "Cannot change own status"
-msgstr "et voi äänestää omia postauksia"
+msgstr "Et voi vaihtaa omaa statustasi"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
-msgstr ""
+msgstr "Et voi tehdä toisesta käyttäjästä moderaattoria"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
-msgstr ""
+msgstr "Et voi vaihtaa toisen moderaattorin statusta"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "et voi äänestää omia postauksia"
+msgstr "Et voi vaihtaa statusta ylläpitäjäksi"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"Jos haluat muuttaa %(username)s:n statusta, tee merkityksellinen valinta"
-#: forms.py:449
-#, fuzzy
+#: forms.py:508
msgid "Subject line"
-msgstr "Valitse teema"
+msgstr "Aihe"
-#: forms.py:456
-#, fuzzy
+#: forms.py:515
msgid "Message text"
-msgstr "Viestin sisältö:"
+msgstr "Viestin teksti"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "Nimi:"
+msgstr "Nimesi (vapaaehtoinen):"
-#: forms.py:543
-#, fuzzy
+#: forms.py:531
msgid "Email:"
-msgstr "sähköposti"
+msgstr "Sähköposti:"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
-msgstr "Viesti:"
+msgstr "Viestisi:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "En halua antaa sähköpostiosoitettanu enkä saada vastausta:"
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "Klikkaa raksi ruutuun \"En halua luovuttaa sähköpostiani\"."
-#: forms.py:611
-#, fuzzy
+#: forms.py:599
msgid "ask anonymously"
-msgstr "anonyymi"
+msgstr "kysy anonyymisti"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
+"Klikkaa raksi ruutuun, jos haluat jättää nimesi julkaisematta kysyessäsi tätä"
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Olet kysynyt kysymyksen anonyymisti - jos päätät paljastaa "
+"henkilöllisyytesi, klikkaa tätä ruutua."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
-msgstr ""
+msgstr "paljasta henkilöllisyys"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"Vain tämän nimettömän kysymyksen kysyjä voi paljastaa henkilöllisyytensä - "
+"ole hyvä ja klikkaa ruutua uudelleen"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"Säännöt näyttävät juuri muuttuneen - et voi enää kysyä anonyymisti. Ole "
+"hyvä ja klikkaa \"paljasta henkilöllisyys\" -ruutua tai päivitä sivu ja "
+"yritä muokata kysymystä uudelleen."
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "tämä sähköpostiosoite ei ole linkitetty gravatariin"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nimi"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
-msgstr "Websivu"
+msgstr "Nettisivu"
-#: forms.py:907
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "Kaupunki"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "Näytä maa"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Syntymäpäivä"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "ei näytetä, käytetään iän laskemiseen, muoto: VVVV-KK-PP"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profiili"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
-msgstr "Tunnus"
+msgstr "Käyttäjätunnus"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
-msgstr "sähköpostiosoite on jo tietokannassa"
+msgstr ""
+"sähköpostiosoite on jo tietokannassa - ole hyvä ja käytä toista "
+"sähköpostiosoitetta"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
-msgstr ""
+msgstr "Valitse sähköpostin tagisuodatin"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Kysyjänä minä"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Vastaajana minä"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Yksittäin valittu"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Koko keskustelupalsta (tagi-suodatettu)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
-msgstr ""
+msgstr "Kommentit ja merkinnät, joissa minut mainitaan"
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "valitse yksi yllä olevista"
#: forms.py:1115
msgid "okay, let's try!"
-msgstr "OK, koitetaan!"
+msgstr "OK, kokeillaan!"
-#: forms.py:1116
-msgid "no community email please, thanks"
-msgstr "ei sähköpostipäivityksiä"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr "ei sähköpostipäivityksiä, kiitos"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "valitse yksi valinta seuraavista"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr "sivusta/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "ukk/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "yksityisyys/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr "apua/"
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "vastaukset/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "muokkaa/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
-msgstr "revisiot/"
+msgstr "tarkistukset/"
+
+#: urls.py:61
+msgid "questions"
+msgstr "kysymykset"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "kysymykset/"
@@ -377,9 +421,8 @@ msgid "ask/"
msgstr "kysy/"
#: urls.py:92
-#, fuzzy
msgid "retag/"
-msgstr "tagit/"
+msgstr "tagaa-uudelleen/"
#: urls.py:97
msgid "close/"
@@ -397,353 +440,390 @@ msgstr "vastaa/"
msgid "vote/"
msgstr "aanesta/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgetit/"
+
+#: urls.py:158
msgid "tags/"
msgstr "tagit/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "kirjoittaudu-tagien-tilaajaksi/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "kayttajat/"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "kysymykset"
+msgstr "Tilaukset"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "käyttäjät/päivityksellä_oma_avatar/"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
-msgstr "kunniamerkit/"
+msgstr "mitalit/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "viestit/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "merkkaa-luetuksi/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "laheta/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "palaute/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "kysymys/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
-msgstr "tunnus/"
+msgstr "tili/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "nollataan tagit"
+msgstr "Sisäänpääsyasetukset"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "Salli sisäänpääsy foorumille vain rekisteröityneille käyttäjille"
#: conf/badges.py:13
-#, fuzzy
msgid "Badge settings"
-msgstr "nollataan tagit"
+msgstr "Mitaliasetukset"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr ""
+"Kurinalainen: vähimmäismäärä positiivisia ääniä poistetulle merkinnälle"
#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Ryhmäpaine: vähimmäismäärä negatiivisia ääniä poistetulle merkinnälle"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Opettaja: vähimmäismäärä positiivisia ääniä vastaukselle"
#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Melko hyvä vastaus: vähimmäismäärä positiivisia ääniä vastaukselle"
#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Hyvä vastaus: vähimmäismäärä positiivisia ääniä vastaukselle"
#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Mahtava vastaus: vähimmäismäärä positiivisia ääniä vastaukselle"
#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Melko hyvä kysymys: vähimmäismäärä positiivisia ääniä kysymykselle"
#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Hyvä kysymys: vähimmäismäärä positiivisia ääniä kysymykselle"
#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Mahtava kysymys: vähimmäismäärä positiivisia ääniä kysymykselle"
#: conf/badges.py:104
-#, fuzzy
msgid "Popular Question: minimum views"
-msgstr "Suosittu kysymys"
+msgstr "Suosittu kysymys: vähimmäismäärä katsomiskertoja"
#: conf/badges.py:113
-#, fuzzy
msgid "Notable Question: minimum views"
-msgstr "Huomattava kysymys"
+msgstr "Huomattava kysymys: vähimmäismäärä katsomiskertoja"
#: conf/badges.py:122
-#, fuzzy
msgid "Famous Question: minimum views"
-msgstr "Tunnettu kysymys"
+msgstr "Kuuluisa kysymys: vähimmäismäärä katsomiskertoja"
#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "Itseoppija: vähimmäismäärä positiivisia ääniä vastaukselle"
#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "Kansalaisvelvollisuus: vähimmäismäärä positiivisia ääniä"
#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "Valaistunut velvollisuus: vähimmäismäärä positiivisia ääniä"
#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Guru: vähimmäismäärä positiivisia ääniä"
#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Manaaja: vähimmäismäärä positiivisia ääniä"
#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Manaaja: vähimmäisviive (päiviä)"
#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Apulaistoimittaja: muokkauskertojen vähimmäismäärä"
#: conf/badges.py:194
-#, fuzzy
msgid "Favorite Question: minimum stars"
-msgstr "Suosikkikysymys"
+msgstr "Lempikysymys: vähimmäismäärä tähtiä"
#: conf/badges.py:203
-#, fuzzy
msgid "Stellar Question: minimum stars"
-msgstr "Tähtikysymys"
+msgstr "Asiallinen kysymys: vähimmäismäärä tähtiä"
#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Selostaja: vähimmäismäärä kommentteja"
#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "Taksonomi: vähimmäismäärä tagien käyttökertoja"
#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "Intoilija: vähimmäismäärä päiviä"
#: conf/email.py:15
msgid "Email and email alert settings"
-msgstr "Sähköposti ja sen asetukset"
+msgstr "Sähköposti ja sähköpostihuomautusten asetukset"
#: conf/email.py:24
-#, fuzzy
msgid "Prefix for the email subject line"
-msgstr "Tervetuloa"
+msgstr "Sähköpostin aihe-kentän etuliite"
#: conf/email.py:26
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"Vakioasetus django-asetuksen EMAIL_SUBJECT_PREFIX mukaan. Tähän kenttään "
+"kirjoitettu arvo korvaa vakioasetuksen."
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Sähköposti ja sähköpostihuomautusten asetukset"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr ""
+msgstr "Uutismerkintöjen enimmäismäärä sähköpostihuomautuksessa"
-#: conf/email.py:48
-#, fuzzy
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr "Vakio aikaväli sähköpostien lähetyksessä"
+msgstr "Päivitysten vakiotiheys kaikille kysymyksille"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
+"Valitsemalla tämän voit määrittää sähköpostitettujen päivitysten tiheyttä "
+"kaikille kysymyksille"
-#: conf/email.py:62
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr "Vakio aikaväli sähköpostien lähetyksessä"
+msgstr "Päivitysten vakiotiheys käyttäjän kysymille kysymyksille"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"Valitsemalla tämän voit määrittää sähköpostitettujen päivitysten tiheyttä "
+"käyttäjän kysymille kysymyksille"
-#: conf/email.py:76
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr "Vakio aikaväli sähköpostien lähetyksessä"
+msgstr "Päivitysten vakiotiheys kysymyksille, joihin käyttäjä on vastannut"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"Valitsemalla tämän voit määrittää sähköpostitettujen päivitysten tiheyttä "
+"kysymyksille, joihin käyttäjä on vastannut"
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
-msgstr ""
+msgstr "Päivitysten vakiotiheys käyttäjän yksittäin valitsemille kysymyksille"
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
+"Valitsemalla tämän voit määrittää sähköpostitettujen päivitysten tiheyttä "
+"käyttäjän yksittäin valitsemille kysymyksille"
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
-msgstr ""
+msgstr "Päivitysten vakiotiheys maininnoille ja kommenteille"
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
+"Valitsemalla tämän voit määrittää sähköpostitettujen päivitysten tiheyttä "
+"maininnoille ja kommenteille"
-#: conf/email.py:119
-#, fuzzy
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr "Ei vastaamattomia kysymyksiä"
+msgstr "Muistuta ajoittain vastaamattomista kysymyksistä"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
+"HUOM: käyttääksesi tätä toimintoa, sinun on suoritettava komento "
+"\"send_unanswered_question_reminders\" (esimerkiksi cron jobin kautta "
+"sopivalla tiheydellä)"
-#: conf/email.py:134
-#, fuzzy
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "Ei vastaamattomia kysymyksiä"
+msgstr ""
+"Päiviä ennen kuin aloitetaan vastaamattomista kysymyksistä muistuttaminen"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
+"Kuinka usein vastaamattomista kysymyksistä muistutetaan (päiviä muistutusten "
+"välissä)"
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
-msgstr ""
+msgstr "Vastaamattomia kysymyksiä koskevien muistutusten enimmäismäärä"
-#: conf/email.py:168
-#, fuzzy
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
-msgstr "Ei vastaamattomia kysymyksiä"
+msgstr "Muistuta jaksoittain parhaan vastauksen hyväksymisestä"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
+"HUOM: käyttääksesi tätä toimintoa, sinun on suoritettava komento "
+"\"send_accept_answer_reminders\" (esimerkiksi cron jobin kautta sopivalla "
+"tiheydellä)"
-#: conf/email.py:183
-#, fuzzy
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
-msgstr "Ei vastaamattomia kysymyksiä"
+msgstr ""
+"Päiviä ennen kuin vastauksen hyväksymisestä aletaan lähettää muistutuksia"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
+"Kuinka usein muistutuksia vastauksen hyväksymisestä lähetetään (päiviä "
+"muistutusten välillä)"
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
-msgstr ""
+msgstr "Muistutusten enimmäismäärä"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr "Vaadi sähköpostiosoitteen tarkistus ennen hyväksyntää"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
+"Aktiivinen sähköpostitili vahvistetaan lähettämällä vahvistuskoodi "
+"sähköpostitse "
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
-msgstr "Hyväksy vain yksi tunnus per sähköpostiosoite"
+msgstr "Salli vain yksi tili per sähköpostiosoite"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
-msgstr "Sähköpostiosoite anonyymeille käyttäjille"
+msgstr "Sähköpostiosoite anonyymille käyttäjälle"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-"Käytä tätä asetusta kontrolloidaksesi käyttäjien gravataria, joilla ei ole "
-"sähköpostiosoitetta"
+"Käytä tätä asetusta kontrolloidaksesi sähköpostittoman käyttäjän gravataria"
-#: conf/email.py:247
-#, fuzzy
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr ""
-"<span class=\"strong big\">You are welcome to start submitting your question "
-"anonymously</span>. When you submit the post, you will be redirected to the "
-"login/signup page. Your question will be saved in the current session and "
-"will be published after you log in. Login/signup process is very simple. "
-"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr "Salli kysymysten kysyminen sähköpostitse"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Täytä IMAP-asetukset settings.py -tiedostossa ennen tämän asetuksen "
+"sallimista"
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Korvaa väli väliviivalla sähköpostitse lähetetyissä tageissä"
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"Tämä asetus koskee sähköpostitse kysyttyjen kysymysten aihe-kenttään "
+"kirjoitettuja tagejä."
+
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "Salli kysymysten kysyminen sähköpostitse"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
#: conf/external_keys.py:11
msgid "Keys for external services"
-msgstr ""
+msgstr "Avaimet ulkopuolisille palveluille"
#: conf/external_keys.py:19
msgid "Google site verification key"
-msgstr ""
+msgstr "Google-sivun vahvistuskoodi"
#: conf/external_keys.py:21
#, python-format
@@ -751,123 +831,116 @@ msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
+"Tämä koodi auttaa Googlea luetteloimaan sivusi - voit hakea sen täältä: <a "
+"href=\"%(url)s?hl=%(lang)s\">google webmasters tools site</a>"
#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Google Analytics -palvelun avain"
#: conf/external_keys.py:38
-#, fuzzy, python-format
+#, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
-"Hae <a href=\"%(ga_site)s\">Google Analytics</a> -palvelun avain, jos haluat "
-"käyttää sitä sivustollasi"
+"Jos haluat käyttää Google Analyticsiä sivusi tarkkailemiseen, hae koodi "
+"täältä: <a href=\"%(url)s\">Google Analytics</a>"
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Salli recaptcha (vaatii alla näkyvät avaimet)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Recaptcha-palvelun julkinen avain (public key)"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Recaptcha-palvelun yksityinen avain (private key)"
-#: conf/external_keys.py:70
-#, fuzzy, python-format
+#: conf/external_keys.py:72
+#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
-"Recaptcha on työkalu, joka auttaa erottamaan robotit ihmisistä. Käyttö on "
-"suositeltavaa. Saat avaimen osoitteesta <a href=\"http://recaptcha.net"
-"\">recaptcha.net</a>."
+"Recaptcha on työkalu todellisten ihmisten erottelemiseksi ärsyttävistä spam-"
+"roboteista. Hae työkalu ja yleinen koodi täältä: <a href=\"%(url)s\">"
+"%(url)s</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
-msgstr "Facebook-rajapinnan julkinen avain (public key)"
+msgstr "Facebookin julkinen avain (API key)"
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
"\">facebook create app</a> site"
msgstr ""
+"Facebookin API-koodi ja Facebook secret sallivat Facebook Connectin "
+"sisäänkirjautumistavan sivullasi. Hae koodit täältä: <a href=\"%(url)s"
+"\">facebook create app</a>"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
-msgstr "Facebook-rajapinnan salainen avain (secret key)"
+msgstr "Facebookin salainen avain (secret key)"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Twitterin käyttäjän koodi"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
+"Rekisteröi foorumisi täällä: <a href=\"%(url)s\">twitter applications site</"
+"a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Twitterin Consumer secret -avain"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "LinkedInin käyttäjän koodi"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
+"Rekisteröi foorumisi täällä: <a href=\"%(url)s\">LinkedIn developer site</a"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "LinkedInin käyttäjän salaisuus"
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "ident.ca:n käyttäjän koodi"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
+"Rekisteröi foorumisi täällä: <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr ""
-
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Vaihda salasanasi"
+msgstr "ident.ca:n käyttäjän salaisuus"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
-msgstr ""
+msgstr "Kiinteät sivut - tiedot, yksityisyydensuoja, jne."
#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
@@ -881,17 +954,16 @@ msgstr ""
"Tallenna ja <a href=\"http://validator.w3.org/\">validoi</a> tietoa-sivu"
#: conf/flatpages.py:32
-#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
-msgstr "Teksti sivuston tietoa-sivua varten (HTML-muodossa)"
+msgstr "Kysymys- ja vastausfoorumin UKK-sivun teksti (html-muodossa)"
#: conf/flatpages.py:35
-#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
-"Tallenna ja <a href=\"http://validator.w3.org/\">validoi</a> tietoa-sivu"
+"Tallenna ja <a href=\"http://validator.w3.org/\">käytä HTML validator -"
+"työkalua</a> ukk-sivulla tarkistaaksesi tekstisi."
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
@@ -902,35 +974,43 @@ msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"privacy\" page to check your input."
msgstr ""
+"Tallenna ja <a href=\"http://validator.w3.org/\">käytä HTML validator -"
+"työkalua</a> yksityisyydensuoja-sivulla tarkistaaksesi tekstisi."
#: conf/forum_data_rules.py:12
msgid "Data entry and display rules"
+msgstr "Tiedon lisäämisen ja näytön säännot"
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
msgstr ""
-#: conf/forum_data_rules.py:22
-#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
+"Mahdollista videoiden liittäminen. <em>Huom: <a href=\"%(url)s>lue tämä</a> "
+"ensin.</em>"
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
-msgstr "Yhteisölle jaettu -toiminto päälle"
+msgstr "Klikkaa raksi ruutuun salliaksesi yhteisöwiki-toiminnon"
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Salli kysyminen anonyymisti"
#: conf/forum_data_rules.py:44
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"Anonyymien kysymysten kysyjille ei kerry mainetta käyttäjinä, ja heidän "
+"henkilöllisyyttänsä ei paljasteta ennen kuin he muuttavat mieltään."
#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "Salli merkintöjen lisääminen ennen sisäänkirjautumista"
#: conf/forum_data_rules.py:58
msgid ""
@@ -939,223 +1019,322 @@ msgid ""
"to check for pending posts every time the user logs in. The builtin Askbot "
"login system supports this feature."
msgstr ""
+"Klikkaa raksi ruutuun, jos haluat sallia käyttäjien kysymysten ja vastausten "
+"lisäämisen ennen sisäänkirjautumista. Tämän salliminen saattaa vaatia "
+"sisäänkirjautumisjärjestelmän hienosäätöä niin, että se tarkistaa, onko "
+"merkintöjä jonossa, aina käyttäjän kirjautuessa sisään. Sisäänrakennettu "
+"Askbot-sisäänkirjautumisjärjestelmä tukee tätä toimintoa."
#: conf/forum_data_rules.py:73
-#, fuzzy
msgid "Allow swapping answer with question"
-msgstr "Post Your Answer"
+msgstr "Salli vastauksen ja kysymyksen paikan vaihtaminen keskenään"
#: conf/forum_data_rules.py:75
msgid ""
"This setting will help import data from other forums such as zendesk, when "
"automatic data import fails to detect the original question correctly."
msgstr ""
+"Tämä asetus helpottaa tietojen siirtämistä muilta palstoilta, kuten "
+"zendeskistä, jos automaattinen tiedonsiirtojärjestelmä ei huomaa "
+"alkuperäistä kysymystä oikein."
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
-msgstr "Maksimi tagin koko merkkeinä"
+msgstr "Tagin enimmäispituus merkkeinä"
+
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "Nimen vähimmäispituus (merkkien määrä)"
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "Kysymyksen leipätetkstin vähimmäispituus (merkkien määrä)"
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "Vastauksen leipätekstin vähimmäispituus (merkkien määrä)"
+
+#: conf/forum_data_rules.py:126
#, fuzzy
+msgid "Are tags required?"
+msgstr "tagit ovat pakollisia"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "päivitetyt tagit"
+msgstr "Pakolliset tagit"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
+"Ainakin yksi näistä tageista tarvitaan kaikille uusille tai uudelleen "
+"muokatuille kysymyksille. Pakollinen tagi voi olla jokerimerkki, jos "
+"jokerimerkit ovat sallittuja tageissa."
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Kaikki tagit pienillä alkukirjaimilla"
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
+"Huomio: tämän tarkistamisen jälkeen varmista tietokanta ja suorita seuraava "
+"komento: <code>python manage.py fix_question_tags</code> nimetäksesi kaikki "
+"tagit uudelleen"
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "Tagilistan muoto"
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
+"Valitse, missä muodossa tagit näytetään - joko yksinkertaisena listana tai "
+"tagipilvenä"
-#: conf/forum_data_rules.py:140
-#, fuzzy
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr "Tagit"
+msgstr "Käytä jokerimerkki -tagejä."
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
+"Jokerimerkki -tagien avulla voi seurata tai jättää huomiotta monta tagiä "
+"kerralla. Jokerimerkki tulee laittaa tagin loppuun."
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
-msgstr ""
+msgstr "Merkintöjen alla näytettävien kommenttien maksimimäärä (vakio)"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
-msgstr ""
+msgstr "Kommentin enimmäispituus, täytyy olla < %(max_len)s"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "Rajoita kommenttien muokkaamiseen käytettävää aikaa"
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
-msgstr ""
+msgstr "Jos ruutu on tyhjä, kommenttien muokkaamiselle ei ole aikarajaa"
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Kommenttien muokkaamiseen käytettävissä (minuuttia)"
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Salli asetus klikkaamalla edellistä ruutua"
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "Tallenna kommentti painamalla <Enter>iä."
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "Hakusanan vähimmäispituus Ajax-haulle"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
-msgstr ""
+msgstr "Täytyy vastata tietokannan asetusta"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "Älä tee tekstikyselystä tahmeaa hakiessa"
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
+"Klikkaa ruutua estääksesi haun \"tahmean\" käyttäytymisen. Tästä saattaa "
+"olla hyötyä, jos haluat siirtää hakukentän pois vakioasemasta tai et pidä "
+"tekstihaun tavallisesta tahemasta käyttäytymisestä."
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "Maksimi määrä tageja per kysymys"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "Kysymyksien määrä sivulla vakiona"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "Mitä \"vastaamattomien kysymysten\" tulisi tarkoittaa?"
-#: conf/license.py:13
-msgid "Content LicensContent License"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "Käytä LDAP-todennusta sisäänkirjautumiseen"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
msgstr ""
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "LDAP-palveluntarjoajan nimi"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "LDAP-palveluntarjoajan nimi"
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "Yleinen vasen sivupalkki"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Salli vasen sivupalkki"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr "HTML vasemmanpuoleiselle sivupalkille"
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+"Käytä tätä kenttää lisätäksesi sisältöä VASEMPAAN sivupalkkiin HTML-"
+"muodossa. Jos käytät tätä toimintoa, käytä HTML-tarkistuspalvelua "
+"varmistaaksesi, että koodisi on oikein kirjoitettua ja toimii kaikissa "
+"selaimissa."
+
+#: conf/license.py:13
+#, fuzzy
+msgid "Content License"
+msgstr "Content LicensContent License"
+
#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "Näytä lisenssi sivun alareunassa"
#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "Lisenssin lyhyt nimi"
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "Lisenssin koko nimi"
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution Share Alike 3.0"
#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "Lisää linkki lisenssisivulle"
#: conf/license.py:57
-#, fuzzy
msgid "License homepage"
-msgstr "takaisin kotisivulle"
+msgstr "Lisenssin kotisivu"
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "Virallisen, kaikki lupaan liittyvät lainkohdat sisältävän sivun URL"
#: conf/license.py:69
msgid "Use license logo"
-msgstr ""
+msgstr "Käytä lisenssin logoa"
#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Lisenssin logo"
#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "Sisäänkirjautumispalvelun tarjoajan asetukset"
#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgstr "Käyttäjätunnus tai sähköposti"
#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
+"Näytä aina paikallinen sisäänkirjautumislomake ja piilota \"Askbot\"-painike."
#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
msgstr ""
+"Aktivoi salliaksesi sisäänkirjautuminen itsenäisillä wordpress -sivuilla"
#: conf/login_providers.py:41
msgid ""
"to activate this feature you must fill out the wordpress xml-rpc setting "
"bellow"
-msgstr ""
+msgstr "aktivoidaksesi tämän, täytä wordpress xml-rpc -asetus alla"
#: conf/login_providers.py:50
msgid ""
"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
"xmlrpc.php"
msgstr ""
+"Täytä wordpressin xml-rpc -URL:llä, normaalisti http://mysite.com/xmlrpc.php"
#: conf/login_providers.py:51
msgid ""
"To enable, go to Settings->Writing->Remote Publishing and check the box for "
"XML-RPC"
msgstr ""
+"Salliaksesi tämän, mene Asetuksiin (Settings) -> Kirjoittaminen (Writing) -> "
+"Etäjulkaiseminen (Remote Publishing) ja klikkaa XML-PRC -ruutua"
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "Lataa kuvasi"
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
-msgstr ""
+msgstr "Aktivoi %(provider)s:n sisäänkirjautuminen"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
"need to be set in the \"External keys\" section"
msgstr ""
+"Huomio: salliaksesi todella %(provider)s-sisäänkirjautumisen, sinun on "
+"muokattava erinäisiä lisäasetuksia \"Ulkopuoliset avaimet\"-osiossa"
#: conf/markup.py:15
msgid "Markup in posts"
-msgstr ""
+msgstr "Viestien kirjoittamisen asetukset"
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Salli koodiystävällinen Markdown"
#: conf/markup.py:43
msgid ""
@@ -1164,10 +1343,14 @@ msgid ""
"\"MathJax support\" implicitly turns this feature on, because underscores "
"are heavily used in LaTeX input."
msgstr ""
+"Jos klikkaat tätä ruutua, alleviivatut merkit eivät näy kursivoituna eivätkä "
+"lihavoituina - lihavoitu ja kursivoitu teksti voidaan merkitä tähdin. "
+"Huomaa, että \"MathJax-tuki\" sallii tämän toiminnon itsestään, sillä LaTeX "
+"käyttää runsaasti alleviivausta."
#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
-msgstr ""
+msgstr "Mathjax-tuki (LaTeXin käyttö)"
#: conf/markup.py:60
#, python-format
@@ -1175,10 +1358,12 @@ msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
msgstr ""
+"Jos sallit tämän, <a href=\"%(url)s\">mathjax</a>:n on oltava asennettuna "
+"palvelimellesi omassa hakemistossaan."
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
-msgstr ""
+msgstr "MathJax-sijainnin URL"
#: conf/markup.py:76
msgid ""
@@ -1186,20 +1371,25 @@ msgid ""
"deploy it yourself, preferably at a separate domain and enter url pointing "
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
+"Huom. - <strong>MathJax ei sisälly askbot</strong>:iin - ota se käyttöön "
+"itse, mieluiten erillisenä alanaan ja kirjoita \"mathjax\"-hakemistoon "
+"(esim. http://mysite.com/mathjax) osoittava URL."
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
-msgstr ""
+msgstr "Salli automaattinen linkittäminen tietyillä säännönmukaisuuksilla"
#: conf/markup.py:93
msgid ""
"If you enable this feature, the application will be able to detect patterns "
"and auto link to URLs"
msgstr ""
+"Jos sallit tämän toiminnon, sovellus etsii säännönmukaisuuksia ja "
+"automaattisesti linkittää URL:t."
#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "Regexit linkkien säännönmukaisuuksien etsimiseen"
#: conf/markup.py:108
msgid ""
@@ -1209,10 +1399,14 @@ msgid ""
"to the link url template. Please look up more information about regular "
"expressions elsewhere."
msgstr ""
+"Kirjoita toimivia regexejä säännönmukaisuuksille, yksi kullekin riville. "
+"Esimerkiksi löytääksesi bugisäännönmukaisuuden, kuten #bug123, käytä regexiä "
+"#bug(\\d+). Säännönmukaisuuden sisältämät numerot suluissa siirretään "
+"linkin URL:ään. Voit etsiä lisätietoa regexeistä muualta."
#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "Automaattisen linkittämisen URL:t"
#: conf/markup.py:129
msgid ""
@@ -1223,28 +1417,32 @@ msgid ""
"shown above and the entry in the post #123 will produce link to the bug 123 "
"in the redhat bug tracker."
msgstr ""
+"Kirjoita tähän URL-pohjia edelliseen asetukseen kirjoitetuille "
+"säännönmukaisuuksille, yksi kullekin riville. <strong>Varmista, että rivien "
+"määrä on sama tässä ja edellisessä asetuksessa.</strong> Esimerkiksi pohja "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 yhdessä edellä mainitun "
+"säännönmukaisuuden kanssa sekä merkintä numero #123 tuottavat yhdessä linkin "
+"bugiin 123 redhatin bug-trackerissä."
#: conf/minimum_reputation.py:12
msgid "Karma thresholds"
-msgstr ""
+msgstr "Mainepisteiden rajaarvo"
#: conf/minimum_reputation.py:22
msgid "Upvote"
-msgstr ""
+msgstr "Positiivinen ääni"
#: conf/minimum_reputation.py:31
msgid "Downvote"
-msgstr ""
+msgstr "Negatiivinen ääni"
#: conf/minimum_reputation.py:40
-#, fuzzy
msgid "Answer own question immediately"
-msgstr "Vastaa omaan kysymykseesi"
+msgstr "Vastaa omaan kysymykseesi välittömästi"
#: conf/minimum_reputation.py:49
-#, fuzzy
msgid "Accept own answer"
-msgstr "muokkaa mitä tahansa vastausta"
+msgstr "Hyväksy oma vastauksesi"
#: conf/minimum_reputation.py:58
msgid "Flag offensive"
@@ -1259,9 +1457,8 @@ msgid "Delete comments posted by others"
msgstr "Poista muiden kommentteja"
#: conf/minimum_reputation.py:85
-#, fuzzy
msgid "Delete questions and answers posted by others"
-msgstr "Sulje muiden kysymyksiä"
+msgstr "Poista muiden kirjoittamia kysymyksiä ja vastauksia"
#: conf/minimum_reputation.py:94
msgid "Upload files"
@@ -1273,54 +1470,59 @@ msgstr "Sulje oma kysymys"
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
-msgstr "Uudelleentagita muiden postauksia"
+msgstr "Tagää muiden esittämiä kysymyksiä uudelleen"
#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
-msgstr "Uudelleenavaa oma kysymys"
+msgstr "Avaa oma kysymys uudelleen"
#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
-msgstr "Muokkaa yhteisölle omistettuja postauksia"
+msgstr "Muokkaa yhteisöwiki-merkintöjä"
#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
-msgstr "Muokkaa muiden postauksia"
+msgstr "Muokkaa muiden merkintöjä"
#: conf/minimum_reputation.py:148
msgid "View offensive flags"
-msgstr "Näytä loukkaavat merkit"
+msgstr "Näytä loukkaavaksi liputetut merkinnät"
#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
-msgstr "Sulje muiden kysymyksiä"
+msgstr "Sulje muiden esittämiä kysymyksiä"
#: conf/minimum_reputation.py:166
msgid "Lock posts"
-msgstr "Lukitse postauksia"
+msgstr "Lukitse merkintöjä"
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "Poista rel=nofollow omalta kotisivultasi"
#: conf/minimum_reputation.py:177
msgid ""
"When a search engine crawler will see a rel=nofollow attribute on a link - "
"the link will not count towards the rank of the users personal site."
msgstr ""
+"Kun hakukone näkee rel=nofollow -viittauksen linkissä, linkkiä ei lasketa "
+"mukaan käyttäjän oman sivun sijoitukseen"
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
#: conf/reputation_changes.py:13
-#, fuzzy
msgid "Karma loss and gain rules"
-msgstr "Maineen lisäämiseen ja poistamiseen liittyvät säännöt"
+msgstr "Mainepisteiden menettämisen ja ansaitsemisen säännöt"
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
-msgstr "Maksimi päivittäinen maineen lisäämismäärä per käyttäjä"
+msgstr "Enimmäismäärä maineen päivittäiselle lisäämiselle per käyttäjä"
#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
-msgstr "Lisää saamalla ääniä"
+msgstr "Lisää saamalla positiivisia ääniä"
#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
@@ -1332,52 +1534,57 @@ msgstr "Lisää valitsemalla paras vastaus"
#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
-msgstr ""
+msgstr "Merkinnän kirjoittajalle hyötyä poistetusta negatiivisesta äänestä"
#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
-msgstr ""
+msgstr "Äänestäjälle hyötyä negatiivisen äänen poistamisesta"
#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr ""
+msgstr "Äänestäjälle tappiota kysymyksen hyväksymisen poistamisesta"
#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
-msgstr ""
+msgstr "Tappiota kirjoittajalle, jonka vastaus oli \"hyväksymätön\""
#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
-msgstr ""
+msgstr "Tappiota negatiivisen äänen antamisesta"
#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
-msgstr ""
+msgstr "Tappiota kirjoittajalle, jonka merkintä merkitään loukkaavaksi"
#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr ""
+msgstr "Tappiota kirjoittajalle, jonka merkintä saa negatiivisen äänen"
#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
msgstr ""
+"Tappiota kirjoittajalle, jonka merkintä merkitään saman tarkastuksen "
+"perusteella 3 kertaa"
#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
msgstr ""
+"Tappiota kirjoittajalle, jonka merkintä merkitään saman tarkastuksen "
+"perusteella 5 kertaa"
#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
msgstr ""
+"Tappiota kirjoittajalle, jonka merkinnän saama positiivinen ääni poistetaan"
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
-msgstr ""
+msgstr "Pääsivun sivupalkki"
#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "Oma sivupalkin yläosa"
#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
#: conf/sidebar_question.py:22
@@ -1387,42 +1594,50 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Käytä tätä kirjoittaaksesi sisältöä sivupalkin yläosaan HTML-muodossa. Kun "
+"käytät tätä valintaa (samoin kuin sivupalkin alaosa-työkalua), käytä HTML-"
+"varmistuspalvelua varmistaaksesi että koodisi on oikein kirjoitettua ja "
+"toimii hyvin kaikissa selaimissa."
#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "Näytä avatar sivupalkissa"
#: conf/sidebar_main.py:38
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
-msgstr ""
+msgstr "Älä klikkaa tätä ruutua, jos haluat piilottaa avatarin sivupalkista"
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "Rajoita sivupalkissa näytettävien avatarien määrää"
#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "Näytä tagi-valikoija sivupalkissa"
#: conf/sidebar_main.py:61
msgid ""
"Uncheck this if you want to hide the options for choosing interesting and "
"ignored tags "
msgstr ""
+"Jätä tämä ruutu tyhjäksi, jos haluat piilottaa kiinnostavien ja unohdettujen "
+"tagien valitsemisasetuksen"
#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "Näytä tagilista/-pilvi sivupalkissa"
#: conf/sidebar_main.py:74
msgid ""
"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
msgstr ""
+"Jätä tämä ruutu tyhjäksi, jos haluat piilottaa tagipilven tai -listan "
+"sivupalkista"
#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "Oma sivupalkin alaosa"
#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
#: conf/sidebar_question.py:78
@@ -1432,52 +1647,56 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Käytä tätä kirjoittaaksesi sisältöä sivupalkin alaosaan HTML-muodossa. Kun "
+"käytät tätä valintaa (samoin kuin sivupalkin yläosa-työkalua), käytä HTML-"
+"varmistuspalvelua varmistaaksesi että koodisi on oikein kirjoitettua ja "
+"toimii hyvin kaikissa selaimissa."
#: conf/sidebar_profile.py:12
-#, fuzzy
msgid "User profile sidebar"
-msgstr "Profiili"
+msgstr "Käyttäjäprofiilin sivupalkki"
#: conf/sidebar_question.py:11
-#, fuzzy
msgid "Question page sidebar"
-msgstr "Tagit"
+msgstr "Kysymyssivun sivupalkki"
#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "Näytä tagilista sivuplakissa"
#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "Jätä tämä ruutu tyhjäksi, jos haluat piilottaa tagilistan sivupalkista"
#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "Näytä metatietoa sivupalkissa"
#: conf/sidebar_question.py:50
msgid ""
"Uncheck this if you want to hide the meta information about the question "
"(post date, views, last updated). "
msgstr ""
+"Jätä tämä ruutu tyhjäksi, jos haluat piilottaa kysymyksen metatiedot "
+"(päivämäärän, katsomiskerrat, viimeisen päivityksen päivämäärän)."
#: conf/sidebar_question.py:62
-#, fuzzy
msgid "Show related questions in sidebar"
-msgstr "Liittyvät kysymykset"
+msgstr "Näytä samaan asiaan liittyvät kysymykset sivupalkissa"
#: conf/sidebar_question.py:64
-#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr "klikkaa nähdäksesi vanhimmat päivitetyt kysymykset"
+msgstr ""
+"Jätä tämä ruutu tyhjäksi, jos haluat piilottaa listan samaan asiaan "
+"liittyvistä kysymyksistä."
#: conf/site_modes.py:64
msgid "Bootstrap mode"
-msgstr ""
+msgstr "Omatoimimoodi"
#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "Aktivoi \"Bootstrap\"-moodi"
#: conf/site_modes.py:76
msgid ""
@@ -1486,14 +1705,18 @@ msgid ""
"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
"changed after you modify this setting."
msgstr ""
+"Bootstrap-moodi vähentää mainetta ja kynnystä ansaita tiettyjä mitaleja "
+"pienemmille yhteisöille sopiviin arvoihin. <strong>VAROITUS:</strong> "
+"nykyiset arvot vähimmäismaineelle, badge-asetuksille ja äänestyssäännöille "
+"muuttuvat muokattuasi tätä asetusta."
#: conf/site_settings.py:12
msgid "URLS, keywords & greetings"
-msgstr ""
+msgstr "URL:t, avainsanat & tervehdykset"
#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
-msgstr ""
+msgstr "Q&A-foorumin sivun otsikko"
#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
@@ -1501,53 +1724,51 @@ msgstr "Pilkulla erotellut hakusanat sivustoa varten"
#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
-msgstr ""
+msgstr "Tekijänoikeusviesti sivun alaosassa"
#: conf/site_settings.py:49
msgid "Site description for the search engines"
-msgstr "Sivuston kuvaus hakurobotteja varten"
+msgstr "Sivuston kuvaus hakukonetta varten"
#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
-msgstr "Lyhyt nimi sivustolle"
+msgstr "Lyhyt nimi Q&A-foorumille"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
-msgstr ""
+msgstr "Q&A-foorumisi URL, alkuosan oltava http tai https"
-#: conf/site_settings.py:79
-#, fuzzy
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr "Sähköpostiosoite anonyymeille käyttäjille"
+msgstr "Klikkaa raksi ruutuun salliaksesi tervehdyksen anonyymille käyttäjälle"
-#: conf/site_settings.py:90
-#, fuzzy
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr "Linkki, joka näytetään tervetuloviestissä tuntemattomalle käyttäjälle"
+msgstr "Tervehdysviestin sisältö näytetään anonyymille käyttäjälle"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "Käytä HTML:ää viestin muotoilemiseen"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "Palautesivun URL-osoite"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
-msgstr "Jos jätetään tyhjäksi, käytetään järjestelmän omaa"
+msgstr "Jos jätetään tyhjäksi, käytetään järjestelmän omaa palautelomaketta"
#: conf/skin_counter_settings.py:11
msgid "Skin: view, vote and answer counters"
-msgstr ""
+msgstr "Pinta: katsomiskerta-, ääni- ja vastauslaskurit"
#: conf/skin_counter_settings.py:19
msgid "Vote counter value to give \"full color\""
-msgstr ""
+msgstr "Äänilaskurin lukema antaa \"täyden värin\""
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr ""
+msgstr "Äänien taustaväri = 0"
#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
@@ -1560,21 +1781,19 @@ msgstr ""
#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
-msgstr ""
+msgstr "HTML-värin nimi tai hex-arvo"
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
-msgstr ""
+msgstr "Äänien edustaväri = 0"
#: conf/skin_counter_settings.py:51
-#, fuzzy
msgid "Background color for votes"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Äänien taustaväri"
#: conf/skin_counter_settings.py:61
-#, fuzzy
msgid "Foreground color for votes"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Äänien edustaväri"
#: conf/skin_counter_settings.py:71
msgid "Background color for votes = MAX"
@@ -1582,144 +1801,151 @@ msgstr "Taustakuvan väri äänille, kun ääniä on maksimimäärä"
#: conf/skin_counter_settings.py:84
msgid "Foreground color for votes = MAX"
-msgstr ""
+msgstr "Äänien edustaväri = MAX"
#: conf/skin_counter_settings.py:95
msgid "View counter value to give \"full color\""
-msgstr ""
+msgstr "Katso laskurin lukemaa antaaksesi \"täyden värin\""
#: conf/skin_counter_settings.py:105
msgid "Background color for views = 0"
-msgstr ""
+msgstr "Katsomiskertojen taustaväri = 0"
#: conf/skin_counter_settings.py:116
msgid "Foreground color for views = 0"
-msgstr ""
+msgstr "Katsomiskertojen edustaväri = 0"
#: conf/skin_counter_settings.py:127
-#, fuzzy
msgid "Background color for views"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Katsomiskertojen taustaväri"
#: conf/skin_counter_settings.py:137
-#, fuzzy
msgid "Foreground color for views"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Katsomiskertojen edustaväri"
#: conf/skin_counter_settings.py:147
msgid "Background color for views = MAX"
-msgstr ""
+msgstr "Katsomiskertojen taustaväri = MAX"
#: conf/skin_counter_settings.py:162
msgid "Foreground color for views = MAX"
-msgstr ""
+msgstr "Katsomiskertojen edustaväri = MAX"
#: conf/skin_counter_settings.py:173
msgid "Answer counter value to give \"full color\""
-msgstr ""
+msgstr "Vastauslaskurin lukema antaa \"täyden värin\""
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr ""
+msgstr "Vastausten taustaväri = 0"
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
-msgstr ""
+msgstr "Vastausten edustaväri = 0"
#: conf/skin_counter_settings.py:205
-#, fuzzy
msgid "Background color for answers"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Vastausten taustaväri"
#: conf/skin_counter_settings.py:215
-#, fuzzy
msgid "Foreground color for answers"
-msgstr "Taustakuvan väri äänille, kun ääniä on yksi"
+msgstr "Vastausten edustaväri"
#: conf/skin_counter_settings.py:227
msgid "Background color for answers = MAX"
-msgstr ""
+msgstr "Vastausten taustaväri = MAX"
#: conf/skin_counter_settings.py:238
msgid "Foreground color for answers = MAX"
-msgstr ""
+msgstr "Vastausten edustaväri = MAX"
#: conf/skin_counter_settings.py:251
msgid "Background color for accepted"
-msgstr ""
+msgstr "Hyväksytyn vastauksen taustaväri"
#: conf/skin_counter_settings.py:261
msgid "Foreground color for accepted answer"
-msgstr ""
+msgstr "Hyväksytyn vastauksen edustaväri"
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
-msgstr ""
+msgstr "Logot ja HTML <head>-osat"
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
-msgstr ""
+msgstr "Q&A-sivun logo"
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
+"Vaihtaaksesi logoa, valitse uusi tiedosto ja lähetä sitten koko tämä lomake."
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "Näytä logo"
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
+"Klikkaa ruutua, jos haluat näyttää logon foorumin yläosassa, tai jätä "
+"tyhjäksi, jos et halua logon näkyvän vakioasemassa"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr ""
+msgstr "Sivun favicon"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
"browser user interface. Please find more information about favicon at <a "
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
+"Pieni 16x16 tai 32x32 pikselin ikoni, joka erottaa sivusi selaimen "
+"käyttöliittymässä. Voit etsiä lisää tietoa faviconeista <a href="
+"\"%(favicon_info_url)s\">täältä</a>."
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
-msgstr ""
+msgstr "Sisäänkirjautumispainike"
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
+"88x38 pikselin kuvake, jota käytetään sisäänkirjautumissivulla "
+"salasanasisäänkirjautumispainikkeena."
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
-msgstr ""
+msgstr "Näytä kaikki UI-toiminnot kaikille käyttäjille"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
+"Jos klikkaat ruutua, kaikki foorumin toiminnot näytetään käyttäjille "
+"riippumatta heidän maineestaan, mutta maineeseen ja ylläpitoon liittyvät "
+"säännöt ovat silti voimassa toimintoja käyttäessä."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
-msgstr "Valitse teema"
+msgstr "Valitse pinnan teema"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "Muokkaa HTML:ää <HEAD>"
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "HTML:n muokattu osio <HEAD>"
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1730,12 +1956,20 @@ msgid ""
"files into the footer. <strong>Note:</strong> if you do use this setting, "
"please test the site with the W3C HTML validator service."
msgstr ""
+"<strong>Käyttääksesi tätä asetusta</strong>, klikkaa ruutua \"Muokkaa HTML:"
+"ää <HEAD>\" yllä. Tämän laatikon sisältö liitetään HTML-outputin &lt;HEAD&gt-"
+"osioon, jossa voit lisätä elementtejä kuten &lt;script&gt;, &lt;link&gt; ja "
+"&lt;meta&gt. Muista, että ulkoisen javascriptin lisäämistä &lt;HEAD&gt:iin "
+"ei suositella, sillä se hidastaa sivujen lataamista. Tämän sijaan "
+"tehokkaampaa on sijoittaa javascript-tiedostot sivun alaosaan (footeriin). "
+"<strong>Huom.:</strong> jos käytät tätä asetusta, kokeile sivua W3C HTML-"
+"validaattoripalvelulla."
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "Oman headerin liitännäiset"
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1743,22 +1977,30 @@ msgid ""
"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
"sure that your input is valid and works well in all browsers."
msgstr ""
+"Header on sisällön yläosassa sijaitseva palkki, joka sisältää käyttäjän "
+"tietoja sekä linkkejä sivuille ja on samanlainen kaikilla sivuilla. Käytä "
+"tätä aluetta lisätäksesi sisältöä headeriin HTML-muodossa. Kun muokkaat "
+"headeriä (samoin kuin footeria ja HTML &lt;HEAD&gt;:a), käytä HTML-"
+"validaattoripalvelua varmistaaksesi että koodisi on oikein kirjoitettua ja "
+"toimii hyvin kaikissa selaimissa."
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "Sivun footerin moodi"
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
+"Footer on sisällön alaosa, joka on samanlainen kaikilla sivuilla. Voit "
+"estää, muokata tai käyttää vakiofooteria."
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "Oma footer (HTML-muodossa)"
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1766,22 +2008,29 @@ msgid ""
"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
"that your input is valid and works well in all browsers."
msgstr ""
+"<strong>Salliaksesi tämän toiminnon</strong>, valitse 'muokkaa' \"Sivun "
+"footerin moodi\" -kohdassa yllä. Käytä tätä aluetta lisätäksesi sisältöä "
+"footeriin HTML-muodossa. Kun muokkaat sivun footeria (samoin kuin headeria "
+"ja HTML &lt;HEAD&gt;:a), käytä HTML-validaattoripalvelua varmistaaksesi että "
+"koodisi on oikein kirjoitettua ja toimii hyvin kaikissa selaimissa."
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "Sovella omaa tyyliä (CSS)"
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
+"Klikkaa raksi ruutuun, jos haluat muuttaa lomakkeesi tyyliä lisäämällä omia "
+"tyylisääntöjä (ks. seuraava)"
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "Oma tyyli (CSS)"
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1789,20 +2038,27 @@ msgid ""
"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
+"<strong>Käyttääksesi tätä toimintoa</strong>, klikkaa raksi \"Sovella omaa "
+"tyyliä\" -ruutuun yllä. Tähän ikkunaan lisätyt CSS-säännöt tulevat voimaan "
+"vakiotyylisääntöjen jälkeen. Oman tyylin palvelin toimii URL:ssä \"&lt;"
+"forum url&gt;/custom.css\", jossa \"&lt;forum url&gt; -osio riippuu (vakiona "
+"tyhjä) URL-asetuksista urls.py-asetuksissasi."
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "Lisää oma javascriptisi"
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
+"Klikkaa raksi ruutuun salliaksesi javascriptin, jonka voit lisätä seuraavaan "
+"ruutuun"
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "Oma javascript"
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1812,130 +2068,167 @@ msgid ""
"enable your custom code</strong>, check \"Add custom javascript\" option "
"above)."
msgstr ""
+"Kirjoita tai liitä javascriptiä, jonka haluaisit suoritettavan omalla "
+"sivullasi. Linkki scriptiin lisätään HTML-outputin loppuun ja sen palvelin "
+"toimii URL:ssä \"&lt;forum url&gt;/custom.js\". Muista, että javascript-"
+"koodisi saattaa vaurioittaa sivun muita toimintoja, eikä välttämättä "
+"käyttäydy samalla lailla kaikissa selaimissa (<strong>salliaksesi oman "
+"koodin</strong>, klikkaa raksi \"Lisää oma javascriptisi\" -ruutuun yllä.)"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
-msgstr ""
+msgstr "Pinnan mediakertausnumero"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
-msgstr ""
+msgstr "Asetetaan automaattisesti, mutta voit muokata sitä, jos se on tarpeen."
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
-msgstr ""
+msgstr "Klikkaa päivittääksesi median kertausnumeron automaattisesti"
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
-msgstr ""
+msgstr "Asetetaan automaattisesti, ei tarvetta muokata manuaalisesti."
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
-msgstr ""
+msgstr "Sisällön jakaminen sosiaalisissa verkostoissa"
#: conf/social_sharing.py:20
-#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
-msgstr "Avaa tämä kysymys uudelleen"
+msgstr "Klikkaa raksi ruutuun salliaksesi kysymysten jakamisen Twitterissä"
#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
-msgstr ""
+msgstr "Klikkaa raksi ruutuun salliaksesi kysymysten jakamisen Facebookissa"
#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr ""
+msgstr "Klikkaa raksi ruutuun salliaksesi kysymysten jakamisen LinkedInissä"
#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr ""
+msgstr "Klikkaa raksi ruutuun salliaksesi kysymysten jakamisen Identi.ca:ssa"
#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
-msgstr ""
+msgstr "Klikkaa raksi ruutuun salliaksesi kysymysten jakamisen Google+:ssa"
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
-msgstr ""
+msgstr "Akismet-roskapostintorjunta"
#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
-msgstr ""
+msgstr "Salli Akismet-roskapostintorjunta (vaatii alla olevat avaimet)"
#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
msgstr ""
+"Voit hakea Akismet-koodin Akismetin nettisivulta: <a href=\"%(url)s"
+"\">Akismet site</a>"
#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "Akismet-koodi roskapostin torjuntaan"
#: conf/super_groups.py:5
msgid "Reputation, Badges, Votes & Flags"
-msgstr ""
+msgstr "Maine, mitalit, äänet ja liputukset"
#: conf/super_groups.py:6
msgid "Static Content, URLS & UI"
-msgstr ""
+msgstr "Pysyvä sisältö, URL:t & UI"
#: conf/super_groups.py:7
msgid "Data rules & Formatting"
-msgstr ""
+msgstr "Datasäännöt & muotoilu"
#: conf/super_groups.py:8
-#, fuzzy
msgid "External Services"
-msgstr "Muut palvelut"
+msgstr "Ulkopuoliset palvelut"
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
-msgstr ""
+msgstr "Sisäänkirjautumine, käyttäjät & kommunikointi"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr ""
-"Järjestelmä käyttää hyväkseen keksejä ylläpitäessään kirjautuneita "
-"käyttäjiä. Sinulla tulee olla keksit päällä selaimessasi, jotta sivusto "
-"toimii."
+msgstr "Käyttäjän asetukset"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
-msgstr "Hyväksy tunnuksen nimen muokkaaminen"
+msgstr "Hyväksy käyttäjätunnuksen muokkaaminen"
-#: conf/user_settings.py:30
-#, fuzzy
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Salli käyttäjien vaihtaa omaa sähköpostiosoitettaan"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr "Hyväksy vain yksi tunnus per sähköpostiosoite"
+msgstr "Salli tilin elvyttäminen sähköpostin kautta"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
-msgstr ""
+msgstr "Salli sisäänkirjautumistapojen lisääminen ja poistaminen"
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "Minimi tunnuksen pituus"
-#: conf/user_settings.py:59
-msgid "Default Gravatar icon type"
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Vakioavatar käyttäjille"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
msgstr ""
+"Vaihtaaksesi avatarin kuvaketta, valitse uusi tiedosto ja lähetä sitten tämä "
+"koko sivu."
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr "Käytä automaattisia avatareja osoitteesta gravatar.com"
-#: conf/user_settings.py:61
+#: conf/user_settings.py:85
+#, fuzzy
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+"Klikkaa raksi ruutuun, jos haluat sallia gravatar.comin käytön avatarien "
+"hakemiseen. Huomaa, että tämän toiminnon 100% aktivoiminen saattaa kestää "
+"noin 10 minuuttia. Sinun on sallittava myös itse ladattavat avatarit. "
+"Lisätietoa löydät <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">täältä</a>."
+
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr "Gravatar-kuvakkeen vakiotyyppi"
+
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
+"Tämän valinnan avulla voit asettaa jonkin avatar-tyypin vakioksi "
+"sähköpostiosoitteille, joilla ei ole gravatar-ikonia. Etsi lisätietoa <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">täältä</a>."
-#: conf/user_settings.py:71
-#, fuzzy
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr "Sähköpostiosoite anonyymeille käyttäjille"
+msgstr "Anonyymin käyttäjän nimi"
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
-msgstr ""
+msgstr "Ääni- ja liputuskiintiöt"
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
@@ -1943,37 +2236,72 @@ msgstr "Käyttäjän äänimäärä päivittäin"
#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
-msgstr ""
+msgstr "Enimmäismäärä liputuksia, per käyttäjä, per päivä"
#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr ""
+msgstr "Kynnys jäljellä olevista päivittäisistä äänistä muistuttamiseen"
#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
-msgstr ""
+msgstr "Määrä päiviä, joiden aikana äänten peruminen on sallittua"
#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
-msgstr ""
+msgstr "Omaan kysymykseen vastaamiseen vaadittava määrä päiviä"
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
-msgstr ""
+msgstr "Merkinnän automaattiseen piilottamiseen tarvittava liputusten määrä"
#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
-msgstr ""
+msgstr "Merkinnän automaattiseen poistamiseen tarvittava liputusten määrä"
#: conf/vote_rules.py:87
msgid ""
"Minimum days to accept an answer, if it has not been accepted by the "
"question poster"
msgstr ""
+"Vähimmäismäärä päiviä vastauksen hyväksymiseen, jos kysymyksen kysyjä ei ole "
+"hyväksynyt sitä"
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "Upotettavat widgetit"
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "Näytettävien kysymysten määrä"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+"Upottaaksesi widgetin, lisää seuraava koodi sivullesi (ja syötä alkuperäinen "
+"URL, haluamasi tagit, leveys ja korkeus): <iframe src=\"{{base_url}}/widgets/"
+"questions?tags={{comma-separated-tags}}\" width=\"100%\" height="
+"\"300\"scrolling=\"no\"><p>Selaimesi ei tue iframejä.</p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "Kysymys-widgetin CSS"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "Kysymys-widgetin yläpalkki"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "Kysymys-widgetin alapalkki"
#: const/__init__.py:10
msgid "duplicate question"
-msgstr "duplikaattikysymys"
+msgstr "toistettu kysymys"
#: const/__init__.py:11
msgid "question is off-topic or not relevant"
@@ -2007,372 +2335,369 @@ msgstr "roskapostia tai mainostusta"
msgid "too localized"
msgstr "liian paikallinen"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "uusin"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "vanhin"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "aktiivinen"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "inaktiivinen"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "kuumin"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "kylmin"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
-msgstr "eniten äänestetyin"
+msgstr "eniten äänestetty"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
-msgstr "vähiten äänestetetyin"
+msgstr "vähiten äänestetty"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "merkitys"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "kaikki"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
-msgstr "vastaamaton"
+msgstr "vastaamattomat"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "suosikki"
-#: const/__init__.py:64
-#, fuzzy
+#: const/__init__.py:70
msgid "list"
-msgstr "Tagilista"
+msgstr "lista"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "pilvi"
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "Ei vastauksia"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "Kysymyksellä ei ole hyväksyttyjä vastauksia"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
-msgstr "kysyi kysymyksen"
+msgstr "esitti kysymyksen"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "vastasi"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "kommentoi kysymystä"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "kommentoi vastausta"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
-msgstr "muokasi kysymystä"
+msgstr "muokkasi kysymystä"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "muokkasi vastausta"
-#: const/__init__.py:128
-msgid "received award"
-msgstr "sai arvomerkin"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
+msgstr "sai mitalin"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "merkitty parhaaksi vastaukseksi"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
-msgstr ""
+msgstr "saanut positiivisia ääniä"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
-msgstr ""
+msgstr "saanut negatiivisia ääniä"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "perui äänen"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "poisti kysymyksen"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "poisti vastauksen"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "merkitsi loukkaavaksi"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "päivitetyt tagit"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "valitsi suosikiksi"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "täydensi käyttäjäprofiilin"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "sähköpostipäivitys lähetettiin käyttäjälle"
-#: const/__init__.py:142
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "näytä vastaamattomat kysymykset"
+msgstr "muistutus vastaamattomasta kysymyksestä lähetetty"
-#: const/__init__.py:146
-#, fuzzy
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr "Lisää valitsemalla paras vastaus"
+msgstr "Muistutus parhaan vastauksen hyväksymisestä lähetetty"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "mainittu postauksessa"
-#: const/__init__.py:199
-msgid "question_answered"
+#: const/__init__.py:202
+#, fuzzy
+msgid "answered question"
msgstr "vastasi"
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "kommentoi"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "vastausta kommentoitu"
-
-#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "vastaus hyväksytty"
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "muokkasi vastausta"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[suljettu]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[poistettu]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "ensimmäinen versio"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
-msgstr "uudelleentagitettu"
+msgstr "tagätty uudelleen"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "pois päältä"
-#: const/__init__.py:218
-#, fuzzy
+#: const/__init__.py:221
msgid "exclude ignored"
-msgstr "jätetty huomioitta"
+msgstr "älä näytä hylättyjä tagejä"
-#: const/__init__.py:219
-#, fuzzy
+#: const/__init__.py:222
msgid "only selected"
-msgstr "Yksittäin valittu"
+msgstr "vain valitut"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
-msgstr ""
+msgstr "välittömästi"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "päivittäin"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "viikottain"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "ei sähköpostia"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identicon"
-#: const/__init__.py:234
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "eilen"
+msgstr "mystery-man"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "monsterid"
-#: const/__init__.py:236
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
+msgstr "wavatar"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "retro"
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "kulta"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "hopea"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
-msgstr "bronssi"
+msgstr "pronssi"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "Ei mitään"
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr ""
+msgstr "Gravatar"
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "Ladattu avatar"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr "kysy kysymys mikä koskee aiheitamme"
+msgstr "Relevanteimmat kysymykset"
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "klikkaa nähdäksesi äänestetyimmät kysymykset"
+msgstr "klikkaa nähdäksesi relevanteimmat kysymykset"
-#: const/message_keys.py:17
-#, fuzzy
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr "merkitys"
+msgstr "oleellisuus"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "klikkaa nähdäksesi vanhimmat kysymykset"
-#: const/message_keys.py:19
-#, fuzzy
+#: const/message_keys.py:25
msgid "by date"
-msgstr "Päivitä"
+msgstr "päivämäärä"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "klikkaa nähdäksesi uusimmat kysymykset"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "klikkaa nähdäksesi vanhimmat päivitetyt kysymykset"
-#: const/message_keys.py:22
-#, fuzzy
+#: const/message_keys.py:28
msgid "by activity"
-msgstr "aktiivinen"
+msgstr "päivitetty"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "klikkaa nähdäksesi viimeksi päivitetyt kysymykset"
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "klikkaa nähdäksesi vanhimmat kysymykset"
+msgstr "klikkaa nähdäksesi kysymykset, joihin on vastattu vähiten"
-#: const/message_keys.py:25
-#, fuzzy
+#: const/message_keys.py:31
msgid "by answers"
msgstr "vastaukset"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "klikkaa nähdäksesi äänestetyimmät kysymykset"
+msgstr "klikkaa nähdäksesi kysymykset, joihin on vastattu eniten"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
-msgstr "least voted questions"
+msgstr "klikkaa nähdäksesi vähiten äänestetyt kysymykset"
-#: const/message_keys.py:28
-#, fuzzy
+#: const/message_keys.py:34
msgid "by votes"
msgstr "äänet"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "klikkaa nähdäksesi äänestetyimmät kysymykset"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
+"Tervetuloa! Ole hyvä ja aseta sähköpostiosoite profiiliisi (tärkeää!) ja "
+"vaihda ruutunimeä, jos niin on tarpeen."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-nimet eivät ole tuetut"
#: deps/django_authopenid/forms.py:233
-#, fuzzy, python-format
+#, python-format
msgid "Please enter your %(username_token)s"
-msgstr "Syötä käyttäjätunnuksesi"
+msgstr "Lisää %(username_token)s"
#: deps/django_authopenid/forms.py:259
-#, fuzzy
msgid "Please, enter your user name"
-msgstr "Syötä käyttäjätunnuksesi"
+msgstr "Lisää käyttäjänimi"
#: deps/django_authopenid/forms.py:263
-#, fuzzy
msgid "Please, enter your password"
-msgstr "Syötä salasanasi"
+msgstr "Uusi salasana"
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
-#, fuzzy
msgid "Please, enter your new password"
-msgstr "Syötä salasanasi"
+msgstr "Uusi salasana"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Salasanat eivät täsmää"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr ""
+msgstr "Valitse salasana, joka on > %(len)s pitkä"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
@@ -2382,22 +2707,23 @@ msgstr "Nykyinen salasana"
msgid ""
"Old password is incorrect. Please enter the correct "
"password."
-msgstr ""
+msgstr "Vanha salasana on väärä. Käytä oikeaa salasanaa."
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Anteeksi, tätä sähköpostiosoitetta ei ole tietokannassamme"
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
msgstr "Käyttäjätunnuksesi (<i>pakollinen</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Virheellinen tunnus"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "käyttäjää ei ole tällä nimellä"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "kirjautuminen/"
@@ -2410,9 +2736,8 @@ msgid "complete/"
msgstr "valmis/"
#: deps/django_authopenid/urls.py:15
-#, fuzzy
msgid "complete-oauth/"
-msgstr "valmis/"
+msgstr "taysi-oauth/"
#: deps/django_authopenid/urls.py:19
msgid "register/"
@@ -2427,432 +2752,415 @@ msgid "logout/"
msgstr "kirjaudu-ulos/"
#: deps/django_authopenid/urls.py:30
-#, fuzzy
msgid "recover/"
-msgstr "avaa-uudelleen/"
+msgstr "recover/"
#: deps/django_authopenid/util.py:378
-#, fuzzy, python-format
+#, python-format
msgid "%(site)s user name and password"
-msgstr "Syötä käyttäjätunnus ja salasana"
+msgstr "%(site)s käyttäjänimi ja salasana"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Luo salasanalla suojattu tili"
#: deps/django_authopenid/util.py:385
-#, fuzzy
msgid "Change your password"
-msgstr "Vaihda salasana"
+msgstr "Vaihda salasanaasi"
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Kirjaudu sisään Yahoon kautta"
#: deps/django_authopenid/util.py:480
-#, fuzzy
msgid "AOL screen name"
-msgstr "Tunnus"
+msgstr "AOL-ruutunimi"
#: deps/django_authopenid/util.py:488
-#, fuzzy
msgid "OpenID url"
-msgstr "OpenID-palvelun URL-osoite:"
+msgstr "OpenID URL"
#: deps/django_authopenid/util.py:517
-#, fuzzy
msgid "Flickr user name"
-msgstr "käyttäjätunnus"
+msgstr "Flickr-käyttäjänimi"
#: deps/django_authopenid/util.py:525
-#, fuzzy
msgid "Technorati user name"
-msgstr "Valitse tunnus"
+msgstr "Technorati-käyttäjänimi"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "WordPress-blogin nimi"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "Blogger-blogin nimi"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "LiveJournal-blogin nimi"
#: deps/django_authopenid/util.py:557
-#, fuzzy
msgid "ClaimID user name"
-msgstr "käyttäjätunnus"
+msgstr "ClaimID-käyttäjänimi"
#: deps/django_authopenid/util.py:565
-#, fuzzy
msgid "Vidoop user name"
-msgstr "käyttäjätunnus"
+msgstr "Vidoop-käyttäjänimi"
#: deps/django_authopenid/util.py:573
-#, fuzzy
msgid "Verisign user name"
-msgstr "käyttäjätunnus"
+msgstr "Verisign-käyttäjänimi"
#: deps/django_authopenid/util.py:608
-#, fuzzy, python-format
+#, python-format
msgid "Change your %(provider)s password"
-msgstr "Vaihda salasana"
+msgstr "Vaihda %(provider)s:n salasana"
#: deps/django_authopenid/util.py:612
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
msgstr ""
+"Klikkaa tarkistaaksesi, toimiiko %(provider)s: sisäänkirjautuminen vielä "
+"%(site_name)s sivustolle"
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Luo salasana %(provider)s:lle"
#: deps/django_authopenid/util.py:625
-#, fuzzy, python-format
+#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr "Kirjautuminen"
+msgstr "Yhdistä %(provider)s:n tili sivuun %(site_name)s"
#: deps/django_authopenid/util.py:634
-#, fuzzy, python-format
+#, python-format
msgid "Signin with %(provider)s user name and password"
-msgstr "Syötä käyttäjätunnus ja salasana"
+msgstr "Kirjaudu sisään %(provider)s:n käyttäjänimellä ja salasanalla"
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Kirjaudu sisään %(provider)s:n tilillä"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
-msgstr ""
+msgstr "OpenID %(openid_url)s ei kelpaa"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
+"Ikävä kyllä %(provider)s:iin yhdistäessä kohdattiin ongelma, yritä uudelleen "
+"tai käytä toista palveluntarjoajaa"
-#: deps/django_authopenid/views.py:371
-#, fuzzy
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
-msgstr "Salasanasi vaihdettiin"
+msgstr "Uusi salasanasi on tallennettu"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "Salasanayhdistelmä väärin"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Klikkaa mitä tahansa alla olevista kuvakkeista kirjautuaksesi sisään"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
-msgstr ""
+msgstr "Tilin elvyttämissähköposti lähetetty"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Lisää ainakin yksi sisäänkirjautumistapa."
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
+"Halutessasi lisää, poista tai vahvista uudelleen sisäänkirjautumistapojasi"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
-msgstr ""
+msgstr "Odota hetki! Tilisi on elvytetty, mutta ..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
-msgstr ""
+msgstr "Valitettavasti tilin elvytyskoodi on väärä tai ei ole enää voimassa"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "Sisäänkirjautumistapaa %(provider_name)s ei ole olemassa"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
+"Hups, valitettavasti on tapahtunut virhe. Ole hyvä, ja yritä uudelleen"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "%(provider)s-sisäänkirjautumisesi toimii hyvin"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1098
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1083
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "Anna tunnuksellesi uusi salasana."
+msgstr "Elvytä %(site)s-tilisi"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "Tarkista sähköpostisi ja klikkaa liitteenä olevaa linkkiä"
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
msgid "Site"
msgstr "Sivusto"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "Pääsivu"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr ""
+msgstr "Perusasetukset"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "Vakioarvo: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "Vakioarvo: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "Vakioarvo: %s"
-#: deps/livesettings/values.py:622
-#, fuzzy, python-format
+#: deps/livesettings/values.py:629
+#, python-format
msgid "Allowed image file types are %(types)s"
-msgstr "hyväksytyt tiedostotyypit ovat '%(file_types)s'"
+msgstr "%(types)s-tyyppiset kuvakkeet sallitaan"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Onnittelut, olet nyt pääkäyttäjä"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Sivustot"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Dokumentaatio"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Vaihda salasana"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Kirjaudu ulos"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Koti"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Muokkaa ryhmäasetuksia"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Korjaa allaolevat virhe:"
+msgstr[1] "Korjaa allaoleva virheet:"
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "Asetukset sisältyvät %(name)s:iin"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Ei oikeuksia"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Muokkaa sivuston asetuksia"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Live-asetukset eivät ole käytössä tällä sivulla"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "Kokoonpanoasetuksia voi muokata vain sivun settings.py-tiedostossa"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Ryhmäasetukset: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Luhista kaikki"
-#: management/commands/send_accept_answer_reminders.py:57
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Onnittelut, olet nyt ylläpitäjä"
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
-msgstr ""
+msgstr "Hyväksy paras vastaus %(question_count)d:lle kysymyksistäsi"
-#: management/commands/send_accept_answer_reminders.py:62
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr "Ole ensimmäinen vastaaja!"
+msgstr "Ole hyvä ja valitse paras vastaus tähän kysymykseen:"
-#: management/commands/send_accept_answer_reminders.py:64
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr "klikkaa nähdäksesi vanhimmat kysymykset"
+msgstr "Ole hyvä ja hyväksy paras vastaus näihin kysymyksiin"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d päivitetty kysymys aiheesta %(topics)s"
+msgstr[1] "%(question_count)d päivitettyä kysymystä aiheesta %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "uusi kysymys"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
-"frequency of the email updates or turn them off entirely.<br/>If you believe "
-"that this message was sent in an error, please email about it the forum "
-"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
-"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d vastaamattomat kysymys aiheesta %(topics)s"
+msgstr[1] "%(question_count)d vastaamatonta kysymystä aiheesta %(topics)s"
-#: middleware/forum_mode.py:31
-#, fuzzy, python-format
+#: middleware/forum_mode.py:53
+#, python-format
msgid "Please log in to use %s"
-msgstr "Olet aina tervetullut kysymään!"
+msgstr "Ole hyvä ja kirjaudu sisään käyttääksesi %s"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
+"Valitettavasti tilisi on lukittu, etkä voi hyväksyä tai hylätä parhaita "
+"vastauksia"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, etkä voi hyväksyä tai hylätä parhaita "
+"vastauksia"
-#: models/__init__.py:334
-#, fuzzy, python-format
+#: models/__init__.py:337
+#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
-msgstr "Ensimmäinen hyväksytty vastaus omaan kysymykseesi"
+msgstr ""
+"Tarvitset >%(points)s pistettä voidaksesi hyväksyä tai hylätä oman "
+"vastauksesi omaan kysymykseesi"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
+"Valitettavasti voit hyväksyä tämän vastauksen vasta %(will_be_able_at)s:n "
+"jälkeen"
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
+"Valitettavasti vain moderaattorit tai kysymyksen alkuperäinen esittäjä - "
+"%(username)s - voivat hyväksyä tai hylätä parhaan vastauksen"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "et voi äänestää omia postauksia"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
-msgstr ""
+msgstr "Valitettavasti tilisi näyttää olevan lukittu"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
-msgstr ""
+msgstr "Valitettavasti tilisi näyttää olevan jäähyllä"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "tarvitset >%(points)s points äänestämiseen "
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s mainetta tarvitaan"
-#: models/__init__.py:428
-#, fuzzy
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+msgstr "Valitettavasti lukitut käyttäjät eivät voi ladata tiedostoja"
-#: models/__init__.py:429
-#, fuzzy
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
+msgstr "Valitettavasti jäähyllä olevat käyttäjät eivät voi ladata tiedostoja"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "sorry, file uploading requires karma >%(min_rep)s"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-#, fuzzy
-msgid "blocked users cannot post"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:451 models/__init__.py:935
-#, fuzzy
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2861,58 +3169,77 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
+"Valitettavasti kommentteja (viimeisintä lukuun ottamatta) voi muokata vain "
+"%(minutes)s minuutin ajan julkaisemisen jälkeen"
msgstr[1] ""
+"Valitettavasti kommentteja (viimeisintä lukuun ottamatta) voi muokata vain "
+"%(minutes)s minuutin ajan julkaisemisen jälkeen"
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
+"Valitettavasti vain merkintöjen kirjoittajat ja moderaattorit voivat muokata "
+"kommentteja"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, ja voit kommentoida vain omia merkintöjäsi"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s pisteen maineen voidaksesi "
+"kommentoida merkintöjä. Voit kuitenkin kommentoida omia merkintöjäsi ja "
+"omiin kysymyksiisi esittämiäsi vastauksia"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
+"Tämä merkintä on poistettu, ja näkyy vain merkinnän kirjoittajalle sekä "
+"sivun ylläpitäjille ja moderaattoreille"
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
+"Valitettavasti vain moderaattorit, ylläpitäjät ja merkintöjen kirjoittavat "
+"voivat muokata poistettuja merkintöjä"
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
-msgstr ""
+msgstr "Valitettavasti tilisi on lukittu, etkä voi muokata merkintöjä"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, ja voit muokata vain omia merkintöjäsi"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen muokataksesi wiki-"
+"merkintöjä"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen muokataksesi muiden "
+"kirjoittamia merkintöjä"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2920,292 +3247,336 @@ msgid_plural ""
"Sorry, cannot delete your question since it has some upvoted answers posted "
"by other users"
msgstr[0] ""
+"Valitettavasti et voi poistaa kysymystäsi, sillä jonkun muun vastaus "
+"kysymykseen on saanut positiivisia ääniä"
msgstr[1] ""
+"Valitettavasti et voi postaa kysymystäsi, sillä muiden vastaukset "
+"kysymykseen ovat saaneet positiivisia ääniä"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
-msgstr ""
+msgstr "Valitettavasti tilisi on lukittu, etkä voi poistaa merkintöjä"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, ja voit poistaa vain omia merkintöjäsi"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen poistaaksesi muiden "
+"merkintöjä "
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
-msgstr ""
+msgstr "Valitettavasti tilisi on lukittu, etkä voi sulkea kysymyksiä"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
-msgstr ""
+msgstr "Valitettavasti tilisi on jäähyllä, etkä voi sulkea kysymyksiä"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen sulkeaksesi muiden "
+"merkintöjä "
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen sulkeaksesi oman "
+"kysymyksesi "
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
+"Valitettavasti vain ylläpitäjät ja moderaattorit, tai merkintöjen "
+"kirjoittajat, joilla on vähintään > %(min_rep)s:n maine, voivat avata "
+"kysymyksiä uudelleen."
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen avataksesi oman "
+"kysymyksesi uudelleen"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
+#: models/__init__.py:783
#, fuzzy
-msgid "blocked users cannot flag posts"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "Valitettavasti tilisi on lukittu, etkä voi poistaa merkintöjä"
-#: models/__init__.py:763
-#, fuzzy
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen tagätäksesi "
+"kysymyksiä uudelleen"
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr "olematonta liputusta ei voi poistaa"
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Valitettavasti tilisi on lukittu, etkä voi poistaa merkintöjä"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen tagätäksesi "
+"kysymyksiä uudelleen"
+msgstr[1] ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen tagätäksesi "
+"kysymyksiä uudelleen"
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "sinulla ei ole lupaa poistaa kaikkia liputuksia"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr "tällä merkinnällä ei ole liputuksia"
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
+"Valitettavasti vain kysymysten kysyjät, ylläpitäjät ja moderaattorit voivat "
+"tagätä poistettuja kysymyksiä uudelleen"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
-msgstr ""
+msgstr "Valitettavasti tilisi on lukittu, etkä voi tagätä kysymyksiä uudelleen"
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, ja voit tagätä vain omia kysymyksiäsi "
+"uudelleen"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen tagätäksesi "
+"kysymyksiä uudelleen"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
-msgstr ""
+msgstr "Valitettavasti tilisi on lukittu, etkä voi poistaa kommenttia"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
+"Valitettavasti tilisi on jäähyllä, ja voit poistaa vain omia kommenttejasi"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
+"Valitettavasti tarvitset vähintään %(min_rep)s:n maineen voidaksesi poistaa "
+"kommentteja"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "vanhoja ääniä ei voi muuttaa"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "%(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
-msgstr ""
+msgstr "kahdessa päivässä"
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "huomenna"
-#: models/__init__.py:1345
-#, fuzzy, python-format
+#: models/__init__.py:1475
+#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] "%(hr)d tunti sitten"
-msgstr[1] "%(hr)d tuntia sitten"
+msgstr[0] "%(hr)d:ssa tunnissa"
+msgstr[1] "%(hr)d:ssa tunnissa"
-#: models/__init__.py:1347
-#, fuzzy, python-format
+#: models/__init__.py:1477
+#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] "%(min)d minuutti sitten"
-msgstr[1] "%(min)d minuuttia sitten"
+msgstr[0] "%(min)d:ssä minuutissa"
+msgstr[1] "%(min)d:ssä minuutissa"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(days)d:ssä päivässä"
+msgstr[1] "%(days)d:ssä päivässä"
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
+"Uusien käyttäjien on odotettava %(days)s päivää, ennen kuin he voivat "
+"vastata omaan kysymykseensä. Voit vastata kysymykseen %(left)s:n päivän "
+"kuluttua."
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
-#, fuzzy
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr "anonyymi"
+msgstr "Anonyymi"
-#: models/__init__.py:1612 views/users.py:371
-#, fuzzy
+#: models/__init__.py:1749
msgid "Site Adminstrator"
-msgstr "Terveisin ylläpito"
+msgstr "Sivun ylläpitäjä"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
-msgstr ""
+msgstr "Foorumin Moderaattori"
-#: models/__init__.py:1616 views/users.py:375
-#, fuzzy
+#: models/__init__.py:1753
msgid "Suspended User"
-msgstr "Lähettäjä on"
+msgstr "Käyttäjä jäähyllä"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
-msgstr ""
+msgstr "Lukittu käyttäjä"
-#: models/__init__.py:1620 views/users.py:379
-#, fuzzy
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "Rekisteröity käyttäjä"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
-msgstr ""
+msgstr "Seurattu käyttäjä"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
-msgstr ""
+msgstr "Hyväksytty käyttäjä"
-#: models/__init__.py:1733
-#, fuzzy, python-format
+#: models/__init__.py:1870
+#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr "maineesi on %(reputation)s"
+msgstr "%(username)s mainepisteet ovat %(reputation)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "yksi kultamitali"
+msgstr[1] "%(count)d kultamitalia"
-#: models/__init__.py:1750
-#, fuzzy, python-format
+#: models/__init__.py:1887
+#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] ""
-"Obtaining silver badge requires significant patience. If you have received "
-"<span class=\"hidden\">%(count)d</span>one, that means you have greatly "
-"contributed to this community."
-msgstr[1] ""
-"Obtaining silver badge requires significant patience. If you have received "
-"%(count)d, that means you have greatly contributed to this community."
+msgstr[0] "yksi hopeamitali"
+msgstr[1] "%(count)d hopeamitali"
-#: models/__init__.py:1757
-#, fuzzy, python-format
+#: models/__init__.py:1894
+#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] ""
-"Jos olet aktiivinen osallistuja sivustolla, saat tämän kunniamerkin."
-msgstr[1] ""
-"Jos olet aktiivinen osallistuja sivustolla, saat tämän kunniamerkin."
+msgstr[0] "yksi pronssimitali"
+msgstr[1] "%(count)d pronssimitali"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s ja %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
+msgstr "käyttäjällä %(user)s on %(badges)s"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
-#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
-msgstr "Tagit"
+msgid "\"%(title)s\""
+msgstr "\"%(title)s\""
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
+"Onneksi olkoon, olet ansainnut '%(badge_name)s'-mitalin. Katso: <a href="
+"\"%(user_profile)s\">your profile</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
+msgstr "Kiitos! Tagitilauksesi on nyt tallennettu."
#: models/badges.py:129
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr "Poisti oman postauksen, jolla oli -3 tai vähemmän ääniä"
+msgstr ""
+"Oma merkintä poistettu %(votes)s:n tai useamman positiivisen äänen jälkeen"
#: models/badges.py:133
msgid "Disciplined"
msgstr "Kurinalainen"
#: models/badges.py:151
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr "Poisti oman postauksen, jolla oli -3 tai vähemmän ääniä"
+msgstr ""
+"Oma merkintä poistettu %(votes)s:n tai useamman negatiivisen äänen jälkeen"
#: models/badges.py:155
msgid "Peer Pressure"
-msgstr "Ryhmäpainostus"
+msgstr "Ryhmäpaine"
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
-msgstr ""
+msgstr "Vastaukselle vähintään %(votes)s positiivista ääntä ensimmäistä kertaa"
#: models/badges.py:178
msgid "Teacher"
@@ -3216,47 +3587,45 @@ msgid "Supporter"
msgstr "Tukija"
#: models/badges.py:219
-#, fuzzy
msgid "First upvote"
-msgstr "Ensimmäinen ääni"
+msgstr "Ensimmäinen positiivinen ääni"
#: models/badges.py:227
msgid "Critic"
msgstr "Kriitikko"
#: models/badges.py:228
-#, fuzzy
msgid "First downvote"
-msgstr "Ensimmäinen alasäänestys"
+msgstr "Ensimmäinen negatiivinen ääni"
#: models/badges.py:237
-#, fuzzy
msgid "Civic Duty"
msgstr "Kansalaisvelvollisuus"
#: models/badges.py:238
-#, fuzzy, python-format
+#, python-format
msgid "Voted %(num)s times"
-msgstr "Äänestetty kolmesataa kertaa"
+msgstr "Äänestetty %(num)s kertaa"
#: models/badges.py:252
-#, fuzzy, python-format
+#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr "Vastasi omaan kysymykseensä, joka sai vähintään 3 ääntä"
+msgstr ""
+"Vastannut omaan kysymykseensä, joka on saanut vähintään %(num)s positiivista "
+"ääntä"
#: models/badges.py:256
msgid "Self-Learner"
msgstr "Itseoppija"
#: models/badges.py:304
-#, fuzzy
msgid "Nice Answer"
-msgstr "Hyvä vastaus"
+msgstr "Melko hyvä vastaus"
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
-#, fuzzy, python-format
+#, python-format
msgid "Answer voted up %(num)s times"
-msgstr "Vastausta äänestetty kymmenen kertaa"
+msgstr "Vastaus saanut %(num)s positiviisita ääntä"
#: models/badges.py:316
msgid "Good Answer"
@@ -3271,9 +3640,9 @@ msgid "Nice Question"
msgstr "Hyvä kysymys"
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
-#, fuzzy, python-format
+#, python-format
msgid "Question voted up %(num)s times"
-msgstr "Kysymystä äänestetty kymmenen kertaa"
+msgstr "Kysymys saanut %(num)s positiivista ääntä"
#: models/badges.py:352
msgid "Good Question"
@@ -3285,47 +3654,46 @@ msgstr "Loistava kysymys"
#: models/badges.py:376
msgid "Student"
-msgstr "Oppilas"
+msgstr "Opiskelija"
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
-msgstr "Kysyi ensimmäisen kysymyksen joka sai vähintään yhden äänen"
+msgstr ""
+"Kysyi ensimmäisen kysymyksen joka sai vähintään yhden positiivisen äänen"
#: models/badges.py:414
msgid "Popular Question"
msgstr "Suosittu kysymys"
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
-#, fuzzy, python-format
+#, python-format
msgid "Asked a question with %(views)s views"
-msgstr "Kysyi kysymyksen, joka sai vähintään 2500 katselijaa"
+msgstr "Kysyit kysymyksen, jota on katsottu %(views)s kertaa"
#: models/badges.py:425
msgid "Notable Question"
msgstr "Huomattava kysymys"
#: models/badges.py:436
-#, fuzzy
msgid "Famous Question"
-msgstr "Tunnettu kysymys"
+msgstr "Kuuluista kysymys"
#: models/badges.py:450
-#, fuzzy
msgid "Asked a question and accepted an answer"
-msgstr "Kysymyksellä ei ole hyväksyttyjä vastauksia"
+msgstr "Kysyi kysymyksen ja hyväksyi vastauksen"
#: models/badges.py:453
msgid "Scholar"
-msgstr "Oppilas"
+msgstr "Oppinut"
#: models/badges.py:495
msgid "Enlightened"
msgstr "Valistunut"
#: models/badges.py:499
-#, fuzzy, python-format
+#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr "tämä vastaus on valittu oikeaksi"
+msgstr "Ensimmäinen vastaus hyväksyttiin %(num)s:lla tai useammalla äänellä"
#: models/badges.py:507
msgid "Guru"
@@ -3334,14 +3702,16 @@ msgstr "Guru"
#: models/badges.py:510
#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Vastaus hyväksyttiin %(num)s:lla tai useammalla äänellä"
#: models/badges.py:518
-#, fuzzy, python-format
+#, python-format
msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
-msgstr "Vastasi kysymykseen 60 päivää myöhemmin ja sai vähintään viisi ääntä"
+msgstr ""
+"Vastannut kysymykseen yli %(days)s päivää myöhemmin ja saanut vähintään "
+"%(votes)s ääntä"
#: models/badges.py:525
msgid "Necromancer"
@@ -3349,11 +3719,11 @@ msgstr "Kuolleistaherättäjä"
#: models/badges.py:548
msgid "Citizen Patrol"
-msgstr ""
+msgstr "Kansalaispartio"
#: models/badges.py:551
msgid "First flagged post"
-msgstr ""
+msgstr "Ensimmäinen liputettu merkintä"
#: models/badges.py:563
msgid "Cleanup"
@@ -3361,11 +3731,11 @@ msgstr "Siivoaja"
#: models/badges.py:566
msgid "First rollback"
-msgstr ""
+msgstr "Ensimmäinen takaisinkierto"
#: models/badges.py:577
msgid "Pundit"
-msgstr ""
+msgstr "Asiantuntija"
#: models/badges.py:580
msgid "Left 10 comments with score of 10 or more"
@@ -3373,7 +3743,7 @@ msgstr "Jätti kymmenen kommenttia, joka sai kymmenen ääntä tai enemmän"
#: models/badges.py:612
msgid "Editor"
-msgstr "Muokkaaja"
+msgstr "Päätoimittaja"
#: models/badges.py:615
msgid "First edit"
@@ -3381,12 +3751,12 @@ msgstr "Ensimmäinen muokkaus"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Apulaispäätoimittaja"
#: models/badges.py:627
-#, fuzzy, python-format
+#, python-format
msgid "Edited %(num)s entries"
-msgstr "Muokkasi sata merkintää"
+msgstr "Muokannut %(num)s merkintää"
#: models/badges.py:634
msgid "Organizer"
@@ -3394,20 +3764,20 @@ msgstr "Järjestelijä"
#: models/badges.py:637
msgid "First retag"
-msgstr "Ensimmäinen uudelleentagitus"
+msgstr "Ensimmäinen uudelleentagääminen"
#: models/badges.py:644
msgid "Autobiographer"
-msgstr "Elämänkerran kirjoittaja"
+msgstr "Elämäkertakirjailija"
#: models/badges.py:647
msgid "Completed all user profile fields"
msgstr "Täytti kaikki profiilinsa kentät"
#: models/badges.py:663
-#, fuzzy, python-format
+#, python-format
msgid "Question favorited by %(num)s users"
-msgstr "25 käyttäjää lisäsi kysymyksen suosikikseen"
+msgstr "%(num)s:n käyttäjän lempikysymys"
#: models/badges.py:689
msgid "Stellar Question"
@@ -3419,3061 +3789,3812 @@ msgstr "Suosikkikysymys"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Intoilija"
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Käynyt sivulla joka päivä %(num)s päivää peräkkäin"
#: models/badges.py:732
-#, fuzzy
msgid "Commentator"
-msgstr "Dokumentaatio"
+msgstr "Selostaja"
#: models/badges.py:736
-#, fuzzy, python-format
+#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr "vastausta kommentoitiin %(comment_count)s kerran"
+msgstr "Kirjoittanut %(num_comments)s kommenttia"
#: models/badges.py:752
msgid "Taxonomist"
msgstr "Taksonomi"
#: models/badges.py:756
-#, fuzzy, python-format
+#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr "Loi tagin, jota käytetään yli viidessäkymmenessä kysymyksessä"
+msgstr "Luonut %(num)s kysymyksessä käytetyn tagin"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
-msgstr "Ekspertti"
+msgstr "Erityisasiantuntija"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Aktiivinen yhden tagin alla"
-#: models/content.py:549
-#, fuzzy
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "tämä kysymys valittiin suosikiksi"
+msgstr "Valitettavasti tämä kysymys on poistettu, eikä ole enää saatavilla"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
+"Valitettavasti etsimäsi vastaus ei ole enää saatavilla, sillä sitä edeltävä "
+"kysymys on poistettu"
-#: models/content.py:572
-#, fuzzy
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "tämä kysymys valittiin suosikiksi"
+msgstr "Valitettavasti tämä vastaus on poistettu eikä ole enää saatavilla"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
+"Valitettavasti etsimäsi kommentti ei ole enää saatavilla, sillä alkuperäinen "
+"kysymys on poistettu"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
+"Valitettavasti etsimäsi kommentti ei ole enää saatavilla, sillä alkuperäinen "
+"vastaus on poistettu"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" ja \"%s\""
-#: models/question.py:66
-#, fuzzy
+#: models/question.py:57
msgid "\" and more"
-msgstr "Ota selvää"
-
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s muokkasi kysymystä"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s kommentoi kysymystä"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s kommentoi vastauksia"
+msgstr "\" ja enemmän"
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s kommentoi vastausta"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Tarkistuta sähköpostiosoite"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
-msgstr ""
+msgstr "<em>Moderaattorin vaihtama. Syy:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
+"%(points)s pistettä lisätty käyttäjän %(username)s panoksesta kysymykseen "
+"%(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
+"%(points)s pistettä vähennetty käyttäjän %(username)s panoksesta kysymykseen "
+"%(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "kiinnostava"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "jätetty huomioitta"
-#: models/user.py:264
-#, fuzzy
+#: models/user.py:266
msgid "Entire forum"
-msgstr "Koko askbot"
+msgstr "Koko foorumi"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Omat kysymykseni"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Omat vastaukseni"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Valikoidut kysymykset"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
-msgstr ""
+msgstr "Maininnat ja vastaukset kommentteihin"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Heti"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Päivittäin"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Viikottain"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Ei sähköpostia"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Kirjoita <span>käyttäjänimesi</span>, ja kirjaudu sitten sisään"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr "(tai valitse toinen sisäänkirjautumistapa yllä olevista)"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "Kirjaudu sisään"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Vaihda sähköpostiosoitettasi"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Tallenna sähköpostiosoitteesi"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Tallenna sähköpostiosoite"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Peruuta"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Tarkistuta sähköpostiosoite"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "Sähköpostia ei vaihdettu"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "Sähköposti muutettu"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Sähköpostiosoite hyväksytty"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Tarkistuta sähköpostiosoite"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "Rekisteröinti"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Rekisteröinti"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "valitse yksi vaihtoehto"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Sisäänkirjautuminen"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
-msgstr ""
+msgstr "Kiitos Q&A-foorumille rekisteröitymisestä!"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "Tunnuksen tiedot:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
-msgstr "Käyttäjätunnus:"
+msgstr "Käyttäjänimi:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Salasana:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
-msgstr "Kirjaudu täällä:"
+msgstr "Kirjaudu sisään täällä:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
-msgstr "Terveisin ylläpito"
+"Q&A Forum Administrator"
+msgstr "Terveisin Q&A-foorumin ylläpito"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Terveiset"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
-msgstr ""
+msgstr "Käyttääksesi tätä foorumia, klikkaa seuraavaa linkkiä:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
+"Yllä olevan linkin klikkaaminen auttaa meitä vahvistamaan "
+"sähköpostiosoitteesi"
#: skins/common/templates/authopenid/email_validation.txt:9
-msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
-"for any inconvenience"
-msgstr ""
-
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, python-format
-msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
-msgstr ""
-
-#: skins/old/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
"If you believe that this message was sent in mistake - \n"
"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"for any inconvenience"
msgstr ""
+"Jos luulet, että tämä viesti lähetettiin sinulle vahingossa\n"
+"lisätoimintoja ei vaadita. Jätä tämä sähköposti huomiotta, pyydämme anteeksi "
+"aiheuttamaamme häiriötä"
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Kirjaudu ulos"
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr "käyttäjän %(username)s gravatar-kuva"
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "Uloskirjautuminen onnistui"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr ""
-
-#: utils/decorators.py:109
-msgid "Please login to post"
-msgstr ""
-
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
msgstr ""
+"Saatat edelleen olla kirjautunut sisään OpenID-palveluun. Kirjaudu ulos "
+"palvelusta, jos haluat."
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "vaadittu kenttä"
-
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "Valitse tunnus"
-
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "käyttäjätunnus on pakollinen"
-
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "tämä nimi on jo käytössä"
-
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "tämä nimi ei ole sallittu"
-
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "käyttäjää ei ole tällä nimellä"
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Kirjautuminen"
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
+"\n"
+"\n"
+"<span class=\"strong big\">Vastauksesi kysymykseen</span> <i>\"<strong>"
+"%(title)s</strong> %(summary)s...\"</i> <span class=\"strong big\">on "
+"tallennettu ja julkaistaan, kun kirjaudut sisään.</span>"
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
-"käyttäjätunnus voi koostua aakkosista (a-z), välilyönneistä ( ) ja "
-"alaviivoista (_)"
-
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "sähköpostiosoitteesi"
-
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "sähköpostiosoite vaaditaan"
-
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "syötä toimiva sähköpostiosoite"
+"<span class=\"strong big\">Kysymyksesi</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">on tallennettu ja "
+"julkaistaan, kun kirjaudut sisään.</span>"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
-msgstr "tämä sähköpostiosoite on jo käytössä"
-
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Salasana"
-
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "salasana vaaditaan"
-
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Salasana uudestaan"
-
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "anna salasana uudestaan"
-
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
+#: skins/common/templates/authopenid/signin.html:28
+#, fuzzy
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
msgstr ""
+"Valitse alla olevista parhaaksi valitsemasi turvallista OpenID-menetelmää "
+"tai vastaavaa käyttävä sisäänkirjautumispalvelu. Salasanasi tässä ulkoisessa "
+"palvelussa pidetään aina salassa eikä sinun tarvitse muistaa tai luoda "
+"toista."
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "kaksi päivää sitten"
-
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "eilen"
-
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] "%(hr)d tunti sitten"
-msgstr[1] "%(hr)d tuntia sitten"
-
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] "%(min)d minuutti sitten"
-msgstr[1] "%(min)d minuuttia sitten"
-
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
msgstr ""
+"Kannattaa varmistaa, että tämänhetkinen kirjautumistapasi toimii edelleen, "
+"tai lisätä uusi. Klikkaa jotakin alla olevista kuvakkeista tarkistaaksesi/"
+"vaihtaaksesi tai lisätäksesi uusia sisäänkirjautumistapoja."
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
msgstr ""
+"Lisää pysyvämpi sisäänkirjautumistapa klikkaamalla jotakin alla olevista "
+"kuvakkeista. Näin sinun ei tarvitse aina kirjautua sisään sähköpostitse."
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
msgstr ""
+"Klikkaa jotakin alla olevista kuvakkeista lisätäksesi uuden "
+"sisäänkirjautumistavan tai uudelleenvahvistaaksesi tämänhetkisen."
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
-
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
msgstr ""
+"Sinulla ei tällä hetkellä ole tapaa kirjautua sisään, ole hyvä, ja lisää "
+"yksi tai useampi sisäänkirjautumistapa klikkaamalla mitä tahansa alla "
+"olevista kuvakkeista"
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
msgstr ""
+"Tarkasta sähköpostisi ja klikkaa liittenä olevaa linkkiä yhdistääksesi "
+"takaisin tiliisi"
-#: views/commands.py:122
+#: skins/common/templates/authopenid/signin.html:89
#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
-
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
+msgid "or enter your <span>user name and password</span>, then sign in"
msgstr ""
+"Kirjoita tähän <span>käyttäjänimesi ja salasanasi</span>, ja kirjaudu sitten "
+"sisään"
-#: views/commands.py:207
+#: skins/common/templates/authopenid/signin.html:93
#, fuzzy
-msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
+msgid "Please, sign in"
+msgstr "Kirjaudu sisään täällä:"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr ""
-"Your subscription is saved, but email address %(email)s needs to be "
-"validated, please see <a href='%(details_url)s'>more details here</a>"
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "SIsäänkirjautuminen epäonnistui, yritä uudelleen"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "sähköpostien päivitysväli on vaihdettu päivittäiseksi"
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr "Sisäänkirjautuminen tai sähköposti"
-#: views/commands.py:400
-#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Salasana"
-#: views/commands.py:409
-#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
msgstr ""
+"Vaihtaaksesi salasanaasi kirjoita uusi salasanasi kahdesti ja klikkaa sitten "
+"'lähetä'"
-#: views/commands.py:542
-#, fuzzy
-msgid "Please sign in to vote"
-msgstr "Kirjaudu täällä:"
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "Uusi salasana"
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "kysymys ja vastaus -keskustelupalstan palaute"
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr "Kirjoita uudelleen"
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "Kiitos palautteestasi!"
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Tässä ovat tämänhetkiset sisäänkirjautumistapasi"
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "palveluntarjoaja"
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "%(q_num)s kysymys"
-msgstr[1] "%(q_num)s kysymystä"
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr "viimeksi käytetty"
-#: views/readers.py:159
-#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s kysymys"
-msgstr[1] "%(q_num)s kysymystä"
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "halutessasi poista"
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s kunniamerkki"
-msgstr[1] "%(badge_count)d %(badge_level)s kunniamerkkiä"
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "poista"
-#: views/readers.py:415
-#, fuzzy
-msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "tämä kysymys valittiin suosikiksi"
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr "ei voida poistaa"
-#: views/users.py:211
-#, fuzzy
-msgid "moderate this user"
-msgstr "Hallitse tätä käyttäjää"
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr "Ongelmia sisäänkirjautumisessa?"
-#: views/users.py:212
-#, fuzzy
-msgid "moderate user"
-msgstr "hallitse-kayttajaa/"
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Kirjoita sähköpostiosoitteesi alle saadaksesi uuden koodin"
-#: views/users.py:386
-msgid "user profile"
-msgstr "käyttäjäprofiili"
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr "Kirjoita sähköpostiosoitteesi alle elvyttääksesi tilisi"
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "käyttäjäprofiilin yhteenveto"
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr "elvytä tilisi sähköpostin kautta"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "viimeisimmät"
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "Lähetä uusi elvytyskoodi"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "profiili - viimeisimmät"
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "Elvytä tilisi sähköpostin kautta"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "kommentteja ja vastauksia muihin kysymyksiin"
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr "Rekisteröidy klikkaamalla jotakin alla olevista kuvakkeista"
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "profiili - vastaukset"
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr "tai luo uusi käyttäjänimi ja salasana täällä"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "äänihistoria"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Luo käyttäjätunnus ja salasana"
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "profiili - äänet"
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "user karma"
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "Profiili - äänet"
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"Lue ja kirjoita kaksi alla näkyvää sanaa auttaaksesi meitä estämään "
+"automaattisten tilien luomista."
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "käyttäjien suosikit"
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "tai"
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "profiili - suosikkikysymykset"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "palaa OpenID-palvelun kirjautumiseen"
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "muutokset talletettu"
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "lisää avatar"
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "sähköpostipäivitykset peruttu"
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "Vaihda avataria"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr ""
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "Nykyinen avatarisi:"
-#: views/users.py:974
-msgid "profile - email subscriptions"
-msgstr "profiili - sähköpostitilaukset"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "Et ole vielä ladannut avataria. Lisää avatar nyt."
-#: views/writers.py:58
-#, fuzzy
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Lataa kuva"
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr "hyväksytyt tiedostotyypit ovat '%(file_types)s'"
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr "Tagää kysymys uudelleen"
-#: views/writers.py:91
-#, fuzzy, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "maksimi tiedostonkoko on %s kilotavua"
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "Valitse uusi Vakio"
-#: views/writers.py:99
-#, fuzzy
-msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr ""
-"Tiedoston lähetyksessä tapahtui virhe. Ota yhteyttä sivuston ylläpitäjiin. "
-"Kiitos. %s"
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "Lisää"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "Olet aina tervetullut kysymään!"
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "poista avatar"
-#: views/writers.py:492
-#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "näytä vastaamattomat kysymykset"
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "Valitse avatarit, jotka haluat poistaa"
-#: views/writers.py:598
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
-msgstr ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+"Sinulla ei ole poistettavia avatareja. Ole hyvä ja <a href="
+"\"%(avatar_change_url)s\">lisää avatar</a> nyt."
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr "Poista Nämä"
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr "vaihda paikkaa kysymyksen kanssa"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "linkki"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "linkki"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "palauta"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Näytä loukkaavaksi liputetut merkinnät"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "poista liputus"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"merkkaa loukkaavaksi (sisältää esim. roskapostia, mainostusta tai loukkaavaa "
+"tekstiä)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "liputa loukkaavaksi"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "muokkaa"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "tämä vastaus on valittu oikeaksi"
-#: views/writers.py:646
-#, fuzzy
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr "merkkaa tämä vastaus oikeaksi (klikkaa uudelleen peruaksesi)"
-#: views/writers.py:654
+#: skins/common/templates/question/closed_question_info.html:2
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
msgstr ""
+"Kysymys on suljettu seuraavasta syystä: <b>\"%(close_reason)s\"</b> <i>by"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
-
-#~ msgid "Sites"
-#~ msgstr "Sivustot"
-
-#~ msgid "Documentation"
-#~ msgstr "Dokumentaatio"
-
-#~ msgid "Change password"
-#~ msgstr "Vaihda salasana"
-
-#~ msgid "Log out"
-#~ msgstr "Kirjaudu ulos"
-
-#~ msgid "Home"
-#~ msgstr "Koti"
-
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Korjaa allaolevat virhe:"
-#~ msgstr[1] "Korjaa allaoleva virheet:"
-
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "Ei oikeuksia"
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "sulkemispäivä %(closed_at)s"
-#~ msgid "Edit Site Settings"
-#~ msgstr "Muokkaa sivuston asetuksia"
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "avaa uudelleen"
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "Ryhmäasetukset: %(name)s"
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "sulje"
-#~ msgid "Uncollapse all"
-#~ msgstr "Luhista kaikki"
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "tagää uudelleen"
+#: skins/common/templates/widgets/edit_post.html:22
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Syötä käyttäjätunnus ja salasana"
+msgid ", one of these is required"
+msgstr "yksi näistä vaaditaan"
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "valitse yksi vaihtoehto"
-
-#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "kirjautuminen/"
-
-#~ msgid "Change email"
-#~ msgstr "Change Email"
-
-#~ msgid "Save your email address"
-#~ msgstr "Tallenna sähköpostiosoitteesi"
-
-#~ msgid "change %(email)s info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Enter your new email into the box below</span> "
-#~ "if you'd like to use another email for <strong>update subscriptions</"
-#~ "strong>.<br>Currently you are using <strong>%(email)s</strong>"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<span class='strong big'>Please enter your email address in the box below."
-#~ "</span> Valid email address is required on this Q&amp;A forum. If you "
-#~ "like, you can <strong>receive updates</strong> on interesting questions "
-#~ "or entire forum via email. Also, your email is used to create a unique <a "
-#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
-#~ "account. Email addresses are never shown or otherwise shared with anybody "
-#~ "else."
-
-#~ msgid "Your new Email"
-#~ msgstr "Uusi sähköpostiosoite"
-
-#~ msgid "Your Email"
-#~ msgstr "Sähköpostiosoite"
+msgid "tags:"
+msgstr "tagit"
-#~ msgid "Save Email"
-#~ msgstr "Tallenna sähköpostiosoite"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(pakollinen)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Reaaliaikainen Markdown-muokkain päälle/pois"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "piilota esikatselu"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Mielenkiintoiset tagit"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "lisää"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Hylätyt tagit"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Näytön tagisuodatin"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Sivua ei löydy"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Sivua ei löytynyt."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Tämä saattoi tapahtua seuraavista syistä:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "kysymys tai vastaus on poistettu;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "URL-osoitteessa on virhe;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"sivu jota yritit käyttää on suojattu tai sinulla ei ole tarpeeksi ääniä, "
+"katso"
-#~ msgid "Cancel"
-#~ msgstr "Peruuta"
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "ukk"
-#~ msgid "Validate email"
-#~ msgstr "Tarkistuta sähköpostiosoite"
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "jos uskot, että tämä 404-virhe on aiheeton, ole hyvä"
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr ""
-#~ "<span class=\"strong big\">An email with a validation link has been sent "
-#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
-#~ "your web browser. Email validation is necessary to help insure the proper "
-#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>."
-
-#~ msgid "Email not changed"
-#~ msgstr "Sähköpostia ei vaihdettu"
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "raportoi tästä ongelmasta"
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your email address %(email)s has not been "
-#~ "changed.</span> If you decide to change it later - you can always do it "
-#~ "by editing it in your user profile or by using the <a "
-#~ "href='%(change_email_url)s'><strong>previous form</strong></a> again."
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "takaisin edelliselle sivulle"
-#~ msgid "Email changed"
-#~ msgstr "Sähköposti muutettu"
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "näytä kaikki kysymykset"
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr ""
-#~ "<span class='big strong'>Your email address is now set to %(email)s.</"
-#~ "span> Updates on the questions that you like most will be sent to this "
-#~ "address. Email notifications are sent once a day or less frequently - "
-#~ "only when there are any news."
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "näytä kaikki tagit"
-#~ msgid "Email verified"
-#~ msgstr "Sähköpostiosoite hyväksytty"
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "Sisäinen palvelinvirhe"
-#~ msgid "thanks for verifying email"
-#~ msgstr ""
-#~ "<span class=\"big strong\">Thank you for verifying your email!</span> Now "
-#~ "you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
-#~ "if you find a very interesting question you can <strong>subscribe for the "
-#~ "updates</strong> - then will be notified about changes <strong>once a "
-#~ "day</strong> or less frequently."
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"järjestelmävirhe on lisätty logeihimme, virhe korjataan mahdollisimman pian"
-#~ msgid "email key not sent"
-#~ msgstr "Validation email not sent"
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "halutessasi voit raportoida tästä virheestä ylläpidolle"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "<span class='big strong'>Your current email address %(email)s has been "
-#~ "validated before</span> so the new key was not sent. You can <a "
-#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
-#~ "necessary."
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "katso uusimmat kysymykset"
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Rekisteröidy"
-
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "%(provider)s login.</span> Please create your <strong>screen name</"
-#~ "strong> and save your <strong>email</strong> address. Saved email address "
-#~ "will let you <strong>subscribe for the updates</strong> on the most "
-#~ "interesting questions and will be used to create and retrieve your unique "
-#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
-#~ "a>.</p>"
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "Tagit"
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "<p><span class='strong big'>Oops... looks like screen name %(username)s "
-#~ "is already used in another account.</span></p><p>Please choose another "
-#~ "screen name to use with your %(provider)s login. Also, a valid email "
-#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>"
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Muokkaa vastausta"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "takaisin"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "tarkistus"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "valitse tarkistus"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Tallenna muokkaus"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "näytä esikatselu"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Esitä kysymys"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "%(provider)s login.</span></p><p>You can either keep your <strong>screen "
-#~ "name</strong> the same as your %(provider)s login name or choose some "
-#~ "other nickname.</p><p>Also, please save a valid <strong>email</strong> "
-#~ "address. With the email you can <strong>subscribe for the updates</"
-#~ "strong> on the most interesting questions. Email address is also used to "
-#~ "create and retrieve your unique avatar image - <a "
-#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Mitali"
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "Facebook login.</span> Please create your <strong>screen name</strong> "
-#~ "and save your <strong>email</strong> address. Saved email address will "
-#~ "let you <strong>subscribe for the updates</strong> on the most "
-#~ "interesting questions and will be used to create and retrieve your unique "
-#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
-#~ "a>.</p>"
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr "\"%(name)s\"-mitali"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Tämä tunnus on jo käytössä."
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr "%(description)s"
-#~ msgid "Screen name label"
-#~ msgstr "Käyttäjätunnus"
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "käyttäjä sai tämän mitalin:"
+msgstr[1] "käyttäjää sai tämän mitalin:"
-#~ msgid "Email address label"
-#~ msgstr "Sähköpostiosoite"
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Mitalit"
-#~ msgid "receive updates motivational blurb"
-#~ msgstr ""
-#~ "<strong>Receive forum updates by email</strong> - this will help our "
-#~ "community grow and become more useful.<br/>By default <span "
-#~ "class='orange'>Q&amp;A</span> forum sends up to <strong>one email digest "
-#~ "per week</strong> - only when there is anything new.<br/>If you like, "
-#~ "please adjust this now or any time later from your user account."
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr "Yhteisö palkitsee sinut kysymyksistäsi, vastauksistasi ja äänistäsi."
-#~ msgid "please select one of the options above"
-#~ msgstr "valitse yksi vaihtoehto"
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Alla on lista saatavilla olevista mitaleista ja siitä, kuinka monta kertaa\n"
+"kukin on myönnetty. Jos sinulla on hauskoja ideoita mitalien suhteen, jätä "
+"meille <a href='%(feedback_faq_url)s'>palautetta</a>\n"
-#~ msgid "create account"
-#~ msgstr "Luo tunnus"
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Mitalitasot"
-#~ msgid "Logout"
-#~ msgstr "Kirjaudu ulos"
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "kultamitali: korkein kunnia, erittäin harvinainen"
-#~ msgid "User login"
-#~ msgstr "Kirjautuminen"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr "hopeamitali: myönnetään erittäin korkealaatuisesta panoksesta"
+#: skins/default/templates/badges.html:51
#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr "hopeamitali: myönnetään erittäin korkealaatuisesta panoksesta"
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "pronssimitali: annetaan usein erikoiskunniana"
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Sulje kysymys"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Sulje kysymys"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Syyt"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "Hyväksytty sulkemista varten"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "UKK"
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Usein Kysytyt Kysymykset"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Minkälaisia kysymyksiä voin kysyä täällä?"
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"Kaikista tärkeintä on, että kysymyksesi liittyy läheisesti <strong>tämän "
+"sivuston aihepiiriin</strong>."
+#: skins/default/templates/faq_static.html:8
#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Syötä käyttäjätunnus ja salasana"
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Ennen kuin kysyt, käytä hakua avuksesi, sillä joku on voinut jo vastata "
+"kysymykseesi."
+#: skins/default/templates/faq_static.html:10
#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "ei sähköpostia"
+msgid "What kinds of questions should be avoided?"
+msgstr "Minkälaisia kysymyksiä minun pitäisi välttää?"
-#~ msgid "Password"
-#~ msgstr "Salasana"
-
-#~ msgid "Login"
-#~ msgstr "Kirjautuminen"
-
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Uusi salasana asetettu"
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Yritä välttää kysymyksiä, jotka eivät liity tähän sivustoon, ovat liian "
+"subjektiivisia ja väittelyä hakevia."
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "anna salasana uudestaan"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Mitä minun pitäisi välttää vastauksissani?"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "nähty viimeksi"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#~ msgid "delete"
-#~ msgstr "poista"
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Kuka vastaa sivusta?"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Tunnus poistettu."
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Lyhyt vastaus on: <strong>sinä</strong>."
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Vieläkin kysymyksiä?"
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Tätä sivua hallinnoivat käyttäjät itse."
+#: skins/default/templates/faq_static.html:18
#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Anna tunnuksellesi uusi salasana."
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Mainepistejärjestelmä antaa käyttäjille mahdollisuuden ansaita oikeuksia "
+"erilaisiin moderointitehtäviin"
+#: skins/default/templates/faq_static.html:20
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Anna tunnuksellesi uusi salasana."
-
-#~ msgid "Why use OpenID?"
-#~ msgstr "Miksi käyttää OpenID:tä?"
+msgid "How does karma system work?"
+msgstr "Miten mainepistejärjestelmä toimii?"
-#~ msgid "with openid it is easier"
-#~ msgstr "With the OpenID you don't need to create new username and password."
-
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
-
-#~ msgid "openid is widely adopted"
-#~ msgstr ""
-#~ "Maailmanlaajuisesti OpenID:tä käyttää yli 160 miljoonaa ihmistä. "
-#~ "Kymmenettuhannet sivustot käyttävät OpenID-palvelua kirjautumisessa "
-#~ "hyväkseen."
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#~ msgid "openid is supported open standard"
-#~ msgstr ""
-#~ "OpenID on avoin standardi, jota käyttää moni yritys ja organisaatio."
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Esimerkiksi, jos kysyt mielenkiintoisen kysymyksen tai annat hyödyllisen "
+"vastauksen, panoksesi saa positiivisia ääniä. Jos vastauksesi taas on "
+"harhaan johtava, se saa negatiivisia ääniä. Ansaitset <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> pistettä jokaisesta saamastasi "
+"positiivisesta äänestä, ja jokainen negatiivinen ääni vähentää <strong>"
+"%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> pistettä. Pisteiden "
+"kerääntymisen enimmäismäärä on <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</"
+"strong> pistettä päivässä per kysymys tai vastaus. Alla olevasta taulukosta "
+"selviää, kuinka paljon mainepisteitä tarvitset ollaksesi oikeutettu mihinkin "
+"ylläpitotehtävään."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "lisaa-aani"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "lisää kommentteja"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "poista-aani"
+
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr "hyväksy oma vastauksesi omaan kysymykseesi"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "avaa ja sulje omia kysymyksiä"
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "tagää muiden kysymyksiä uudelleen"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "muokkaa yhteisöwikin kysymyksiä"
+
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr "muokkaa vastauksia"
+
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr "poista kommentteja"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Tarvitseeko minun luoda erillinen tunnus jotta voin rekisteröityä?"
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"Ei, sinun ei ole pakko. Voit kirjautua sisään minkä tahansa OpenID:tä "
+"tukevan palvelun kautta (esim. Google, Yahoo, AOL).\""
-#~ msgid "Find out more"
-#~ msgstr "Ota selvää"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "\"Kirjaudu sisään nyt!\""
-#~ msgid "Get OpenID"
-#~ msgstr "Hanki OpenID"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Miksi muut voivat muokata kysymyksiäni tai vastauksiani?"
-#~ msgid "Signup"
-#~ msgstr "Kirjaudu"
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Tämän sivuston tavoite on..."
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "valitse yksi vaihtoehto"
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Kokeneet käyttäjät voivat muokata vastauksia ja kysymyksiä kuten wikiä. Tämä "
+"nostaa sivuston laatua."
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Luo tunnus ja salasana"
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "Jos et pidä tästä, kunnioitamme valintaasi."
-#~ msgid "Create login name and password"
-#~ msgstr "Luo tunnus ja salasana"
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Vieläkin kysymyksiä?"
-#~ msgid "Traditional signup info"
-#~ msgstr ""
-#~ "<span class='strong big'>If you prefer, create your forum login name and "
-#~ "password here. However</span>, please keep in mind that we also support "
-#~ "<strong>OpenID</strong> login method. With <strong>OpenID</strong> you "
-#~ "can simply reuse your external login (e.g. Gmail or AOL) without ever "
-#~ "sharing your login details with anyone and having to remember yet another "
-#~ "password."
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"<a href='%(ask_question_url)s'>Esitä kysymyksesi</a> ja teet yhteisöstämme "
+"entistäkin paremman!"
-#~ msgid "Create Account"
-#~ msgstr "Luo tunnus"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Palaute"
-#~ msgid "or"
-#~ msgstr "tai"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Anna meille palautetta!"
-#~ msgid "return to OpenID login"
-#~ msgstr "palaa OpenID-palvelun kirjautumiseen"
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Hyvä %(user_name)s</span>, otamme mielellään "
+"vastaan palautetta sinulta. Kirjoita viestisi ja lähetä se käyttämällä alla "
+"olevaa lomaketta."
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Hyvä vierailija</span>, otamme mielellään vastaan "
+"palautetta. Kirjoita viestisi ja lähetä se käyttämällä alla olevaa lomaketta."
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Vaihda tageja"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+"(jos haluat vastauksen, lisää voimassa oleva sähköpostiosoite tai klikkaa "
+"raksi alla olevaan ruutuun)"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Tunnuksen tiedot:"
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(tämä kenttä on pakollinen)"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "muutokset talletettu"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(Ole hyvä ja selvitä captcha)"
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "laheta/"
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Lähetä"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "poisti vastauksen"
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Hei, tämä on palauteviesti sivun %(site_title)s foorumilta.\n"
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "poisti vastauksen"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr "Apua"
-#~ msgid "answer permanent link"
-#~ msgstr "vastauksen linkki"
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "Tervetuloa %(username)s,"
-#~ msgid "permanent link"
-#~ msgstr "pysyväislinkki"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Tervetuloa,"
-#~ msgid "edit"
-#~ msgstr "muokkaa"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr "Kiitos, että käytät sovellusta %(app_name)s! Se toimii näin."
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "merkkaa loukkaavaksi (sisältää esim. roskapostia, mainostusta tai "
-#~ "loukkaavaa tekstiä)"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+"Tämä sivu on kysymyksiä ja vastauksia varten, ei avoimille keskusteluille."
-#~ msgid "flag offensive"
-#~ msgstr "merkkaa loukkaavaksi"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+"Kaikkien tulisi käyttää \"kysymys\"-kenttää kysymisten esittämiseen ja "
+"\"vastaus\"-kenttää vastaamiseen."
-#~ msgid "undelete"
-#~ msgstr "palauta"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+"Tästä huolimatta kaikkia kysymyksiä ja vastauksia voi kommentoida -kommentit "
+"ovat hyviä rajoitetuissa keskusteluissa"
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+"Äänestäminen sovelluksessa %(app_name)s auttaa parhaiden vastausten "
+"valitsemisessa ja hyödyllisimpien käyttäjien palkitsemisessa."
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "merkitse suosikiksi (klikkaa uudestaan peruaksesi)"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+"Äänestä, jos löydät sinulle hyödyllistä tietoa.\n"
+"Näin autat %(app_name)s-yhteisöä huomattavasti."
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "kysymyksen esittäjä on valinnut tämän vastauksen oikeaksi"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+"Voit myös mainita käyttäjiä missä tahansa kohdassa tekstiä. Osoittaaksesi "
+"heidän huomionsa,\n"
+"seuraa käyttäjiä ja keskusteluja ja raportoi sopimaton sisältö liputtamalla."
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "sulkemispäivä %(closed_at)s"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr "Pidä hauskaa."
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "uudelleentagitettu"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "Tuo StackExchange-dataa"
-#~ msgid "reopen"
-#~ msgstr "avaa uudelleen"
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Varoitus:</em> jos tietokantasi ei ole tyhjä, varmuuskopioi se\n"
+"ennen tämän toiminnon suorittamista."
-#~ msgid "close"
-#~ msgstr "sulje"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Lataa stackexchange dump .zip-tiedosto ja odota sitten, kunnes kaikki tiedot "
+"on siirretty. Tämä saattaa kestää useita minuutteja.\n"
+"Huomaa, että palaute kirjoitetaan tavallisena tekstinä."
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "vaadittu kenttä"
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "Tuo dataa"
-#~ msgid "(required)"
-#~ msgstr "(pakollinen)"
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"Jos sinulla on vaikeuksia tämän tiedonsiirtotyökalun kanssa,\n"
+"yritä datan siirtämistä komentorivin kautta: <code>python manage.py "
+"load_stackexchange path/to/your-data.zip</code>"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Reaaliaikainen Markdown-muokkain päälle/pois"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Hyvä %(receiving_user_name)s,</p>"
-#~ msgid "hide preview"
-#~ msgstr "piilota esikatselu"
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s kirjoitti <a href=\"%(post_url)s\">uuden "
+"kommentin</a>:</p>\n"
-#~ msgid "Related tags"
-#~ msgstr "Tagit"
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"âŽ\n"
+"<p>%(update_author_name)s kirjoitti <a href=\"%(post_url)s\">uuden "
+"kommentin</a>:</p>âŽ\n"
-#~ msgid "Interesting tags"
-#~ msgstr "Mielenkiintoiset tagit"
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s vastasi kysymykseen\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Lisää"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s esitti uuden kysymyksen\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+" \n"
-#~ msgid "Ignored tags"
-#~ msgstr "Hylätyt tagit"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s päivitti vastausta kysymykseen\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Sivua ei löytynyt."
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s päivitti kysymystä\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Tämä saattoi tapahtua seuraavista syistä:"
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Huom. - voit helposti <a href=\"%(user_subscriptions_url)s\">muuttaa</a>\n"
+", kuinka taajaan saat näitä huomautuksia, tai lopettaa niiden tilaamisen. "
+"Kiitos kiinnostuksestasi foorumiamme kohtaan!</p>\n"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "kysymys tai vastaus on poistettu;"
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "Toivoo ylläpito"
-#~ msgid "url has error - please check it;"
-#~ msgstr "URL-osoitteessa on virhe;"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "sivu jota yritit käyttää on suojattu tai sinulla ei ole tarpeeksi ääniä, "
-#~ "katso"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "faq"
-#~ msgstr "ukk"
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr "Jaa kysymys sivulla %(site)s"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "jos uskot, että tämä 404-sivu on aiheeton, ole hyvä"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "seuraa %(alias)s:ta"
-#~ msgid "report this problem"
-#~ msgstr "kerro tästä ongelmasta"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "lopeta %(alias)s:n seuraaminen"
-#~ msgid "back to previous page"
-#~ msgstr "takaisin edelliselle sivulle"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "seurataan %(alias)s:ta"
-#~ msgid "see all questions"
-#~ msgstr "näytä kaikki kysymykset"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "äänien määrä nyt"
-#~ msgid "see all tags"
-#~ msgstr "näytä kaikki tagit"
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "anonyymi käyttäjä"
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "järjestelmävirhe on lisätty logeihimme, virhe korjataan mahdollisimman "
-#~ "pian"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "tämä merkintä on merkitty yhteisöwikiksi"
-#~ msgid "see latest questions"
-#~ msgstr "katso uusimmat kysymykset"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Tämä viesti on wiki.\n"
+"Käyttäjät, joilla on mainepisteitä yli &gt;%(wiki_min_rep)s voivat parantaa "
+"sitä."
-#~ msgid "see tags"
-#~ msgstr "näytä tagit"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "kysytty"
-#~ msgid "Edit answer"
-#~ msgstr "Muokkaa vastausta"
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "vastattu"
-#~ msgid "back"
-#~ msgstr "takaisin"
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "lisätty"
-#~ msgid "revision"
-#~ msgstr "revisio"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "päivitetty"
-#~ msgid "select revision"
-#~ msgstr "valitse revisio"
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "katso kysymyksiä, joilla on tagi '%(tag)s'"
-#~ msgid "Save edit"
-#~ msgstr "Tallenna muokkaus"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "poista kommentti"
-#~ msgid "show preview"
-#~ msgstr "näytä esikatselu"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "käyttäjän %(username)s gravatar-kuva"
-#~ msgid "Ask a question"
-#~ msgstr "Kysy"
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "Käyttäjän %(username)s nettisivu on %(url)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "edellinen"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "nykyinen sivu"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "sivu %(num)s"
-#, fuzzy
-#~ msgid "%(name)s"
-#~ msgstr "%(date)s"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "seuraava sivu"
-#~ msgid "Badge"
-#~ msgstr "Kunniamerkki"
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "vastauksia käyttäjälle %(username)s"
-#, fuzzy
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "%(date)s"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "olet saanut uuden vastauksen"
+msgstr[1] "olet saanut %(response_count)s uutta vastausta"
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "kysymykset"
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "ei vastauksia"
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "käyttäjä sai tämän kunniamerkin:"
-#~ msgstr[1] "käyttäjää sai tämän kunniamerkin:"
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "%(new)s uutta liputettua merkintää ja %(seen)s jo nähtyä"
-#~ msgid "Badges summary"
-#~ msgstr "Kunniamerkkien yhteenveto"
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s uutta liputettua merkintää"
-#~ msgid "Badges"
-#~ msgstr "Kunniamerkit"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "%(seen)s jo nähtyä liputettua merkintää"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "If your questions and answers are highly voted, your contribution to this "
-#~ "Q&amp;A community will be recognized with the variety of badges."
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Kysymykset"
+#: skins/default/templates/question.html:110
#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Below is the list of available badges and number \n"
-#~ " of times each type of badge has been awarded. Have ideas about fun "
-#~ "badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Kunniamerkit"
-
-#~ msgid "gold badge description"
-#~ msgstr ""
-#~ "Gold badge is the highest award in this community. To obtain it have to "
-#~ "show profound knowledge and ability in addition to your active "
-#~ "participation."
-
-#~ msgid "silver badge description"
-#~ msgstr ""
-#~ "Obtaining silver badge requires significant patience. If you have "
-#~ "received one, that means you have greatly contributed to this community."
-
-#~ msgid "bronze badge description"
-#~ msgstr ""
-#~ "Jos olet aktiivinen osallistuja sivustolla, saat tämän kunniamerkin."
-
-#~ msgid "Close question"
-#~ msgstr "Sulje kysymys"
-
-#~ msgid "Close the question"
-#~ msgstr "Sulje kysymys"
-
-#~ msgid "Reasons"
-#~ msgstr "Syyt"
-
-#~ msgid "OK to close"
-#~ msgstr "Hyväksytty sulkemista varten"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Usein Kysytyt Kysymykset"
-
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Minkälaisia kysymyksiä voin kysyä täällä?"
-
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr "Kaikista tärkeintä on, että kysymykset ovat tätä sivustoa vastaavia"
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Ennen kuin kysyt, käytä hakua avuksesi, sillä joku on voinut jo vastata "
-#~ "kysymykseesi."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Minkälaisia kysymyksiä minun pitäisi välttää?"
-
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Yritä välttää kysymyksiä, jotka eivät liity tähän sivustoon, ovat liian "
-#~ "subjektiivisia ja väittelyä hakevia."
-
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Mitä minun pitäisi välttää vastauksissani?"
-
-#~ 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 ""
-#~ "on <strong>kysymys ja vastaus</strong> -sivusto - <strong>se ei ole "
-#~ "keskustelupalsta tai -ryhmä</strong>. Vältä kysymyksiä, jotka yrittävät "
-#~ "nostaa pintaan väittelyä. Käytä kommentteja pieniin lisäkysymyksiin tai "
-#~ "vastauksiin."
-
-#~ msgid "Who moderates this community?"
-#~ msgstr "Kuka vastaa sivusta?"
-
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Lyhyt vastaus on: <strong>sinä</strong>."
-
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Tätä sivua hallinnoivat käyttäjät itse."
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Mainejärjestelmä antaa käyttäjille oikeudet tehdä tietynlaisia "
-#~ "toimenpiteitä."
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "Miten mainejärjestelmä toimii?"
-
-#~ msgid "Rep system summary"
-#~ msgstr ""
-#~ "When a question or answer is upvoted, the user who posted them will gain "
-#~ "some points, which are called \"karma points\". These points serve as a "
-#~ "rough measure of the community trust to him/her. Various moderation tasks "
-#~ "are gradually assigned to the users based on those points."
-
-#~ msgid "upvote"
-#~ msgstr "lisaa-aani"
-
-#~ msgid "use tags"
-#~ msgstr "käytä tageja"
-
-#~ msgid "add comments"
-#~ msgstr "lisää kommentteja"
-
-#~ msgid "downvote"
-#~ msgstr "poista-aani"
+msgid "post a comment / <strong>some</strong> more"
+msgstr "katso <strong>%(counter)s</strong> lisää"
+#: skins/default/templates/question.html:113
#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Ensimmäinen hyväksytty vastaus omaan kysymykseesi"
-
-#~ msgid "open and close own questions"
-#~ msgstr "avaa ja sulje omia kysymyksiä"
+msgid "see <strong>some</strong> more"
+msgstr "katso <strong>%(counter)s</strong> lisää"
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "uudelleentaggaa kysymyksiä"
+msgid "post a comment"
+msgstr "lisää kommentti"
-#~ msgid "edit community wiki questions"
-#~ msgstr "muokkaa yhteisöwikin kysymyksiä"
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Vastaa omaan kysymykseesi"
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "muokkaa mitä tahansa vastausta"
+msgid "Post Your Answer"
+msgstr "Vastauksesi"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "poista mikä tahansa kommentti"
+msgid "Login/Signup to Post"
+msgstr "Kirjaudu sisään tai rekisteröidy vastataksesi"
-#~ msgid "what is gravatar"
-#~ msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
-
-#~ msgid "gravatar faq info"
-#~ msgstr ""
-#~ "<p>Kuva joka esiintyy käyttäjien profiilissa on nimeltään "
-#~ "<strong>gravatar</strong> (<strong>g</strong>lobally <strong>r</"
-#~ "strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
-#~ "<strong>cryptographic key</strong> (unbreakable code) is calculated from "
-#~ "your email address. You upload your picture (or your favorite alter ego "
-#~ "image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
-#~ "strong></a> from where we later retreive your image using the key.</"
-#~ "p><p>This way all the websites you trust can show your image next to your "
-#~ "posts and your email address remains private.</p><p>Please "
-#~ "<strong>personalize your account</strong> with an image - just register "
-#~ "at <a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just "
-#~ "please be sure to use the same email address that you used to register "
-#~ "with us). Default image that looks like a kitchen tile is generated "
-#~ "automatically.</p>"
-
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Tarvitseeko minun luoda erillinen tunnus jotta voin rekisteröityä?"
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Muokkaa kysymystä"
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
#, fuzzy
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "Ei. Voit kirjautua suoraan sivulle kenen tahansa OpenID-palveluntarjoajan "
-#~ "välityksellä, esim. Google, Yahoo, AOL, jne."
-
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Kirjaudu nyt!"
+msgid "Retag question"
+msgstr "Liittyvät kysymykset"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "Miksi muut voivat muokata kysymyksiäni tai vastauksiani?"
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Tagää uudelleen"
-#~ msgid "Goal of this site is..."
-#~ msgstr "Tämän sivuston tavoite on..."
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Miksi käyttää ja muokata tageja?"
-#~ 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 ""
-#~ "Kokeneet käyttäjät voivat muokata vastauksia ja kysymyksiä kuten wikiä. "
-#~ "Tämä nostaa sivuston laatua."
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+"Tagit pitävät sisällön paremmin järjesteltynä ja helpottavat merkintöjen "
+"etsimistä aiheittain"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "Jos et pidä tästä, kunnioitamme valintaasi."
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "tagien muokkaajat saavat erikoispalkintoja yhteisöltä"
-#~ msgid "Still have questions?"
-#~ msgstr "Vieläkin kysymyksiä?"
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "Enintään 5 tagiä, kukin enintään 20 merkin pituinen"
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "<a href='%(ask_question_url)s'>Kysy kysymyksesi</a> ja tee sivustamme "
-#~ "entistäkin parempi!"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Uudelleenavaa kysymys"
-#~ msgid "Feedback"
-#~ msgstr "Palaute"
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Nimi"
-#~ msgid "Give us your feedback!"
-#~ msgstr "Anna meille palautettasi!"
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+"on sulkenut tämän kysymyksen\n"
-#~ msgid "(this field is required)"
-#~ msgstr "(tämä kenttä on pakollinen)"
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Sulkemisen syy:"
-#~ msgid "Send Feedback"
-#~ msgstr "Lähetä palautetta"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Milloin"
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "Toivoo ylläpito"
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Avaa tämä kysymys uudelleen?"
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Avaa tämä kysymys uudelleen"
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Avaa tämä kysymys uudelleen"
-#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "pidän tästä (klikkaa uudestaan peruaksesi)"
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "pidän tästä vastauksesta (klikkaa uudestaan peruaksesi)"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Historia"
-#~ msgid "current number of votes"
-#~ msgstr "äänien määrä nyt"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "klikkaa piilottaaksesi/näyttääksesi revision"
-#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr "en pidä tästä (klikkaa uudestaan peruaksesi)"
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "%(number)s tarkistuskertaa"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "en pidä tästä vastauksesta (klikkaa uudestaan peruaksesi)"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "Tee tagitilaus"
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "anonyymi"
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr "Kirjoittaudu seuraavien tagien tilaajaksi:"
-#~ msgid "asked"
-#~ msgstr "kysytty"
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "Tilaa"
-#~ msgid "answered"
-#~ msgstr "vastattu"
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "\"%(stag)s\":n kanssa täsmäävät tagit"
-#~ msgid "posted"
-#~ msgstr "lisätty"
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Tagilista"
-#~ msgid "updated"
-#~ msgstr "päivitetty"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "Lajittele &raquo;"
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "katso kysymyksiä, joilla on tagi '%(tag)s'"
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "aakkosjärjestyksessä"
-#~ msgid "delete this comment"
-#~ msgstr "poista kommentti"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "nimen mukaan"
-#~ msgid "add comment"
-#~ msgstr "lisää kommentti"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "taginkäytön mukaan"
-#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] ""
-#~ "katso vielä <span class=\"hidden\">%(counter)s</span>yksi kommentti"
-#~ msgstr[1] "katso vielä <strong>%(counter)s</strong> kommenttia"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "suosituksen mukaan"
-#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "katso vielä <span class=\"hidden\">%(counter)s</span>yksi kommentti"
-#~ msgstr[1] "katso vielä <strong>%(counter)s</strong> kommenttia"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Mitään ei löytynyt"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "maineesi on %(reputation)s"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Käyttäjät"
-#~ msgid "previous"
-#~ msgstr "edellinen"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "katso maineikkaimpia käyttäjiä"
-#~ msgid "current page"
-#~ msgstr "nykyinen sivu"
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "mainepisteet"
-#~ msgid "page number %(num)s"
-#~ msgstr "sivu %(num)s"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "katso viimeiseksi liittyneitä"
-#~ msgid "next page"
-#~ msgstr "seuraava sivu"
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "äskettäiset"
-#~ msgid "posts per page"
-#~ msgstr "postia per sivu"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "katso ensin liittyneitä"
-#~ msgid "responses for %(username)s"
-#~ msgstr "vastauksia käyttäjälle %(username)s"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "katso nimen mukaan lajiteltuna"
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] ""
-#~ "sinulla on <span class=\"hidden\">%(response_count)s</span>yksi uusi "
-#~ "vastaus"
-#~ msgstr[1] "sinulla on %(response_count)s uutta vastausta"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "käyttäjänimen mukaan"
-#~ msgid "no new responses yet"
-#~ msgstr "ei vastauksia"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "%(suser)s-kyselyn kanssa täsmäävät käyttäjät"
-#~ msgid "Questions"
-#~ msgstr "Kysymykset"
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Mitään ei löytynyt."
-#~ msgid "Privacy policy"
-#~ msgstr "Yksityisyydensuoja"
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s kysymys"
+msgstr[1] "%(q_num)s kysymystä"
-#~ msgid "Edit question"
-#~ msgstr "Muokkaa kysymystä"
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "käyttäjän %(author_name)s panoksen kanssa"
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "Tagätty"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Hakuvinkkejä:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "nollaa tekijä"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr "tai"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "nollaa tagit"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "aloita alusta"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr " laajentaaksesi tai lisää enemmän tageja hakuusi."
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Hakuvinkki:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "lisää tageja ja hakusanoja täsmentääksesi hakuasi"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "Ei vastaamattomia kysymyksiä"
-#~ msgid "Change tags"
-#~ msgstr "Vaihda tageja"
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr "Ei kysymyksiä."
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "tagit"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr "Ole hyvä ja seuraa jotakin kysymystä tai jotakin käyttäjää"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Miksi käyttää ja muokata tageja?"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Voit laajentaa hakuasi seuraavasti"
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "tagien muokkaajat saavat erikoispalkintoja yhteisöltä"
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "nollataan"
-#, fuzzy
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "jokaisen tagin tulee olla vähintään %(max_chars)d merkin pituinen"
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "nollataan tagit"
-#~ msgid "Reopen question"
-#~ msgstr "Uudelleenavaa kysymys"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "aloitetaan alusta"
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "otsikko"
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "Esitä rohkeasti oma kysymyksesi!"
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Sulje kysymys"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Et löytänyt etsimääsi?"
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Avaa tämä kysymys uudelleen"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Ole hyvä ja kysy kysymyksesi!"
-#~ msgid "Reopen this question"
-#~ msgstr "Avaa tämä kysymys uudelleen"
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "Kirjoittaudu kysymyssyötteen tilaajaksi"
-#~ msgid "Revision history"
-#~ msgstr "Historia"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
-#~ msgid "click to hide/show revision"
-#~ msgstr "klikkaa piilottaaksesi/näyttääksesi revision"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+"Huom.: %(app_name)s vaatii javascriptiä toimiakseen kunnollisesti - ole hyvä "
+"ja salli javascript selaimessasi <a href=\"%(noscript_url)s\">näin</a>"
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "revisiot/"
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "tagi saa olla enintään %(max_chars)s merkin pituinen"
+msgstr[1] "tagi saa olla enintään %(max_chars)s merkin pituinen"
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "käytä tageja"
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "käytä %(tag_count)s tagiä"
+msgstr[1] "käytä enintään %(tag_count)s tagiä"
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "käytä tageja"
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+"käytä enintään %(tag_count)s tagiä, kukin enintään %(max_chars)s merkin "
+"pituinen"
-#~ msgid "Tag list"
-#~ msgstr "Tagilista"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"%(counter)s Vastaus"
+msgstr[1] ""
+"\n"
+"%(counter)s Vastausta"
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Järjestys:"
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Lajittele &raquo;"
-#~ msgid "sorted alphabetically"
-#~ msgstr "aakkosjärjestyksessä"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "vanhimmat vastaukset näytetään ensin"
-#~ msgid "by name"
-#~ msgstr "nimen mukaan"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "uusimmat vastaukset näytetään ensin"
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "taginkäytön mukaan"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "eniten ääniä saaneet vastaukset näytetään ensin"
-#~ msgid "by popularity"
-#~ msgstr "suosituksen mukaan"
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr "Kirjaudu sisään tai rekisteröidy vastataksesi"
-#~ msgid "Nothing found"
-#~ msgstr "Mitään ei löytynyt"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Vastauksesi"
-#~ msgid "Users"
-#~ msgstr "Käyttäjät"
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Ole ensimmäinen vastaaja!"
-#~ msgid "reputation"
-#~ msgstr "maine"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#~ msgid "recent"
-#~ msgstr "äskettäiset"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "by username"
-#~ msgstr "käyttäjänimen mukaan"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "Nothing found."
-#~ msgstr "Mitään ei löytynyt."
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+"Tunnetko jonkun, joka osaa vastata? Jaa <a href=\"%(question_url)s\">linkki</"
+"a> kysymykseen:"
-#~ msgid "Search tips:"
-#~ msgstr "Hakuvinkkejä:"
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr "tai"
-#~ msgid "reset author"
-#~ msgstr "nollaa tekijä"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "sähköposti"
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "tai"
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr "Kysymystyökalut"
-#~ msgid "reset tags"
-#~ msgstr "nollaa tagit"
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr "klikkaa lopettaaksesi tämän kysymyksen seuraaminen"
-#~ msgid "start over"
-#~ msgstr "aloita alusta"
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr "Seurataan"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " laajentaaksesi tai lisää enemmän tageja hakuusi."
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr "Lopeta seuraaminen"
-#~ msgid "Search tip:"
-#~ msgstr "Hakuvinkki:"
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr "klikkaa seurataksesi tätä kysymystä"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "lisää tageja ja hakusanoja täsmentääksesi hakuasi"
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr "Seuraa"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Ei vastaamattomia kysymyksiä"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s seuraaja"
+msgstr[1] "%(count)s seuraajaa"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Ei suosikkeja."
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr "lähetä päivitykset sähköpostitse"
-#~ msgid "You can expand your search by "
-#~ msgstr "Voit laajentaa hakuasi seuraavasti"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+"<strong>Täällä</strong> voit (kirjauduttuasi sisään) tilata jaksoittaisen "
+"tähän kysymykseen liittyvän päivityksen sähköpostiisi"
-#~ msgid "resetting author"
-#~ msgstr "nollataan"
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "kirjoittaudu tämän kysymyksen RSS-syötteen tilaajaksi"
-#~ msgid "resetting tags"
-#~ msgstr "nollataan tagit"
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "tilaa RSS-syöte"
-#~ msgid "starting over"
-#~ msgstr "aloitetaan alusta"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "Tilastot"
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Olet aina tervetullut kysymään!"
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "kysytty"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Et löytänyt etsimääsi?"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#~ msgid "Please, post your question!"
-#~ msgstr "Ole hyvä ja kysy kysymyksesi!"
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "kertaa"
+#: skins/default/templates/question/sidebar.html:54
#, fuzzy
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "uudelleentaggaa kysymyksiä"
+msgid "Last updated"
+msgstr "viimeksi päivitetty"
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] ""
-#~ "jokaisen tagin tulee olla vähintään <span class=\"hidden\">%(max_chars)s</"
-#~ "span>yhden merkin pituinen"
-#~ msgstr[1] ""
-#~ "jokaisen tagin tulee olla vähintään %(max_chars)d merkin pituinen"
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Liittyvät kysymykset"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] ""
-#~ "käytä vähintään <span class=\"hidden\">%(tag_count)d</span>yhtä tagia"
-#~ msgstr[1] "käytä vähintään %(tag_count)d tagia"
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Ilmoita minulle</strong> viikottain, kun tulee uusia vastauksia tai "
+"päivityksiä"
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "jokaisen tagin tulee olla vähintään %(max_chars)d merkin pituinen"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Täällä</span> voit (kirjauduttuasi sisään) tilata "
+"jaksoittaisen päivityksen tästä kysymyksestä sähköpostiisi."
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "vanhimmat vastaukset näytetään ensin"
-
-#~ msgid "oldest answers"
-#~ msgstr "vanhimmat vastaukset"
-
-#~ msgid "newest answers will be shown first"
-#~ msgstr "uusimmat vastaukset näytetään ensin"
-
-#~ msgid "newest answers"
-#~ msgstr "uusimmat vastaukset"
-
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "eniten ääniä saaneet vastaukset näytetään ensin"
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+"<strong>Täällä</strong> voit (kirjauduttuasi sisään) tilata jaksoittaisen "
+"tähän kysymykseen liittyvän päivityksen sähköpostiisi"
-#~ msgid "popular answers"
-#~ msgstr "äänestetyimmät"
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "käyttäjän %(username)s profiili"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Vastaa omaan kysymykseesi"
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Muokkaa profiilia"
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Kirjaudu antaaksesi vastauksen"
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "muokkaa profiilia"
-#~ msgid "Your answer"
-#~ msgstr "Vastauksesi"
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "vaihda kuva"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Ole ensimmäinen vastaaja!"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "poista"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr ""
-#~ "<span class='strong big'>Please start posting your answer anonymously</"
-#~ "span> - your answer will be saved within the current session and "
-#~ "published after you log in or create a new account. Please try to give a "
-#~ "<strong>substantial answer</strong>, for discussions, <strong>please use "
-#~ "comments</strong> and <strong>please do remember to vote</strong> (after "
-#~ "you log in)!"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Rekisteröity käyttäjä"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr ""
-#~ "<span class='big strong'>You are welcome to answer your own question</"
-#~ "span>, but please make sure to give an <strong>answer</strong>. Remember "
-#~ "that you can always <strong>revise your original question</strong>. "
-#~ "Please <strong>use comments for discussions</strong> and <strong>please "
-#~ "don't forget to vote :)</strong> for the answers that you liked (or "
-#~ "perhaps did not like)! "
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Käyttäjäunnus"
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(ei voida muuttaa)"
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Kirjaudu antaaksesi vastauksen"
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Päivitä"
-#~ msgid "Answer the question"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "tilaukset"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "tai"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "Sähköpostitilauksen asetukset"
-#~ msgid "email"
-#~ msgstr "sähköposti"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tagit"
+msgid "Stop Email"
+msgstr ""
+"<strong>Sähköpostiosoitteesi:</strong> (<strong>ei</strong> näytetä muille "
+"käyttäjille, oltava voimassa)"
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "questions with most answers"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr "seurattavat kysymykset"
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "questions with most answers"
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "viestit"
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "sähköpostipäivitykset peruttu"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Osiot:"
-#~ msgid "question asked"
-#~ msgstr "Kysytty"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "foorumivastaukset (%(re_count)s)"
-#~ msgid "question was seen"
-#~ msgstr "Nähty"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "liputettuja (%(flag_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "valitse:"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "nähty"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "uusi"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "ei mitään"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "merkitse nähdyksi"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "merkitse uudeksi"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "hylkää"
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr "poista liputukset"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr "kommentoi"
-#~ msgid "times"
-#~ msgstr "kertaa"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "päivitä profiili"
-#~ msgid "last updated"
-#~ msgstr "viimeksi päivitetty"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "hallinnoi sisäänkirjautumistapoja"
-#~ msgid "Related questions"
-#~ msgstr "Liittyvät kysymykset"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nimi"
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> once a day by email when there are any new "
-#~ "answers or updates"
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "liittynyt"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "nähty viimeksi"
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
+msgid "website"
+msgstr "Nettisivu"
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "(note: you can always <strong><a href='%(profile_url)s?"
-#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
-#~ "updates)"
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "paikka"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "ikä"
-#~ msgid "%(username)s's profile"
-#~ msgstr "käyttäjän %(username)s profiili"
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "vuotta"
-#~ msgid "Edit user profile"
-#~ msgstr "Muokkaa profiilia"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "tämän päivän käyttämättömät äänet"
-#~ msgid "edit profile"
-#~ msgstr "muokkaa profiilia"
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "ääntä jäljellä"
-#~ msgid "change picture"
-#~ msgstr "vaihda kuva"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "ylläpito"
-#~ msgid "Registered user"
-#~ msgstr "Rekisteröity käyttäjä"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "Käyttäjän %(username)s tämänhetkinen status on \"%(status)s\""
-#~ msgid "Screen Name"
-#~ msgstr "Tunnus"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "Käyttäjän statusta muutettu"
-#~ msgid "Update"
-#~ msgstr "Päivitä"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Tallenna"
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "kysymykset"
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Maineesi on tällä hetkellä %(reputation)s pistettä"
-#, fuzzy
-#~ msgid "Email subscription settings"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "Käyttäjän nykyinen maine on %(reputation)s pistettä"
-#~ msgid "email subscription settings info"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "Käyttäjän mainetta muutettu"
-#~ msgid "Stop sending email"
-#~ msgstr "Stop Email"
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Vähennä"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Kaikki kysymykset"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "kysymykset"
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Lisää"
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr ""
-#~ "käytä vähintään <span class=\"hidden\">%(tag_count)d</span>yhtä tagia"
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Lähetä viesti käyttäjälle %(username)s"
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "poista"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"Käyttäjälle lähetetään sähköposti jonka \"vastaa\"-kenttässä on sinun "
+"sähköpostiosoitteesti. Varmista, että osoitteesi on kirjoitettu oikein."
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "nähty viimeksi"
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Viesti lähetetty"
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "uusin"
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Lähetä viesti"
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "bronssi"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+"Ylläpitäjillä on tavallisten käyttäjien oikeudet, mutta lisäksi he voivat "
+"muuttaa kenen tahansa käyttäjän tilaa miksi tahansa, eivätkä ole "
+"riippuvaisia mainerajoituksista."
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "nähty viimeksi"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+"Moderaattoreilla on samat oikeudet kuin ylläpitäjillä, mutta he eivät voi "
+"lisätä tai poistaa moderaattorien tai ylläpitäjien käyttäjästatuksia."
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "merkitty parhaaksi vastaukseksi"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr "'Hyväksytty'-status tarkoittaa tavallista käyttäjää."
-#~ msgid "update profile"
-#~ msgstr "päivitä profiili"
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Jäähyllä olevat käyttäjät voivat muokata tai poistaa vain omia merkintöjään."
-#~ msgid "real name"
-#~ msgstr "nimi"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+"Lukitut käyttäjät voivat vain kirjautua sisään ja lähettää palautetta sivun "
+"ylläpidolle."
-#~ msgid "member for"
-#~ msgstr "liittynyt"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "verkosto"
-#~ msgid "last seen"
-#~ msgstr "nähty viimeksi"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "%(count)s seuraaja"
+msgstr[1] "%(count)s seuraajaa"
-#~ msgid "user website"
-#~ msgstr "sivusto"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "Seuraa %(count)s käyttäjää"
+msgstr[1] "Seuraa %(count)s käyttäjää"
-#~ msgid "location"
-#~ msgstr "paikka"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+"Verkostosi on tyhjä. Haluaisitko seurata jotakuta? Käy jonkun profiilissa ja "
+"klikkaa \"seuraa\"!"
-#~ msgid "age"
-#~ msgstr "ikä"
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr "Käyttäjän %(username)s verkosto on tyhjä"
-#~ msgid "age unit"
-#~ msgstr "years old"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "toiminta"
-#~ msgid "todays unused votes"
-#~ msgstr "tämän päivän käyttämättömät äänet"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "lähde"
-#~ msgid "votes left"
-#~ msgstr "ääntä jäljellä"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Mainepisteiden muutokset."
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "Paikka"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "%(user_name)s mainepisteiden muutokset"
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "maineesi on %(reputation)s"
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "yhteenveto"
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "user karma"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> kysymys"
+msgstr[1] "<span class=\"count\">%(counter)s</span> kysymystä"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "Vastaus"
+msgstr[1] "Vastaukset"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "Tämä vastaus on saanut %(answer_score)s ääntä"
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "Tallenna muokkaus"
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "vastausta kommentoitiin %(comment_count)s kerran"
+msgstr[1] "vastausta kommentoitiin %(comment_count)s kertaa"
-#, fuzzy
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "maineesi on %(reputation)s"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> ääntä"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> ääni"
-#, fuzzy
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "maineesi on %(reputation)s"
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "peukalo pystyyn"
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "user karma"
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "käyttäjä on äänestänyt tätä monta kertaa"
-#~ msgid "Add"
-#~ msgstr "Lisää"
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "peukalo alaspäin"
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "vastauksia käyttäjälle %(username)s"
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "käyttäjällä näin monta negatiivista ääntä"
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "viestit/"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> tagi"
+msgstr[1] "<span class=\"count\">%(counter)s</span> tagiä"
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "viestit/"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> mitali"
+msgstr[1] "<span class=\"count\">%(counter)s</span> mitalia"
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr "Vastaa kysymykseen:"
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "käyttäjän %(username)s profiili"
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Profiili"
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "aktiivinen"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "kommentteja ja vastauksia muihin kysymyksiin"
-#~ msgid "Your karma change log."
-#~ msgstr "äänihistoriasi."
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "seuraajat ja seuratut käyttäjät"
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "äänihistoriasi."
-
-#~ msgid "overview"
-#~ msgstr "yhteenveto"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> kysymys"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> kysymystä"
+msgid "Graph of user karma"
+msgstr "Kaavio käyttäjän mainepisteistä "
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> vastaus"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> vastausta"
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr "kysymykset, joita käyttäjä seuraa"
-#, fuzzy
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "tämä vastaus on hyväksytty oikeaksi"
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "äänihistoria"
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "tämä vastaus on valittu oikeaksi"
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "äänet"
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "vastausta kommentoitiin %(comment_count)s kerran"
-#~ msgstr[1] "vastausta kommentoitiin %(comment_count)s kertaa"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "sähköpostin tilausasetukset"
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> ääntä"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> ääni"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "hallitse tätä käyttäjää"
-#~ msgid "user has voted up this many times"
-#~ msgstr "käyttäjä on äänestänyt tätä monta kertaa"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:6
#, fuzzy
-#~ msgid "user voted down this many times"
-#~ msgstr "käyttäjä on äänestänyt tätä monta kertaa"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> tagia"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> tagi"
+msgid "give an answer interesting to this community"
+msgstr "kysy kysymys, joka kiinnostaa tätä yhteisöä"
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> kunniamerkkiä"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> arvomerkki"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "yritä ennemmin vastata kysymykseen kuin uppoutua keskusteluun"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Vastausvinkkejä"
+msgid "provide enough details"
+msgstr "kirjoita mahdollisimman paljon yksityiskohtia"
-#~ msgid "User profile"
-#~ msgstr "Profiili"
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "ole selkeä ja täsmällinen"
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
-
-#~ msgid "reputation history"
-#~ msgstr "karma history"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "katso usein kysytyt kysymykset"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "kysymyksiä, joita tämä käyttäjä on valinnut suosikikseen"
-
-#~ msgid "recent activity"
-#~ msgstr "uusimmat"
-
-#~ msgid "casted votes"
-#~ msgstr "votes"
-
-#~ msgid "votes"
-#~ msgstr "äänet"
-
-#~ msgid "answer tips"
-#~ msgstr "Vastausvinkkejä"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "vastaus käsittelee tämän sivuston aihealuita"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "yritä vastata kysymykseen mielummin, kuin että osallistut keskusteluun"
-
-#~ msgid "please try to provide details"
-#~ msgstr "anna yksityiskohtia, sillä emme omista kristallipalloa"
+msgid "Markdown basics"
+msgstr "Tekstin korostus ja muotoilu"
-#~ msgid "be clear and concise"
-#~ msgstr "ole selkeä ja täsmällinen"
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*kursivoitu*"
-#~ msgid "see frequently asked questions"
-#~ msgstr "katso usein kysytyt kysymykset"
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**lihavoitu**"
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown-vinkkejä"
-
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*kursivointi* tai __kursivointi__"
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*kursivoitu* tai _kursivoitu_"
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**lihavointi** tai __lihavointi__"
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**lihavointi** tai __lihavointi__"
-#~ msgid "link"
-#~ msgstr "linkki"
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "teksti"
-#~ msgid "text"
-#~ msgstr "teksti"
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "kuva"
-#~ msgid "image"
-#~ msgstr "kuva"
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "numeroitu lista:"
-#~ msgid "numbered list:"
-#~ msgstr "numeroitu lista:"
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "yksinkertaisia HTML-tagejä tuetaan"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "perus HTML-tagit ovat myös tuetut"
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "opi lisää Markdownista"
-#~ msgid "learn more about Markdown"
-#~ msgstr "opi lisää Markdownista"
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">Voit esittää kysymyksesi anonyymisti</span>. Kun "
+"julkaiset merkinnän, sinut ohjataan sisäänkirjautumissivulle. Kysymyksesi "
+"tallennetaan senhetkisessä sessiossa ja julkaistaan, kun olet kirjautunut "
+"sisään. Sisäänkirjautuminen on yksinkertaista ja kestää noin 30 sekuntia. "
+"Rekisteröityminen alussa kestää enintään minuutin."
-#~ msgid "ask a question"
-#~ msgstr "kysy kysymys"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class='strong big'>Looks like your email address, %(email)s has not "
-#~ "yet been validated.</span> To post messages you must verify your email, "
-#~ "please see <a href='%(email_validation_faq_url)s'>more details here</a>."
-#~ "<br>You can submit your question now and validate email after that. Your "
-#~ "question will saved as pending meanwhile. "
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Yhteisön jäseniä"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Kirjaudu sisään kysyäksesi kysymyksesi"
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "Tämän sivun sisältö on julkaistu %(license)s:n luvan alla"
-#~ msgid "Ask your question"
-#~ msgstr "Kysy kysymyksesi"
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "tietoa sivustosta"
-#~ msgid "Contributors"
-#~ msgstr "Ihmiset"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "apua"
-#~ msgid "about"
-#~ msgstr "sivusta"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "yksityisyydensuoja"
-#~ msgid "privacy policy"
-#~ msgstr "yksityisyydensuoja"
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "anna palautetta"
-#~ msgid "give feedback"
-#~ msgstr "anna palautetta"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "takaisin kotisivulle"
-#~ msgid "back to home page"
-#~ msgstr "takaisin kotisivulle"
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "%(site)s:n logo"
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "käyttäjät"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "mitalit"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "kysy kysymys, joka kiinnostaa tätä yhteisöä"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "katsottu"
+msgstr[1] "katsottu"
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "vastaus"
+msgstr[1] "vastausta"
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "ääni"
+msgstr[1] "ääntä"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "KAIKKI"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "näytä vastaamattomat kysymykset"
-#~ msgid "users"
-#~ msgstr "käyttäjät"
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "VASTAAMATTOMAT"
-#~ msgid "badges"
-#~ msgstr "kunniamerkit"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr "katso seuraamiasi kysymyksiä"
-#~ msgid "question tips"
-#~ msgstr "Vinkkejä kysymiseen"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "SEURATTAVAT"
-#~ msgid "please ask a relevant question"
-#~ msgstr "kysy kysymys mikä koskee aiheitamme"
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "Ole hyvä ja esitä kysymyksesi täällä"
-#~ msgid "please try provide enough details"
-#~ msgstr "kirjoita mahdollisimman paljon yksityiskohtia"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "mainepisteet:"
-#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "katselut"
-#~ msgstr[1] "katselut"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "mitalit:"
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "vastaus"
-#~ msgstr[1] "vastaus"
+msgid "sign out"
+msgstr "poistu/"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "aanesta"
-#~ msgstr[1] "aanesta"
+msgid "Hi, there! Please sign in"
+msgstr "Kirjaudu sisään täällä:"
-#~ msgid "see unanswered questions"
-#~ msgstr "näytä vastaamattomat kysymykset"
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "asetukset"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "näytä suosikit"
+msgid "no"
+msgstr "ei mitään"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "kunniamerkit:"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Hups, anteeksi - tapahtui virhe"
-#~ msgid "logout"
-#~ msgstr "poistu"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "Kirjadu sisään lisätäksesi merkintöjä"
-#~ msgid "login"
-#~ msgstr "kirjaudu"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+"Sähköpostistasi löydettiin roskapostia, anteeksi, jos huomio oli virheellinen"
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "nollataan tagit"
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "vaadittu kenttä"
+#: utils/forms.py:60
#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "syötä toimiva sähköpostiosoite"
+msgid "Choose a screen name"
+msgstr "Valitse käyttäjätunnus"
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "pidän tästä (klikkaa uudestaan peruaksesi)"
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "käyttäjänimi on pakollinen"
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "en pidä tästä (klikkaa uudestaan peruaksesi)"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "tämä nimi on jo käytössä"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr "Tämä saattoi tapahtua seuraavista syistä:"
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "tämä nimi ei ole sallittu"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "käyttäjää ei ole tällä nimellä"
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "merkitse suosikiksi (klikkaa uudestaan peruaksesi)"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+"Anteeksi, vakava virhe on tapahtunut - useampi käyttäjä on ottanut saman "
+"käyttäjänimen"
-#~ msgid "Question tags"
-#~ msgstr "Tagit"
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+"käyttäjänimi voi koostua aakkosista (a-z), välilyönneistä ( ) ja "
+"alaviivoista (_)"
-#~ msgid "questions"
-#~ msgstr "kysymykset"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr "käytä ainakin yhtä aakkosta käyttäjänimessä"
-#~ msgid "search"
-#~ msgstr "haku"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#~ msgid "In:"
-#~ msgstr "Näytä:"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "sähköpostiosoite vaaditaan"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Kaikki kysymykset"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "syötä toimiva sähköpostiosoite"
-#~ msgid "Sort by:"
-#~ msgstr "Järjestys:"
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr "tämä sähköpostiosoite on jo käytössä"
-#~ msgid "Email (not shared with anyone):"
-#~ msgstr "Sähköpostiosoite:"
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "salasana vaaditaan"
-#~ msgid "Minimum reputation required to perform actions"
-#~ msgstr "Pienin äänimäärä, jollavoi suorittaa toimenpiteitä"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#, fuzzy
-#~ msgid "Site modes"
-#~ msgstr "Sivustot"
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "anna salasana uudestaan"
-#, fuzzy
-#~ msgid "Skin and User Interface settings"
-#~ msgstr "Sähköposti ja sen asetukset"
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "lisäämäsi salasanat eivät vastanneet toisiaan, yritä uudelleen"
-#~ msgid "community wiki"
-#~ msgstr "yhteisön muokattavissa"
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "kaksi päivää sitten"
-#~ msgid "Location"
-#~ msgstr "Paikka"
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "eilen"
-#~ msgid "command/"
-#~ msgstr "komento/"
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "%(hr)d tunti sitten"
+msgstr[1] "%(hr)d tuntia sitten"
-#~ msgid "mark-tag/"
-#~ msgstr "merkitse-tagi/"
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "%(min)d minuutti sitten"
+msgstr[1] "%(min)d minuuttia sitten"
-#~ msgid "interesting/"
-#~ msgstr "mielenkiintoista/"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Esittääksesi kysymyksen sähköpostitse, ole hyvä ja:</p>\n"
+"<ul>\n"
+" <li>Muotoile aihe-kenttä näin: [Tagi1; Tagi2] Kysymyksen aihe</li>\n"
+" <li>Kirjoita kysymyksesi yksityiskohdat sähköpostin leipätekstiin</li>\n"
+"</ul>\n"
+"<p>Huomaa, että tagit voivat koostua myös useammista sanoista, ja tagit\n"
+"voidaan erottaa toisistaan pilkulla tai puolipisteellä</p>\n"
-#~ msgid "ignored/"
-#~ msgstr "hylatyt/"
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>Valitettavasti kysymyksesi julkaisussa tapahtui virhe - ole hyvä ja ota "
+"yhteyttä %(site)s:n ylläpitoon</p>"
-#~ msgid "unmark-tag/"
-#~ msgstr "poista-tagi/"
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Valitettavasti sinun on rekisteröidyttävä <a href=\"%(url)s\">täällä</a> "
+"voidaksesi kysyä kysymyksiä %(site)s:lla sähköpostitse.</p>"
-#~ msgid "search/"
-#~ msgstr "haku"
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>Valitettavasti kysymystäsi ei voitu lisätä sivulle käyttäjätilisi "
+"riittämättömien oikeuksien vuoksi.</p>"
-#~ msgid "Askbot"
-#~ msgstr "Askbot"
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "Uuden avatarin lisääminen onnistui"
-#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
-#~ msgstr ""
-#~ "Ensimmäistä kertaa täällä? Katso <a href=\"%s\">Usein Kysytyt Kysymykset</"
-#~ "a>!"
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "Avatarin päivittäminen onnistui"
-#~ msgid "newquestion/"
-#~ msgstr "uusi-kysymys/"
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "Avatarien poistaminen onnistui"
-#~ msgid "newanswer/"
-#~ msgstr "uusi-vastaus/"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "Valitettavasti anonyymit käyttäjät eivät voi käyttää inboxia"
+#: views/commands.py:112
#, fuzzy
-#~ msgid "MyOpenid user name"
-#~ msgstr "käyttäjänimen mukaan"
-
-#~ msgid "Email verification subject line"
-#~ msgstr "Verification Email from Q&A forum"
-
-#~ msgid "Unknown error."
-#~ msgstr "Tuntematon virhe."
-
-#~ msgid "ReCAPTCHA is wrongly configured."
-#~ msgstr "ReCAPTCHA ei ole konfiguroitu oikein."
-
-#~ msgid "Provided reCAPTCHA API keys are not valid for this domain."
-#~ msgstr "reCAPTCHA-palvelun avaimet ovat väärät."
-
-#~ msgid "ReCAPTCHA could not be reached."
-#~ msgstr "reCAPTCHA-palveluun ei saatu yhteyttä."
-
-#~ msgid "Invalid request"
-#~ msgstr "Tuntematon pyyntö"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
-#~ msgid "disciplined"
-#~ msgstr "kurinalainen"
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "Valitettavasti sinulla ei ole enää ääniä käytettävissä tälle päivälle"
-#~ msgid "Deleted own post with score of 3 or higher"
-#~ msgstr "Poisti oman postauksen jolla oli kolme tai yli kolme ääntä"
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "Sinulla on %(votes_left)s ääntä jäljellä tälle päivälle"
-#~ msgid "peer-pressure"
-#~ msgstr "ryhma-painostus"
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "Anteeksi, jotain on mennyt pieleen..."
-#~ msgid "nice-answer"
-#~ msgstr "hyva-vastaus"
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "Valitettavasti anonyymit käyttäjät eivät voi hyväksyä vastausta"
-#~ msgid "nice-question"
-#~ msgstr "hyva-kysymys"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"Tilauksesi on tallennettu, mutta sähköpostiosoite %(email)s pitää "
+"vaihvistaa, katso lisätietoja <a href='%(details_url)s'>täältä</a>"
-#~ msgid "popular-question"
-#~ msgstr "suosittu-kysymys"
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "sähköpostien päivitysväli on vaihdettu päivittäiseksi"
-#~ msgid "cleanup"
-#~ msgstr "siivoaja"
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr "Tagitilaus peruttiin (<a href=\"%(url)s\">peru</a>)."
-#~ msgid "critic"
-#~ msgstr "kriitikko"
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr "Kirjaudu sisään kirjoittautuaksesi %(tags)s:n tilaajaksi"
-#~ msgid "editor"
-#~ msgstr "muokkaaja"
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr "Kirjaudu sisään äänestääksesi"
-#~ msgid "organizer"
-#~ msgstr "jarjestelija"
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Kirjaudu sisään äänestääksesi"
-#~ msgid "scholar"
-#~ msgstr "oppilas"
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "Tietoa sivusta %(site)s"
-#~ msgid "student"
-#~ msgstr "oppilas"
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "Q&A-foorumin palaute"
-#~ msgid "supporter"
-#~ msgstr "tukija"
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "Kiitos palautteestasi!"
-#~ msgid "teacher"
-#~ msgstr "opettaja"
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "Odotamme palautettasi, annathan palautetta ensi kerralla! :)"
-#~ msgid "Answered first question with at least one up vote"
-#~ msgstr "Vastasi ensimmäiseen kysymykseen bvähintään yhdellä äänellä"
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Yksityisyydensuoja"
-#~ msgid "autobiographer"
-#~ msgstr "elamankerta"
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "%(q_num)s kysymys, tagätty"
+msgstr[1] "%(q_num)s kysymystä, tagätty"
-#~ msgid "self-learner"
-#~ msgstr "itseoppija"
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+"Valitettavasti etsimäsi kommentti on poistettu eikä ole enää saatavilla"
-#~ msgid "great-answer"
-#~ msgstr "loistava-vastaus"
+#: views/users.py:206
+msgid "moderate user"
+msgstr "hallitse käyttäjää"
-#~ msgid "Answer voted up 100 times"
-#~ msgstr "Vastausta äänestetty sata kertaa"
+#: views/users.py:381
+msgid "user profile"
+msgstr "käyttäjäprofiili"
-#~ msgid "great-question"
-#~ msgstr "loistava-kysymys"
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "käyttäjäprofiilin yhteenveto"
-#~ msgid "Question voted up 100 times"
-#~ msgstr "Kysymystä äänestetty sata kertaa"
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "viimeisimmät"
-#~ msgid "stellar-question"
-#~ msgstr "tahtikysymys"
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "profiili - viimeisimmät"
-#~ msgid "Question favorited by 100 users"
-#~ msgstr "Kysymys lisättiin sadan käyttäjän suosikkilistalle"
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "profiili - vastaukset"
-#~ msgid "famous-question"
-#~ msgstr "tunnettu-kysymys"
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "profiili - äänet"
-#~ msgid "Asked a question with 10,000 views"
-#~ msgstr "Kysyi kysymyksen, joka sai kymmenentuhatta katselukertaa"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "mainepisteet"
-#~ msgid "Alpha"
-#~ msgstr "Alfa"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
+msgstr "Profiili - Käyttäjän mainepisteet"
-#~ msgid "alpha"
-#~ msgstr "alfa"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "käyttäjien suosikit"
-#~ msgid "Actively participated in the private alpha"
-#~ msgstr "Osallistui aktiivisesti alfaversion kehittämiseen"
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "profiili - suosikkikysymykset"
-#~ msgid "good-answer"
-#~ msgstr "pateva-vastaus"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "muutokset talletettu"
-#~ msgid "Answer voted up 25 times"
-#~ msgstr "Vastausta äänestetty 25 kertaa"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "sähköpostipäivitykset peruttu"
-#~ msgid "good-question"
-#~ msgstr "pateva-kysymys"
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "profiili - sähköpostitilaukset"
-#~ msgid "Question voted up 25 times"
-#~ msgstr "Kysymystä äänestettiin vähintään 25 kertaa"
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "Valitettavasti anonyymit käyttäjät eivät voi ladata tiedostoja"
-#~ msgid "favorite-question"
-#~ msgstr "suosikki-kysymys"
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "hyväksytyt tiedostotyypit ovat '%(file_types)s'"
-#~ msgid "civic-duty"
-#~ msgstr "kansalaisvelvollisuus"
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "Ladattavan tiedoston enimmäiskoko on %(file_size)sK"
-#~ msgid "Generalist"
-#~ msgstr "Yleistäjä"
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+"Virhe tiedostoa ladatessa. Ole hyvä ja ota yhteyttä sivun ylläpitoon. Kiitos."
-#~ msgid "generalist"
-#~ msgstr "yleistaja"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "Active in many different tags"
-#~ msgstr "Aktiivinen monen tagin alla"
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr "Kirjautu sisään vastataksesi kysymyksiin"
-#~ msgid "expert"
-#~ msgstr "ekspertti"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Valitettavasti et ole kirjautunut sisään, etkä voi lisätä kommentteja. Ole "
+"hyvä ja <a href=\"%(sign_in_url)s\">kirjaudu sisään</a>."
-#~ msgid "Yearling"
-#~ msgstr "Yksivuotias"
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "Valitettavasti anonyymit käyttäjät eivät voi muokata kommentteja"
-#~ msgid "yearling"
-#~ msgstr "yksivuotias"
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Valitettavasti et ole kirjautunut sisään, etkä voi poistaa kommentteja. Ole "
+"hyvä ja <a href=\"%(sign_in_url)s\">kirjaudu sisään</a>."
-#~ msgid "Active member for a year"
-#~ msgstr "Aktiivinen jäsen vuoden ajan"
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "anteeksi, meillä näyttää olevan teknisiä vaikeuksia"
-#~ msgid "notable-question"
-#~ msgstr "huomattava-kysymys"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "käytä-näitä-merkkejä-tageissa"
-#~ msgid "enlightened"
-#~ msgstr "valistunut"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "LDAP-palvelun URL"
-#~ msgid "Beta"
-#~ msgstr "Beeta"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Selitä, miten LDAP-salasana vaihdetaan"
-#~ msgid "beta"
-#~ msgstr "beeta"
+#~ msgid "question_answered"
+#~ msgstr "vastasi"
-#~ msgid "guru"
-#~ msgstr "guru"
+#~ msgid "question_commented"
+#~ msgstr "kommentoi"
-#~ msgid "necromancer"
-#~ msgstr "kuolleistaherattaja"
+#~ msgid "answer_commented"
+#~ msgstr "vastausta kommentoitu"
-#~ msgid "taxonomist"
-#~ msgstr "taksonomi"
+#~ msgid "answer_accepted"
+#~ msgstr "vastaus hyväksytty"
-#~ msgid "About"
-#~ msgstr "Tietoa sivustosta"
+#~ msgid "Incorrect username."
+#~ msgstr "Valitettavasti tätä käyttäjänimeä ei ole olemassa"
#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
#~ msgstr ""
-#~ "<span class='strong big'>Looks like your email address, %(email)s has not "
-#~ "yet been validated.</span> To post messages you must verify your email, "
-#~ "please see <a href='%(email_validation_faq_url)s'>more details here</a>."
-#~ "<br>You can submit your question now and validate email after that. Your "
-#~ "question will saved as pending meanwhile. "
-
-#, fuzzy
-#~ msgid "%(type)s"
-#~ msgstr "%(date)s"
-
-#~ msgid "how to validate email title"
-#~ msgstr "How to validate email and why?"
+#~ "Tämä komento saattaa helpottaa LDAP-salasananvahvistustoimintoon "
+#~ "siirtymistä luomalla tallenteen jokaisen käyttäjätilin LDAP-yhteyksistä. "
+#~ "Oletettavasti LDAP-käyttäjätunnukset ovat samat kuin sivulle "
+#~ "rekisteröidyt käyttäjätunnukset. Ennen tämän komennon suorittamista LDAP-"
+#~ "parametrit on asennettava sivun asetusten \"Ulkopuoliset avaimet\"-"
+#~ "osiossa."
+
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Hyvä %(name)s,</p></p>Tätä kysymystä on päivitetty Q&A-foorumilla:</p>"
+#~ msgstr[1] ""
+#~ "<p>Hyvä %(name)s,</p><p>Näitä %(num)d kysymystä on päivitetty Q&A-"
+#~ "foorumilla:</p>"
#~ msgid ""
-#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
-#~ "s"
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
#~ msgstr ""
-#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
-#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
-#~ "changed your email address - <strong>check your email and click the "
-#~ "included link</strong>.<br>The link contains a key generated specifically "
-#~ "for you. You can also <button style='display:inline' "
-#~ "type='submit'><strong>get a new key</strong></button> and check your "
-#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
-#~ "validation is required to make sure that <strong>only you can post "
-#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
-#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
-#~ "the most interesting questions. Also, when you sign up for the first time "
-#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
-#~ "strong></a> personal image.</p>"
-
-#~ msgid "."
-#~ msgstr "."
-
-#~ msgid "Sender is"
-#~ msgstr "Lähettäjä on"
-
-#~ msgid "Message body:"
-#~ msgstr "Viestin sisältö:"
+#~ "<p>Muista, että voit aina <a href='%(email_settings_link)s'>säätää</a> "
+#~ "sähköpostipäivitysten taajuutta tai poistaa ne kokonaan.<br/>Jos uskot "
+#~ "tämän viestin olleen lähetetty vahingossa, ota yhteyttä foorumin "
+#~ "ylläpitoon sähköpostitse osoitteeseen %(admin_email)s.</"
+#~ "p><p>Ystävällisesti,,</p><p>foorumipalvelimesi.</p>"
#~ msgid ""
-#~ "As a registered user you can login with your OpenID, log out of the site "
-#~ "or permanently remove your account."
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
#~ msgstr ""
-#~ "Clicking <strong>Logout</strong> will log you out from the forumbut will "
-#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
-#~ "completely - please make sure to log out from your OpenID provider as "
-#~ "well."
-
-#~ msgid "Logout now"
-#~ msgstr "Kirjaudu ulos"
-
-#~ msgid "mark this question as favorite (click again to cancel)"
-#~ msgstr "merkkaa suosikiksi (klikkaa uudestaan peruaksesi)"
-
-#~ msgid ""
-#~ "remove favorite mark from this question (click again to restore mark)"
-#~ msgstr "poista suosikkimerkintä (klikkaa uudestaan peruaksesi)"
-
-#~ msgid "see questions tagged '%(tag_name)s'"
-#~ msgstr "näytä kysymykset, joilla on tagi '%(tag_name)s'"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(q_num)s question\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(q_num)s questions\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<span class=\"hidden\">%(q_num)s</span>yksi kysymys löytyi"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "%(q_num)s kysymystä löytyi"
-
-#~ msgid "tagged"
-#~ msgstr "tagattu"
+#~ "liitetiedoston lisääminen edellyttää, että mainepisteitä on yli >"
+#~ "%(min_rep)s"
-#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
-#~ msgstr "poista tagi '%(tag_name)s' mielenkiintoisista"
-
-#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
-#~ msgstr "poista tagi '%(tag_name)s' hylätyistä"
-
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "pidä hylätyt piilotettuina"
-
-#~ msgid "favorites"
-#~ msgstr "suosikit"
-
-#, fuzzy
-#~ msgid "this questions was selected as favorite %(cnt)s time"
-#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
-#~ msgstr[0] "tämä kysymys valittiin suosikiksi"
-#~ msgstr[1] "tämä kysymys valittiin suosikiksi"
-
-#~ msgid "Login name"
-#~ msgstr "Käyttäjätunnus"
-
-#~ msgid "home"
-#~ msgstr "koti"
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Valitettavasti tilisi näyttää olevan lukittu, etkä voi lisätä uusia "
+#~ "merkintöjä, ennen kuin ongelma on ratkaistu. Ole hyvä ja ota yhteyttä "
+#~ "foorumin ylläpitoon ongelman ratkaisemiseksi."
-#~ msgid "Please prove that you are a Human Being"
-#~ msgstr "Ole hyvä ja todista, että olet ihminen"
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Valitettavasti tilisi näyttää olevan jäähyllä, etkä voi lisätä uusia "
+#~ "merkintöjä ennen kuin ongelma on ratkaistu. Voit kuitenkin muokata "
+#~ "aiemmin kirjoittamiasi merkintöjä. Ole hyvä ja ota yhteyttä foorumin "
+#~ "ylläpitoon ongelman ratkaisemiseksi."
-#~ msgid "I am a Human Being"
-#~ msgstr "Olen ihminen"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr ""
+#~ "Olet liputtanut tämän kysymyksen aikaisemmin, ja voit tehdä niin vain "
+#~ "kerran."
-#~ msgid "Please decide if you like this question or not by voting"
-#~ msgstr "Äänestä, että pidätkö tästä kysymyksestä vai et"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Valitettavasti tilisi on lukittu, etkä voi liputtaa merkintää loukkaavaksi"
-#~ msgid ""
-#~ "\n"
-#~ " vote\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " votes\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "ääntä"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "ääni"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Valitettavasti tilisi näyttää olevan jäähyllä, etkä voi lisätä uusia "
+#~ "merkintöjä, kunnes ongelmasi on ratkaistu. Voit kuitenkin muokata "
+#~ "aiemmin kirjoittamiasi merkintöjä. Ole hyvä, ja ota yhteyttä foorumin "
+#~ "ylläpitoon ratkaistaksesi ongelman."
-#~ msgid ""
-#~ "\n"
-#~ " answer \n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " answers \n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "vastaus"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "vastausta"
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Valitettavasti tarvitset vähintään %(min_rep)s:n maineen voidaksesi "
+#~ "liputtaa merkintöjä loukkaaviksi"
-#~ msgid ""
-#~ "\n"
-#~ " view\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " views\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "katsoja"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "katsojaa"
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr ""
+#~ "Valitettavasti olet liputtanut merkintöjä loukkaaviksi "
+#~ "%(max_flags_per_day)s kertaa, etkä voi ylittää tätä määrää yhden päivän "
+#~ "aikana."
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " vote\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " votes\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "ääni"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "ääntä"
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr "Valitettavasti tilisi on lukittu, etkä voi poistaa liputuksia"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " answer \n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " answers \n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "vastaus"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "vastausta"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Valitettavasti tilisi näyttää olevan jäähyllä, etkä voi poistaa "
+#~ "liputuksia. Ole hyvä ja ota yhteyttä foorumin ylläpitoon löytääksesi "
+#~ "ratkaisun."
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " view\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " views\n"
-#~ " "
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
#~ msgstr[0] ""
-#~ "\n"
-#~ "katsoja"
+#~ "Valitettavasti tarvitset vähintään %(min_rep)d mainepisteen voidaksesi "
+#~ "liputtaa merkintöjä"
#~ msgstr[1] ""
-#~ "\n"
-#~ "katsojaa"
-
-#~ msgid "views"
-#~ msgstr "katselut"
-
-#~ msgid "reputation points"
-#~ msgstr "maine"
-
-#~ msgid "your karma is %(reputation)s"
-#~ msgstr "maineesi on %(reputation)s"
-
-#~ msgid "badges: "
-#~ msgstr "kunniamerkit:"
+#~ "Valitettavasti tarvitset vähintään %(min_rep)d mainepistettä voidaksesi "
+#~ "liputtaa merkintöjä"
-#, fuzzy
-#~ msgid "Bad request"
-#~ msgstr "Tuntematon pyyntö"
+#~ msgid "cannot revoke old vote"
+#~ msgstr "vanhoja ääniä ei voi muuttaa"
-#~ msgid "comments/"
-#~ msgstr "kommentit/"
+#~ msgid "change %(email)s info"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Kirjoita alla olevaan kenttään uusi "
+#~ "sähköpostiosoitteesi</span> jos haluat käyttää muuta sähköpostiosoitetta "
+#~ "<strong>päivitystilauksille</strong>.<br>Tämänhetkinen sähköpostisi on "
+#~ "<strong>%(email)s</strong>"
-#~ msgid "delete/"
-#~ msgstr "poista/"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Kirjoita sähköpostiosoitteesi alla olevaan "
+#~ "kenttään.</span> Tällä Q&A-foorumilla vaaditaan voimassa oleva "
+#~ "sähköpostiosoite. Halutessasi voit <strong>vastaanottaa päivityksiä</"
+#~ "strong> mielenkiintoisista kysymyksistä tai koko foorumista "
+#~ "sähköpostitse. Sähköpostiasi käytetään myös henkilökohtaisen <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar-kuvakkeen</strong></a> "
+#~ "luomiseksi tilillesi. Sähköpostiosoitteita ei koskaan näytetä tai jaeta "
+#~ "muille käyttäjille."
-#~ msgid "Your question and all of it's answers have been deleted"
-#~ msgstr "Kysymyksesi ja kaikki sen vastaukset on poistettu"
+#~ msgid "Your new Email"
+#~ msgstr ""
+#~ "<strong>Uusi sähköpostiosoitteesi:</strong> (<strong>ei</strong> näytetä "
+#~ "muille käyttäjille, oltava voimassa)"
-#~ msgid "Your question has been deleted"
-#~ msgstr "Kysymyksesi on poistettu"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Vahvistuslinkki on lähetetty sähköpostitse "
+#~ "osoitteeseen %(email)s.</span> <strong>Klikkaa sähköpostistasi löytyvää "
+#~ "linkkiä</strong> selaimessasi. Sähköpostin vahvistus on tarpeellista, "
+#~ "jotta voimme varmistaa sähköpostin oikean käytön <span class=\"orange"
+#~ "\">Q&A-foorumilla</span>. Jos haluat käyttää <strong>toista "
+#~ "sähköpostiosoitetta</strong>, <a "
+#~ "href='%(change_email_url)s'><strong>vaihda uudelleen</strong></a>."
-#~ msgid "The question and all of it's answers have been deleted"
-#~ msgstr "Kysymys ja kaikki sen vastaukset on poistettu"
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Sähköpostiosoitettasi %(email)s ei vaihdettu.</"
+#~ "span> Voit halutessasi vaihtaa sen myöhemmin koska tahansa muokkaamalla "
+#~ "sitä käyttäjäprofiilissasi tai käyttämällä <a "
+#~ "href='%(change_email_url)s'><strong>edellistä lomaketta</strong></a> "
+#~ "uudelleen."
-#~ msgid "The question has been deleted"
-#~ msgstr "Kysymys on poistettu"
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Sähköpostiosoitteesi on nyt %(email)s. </span> "
+#~ "Päivitykset kysymyksistä, joista pidät eniten, lähetetään tähän "
+#~ "osoitteeseen. Sähköpostipäivitykset lähetetään kerran päivässä tai "
+#~ "harvemmin, vain jos uutisia on."
-#~ msgid "upfiles/"
-#~ msgstr "laheta-tiedostoja/"
+#~ msgid "thanks for verifying email"
+#~ msgstr ""
+#~ "<span class=\"big strong\">Kiitos sähköpostiosoitteesi vahvistamisesta!</"
+#~ "span> Nyt voit <strong>kysyä</strong> ja <strong>vastata kysymyksiin</"
+#~ "strong>. Jos löydät mielenkiintoisen kysymyksen, voit nyt myös "
+#~ "<strong>tilata päivityksiä</strong> - näin saat päivityksen keskustelusta "
+#~ "<strong>kerran päivässä</strong> tai harvemmin.."
-#~ msgid "Disable nofollow directive on links"
-#~ msgstr "nofollow-direktiivi pois linkeistä"
+#~ msgid "email key not sent"
+#~ msgstr "Vahvistussähköpostia ei lähetetty"
-#~ msgid "Account with this name already exists on the forum"
-#~ msgstr "Tämän niminen tunnus on jo olemassa"
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "<span class='big strong'>Nykyinen sähköpostiosoitteesi %(email)s on jo "
+#~ "vahvistettu</span> eikä uutta koodia lähetetty. Voit <a "
+#~ "href='%(change_link)s'>vaihtaa</a> käyttämääsi sähköpostiosoitetta jos "
+#~ "haluat."
-#~ msgid "can't have two logins to the same account yet, sorry."
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
-#~ "sinulla ei voi olla kahta kirjautumispalvelua samalle käyttäjätunnukselle "
-#~ "vielä."
+#~ "<p><span class=\"big strong\">Olet kirjautunut sisään ensimmäistä kertaa "
+#~ "käyttäen %(provider)s-palvelua.</span> Luo <strong>käyttätunnuksesi</"
+#~ "strong> ja tallenna <strong>sähköpostiosoitteesi</strong>. Tallennetulla "
+#~ "sähköpostiosoitteella voit <strong>tilata päivityksiä</strong> "
+#~ "mielenkiintoisimmista kysymyksistä ja sitä käytetään oman avatar-"
+#~ "kuvakkeesi luomiseen ja palauttamiseen - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "Please enter valid username and password (both are case-sensitive)."
-#~ msgstr "Syötä käyttäjätunnus ja salasana."
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<p><span class='strong big'>Hups... käyttäjätunnus %(username)s näyttää "
+#~ "jo olevan toisen tilin käytössä.</span></p><p>Valitse toinen "
+#~ "käyttäjätunnus käytettäväksi %(provider)s-palvelun kautta "
+#~ "sisäänkirjauduttuessa. Tarvitset myös voimassa olevan sähköpostiosoitteen "
+#~ "<span class='orange'>Q&A-foorumilla</span>. Sähköpostiasi käytetään oman "
+#~ "avatar-kuvakkeesi luomiseen ja palauttamiseen - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>. "
+#~ "Halutessasi voit myös <strong>tilata päivityksiä</strong> sähköpostiisi "
+#~ "mielenkiintoisimmista kysymyksistä foorumilla. Sähköpostiosoitteita ei "
+#~ "ikinä näytetä tai jaeta muiden käyttäjien kanssa.</p>"
-#~ msgid "This account is inactive."
-#~ msgstr "Tämä tunnus ei ole käytössä."
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Olet kirjautunut sisään ensimmäistä kertaa "
+#~ "käyttäen %(provider)s-palvelua.</span></p><p>Voit joko pitää "
+#~ "<strong>käyttäjätunnuksesi</strong> samana kuin %(provider)s-"
+#~ "sisäänkirjautumisnimesi tai valita jonkun muun nimimerkin.</p><p> "
+#~ "Tallennathan myös voimassa olevan <strong>sähköpostiosoitteen</strong>. "
+#~ "With the email you can <strong>subscribe for the updates</strong> on the "
+#~ "most interesting questions. Tallennetulla sähköpostiosoitteella voit "
+#~ "<strong>tilata päivityksiä</strong> mielenkiintoisimmista kysymyksistä ja "
+#~ "sitä käytetään oman avatar-kuvakkeesi luomiseen ja palauttamiseen - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "Login failed."
-#~ msgstr "Kirjautuminen epäonnistui."
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">Olet kirjautunut sisään ensimmäistä kertaa "
+#~ "käyttäen Facebookin sisäänkirjautumispalvelua.</span> Luo "
+#~ "<strong>käyttätunnuksesi</strong> ja tallenna "
+#~ "<strong>sähköpostiosoitteesi</strong>. Tallennetulla "
+#~ "sähköpostiosoitteella voit <strong>tilata päivityksiä</strong> "
+#~ "mielenkiintoisimmista kysymyksistä ja sitä käytetään oman avatar-"
+#~ "kuvakkeesi luomiseen ja palauttamiseen - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "sendpw/"
-#~ msgstr "nollaa-salasana/"
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Tällä käyttäjänimellä on jo tili, ole hyvä ja käytä toista."
-#~ msgid "password/"
-#~ msgstr "salasana/"
+#~ msgid "Screen name label"
+#~ msgstr "<strong>Käyttäjätunnus</strong> (<i>näytetään muille</i>)"
-#~ msgid "confirm/"
-#~ msgstr "hyvaksy/"
+#~ msgid "Email address label"
+#~ msgstr "Sähköpostiosoite"
-#~ msgid "email/"
-#~ msgstr "sahkoposti/"
+#~ msgid "receive updates motivational blurb"
+#~ msgstr ""
+#~ "<strong>Vastaanota foorumipäivityksiä sähköpostitse</strong> - näin autat "
+#~ "yhteisöämme kasvamaan ja tulemaan hyödyllisemmäksi.<br/><span "
+#~ "class='orange'>Q&A-foorumi</span> lähettää vakiona enintään <strong>yhden "
+#~ "päivityssähköpostin viikossa</strong> - Vain, jos uutisia on.<br/>Voit "
+#~ "halutessasi muuttaa tätä asetusta nyt tai koska tahansa myöhemmin "
+#~ "käyttäjätililtäsi."
+
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr ""
+#~ "Tagisuodatin-työkalu ilmestyy oikeanpuoleiseen palkkiin, kun olet "
+#~ "kirjautunut sisään."
-#~ msgid "validate/"
-#~ msgstr "vahvista/"
+#~ msgid "create account"
+#~ msgstr "Luo tunnus"
-#~ msgid "change/"
-#~ msgstr "muuta/"
+#~ msgid "Login"
+#~ msgstr "Kirjaudu sisään"
-#~ msgid "sendkey/"
-#~ msgstr "laheta-avain/"
+#~ msgid "Why use OpenID?"
+#~ msgstr "Miksi käyttää OpenID:tä?"
-#~ msgid "verify/"
-#~ msgstr "todenna/"
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "OpenID:n avulla sinun ei tarvitse luoda uutta käyttäjätunnusta ja "
+#~ "salasanaa."
-#~ msgid "openid/"
-#~ msgstr "openid-palvelu/"
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "Voit turvallisesti käyttää samaoja kirjautumistietoja kaikilla OpenID:tä "
+#~ "tukevilla nettipalveluissa."
-#~ msgid "external-login/forgot-password/"
-#~ msgstr "ulkoinen-kirjautuminen/nollaa-salasana/"
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "Maailmanlaajuisesti OpenID:tä käyttää jo yli 160 miljoonaa ihmistä ja yli "
+#~ "10.000 sivustoa."
-#~ msgid "Password changed."
-#~ msgstr "Salasana vaihdettu."
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID on avoin standardi, jota käyttää moni yritys ja organisaatio."
-#~ msgid "your email was not changed"
-#~ msgstr "sähköpostiosoitettasi ei muutettu"
+#~ msgid "Find out more"
+#~ msgstr "Lisätietoja"
-#~ msgid "Email Changed."
-#~ msgstr "Sähköpostiosoite vaihdettu."
+#~ msgid "Get OpenID"
+#~ msgstr "Hanki OpenID"
-#~ msgid "This OpenID is already associated with another account."
-#~ msgstr "Tämä OpenID on jo kiinnitetty toiselle tunnukselle."
+#~ msgid "Traditional signup info"
+#~ msgstr ""
+#~ "<span class='strong big'>Halutessasi voit luoda foorumi-tunnuksesi ja "
+#~ "salasanasi täällä. </span>Muista kuitenkin, että tuemme myös "
+#~ "<strong>OpenID-sisäänkirjautumista</strong>. <strong>OpenID:llä</strong> "
+#~ "voit käyttää ulkopuolista sisäänkirjautumistasi uudelleen (esim. Gmail "
+#~ "tai AOL) ikinä jakamatta kirjautumistietojasi kenenkään kanssa ja "
+#~ "muistamatta uutta salasanaa."
-#~ msgid "OpenID %s is now associated with your account."
-#~ msgstr "OpenID-palvelu %s on nyt kiinnitetty tunnukseesi."
+#~ msgid "Create Account"
+#~ msgstr "Luo tunnus"
-#~ msgid "Request for new password"
-#~ msgstr "Pyydä uutta salasanaa"
+#~ msgid "answer permanent link"
+#~ msgstr "pysyväislinkki"
-#~ msgid "email update message subject"
-#~ msgstr "news from Q&A forum"
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "%(question_author)s on valinnut tämän kysymyksen oikeaksi"
-#~ msgid "sorry, system error"
-#~ msgstr "järjestelmävirhe"
+#~ msgid "Related tags"
+#~ msgstr "Tagit"
-#~ msgid "Account functions"
-#~ msgstr "Toiminnot"
+#~ msgid "Ask a question"
+#~ msgstr "Esitä kysymys"
-#~ msgid "Change email "
-#~ msgstr "Vaihda sähköpostiosoite"
+#~ msgid "Badges summary"
+#~ msgstr "Mitalit"
-#~ msgid "Add or update the email address associated with your account."
+#~ msgid "gold badge description"
#~ msgstr ""
-#~ "Lisää tai päivitä sähköpostiosoite, joka on kiinnitetty tunnukseesi."
+#~ "Kultamitali on tämän yhteisön korkein palkinto. Saadaksesi kultamitalin, "
+#~ "sinun on aktiivisen osallistumisesi lisäksi osoitettava merkittävää "
+#~ "tietämystä ja kykyjä."
-#~ msgid "Change OpenID"
-#~ msgstr "Vaihda OpenID"
-
-#~ msgid "Change openid associated to your account"
-#~ msgstr "Vaihda OpenID, joka on kiinnitetty tunnukseesi"
-
-#~ msgid "Erase your username and all your data from website"
-#~ msgstr "Poista tunnuksesi ja kaikki siihen liitetty tieto sivustolta"
+#~ msgid "silver badge description"
+#~ msgstr "hopeamitali: myönnetään erittäin korkealaatuisesta panoksesta"
-#~ msgid "toggle preview"
-#~ msgstr "esikatselu päälle/pois"
+#~ msgid "bronze badge description"
+#~ msgstr "pronssimitali: annetaan usein erikoiskunniana"
-#~ msgid "reading channel"
-#~ msgstr "luetaan kanavaa"
+#~ 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 ""
+#~ "on <strong>kysymys ja vastaus</strong> -sivusto - <strong> ei "
+#~ "keskustelupalsta tai -ryhmä</strong>. Vältä kysymyksiä, jotka yrittävät "
+#~ "nostaa pintaan väittelyä. Käytä kommentteja pieniin lisäkysymyksiin tai "
+#~ "vastauksiin."
-#~ msgid "[author]"
-#~ msgstr "[tekijä]"
+#~ msgid "Rep system summary"
+#~ msgstr ""
+#~ "Kun kysymystä tai vastausta äänestetään ylöspäin, ansaitsee kysyjä tai "
+#~ "vastaaja pisteitä, joita kutsutaan \"mainepisteiksi\". Nämä pisteet "
+#~ "kuvaavat karkealla tasolla yhteisön luottamusta. Mainepisteiden "
+#~ "perusteella voidaan käyttäjille myöntää asteittain erilaisia "
+#~ "moderointitehtäviä."
-#~ msgid "[publisher]"
-#~ msgstr "[julkaisija]"
+#~ msgid "what is gravatar"
+#~ msgstr "Miten vaihdan profiilissani olevan kuvan (gravatar)?"
-#~ msgid "[publication date]"
-#~ msgstr "[julkaisupäivä]"
+#~ msgid "gravatar faq info"
+#~ msgstr ""
+#~ "<p>Käyttäjän profiilissa näkyvä kuva on nimeltään <strong>gravatar</"
+#~ "strong> (<strong>g</strong>lobally <strong>r</strong>ecognized "
+#~ "<strong>avatar</strong>).</p><p>Se toimii näin: <strong>kryptografinen "
+#~ "koodi</strong> luodaan käyttäen sähköpostiosoitettasi. Lataat kuvasi (tai "
+#~ "haluamasi alter ego -kuvan) sivulle <a href='http://gravatar."
+#~ "com'><strong>gravatar.com</strong></a>, josta myöhemmin haemme kuvasi "
+#~ "käyttäen koodia.</p><p>Näin kaikki luottamasi nettisivut voivat näyttää "
+#~ "kuvasi merkintöjesi vieressä ja sähköpostiosoitteesi pysyy yksityisenä.</"
+#~ "p><p><strong>Tee tilistäsi persoonallinen</strong> kuvan avulla - "
+#~ "rekisteröidy osoitteessa <a href='http://gravatar.com'><strong>gravatar."
+#~ "com</strong></a> (varmista, että käytät samaa sähköpostiosoitetta, jota "
+#~ "käytit rekisteröityessäsi tänne). Vakiokuvake, joka näyttää "
+#~ "keittiölaatalta, luodaan automaattisesti.</p>"
-#~ msgid "[price]"
-#~ msgstr "[hinta]"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "pidän tästä kysymyksestä (klikkaa uudelleen peruaksesi)"
-#~ msgid "currency unit"
-#~ msgstr "rahayksikkö"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "pidän tästä vastauksesta (klikkaa uudestaan peruaksesi)"
-#~ msgid "[pages]"
-#~ msgstr "[sivut]"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "en pidä tästä kysymyksestä (klikkaa uudelleen peruaksesi)"
-#~ msgid "[tags]"
-#~ msgstr "[tagit]"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "en pidä tästä vastauksesta (klikkaa uudestaan peruaksesi)"
-#~ msgid "book directory"
-#~ msgstr "kirjahakemisto"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] "Näytä <strong>%(counter)s</strong> kommentti lisää"
+#~ msgstr[1] "Näytä <strong>%(counter)s</strong> kommenttia lisää"
-#~ msgid "buy online"
-#~ msgstr "osta verkosta"
+#~ msgid "Change tags"
+#~ msgstr "Vaihda tageja"
-#~ msgid "reader questions"
-#~ msgstr "lukijoiden kysymykset"
+#~ msgid "reputation"
+#~ msgstr "mainepisteet"
-#~ msgid "ask the author"
-#~ msgstr "kysy"
+#~ msgid "oldest answers"
+#~ msgstr "vanhimmat vastaukset"
-#~ msgid "number of times"
-#~ msgstr "kertaa"
+#~ msgid "newest answers"
+#~ msgstr "uusimmat vastaukset"
-#~ msgid "%(rev_count)s revision"
-#~ msgid_plural "%(rev_count)s revisions"
-#~ msgstr[0] "%(rev_count)s revisiota"
-#~ msgstr[1] "%(rev_count)s revisio"
+#~ msgid "popular answers"
+#~ msgstr "äänestetyimmät"
-#~ msgid "tags help us keep Questions organized"
+#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
-#~ "tagit auttavat kysymysten pitämistä järjestyksessä ja helpottavat hakua"
-
-#~ msgid "Found by tags"
-#~ msgstr "Tagged questions"
-
-#~ msgid "Search results"
-#~ msgstr "Hakutulokset"
-
-#~ msgid "Found by title"
-#~ msgstr "Löytyi otsikon mukaan"
-
-#~ msgid "Unanswered questions"
-#~ msgstr "Vastaamattomat"
-
-#~ msgid "less answers"
-#~ msgstr "vähemmän vastauksia"
-
-#~ msgid "click to see coldest questions"
-#~ msgstr "questions with fewest answers"
+#~ "<span class='strong big'>Ala merkintöjen julkaiseminen anonyymisti</span> "
+#~ "- vastauksesi tallennetaan sen hetkisessä sessiossa ja julkaistaan, kun "
+#~ "olet kirjautunut sisään tai luot uuden tilin. Yritä antaa kysymyksiin "
+#~ "<strong>merkityksellisiä vastauksia</strong>, <strong>käytä kommentteja</"
+#~ "strong>, jos kyseessä on keskustelu, ja <strong>muista äänestää</strong> "
+#~ "(kirjauduttuasi sisään)!"
-#~ msgid "more answers"
-#~ msgstr "eniten vastauksia"
-
-#~ msgid "unpopular"
-#~ msgstr "epäsuosittu"
-
-#~ msgid "popular"
-#~ msgstr "suosittu"
-
-#~ msgid "Open the previously closed question"
-#~ msgstr "Avaa suljettu kysymys"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr ""
+#~ "<span class='big strong'>Voit vastata omaan kysymykseesi</span>, mutta "
+#~ "annathan kunnollisen <strong>vastauksen</strong>. Muista, että voit aina "
+#~ "<strong>tarkistaa alkuperäisen kysymyksesi</strong>. <strong>Käytä "
+#~ "kommentteja, jos kyseessä on keskustelu</strong> ja <strong>muista "
+#~ "äänestää :)</strong> vastauksia, joista pidit (tai et pitänyt)! "
-#~ msgid "reason - leave blank in english"
-#~ msgstr "syy - jätä tyhjäksi englanniksi"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr ""
+#~ "<span class='big strong'>Yritä antaa kunnollisia vastauksia</span>. Jos "
+#~ "haluat kommentoida kysymystä tai vastausta, <strong>käytä kommentti-"
+#~ "työkalua</strong>. Muista, että voit aina <strong>tarkistaa alkuperäisen "
+#~ "kysymyksesi</strong>. <strong>Käytä kommentteja, jos kyseessä on "
+#~ "keskustelu</strong> ja <strong>muista äänestää</strong>, se todella "
+#~ "helpottaa parhaiden kysymysten ja vastausten valitsemista!"
-#~ msgid "on "
-#~ msgstr "päällä"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Kirjaudu antaaksesi vastauksen"
-#~ msgid "date closed"
-#~ msgstr "sulkemispäivä"
+#~ msgid "Answer the question"
+#~ msgstr "Lähetä vastauksesi"
-#~ msgid "responses"
-#~ msgstr "vastaukset"
+#~ msgid "question asked"
+#~ msgstr "Kysytty"
-#~ msgid "Account: change OpenID URL"
-#~ msgstr "Tunnus: vaihda OpenID-palvelun URL-osoite"
+#~ msgid "question was seen"
+#~ msgstr "Nähty"
-#~ msgid ""
-#~ "This is where you can change your OpenID URL. Make sure you remember it!"
+#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
-#~ "Tästä voit vaihtaa OpenID-palvelun URL-osoitteen. Pidä osoite mielessäsi!"
+#~ "<strong>Ilmoita minulle</strong> päivittäin sähköpostilla, kun tulee "
+#~ "uusia vastauksia tai päivityksiä"
-#~ msgid "Please correct errors below:"
-#~ msgstr "Korjaa allaolevat virheet:"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Ilmoita minulle</strong> välittömästi uusista vastauksista tai "
+#~ "päivityksistä"
#~ msgid ""
-#~ "This is where you can change your password. Make sure you remember it!"
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
#~ msgstr ""
-#~ "<span class='strong'>To change your password</span> please fill out and "
-#~ "submit this form"
-
-#~ msgid "Connect your OpenID with this site"
-#~ msgstr "Kirjautuminen"
-
-#~ msgid "Sorry, looks like we have some errors:"
-#~ msgstr "Virheitä havaittiin:"
-
-#~ msgid "Existing account"
-#~ msgstr "Olemassaoleva tunnus"
-
-#~ msgid "password"
-#~ msgstr "salasana"
-
-#~ msgid "Forgot your password?"
-#~ msgstr "Unohditko salasanasi?"
-
-#~ msgid "Account: delete account"
-#~ msgstr "Tunnus: poista tunnus"
+#~ "(huom.: voit aina <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>muuttaa</a></strong> huomautusten "
+#~ "lähettämistiheyttä)"
-#~ msgid "Check confirm box, if you want delete your account."
-#~ msgstr "Ruksita hyväksymislaatikko, jos haluat poistaa tunnuksesi."
-
-#~ msgid "I am sure I want to delete my account."
-#~ msgstr "Olen varma, että haluan tuhota tunnukseni."
-
-#~ msgid "Password/OpenID URL"
-#~ msgstr "Salasana/OpenID-palvelun URL-osoite"
-
-#~ msgid "(required for your security)"
-#~ msgstr "(vaaditaan takausta varten)"
+#~ msgid "email subscription settings info"
+#~ msgstr ""
+#~ "<span class='big strong'>Säädä sähköpostipäivitysten tiheyttä. </span> "
+#~ "Voit vastaanottaa sähköpostiisi päivityksiä mielenkiintoisiin kysymyksiin "
+#~ "liittyen , <strong><br/>auta yhteisöä</strong> vastaamalla kollegojesi "
+#~ "kysymyksiin. Jos et halua vastaanottaa sähköposteja, valitse 'ei "
+#~ "sähköpostia' -valinta kaikissa kohdissa alla. <br/>Päivityksiä lähetetään "
+#~ "vain, jos jossain valitsemistasi kohdista on tapahtunut muutoksia."
-#~ msgid "Delete account permanently"
-#~ msgstr "Poista tunnus lopullisesti"
+#~ msgid "Stop sending email"
+#~ msgstr "Lopeta sähköposti"
-#~ msgid "Traditional login information"
-#~ msgstr "Perinteisen kirjautumisen tiedot"
+#~ msgid "user website"
+#~ msgstr "sivusto"
-#~ msgid "Send new password"
-#~ msgstr "Lähetä salasana"
+#~ msgid "reputation history"
+#~ msgstr "mainepisteet"
-#~ msgid "password recovery information"
-#~ msgstr ""
-#~ "<span class='big strong'>Forgot you password? No problems - just get a "
-#~ "new one!</span><br/>Please follow the following steps:<br/>&bull; submit "
-#~ "your user name below and check your email<br/>&bull; <strong>follow the "
-#~ "activation link</strong> for the new password - sent to you by email and "
-#~ "login with the suggested password<br/>&bull; at this you might want to "
-#~ "change your password to something you can remember better"
+#~ msgid "recent activity"
+#~ msgstr "uusimmat"
-#~ msgid "Reset password"
-#~ msgstr "Nollaa salasana"
+#~ msgid "casted votes"
+#~ msgstr "äänet"
-#~ msgid "return to login"
-#~ msgstr "palaa kirjautumiseen"
+#~ msgid "answer tips"
+#~ msgstr "Vastausvinkkejä"
-#~ msgid ""
-#~ "email explanation how to use new %(password)s for %(username)s\n"
-#~ "with the %(key_link)s"
-#~ msgstr ""
-#~ "To change your password, please follow these steps:\n"
-#~ "* visit this link: %(key_link)s\n"
-#~ "* login with user name %(username)s and password %(password)s\n"
-#~ "* go to your user profile and set the password to something you can "
-#~ "remember"
+#~ msgid "please try to provide details"
+#~ msgstr "anna tarpeeksi yksityiskohtia"
-#~ msgid "Click to sign in through any of these services."
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">Please select your favorite login method "
-#~ "below.</span></p><p><font color=\"gray\">External login services use <a "
-#~ "href=\"http://openid.net\"><b>OpenID</b></a> technology, where your "
-#~ "password always stays confidential between you and your login provider "
-#~ "and you don't have to remember another one.</font></p>"
-
-# msgid "Click to sign in through any of these services."
-# msgstr ""
-# "<p><span class=\"big strong\">Please select your favorite login method below."
-# "</span></p><p><font color=\"gray\">External login services use <a href="
-# "\"http://openid.net\"><b>OpenID</b></a> technology, where your password "
-# "always stays confidential between you and your login provider and you don't "
-# "have to remember another one. "
-# "Askbot option requires your login name and "
-# "password entered here.</font></p>"
-#~ msgid "Enter your <span id=\"enter_your_what\">Provider user name</span>"
-#~ msgstr ""
-#~ "<span class=\"big strong\">Enter your </span><span id=\"enter_your_what\" "
-#~ "class='big strong'>Provider user name</span><br/><span class='grey'>(or "
-#~ "select another login method above)</span>"
+#~ msgid "ask a question"
+#~ msgstr "Esitä kysymys"
#~ msgid ""
-#~ "Enter your <a class=\"openid_logo\" href=\"http://openid.net\">OpenID</a> "
-#~ "web address"
-#~ msgstr ""
-#~ "<span class=\"big strong\">Enter your <a class=\"openid_logo\" href="
-#~ "\"http://openid.net\">OpenID</a> web address</span><br/><span "
-#~ "class='grey'>(or choose another login method above)</span>"
-
-#~ msgid "Enter your login name and password"
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
#~ msgstr ""
-#~ "<span class='big strong'>Enter your Askbot login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
+#~ "<span class='strong big'>Näyttää siltä, että sähköpostiosoitettasi "
+#~ "%(email)s ei ole vielä vahvistettu.</span> Julkaistaksesi merkintöjä "
+#~ "sinun on vahvistettava sähköpostiosoitteesi, katso lisätietoja <a "
+#~ "href='%(email_validation_faq_url)s'>täältä</a>.<br>Voit julkaista "
+#~ "kysymyksesi nyt ja vahvistaa sähköpostiosoitteesi sitten. Kysymyksesi on "
+#~ "sen aikaa jonossa."
-#~ msgid "Create account"
-#~ msgstr "Luo tunnus"
-
-#~ msgid "Connect to %(settings.APP_SHORT_NAME)s with Facebook!"
-#~ msgstr "Yhdistä %(settings.APP_SHORT_NAME)s -sivustoon Facebookin avulla!"
-
-#~ msgid "favorite questions"
-#~ msgstr "suosikkikysymykset"
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Kirjaudu sisään kysyäksesi kysymyksesi"
-#~ msgid "question"
-#~ msgstr "kysymys"
+#~ msgid "question tips"
+#~ msgstr "Vinkkejä kysymiseen"
-#~ msgid "unanswered/"
-#~ msgstr "vastaaamattomat/"
+#~ msgid "please ask a relevant question"
+#~ msgstr "kysy kysymys mikä koskee aiheitamme"
-#~ msgid "nimda/"
-#~ msgstr "hallinta/"
+#~ msgid "logout"
+#~ msgstr "kirjaudu ulos"
-#~ msgid "open any closed question"
-#~ msgstr "avaa mikä tahansa suljettu kysymys"
+#~ msgid "login"
+#~ msgstr "Tervehdys! Ole hyvä ja kirjaudu sisään"
-#~ msgid "books"
-#~ msgstr "kirjat"
+#~ msgid "no items in counter"
+#~ msgstr "0"
-#~ msgid "general message about privacy"
-#~ msgstr ""
-#~ "Respecting users privacy is an important core principle of this Q&amp;A "
-#~ "forum. Information on this page details how this forum protects your "
-#~ "privacy, and what type of information is collected."
+#~ msgid "your email address"
+#~ msgstr "sähköpostiosoitteesi"
-#~ msgid "Site Visitors"
-#~ msgstr "Sivuston kävijät"
+#~ msgid "choose password"
+#~ msgstr "Salasana"
-#~ msgid "what technical information is collected about visitors"
-#~ msgstr ""
-#~ "Information on question views, revisions of questions and answers - both "
-#~ "times and content are recorded for each user in order to correctly count "
-#~ "number of views, maintain data integrity and report relevant updates."
+#~ msgid "retype password"
+#~ msgstr "Salasana uudestaan"
-#~ msgid "Personal Information"
-#~ msgstr "Henkilökohtaiset tiedot"
+#~ msgid "user reputation in the community"
+#~ msgstr "käyttäjän mainepisteet"
-#~ msgid "details on personal information policies"
+#~ msgid "Please log in to ask questions"
#~ msgstr ""
-#~ "Members of this community may choose to display personally identifiable "
-#~ "information in their profiles. Forum will never display such information "
-#~ "without a request from the user."
+#~ "<span class=\"strong big\">Voit esittää kysymyksesi anonyymisti</span>. "
+#~ "Kun julkaiset merkinnän, sinut ohjataan takaisin "
+#~ "sisäänkirjautumissivulle. Kysymyksesi tallennetaan senhetkisessä "
+#~ "sessiossa ja julkaistaan, kun olet kirjautunut sisään. "
+#~ "Sisäänkirjautuminen tai rekisteröityminen on yksinkertaista. "
+#~ "Sisäänkirjautuminen kestää noin 30 sekuntia, rekisteröityminen enintään "
+#~ "minuutin."
-#~ msgid "details on sharing data with third parties"
+#~ msgid ""
+#~ "As a registered user you can login with your OpenID, log out of the site "
+#~ "or permanently remove your account."
#~ msgstr ""
-#~ "None of the data that is not openly shown on the forum by the choice of "
-#~ "the user is shared with any third party."
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
-#~ msgid "Policy Changes"
-#~ msgstr "Säännönmuutokset"
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
-#~ msgid "how privacy policies can be changed"
+#~ msgid ""
+#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
+#~ "s"
#~ msgstr ""
-#~ "These policies may be adjusted to improve protection of user's privacy. "
-#~ "Whenever such changes occur, users will be notified via the internal "
-#~ "messaging system. "
-
-#~ msgid "Email Validation"
-#~ msgstr "Sähköpostin tarkistus"
-
-#~ msgid "Thank you, your email is now validated."
-#~ msgstr "Sähköpostiosoitteesi on nyt tarkistettu."
-
-#~ msgid "Welcome back %s, you are now logged in"
-#~ msgstr "Tervetuloa takaisin %s, olet nyt kirjautuneena sisään"
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
-#~ msgid "books/"
-#~ msgstr "kirjat/"
+#~ msgid "reputation points"
+#~ msgstr "karma"
diff --git a/askbot/locale/fi/LC_MESSAGES/djangojs.mo b/askbot/locale/fi/LC_MESSAGES/djangojs.mo
index 8bd6e6ab..e5b8f7a9 100644
--- a/askbot/locale/fi/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/fi/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/fi/LC_MESSAGES/djangojs.po b/askbot/locale/fi/LC_MESSAGES/djangojs.po
index 7e4cc734..2c4ad82c 100644
--- a/askbot/locale/fi/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/fi/LC_MESSAGES/djangojs.po
@@ -1,344 +1,344 @@
# 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.
#
+# Translators:
+# Hannu Sehm <hannu@kipax.fi>, 2012.
+# Otto Nuoranne <otto.nuoranne@hotmail.com>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:58-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:50-0500\n"
+"PO-Revision-Date: 2012-03-12 09:32+0000\n"
+"Last-Translator: Hannu Sehm <hannu@kipax.fi>\n"
+"Language-Team: Finnish (http://www.transifex.net/projects/p/askbot/language/"
+"fi/)\n"
+"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "Oletko varma että haluat poistaa %s:n sisäänkirjautumisen?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Lisää yksi tai useampi sisäänkirjautumistapa"
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"Sinulle i tällä hetkellä ole yhtäkään sisäänkirjautumistapaa, ole hyvä ja "
+"lisää yksi tai useampi klikkaamalla jotakin alla olevista kuvakkeista."
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "salasanat eivät täsmää"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Näytä/muokkaa tämänhetkisiä sisäänkirjautumistapoja"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "Kirjoita tähän %s ja jatka sitten"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "Yhdistä %(provider_name)s-tilisi sivuun %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "Vaihda %s-salasanaasi"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Vaihda salasanaa"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "Luo salasana %s:lle"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Luo salasana"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Luo salasanalla suojattu tili"
#: skins/common/media/js/post.js:28
msgid "loading..."
-msgstr ""
-
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "anna vähintään yksi tagi"
+msgstr "ladataan..."
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "syötä vähintään %s merkkiä"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "syötä vähintään %s merkkiä"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr ""
+msgstr "ei käyttöoikeutta"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "et voi hyväksyä omaa vastaustasi parhaaksi"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr ""
+msgstr "ole hyvä ja kirjaudu sisään"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "anonyymit käyttäjät eivät voi seurata kysymyksiä"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "anonyymit käyttäjät eivät voi kirjoittautua kysymysten tilaajiksi"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta "
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
"oletko varma, että tämä on roskaposti, loukkaava tai muuta hyväksymätöntä?"
-#: skins/common/media/js/post.js:295
-msgid "anonymous users cannot flag offensive posts"
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
msgstr ""
+"oletko varma, että tämä on roskaposti, loukkaava tai muuta hyväksymätöntä?"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr "anonyymit käyttäjät eivät voi liputtaa merkintöjä loukkaaviksi"
+
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "oletko varma, että haluat poistaa tämän?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "kirjaudu sisään, jotta voit käyttää tätä ominaisuutta"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "postauksesi on palautettu!"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "postauksesi on poistettu"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
-msgstr ""
+msgstr "lisää kommentti"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
+msgstr "tallenna kommentti"
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "%s merkkiä jäljellä"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "%s merkkiä jäljellä"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "oletko varma, että haluat poistaa tämän kommentin?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "Kirjoita tähän kysymyksen otsikko (>10 merkkiä)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "Tagi \"<span></span>\" yhteensopivuus:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "ja %s tässä näkymätöntä lisää..."
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "Valitse ainakin yksi"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "Haluatko poistaa tämän huomautuksen?"
+msgstr[1] "Haluatko poistaa nämä huomautukset?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "poista kommentti"
+msgstr[1] "poista kommentti"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "poista kommentti"
+msgstr[1] "poista kommentti"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
+"Ole hyvä ja <a href=\"%(signin_url)s\">kirjaudu sisään</a> seurataksesi "
+"käyttäjää %(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "lopeta %s:n seuraaminen"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "seurataan %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "seuraa %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
+msgstr "sulje klikkaamalla"
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
-msgstr ""
+msgstr "lihavoitu"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
-msgstr ""
+msgstr "kursivoitu"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
-msgstr ""
+msgstr "linkki"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
-msgstr ""
+msgstr "lainaus"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr ""
+msgstr "esimuotoiltu teksti"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
-msgstr ""
+msgstr "kuva"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "liite"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
-msgstr ""
+msgstr "numeroitu lista"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
-msgstr ""
+msgstr "lista ranskalaisilla viivoilla"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
-msgstr ""
+msgstr "otsikko"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr ""
+msgstr "vaakasuora palkki"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
-msgstr ""
+msgstr "peruuta"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
-msgstr ""
+msgstr "tee uudelleen"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"Anna kuvan URL-osoite, esim. http://www.example.com/image.jpg \"kuvan otsikko"
"\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr "Anna URL-osoite, esim. http://www.example.com \"sivun otsikko\""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "Valitse ja lataa tiedosto:"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "anna vähintään yksi tagi"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "ei voi jättää tyhjäksi"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "syötä vähintään %s merkkiä"
+
+#~ msgid "please enter title"
+#~ msgstr "ole hyvä ja kirjoita otsikko"
+
+#~ msgid "%s title minchars"
+#~ msgstr "syötä vähintään %s merkkiä"
+
+#~ msgid "Follow"
+#~ msgstr "Seuraa"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s seuraaja"
+#~ msgstr[1] "%s seuraajaa"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr ""
+#~ "<div>Seurataan</div><div class=\"unfollow\">Lopeta seuraaminen</div>"
+
+#~ msgid "undelete"
+#~ msgstr "peru poistaminen"
+
+#~ msgid "delete"
+#~ msgstr "poista"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "%s merkkiä jäljellä"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s merkkiä jäljellä"
+
+#~ msgid "cancel"
+#~ msgstr "peruuta"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "Oletko varma, ettet halua julkaista tätä kommenttia?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "oletko varma, että haluat poistaa tämän kommentin?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "muokkaa kommenttia klikkaamalla"
+
+#~ msgid "edit"
+#~ msgstr "muokkaa"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "katso kysymyksiä, jotka on merkitty tagillä '%s'"
+
+#~ msgid "image description"
+#~ msgstr "kuvaus"
+
+#~ msgid "file name"
+#~ msgstr "tiedostonimi"
+
+#~ msgid "link text"
+#~ msgstr "linkin teksti"
diff --git a/askbot/locale/fr/LC_MESSAGES/django.mo b/askbot/locale/fr/LC_MESSAGES/django.mo
index b0a3103b..f8b94d4e 100644
--- a/askbot/locale/fr/LC_MESSAGES/django.mo
+++ b/askbot/locale/fr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/fr/LC_MESSAGES/django.po b/askbot/locale/fr/LC_MESSAGES/django.po
index 72662e82..327f0e79 100644
--- a/askbot/locale/fr/LC_MESSAGES/django.po
+++ b/askbot/locale/fr/LC_MESSAGES/django.po
@@ -1,369 +1,397 @@
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
+# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
+# Alexandre Lissy <alexandrelissy@free.fr>, 2012.
+#
msgid ""
msgstr ""
"Project-Id-Version: Askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:32-0600\n"
-"PO-Revision-Date: 2010-08-25 19:15+0100\n"
-"Last-Translator: - <->\n"
-"Language-Team: FrenchTranslationTeam <toto@toto.com>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:54-0500\n"
+"PO-Revision-Date: 2012-06-14 20:15+0100\n"
+"Last-Translator: Goofy <goofy@frenchmozilla.org>\n"
+"Language-Team: français <>\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
"X-Translated-Using: django-rosetta 0.5.3\n"
-"Plural-Forms: nplurals=2; plural=(n>1);\n"
-"X-Poedit-Language: French\n"
-"X-Poedit-Country: FRANCE\n"
"X-Poedit-SourceCharset: utf-8\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
-msgstr ""
-"Désolé, mais les utilisateurs anonymes ne peuvent pas accéder à cette "
-"fonction"
+msgstr "Désolé, mais les utilisateurs anonymes ne peuvent pas accéder à cette fonction"
-#: feed.py:26 feed.py:100
+#: feed.py:28
+#: feed.py:90
msgid " - "
msgstr " - "
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
msgstr "questions sélectionnées individuellement"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "dernières questions"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Supprimer le compte"
+msgstr "sélection du pays"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "Pays"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "ce champ est obligatoire"
+msgstr "Le champ pays est obligatoire"
#: forms.py:104
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "titre"
#: forms.py:105
msgid "please enter a descriptive title for your question"
-msgstr "Veuillez saisir un titre descriptif pour votre question."
+msgstr "Veuillez saisir un titre suffisamment explicite pour votre question."
+
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "le titre doit comporter plus de %d caractères."
+msgstr[1] "le titre doit comporter plus de %d caractères."
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr "Le titre est trop long, taille maximum autorisée de %d caractères"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "le titre doit comporter plus de 10 caractères."
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr "Le titre est trop long, taille maximum autorisée de %d octets"
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "contenu"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "La question doit comporter plus de 10 caractères."
-
-#: forms.py:134
+#: forms.py:185
+#: skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
-msgstr "Mots-clés (tags)"
+msgstr "Mots-clés"
-#: forms.py:136
-msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"Les mots-clés sont utilisés en guise de marqueurs (\"tags\" en anglais). Ils "
-"doivent être courts, et ne pas comporter d'espaces. Vous pouvez utiliser "
-"jusqu'à 5 mots-clés."
+#: forms.py:188
+#, python-format
+msgid "Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can be used."
+msgid_plural "Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can be used."
+msgstr[0] "Les mots-clés sont utilisés en guise de marqueurs (\"tags\" en anglais). Ils doivent être courts, et ne pas comporter d'espaces. Vous pouvez utiliser jusqu'à %(max_tags)d mots-clés."
+msgstr[1] "Les mots-clés sont utilisés en guise de marqueurs (\"tags\" en anglais). Ils doivent être courts, et ne pas comporter d'espaces. Vous pouvez utiliser jusqu'à %(max_tags)d mots-clés."
-#: forms.py:164
+#: forms.py:222
+#: skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "Les mots-clés sont obligatoires."
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
-msgstr[0] "Veuillez utiliser %(tag_count)d mot-clé, ou moins"
+msgstr[0] "Veuillez utiliser %(tag_count)d mots-clés, ou moins"
msgstr[1] "Veuillez utiliser %(tag_count)d mots-clés, ou moins"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Au moins un des mots-clés suivants est nécessaire : %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
-msgstr[0] "Chaque mot-clé doit comporter moins de %(max_chars)d caractère"
+msgstr[0] "Chaque mot-clé doit comporter moins de %(max_chars)d caractères"
msgstr[1] "Chaque mot-clé doit comporter moins de %(max_chars)d caractères"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "utiliser-ces-caracteres-dans-les-mots-cles"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr "Dans les mots-clés, merci de n'utiliser que des lettres, chiffres et les caractères \"-+.#\""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
-msgstr ""
-"wiki communautaire (le karma n'est pas mis à jour & peu de personnes peuvent "
-"éditer la question"
+msgstr "wiki communautaire (le karma n'est pas mis à jour & peu de personnes peuvent éditer la question"
-#: forms.py:234
-msgid ""
-"if you choose community wiki option, the question and answer do not generate "
-"points and name of author will not be shown"
-msgstr ""
-"Si vous choisissez l'option \"Wiki communautaire\" , questions et réponses "
-"ne génèrent pas de points, et le nom de l'auteur ne sera pas affiché."
+#: forms.py:295
+msgid "if you choose community wiki option, the question and answer do not generate points and name of author will not be shown"
+msgstr "Si vous choisissez l'option \"Wiki communautaire\" , questions et réponses ne génèrent pas de points, et le nom de l'auteur ne sera pas affiché."
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
-msgstr "Résumé des modifications:"
+msgstr "Résumé des modifications :"
-#: forms.py:251
-msgid ""
-"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
-"improved style, this field is optional)"
-msgstr ""
-"Saisissez un bref résumé à propos de la révision (par exemple : correction "
-"orthographique, amélioration du style, ce champ est optionnel)"
+#: forms.py:312
+msgid "enter a brief summary of your revision (e.g. fixed spelling, grammar, improved style, this field is optional)"
+msgstr "Saisissez un bref résumé à propos de la révision (par exemple : correction orthographique, amélioration du style, ce champ est optionnel)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "Saisissez le nombre de points à ajouter ou retirer"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400
+#: const/__init__.py:253
msgid "approved"
msgstr "approuvée"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401
+#: const/__init__.py:254
msgid "watched"
msgstr "consultée"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402
+#: const/__init__.py:255
msgid "suspended"
-msgstr "suspendu"
+msgstr "suspendue"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403
+#: const/__init__.py:256
msgid "blocked"
msgstr "bloquée"
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
msgstr "Administrateur du site"
# FIXME
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406
+#: const/__init__.py:252
msgid "moderator"
-msgstr "moderateur"
+msgstr "modérateur"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "Modifier le statut en "
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "laquelle ?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr "Impossible de changer son propre statut"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "Impossible de convertir un autre utilisateur en modérateur"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "Impossible de changer le statut d'un autre modérateur"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "Impossible de changer son propre statut"
+msgstr "Impossible de changer le statut en administateur"
-#: forms.py:440
+#: forms.py:499
#, python-format
-msgid ""
-"If you wish to change %(username)s's status, please make a meaningful "
-"selection."
-msgstr ""
-"Si vous souhaitez changer le statut de %(username)s, effectuez une "
-"selection pertinente."
+msgid "If you wish to change %(username)s's status, please make a meaningful selection."
+msgstr "Si vous souhaitez changer le statut de %(username)s, effectuez une sélection pertinente."
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "Sujet"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "Corps du message"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "Votre nom:"
+msgstr "Votre nom (optionnel) :"
-#: forms.py:543
-#, fuzzy
+#: forms.py:531
msgid "Email:"
-msgstr "email"
+msgstr "Email :"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
-msgstr "Votre message:"
+msgstr "Votre message :"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "Je ne veux pas donner mon email ou recevoir de réponse :"
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "Merci de cocher le champ « je ne veux pas donner mon email »"
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr "être anonyme"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
-msgstr ""
+msgstr "Cochez si vous ne voulez pas afficher votre nom en posant cette question"
-#: forms.py:773
-msgid ""
-"You have asked this question anonymously, if you decide to reveal your "
-"identity, please check this box."
-msgstr ""
+#: forms.py:624
+msgid "Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr "Le sujet doit suivre le format : [tag1, tag2, tag3, ...]"
-#: forms.py:777
-msgid "reveal identity"
-msgstr ""
+#: forms.py:769
+msgid "You have asked this question anonymously, if you decide to reveal your identity, please check this box."
+msgstr "Vous avez posé cette question de manière anonyme, si vous voulez révéler votre identité, merci de cocher cette case."
-#: forms.py:835
-msgid ""
-"Sorry, only owner of the anonymous question can reveal his or her identity, "
-"please uncheck the box"
-msgstr ""
+#: forms.py:773
+msgid "reveal identity"
+msgstr "révéler mon identité"
-#: forms.py:848
-msgid ""
-"Sorry, apparently rules have just changed - it is no longer possible to ask "
-"anonymously. Please either check the \"reveal identity\" box or reload this "
-"page and try editing the question again."
-msgstr ""
+#: forms.py:831
+msgid "Sorry, only owner of the anonymous question can reveal his or her identity, please uncheck the box"
+msgstr "Désolé, seul le propriétaire de la question anonyme peut choisir de révéler son identité, merci de décocher la case"
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "Cet email ne doit pas être lié à Gravatar"
+#: forms.py:844
+msgid "Sorry, apparently rules have just changed - it is no longer possible to ask anonymously. Please either check the \"reveal identity\" box or reload this page and try editing the question again."
+msgstr "Désolé, apparemment les règles viennent de changer - il n'est plus possible de poser une question anonyme. Merci de cocher la case « révéler mon identité » ou recharger la page et réessayer de modifier la question."
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nom réel"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Site web"
-#: forms.py:907
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "Ville"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "Afficher le pays"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Date de naissance"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
-msgstr ""
-"ne sera pas affichée; utilisée pour calculer votre âge. Format: AAAA-MM-"
-"JJPar exemple: 1980-12-25 pour le 25 décembre 1980"
+msgstr "ne sera pas affichée ; utilisée pour calculer votre âge. Format: AAAA-MM-JJPar exemple: 1980-12-25 pour le 25 décembre 1980"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Pseudo"
-#: forms.py:968 forms.py:969
+#: forms.py:963
+#: forms.py:964
msgid "this email has already been registered, please use another one"
-msgstr "Cet email a déjà été enregistré; merci d'utiliser une autre adresse"
+msgstr "Cet email a déjà été enregistré ; merci d'utiliser une autre adresse"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "Choisissez un tag pour filtrer les emails"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Mes questions"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Questions auxquelles j'ai répondu"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Sélectionnées individuellement"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Forum entier (filtré par tag)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Commentaires et messages me mentionnant"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "Veuillez choisir une des options ci-dessus"
+
#: forms.py:1115
msgid "okay, let's try!"
-msgstr "D'accord, j'essaye !"
+msgstr "D'accord, j'essaie !"
-#: forms.py:1116
-msgid "no community email please, thanks"
-msgstr "pas d'emails s'il vous plait, merci"
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr "pas d'email %(sitename)s s'il vous plait, merci"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "Veuillez choisir une des options ci-dessus"
+#: lamson_handlers.py:126
+#: tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr "======= Répondre sous cette ligne. ====-=-="
+
+#: lamson_handlers.py:130
+msgid "Your message was malformed. Please make sure to qoute the original notification you received at the end of your reply."
+msgstr "Votre message était mal formaté. Merci de vous assurer de citer la notification que vous avez reçue à la fin de votre réponse."
-#: urls.py:57
+#: lamson_handlers.py:147
+msgid "You were replying to an email address unknown to the system or you were replying from a different address from the one where you received the notification."
+msgstr "Vous répondiez à une adresse email inconnue du système ou bien vous répondiez depuis une adresse différente de celle où vous avez reçu la notification."
+
+#: urls.py:41
msgid "about/"
msgstr "apropos/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "faq/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "vieprivee/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr "aide/"
+
+#: urls.py:46
+#: urls.py:51
msgid "answers/"
msgstr "reponses/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46
+#: urls.py:87
+#: urls.py:212
msgid "edit/"
msgstr "modifier/"
-#: urls.py:66 urls.py:117
+#: urls.py:51
+#: urls.py:117
msgid "revisions/"
msgstr "revisions/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "questions"
+
+#: urls.py:82
+#: urls.py:87
+#: urls.py:92
+#: urls.py:97
+#: urls.py:102
+#: urls.py:107
+#: urls.py:112
+#: urls.py:117
+#: urls.py:123
+#: urls.py:299
msgid "questions/"
msgstr "questions/"
@@ -391,64 +419,72 @@ msgstr "repondre/"
msgid "vote/"
msgstr "voter/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr "applets/"
+
+#: urls.py:158
msgid "tags/"
msgstr "mots-cles/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "suivi-des-tags/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206
+#: urls.py:212
+#: urls.py:218
+#: urls.py:226
msgid "users/"
msgstr "utilisateurs/"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "Abonnements aux emails"
+msgstr "inscriptions/"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "utilisateurs/avatar_personnel/"
-#: urls.py:231 urls.py:236
+#: urls.py:236
+#: urls.py:241
msgid "badges/"
msgstr "Badges/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "messages/"
# FIXME
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "marques-pour-lecture/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "envoyer-sur-le-serveur/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "retour/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "question/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312
+#: setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "compte/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "Paramétrage de la base de données"
+msgstr "Paramétrage du contrôle d'accès"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "Autoriser l'accès aux seuls utilisateurs inscrits"
#: conf/badges.py:13
msgid "Badge settings"
@@ -456,103 +492,99 @@ msgstr "Paramétrage du badge"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
-msgstr ""
+msgstr "Discipliné : votes positifs minimum pour les messages supprimés"
#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Pression de pairs : votes négatifs minimum pour les messages supprimés"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Enseignant : votes positifs minimum pour la réponse"
#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Réponse sympa : votes positifs minimum pour la réponse"
#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Bonne réponse : votes positifs minimum pour la réponse"
#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Très bonne réponse : votes positifs minimum pour la réponse"
#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Question sympa : votes positifs minimum pour la question"
#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Bonne question : votes positifs minimum pour la question"
#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Excellente question : votes positifs minimum pour la question"
#: conf/badges.py:104
msgid "Popular Question: minimum views"
msgstr "Question populaire : nombre minimum de consultations"
#: conf/badges.py:113
-#, fuzzy
msgid "Notable Question: minimum views"
-msgstr "Question remarquable"
+msgstr "Question remarquable : vues minimum"
#: conf/badges.py:122
-#, fuzzy
msgid "Famous Question: minimum views"
-msgstr "Question célèbre"
+msgstr "Question célèbre : vues minimum"
#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "Autodidacte : minimum de réponses avec votes positifs"
#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "Devoir civique : votes minimum"
#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "Devoir éclairé : votes minimum"
#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Gourou : votes minimum"
#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Nécromancien : votes minimum"
#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Nécromancien : délai minimum en jours"
#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Éditeur associé : nombre d'éditions minimum"
#: conf/badges.py:194
-#, fuzzy
msgid "Favorite Question: minimum stars"
-msgstr "Question favorite"
+msgstr "Question favorite : étoiles minimum"
#: conf/badges.py:203
-#, fuzzy
msgid "Stellar Question: minimum stars"
-msgstr "Excellente question"
+msgstr "Excellente question : étoiles minimum"
#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Commentateur : commentaires minimum"
#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "Taxonomiste : minimum d'utilisation des mots-clés"
#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "Enthousiaste : jours minimum"
#: conf/email.py:15
msgid "Email and email alert settings"
@@ -563,320 +595,239 @@ msgid "Prefix for the email subject line"
msgstr "Préfixe pour la ligne de sujet de l'email"
#: conf/email.py:26
-msgid ""
-"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
-"value entered here will overridethe default."
-msgstr ""
+msgid "This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A value entered here will overridethe default."
+msgstr "Ce paramètre prend par défaut la valeur définie EMAIL_SUBJECT_PREFIX par Django. Toute valeur entrée ici prendra le dessus."
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr "Activer les alertes par email"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "Nombre maximum de nouvelles dans une alerte par email"
-#: conf/email.py:48
-#, fuzzy
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr ""
-"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
+msgstr "Fréquence par défaut pour l'envoi des mails de notification pour toutes les questions"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
-msgstr ""
+msgstr "Option pour définir la fréquence des mises à jour envoyées par email pour toutes les questions."
-#: conf/email.py:62
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr ""
-"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
+msgstr "Fréquence par défaut pour l'envoi des mails de notification quant aux questions posées par l'utilisateur"
-#: conf/email.py:64
-msgid ""
-"Option to define frequency of emailed updates for: Question asked by the "
-"user."
-msgstr ""
+#: conf/email.py:73
+msgid "Option to define frequency of emailed updates for: Question asked by the user."
+msgstr "Option pour définir la fréquence des mises à jour envoyées par email pour les questions posées par l'utlisateur."
-#: conf/email.py:76
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr ""
-"Fréquence par défaut pour l'envoi des mails de notification de nouvelles"
+msgstr "Fréquence par défaut pour l'envoi des mails de notification quant aux questions où l'utilisateur a répondu"
-#: conf/email.py:78
-msgid ""
-"Option to define frequency of emailed updates for: Question answered by the "
-"user."
-msgstr ""
+#: conf/email.py:87
+msgid "Option to define frequency of emailed updates for: Question answered by the user."
+msgstr "Option pour définir la fréquence des mises à jour envoyées par email pour les questions où l'utilisateur a répondu."
-#: conf/email.py:90
-msgid ""
-"Default notification frequency questions individually "
-"selected by the user"
-msgstr ""
+#: conf/email.py:99
+msgid "Default notification frequency questions individually selected by the user"
+msgstr "Fréquence par défaut pour l'envoi des mails de notification quant aux questions sélectionnées par l'utilisateur"
-#: conf/email.py:93
-msgid ""
-"Option to define frequency of emailed updates for: Question individually "
-"selected by the user."
-msgstr ""
+#: conf/email.py:102
+msgid "Option to define frequency of emailed updates for: Question individually selected by the user."
+msgstr "Option pour définir la fréquence des mises à jour envoyées par email pour les questions sélectionnées par l'utilisateur."
-#: conf/email.py:105
-msgid ""
-"Default notification frequency for mentions and "
-"comments"
-msgstr ""
+#: conf/email.py:114
+msgid "Default notification frequency for mentions and comments"
+msgstr "Fréquence par défaut pour l'envoi des mails de notification quant aux commentaires et mentions de l'utilisateur"
-#: conf/email.py:108
-msgid ""
-"Option to define frequency of emailed updates for: Mentions and comments."
-msgstr ""
+#: conf/email.py:117
+msgid "Option to define frequency of emailed updates for: Mentions and comments."
+msgstr "Option pour définir la fréquence des mises à jour envoyées par email pour toutes mentions ou commentaires."
-#: conf/email.py:119
-#, fuzzy
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr "Il n'y a aucune question sans réponse"
+msgstr "Envoi de rappels réguliers pour les questions sans réponses"
-#: conf/email.py:121
-msgid ""
-"NOTE: in order to use this feature, it is necessary to run the management "
-"command \"send_unanswered_question_reminders\" (for example, via a cron job "
-"- with an appropriate frequency) "
-msgstr ""
+#: conf/email.py:130
+msgid "NOTE: in order to use this feature, it is necessary to run the management command \"send_unanswered_question_reminders\" (for example, via a cron job - with an appropriate frequency) "
+msgstr "Note : pour pouvoir utiliser cette fonctionnalité, il est nécessaire d'exécuter la commande \"send_unanswered_question_reminders\" (par exemple, via une tâche cron de fréquence adaptée)"
-#: conf/email.py:134
-#, fuzzy
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "Il n'y a aucune question sans réponse"
+msgstr "Jours avant de commencer à envoyer des rappels pour les questions restées sans réponse"
-#: conf/email.py:145
-msgid ""
-"How often to send unanswered question reminders (in days between the "
-"reminders sent)."
-msgstr ""
+#: conf/email.py:154
+msgid "How often to send unanswered question reminders (in days between the reminders sent)."
+msgstr "Fréquence d'envoi de rappels pour les questions sans réponse (en jours entre les envois)."
-#: conf/email.py:157
-#, fuzzy
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
-msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
+msgstr "Nombre maximal de rappels à envoyer à propos des questions sans réponses"
-#: conf/email.py:168
-#, fuzzy
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
-msgstr "Il n'y a aucune question sans réponse"
+msgstr "Envoyer des rappels réguliers pour accepter la meilleure réponse"
-#: conf/email.py:170
-msgid ""
-"NOTE: in order to use this feature, it is necessary to run the management "
-"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
-"an appropriate frequency) "
-msgstr ""
+#: conf/email.py:179
+msgid "NOTE: in order to use this feature, it is necessary to run the management command \"send_accept_answer_reminders\" (for example, via a cron job - with an appropriate frequency) "
+msgstr "Note : pour pouvoir utiliser cette fonctionnalité, il est nécessaire d'exécuter la commande \"send_accept_answer_reminders\" (par exemple, via une tâche cron de fréquence adaptée)"
-#: conf/email.py:183
-#, fuzzy
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
-msgstr "Il n'y a aucune question sans réponse"
+msgstr "Jours avant de commencer à envoyer des rappels pour accepter une réponse"
-#: conf/email.py:194
-msgid ""
-"How often to send accept answer reminders (in days between the reminders "
-"sent)."
-msgstr ""
+#: conf/email.py:203
+msgid "How often to send accept answer reminders (in days between the reminders sent)."
+msgstr "Fréquence à laquelle envoyer des rappels d'acceptation de réponse (en jours entre les envois)."
-#: conf/email.py:206
-#, fuzzy
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
-msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
+msgstr "Nombre maximal de rappels à envoyer pour accepter la meilleure réponse"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
-msgstr ""
-"Nous devons valider votre adresse email avant que vous ne puissiez publier "
-"des messages"
-
-#: conf/email.py:219
-msgid ""
-"Active email verification is done by sending a verification key in email"
-msgstr ""
-"Nous vérifions que l'adresse email est active en y envoyant un email "
-"contenant une clé de vérification."
+msgstr "Nous devons valider votre adresse email avant que vous ne puissiez publier des messages"
#: conf/email.py:228
+msgid "Active email verification is done by sending a verification key in email"
+msgstr "Nous vérifions que l'adresse email est active en y envoyant un email contenant une clé de vérification."
+
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr "N'autoriser qu'un compte par adresse email"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr "Faux email pour utilisateur anonyme"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
-msgstr ""
-"Utilisez ce paramétrage pour contrôler Gravatar (pour les utilisateurs sans "
-"adresse email)"
+msgstr "Utilisez ce paramétrage pour contrôler Gravatar (pour les utilisateurs sans adresse email)"
-#: conf/email.py:247
-#, fuzzy
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr ""
-"<span class=\"strong big\">Formulez votre question à l'aide du formulaire ci-"
-"dessous (un court titre résumant la question, puis la question à proprement "
-"parler, aussi détaillée que vous le souhaitez...)</span>. A l'étape "
-"suivante, vous devrez saisir votre email et votre nom (ou un pseudo si vous "
-"souhaitez rester anonyme...). Ces éléments sont nécessaires pour bénéficier "
-"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
-"principe communautaire."
-
-#: conf/email.py:249
-msgid ""
-"Before enabling this setting - please fill out IMAP settings in the settings."
-"py file"
-msgstr ""
+msgstr "Autoriser l'envoi de questions par email"
+
+#: conf/email.py:258
+msgid "Before enabling this setting - please fill out IMAP settings in the settings.py file"
+msgstr "Avant d'activer cette fonctionnalité - merci de configurer les paramètres IMAP dans le fichier settings.py"
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Remplacer les espaces dans les tags envoyés par email avec des tirets"
-#: conf/email.py:262
-msgid ""
-"This setting applies to tags written in the subject line of questions asked "
-"by email"
-msgstr ""
+#: conf/email.py:271
+msgid "This setting applies to tags written in the subject line of questions asked by email"
+msgstr "Ce paramètre s'applique aux tags indiqués dans le sujet des questions envoyées par email"
+
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr "Activer l'envoi de réponses et commentaires par email"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr "Pour activer cette fonctionnalité, assurez-vous que lamson fonctionne"
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr "Répondre par nom d'hôte d'email"
+
+#: conf/email.py:311
+msgid "Email replies having fewer words than this number will be posted as comments instead of answers"
+msgstr "Les réponses par email avec moins de mots que cette limite seront traitées comme des commentaires au lieu de réponses"
#: conf/external_keys.py:11
msgid "Keys for external services"
-msgstr ""
+msgstr "Clefs pour les services externes"
#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Clé de vérification de site Google"
#: conf/external_keys.py:21
-#, fuzzy, python-format
-msgid ""
-"This key helps google index your site please obtain is at <a href=\"%(url)s?"
-"hl=%(lang)s\">google webmasters tools site</a>"
-msgstr ""
-"Cette clé aide Google à indexer votre site; vous pouvez en obtenir une pour "
-"votre site à <a href=\"%(google_webmasters_tools_url)s\">\"Google - Outils "
-"pour les webmasters\"</a>"
+#, python-format
+msgid "This key helps google index your site please obtain is at <a href=\"%(url)s?hl=%(lang)s\">google webmasters tools site</a>"
+msgstr "Cette clé aide Google à indexer votre site ; vous pouvez en obtenir une pour votre site à <a href=\"%(url)s?hl=%(lang)s\">Google - Outils pour les webmasters</a>"
#: conf/external_keys.py:36
msgid "Google Analytics key"
msgstr "Clé Google Analytics"
#: conf/external_keys.py:38
-#, fuzzy, python-format
-msgid ""
-"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
-"use Google Analytics to monitor your site"
-msgstr ""
-"Vous pouvez en obtenir une sur le site <a href=\"%(ga_site)s\">Google "
-"Analytics</a>, si vous souhaitez utiliser Google Analytics pour mesurer "
-"l'audience de votre site."
+#, python-format
+msgid "Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to use Google Analytics to monitor your site"
+msgstr "Vous pouvez en obtenir une sur le site <a href=\"%(url)s\">Google Analytics</a>, si vous souhaitez utiliser Google Analytics pour mesurer l'audience de votre site."
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Activer ReCAPTCHA (les clefs ci-dessous sont nécessaires)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Clé publique Recaptcha"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Clé privée Recaptcha"
-#: conf/external_keys.py:70
-#, fuzzy, python-format
-msgid ""
-"Recaptcha is a tool that helps distinguish real people from annoying spam "
-"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
-"a>"
-msgstr ""
-"Recaptcha est un outil permettant de vérifier qu'une personne qui se "
-"connecte à votre site est bien un humain (et non pas un robot spammeur). "
-"L'utilisation de cet outil permet notamment d'empêcher des robots de se "
-"connecter à votre site pour y publier automatiquement et massivement des "
-"messages publicitaires."
+#: conf/external_keys.py:72
+#, python-format
+msgid "Recaptcha is a tool that helps distinguish real people from annoying spam robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</a>"
+msgstr "Recaptcha est un outil permettant de vérifier qu'une personne qui se connecte à votre site est bien un humain (et non pas un robot spammeur). Merci de l'obtenir avec une clef publique sur <a href=\"%(url)s\">%(url)s</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Clé d'API publique FACEBOOK"
-#: conf/external_keys.py:84
-#, fuzzy, python-format
-msgid ""
-"Facebook API key and Facebook secret allow to use Facebook Connect login "
-"method at your site. Please obtain these keys at <a href=\"%(url)s"
-"\">facebook create app</a> site"
-msgstr ""
-"La clé d'API FACEBOOK et le secret FACEBOOK vous permettent de proposer aux "
-"utilisateurs de votre de se connecter en utilisant leur compte facebook. "
-"Vous pouvez obtenir ces clés sur le site <a href=\"http://www.facebook.com/"
-"developers/createapp.php\">facebook create app</a>"
+#: conf/external_keys.py:86
+#, python-format
+msgid "Facebook API key and Facebook secret allow to use Facebook Connect login method at your site. Please obtain these keys at <a href=\"%(url)s\">facebook create app</a> site"
+msgstr "La clé d'API Facebook et le secret Facebook vous permettent de proposer aux utilisateurs de votre site de se connecter en utilisant Facebook Connect. Vous pouvez obtenir ces clés sur le site <a href=\"%(url)s\">de création d'application Facebook</a>"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Clé secrète FACEBOOK"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Clef de consommateur Twitter"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
-msgid ""
-"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
-"a>"
-msgstr ""
+msgid "Please register your forum at <a href=\"%(url)s\">twitter applications site</a>"
+msgstr "Merci d'enregistrer votre forum sur <a href=\"%(url)s\">le site d'applications twitter</a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Secret de consommateur Twitter"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "Clef de consommateur LinkedIn"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
-msgid ""
-"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
-msgstr ""
+msgid "Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr "Merci d'enregistrer votre forum sur <a href=\"%(url)s\">le site développeur LinkedIn</a>"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "Secret de consommateur LinkedIn"
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "Clef consommateur ident.ca"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
-msgid ""
-"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
-"site</a>"
-msgstr ""
+msgid "Please register your forum at <a href=\"%(url)s\">Identi.ca applications site</a>"
+msgstr "Merci d'enregistrer votre forum sur <a href=\"%(url)s\">le site des applications Identi.ca</a>"
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr ""
-
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Explique comment changer le mot de passe LDAP"
+msgstr "Secret de consommateur identi.ca"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
@@ -884,384 +835,365 @@ msgstr "Pages \"à propos\", \"vie privée\", etc."
#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
-msgstr ""
-"Insérez ici le texte de la page \"à propos\" du forum de Questions/Réponses"
+msgstr "Insérez ici le texte de la page \"à propos\" du forum de Questions/Réponses"
#: conf/flatpages.py:22
-msgid ""
-"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
-"the \"about\" page to check your input."
-msgstr ""
-"Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un "
-"validateur HTML</a> sur la page \"à propos\" pour vérifier ce que vous avez "
-"saisi."
+msgid "Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on the \"about\" page to check your input."
+msgstr "Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un validateur HTML</a> sur la page \"à propos\" pour vérifier ce que vous avez saisi."
#: conf/flatpages.py:32
-#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
-msgstr ""
-"Insérez ici le texte de la page \"à propos\" du forum de Questions/Réponses"
+msgstr "Insérez ici le texte de la page Foire Aux Questions du forum de Questions/Réponses (format HTML)"
#: conf/flatpages.py:35
-#, fuzzy
-msgid ""
-"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
-"the \"faq\" page to check your input."
-msgstr ""
-"Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un "
-"validateur HTML</a> sur la page \"à propos\" pour vérifier ce que vous avez "
-"saisi."
+msgid "Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on the \"faq\" page to check your input."
+msgstr "Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un validateur HTML</a> sur la page \"Foire Aux Questions\" pour vérifier ce que vous avez saisi."
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
-msgstr ""
-"Insérez ici le texte de la page \"vie privée\" du forum de Questions/Réponses"
+msgstr "Insérez ici le texte de la page \"vie privée\" du forum de Questions/Réponses"
#: conf/flatpages.py:49
-msgid ""
-"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
-"the \"privacy\" page to check your input."
-msgstr ""
-"Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un "
-"validateur HTML</a> sur la page \"vie privée\" pour vérifier ce que vous "
-"avez saisi."
+msgid "Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on the \"privacy\" page to check your input."
+msgstr "Enregistrez, puis utilisez <a href=\"http://validator.w3.org/\">un validateur HTML</a> sur la page \"vie privée\" pour vérifier ce que vous avez saisi."
#: conf/forum_data_rules.py:12
-#, fuzzy
msgid "Data entry and display rules"
msgstr "Paramétrage de l'affichage et de la saisie de données"
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr "Activer les vidéos embarquées."
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
-msgstr ""
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr "<em>Note : merci de <a href=\"%(url)s\">lire ceci</a> en premier.</em>"
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
-msgstr ""
-"Cochez cette case pour activer la fonctionnalité \"wiki communautaire\""
+msgstr "Cochez cette case pour activer la fonctionnalité \"wiki communautaire\""
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Autoriser les questions anonymes"
#: conf/forum_data_rules.py:44
-msgid ""
-"Users do not accrue reputation for anonymous questions and their identity is "
-"not revealed until they change their mind"
-msgstr ""
+msgid "Users do not accrue reputation for anonymous questions and their identity is not revealed until they change their mind"
+msgstr "Les utilisateurs n'améliorent pas leur réputation avec les questions anonymes, et leur identité reste cachée jusqu'à ce qu'ils changent d'avis"
#: conf/forum_data_rules.py:56
-#, fuzzy
msgid "Allow posting before logging in"
-msgstr ""
-"<span class=\"strong big\">Formulez votre question à l'aide du formulaire ci-"
-"dessous (un court titre résumant la question, puis la question à proprement "
-"parler, aussi détaillée que vous le souhaitez...)</span>. A l'étape "
-"suivante, vous devrez saisir votre email et votre nom (ou un pseudo si vous "
-"souhaitez rester anonyme...). Ces éléments sont nécessaires pour bénéficier "
-"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
-"principe communautaire."
+msgstr "Autoriser l'envoi avant la connexion"
#: conf/forum_data_rules.py:58
-msgid ""
-"Check if you want to allow users start posting questions or answers before "
-"logging in. Enabling this may require adjustments in the user login system "
-"to check for pending posts every time the user logs in. The builtin Askbot "
-"login system supports this feature."
-msgstr ""
+msgid "Check if you want to allow users start posting questions or answers before logging in. Enabling this may require adjustments in the user login system to check for pending posts every time the user logs in. The builtin Askbot login system supports this feature."
+msgstr "Cochez si vous voulez autoriser vos utilisateurs à poser des questions ou réponses avant de se connecter. Activer ceci peut nécessiter des modifications dans le système de connexion pour vérifier les messages en attente à chaque connexion des utilisateurs. Le système de connexion intégré à Askbot supporte cette fonctionnalité."
#: conf/forum_data_rules.py:73
-#, fuzzy
msgid "Allow swapping answer with question"
-msgstr "Répondre à cette question"
+msgstr "Autoriser le remplacement d'une réponse par une question"
#: conf/forum_data_rules.py:75
-msgid ""
-"This setting will help import data from other forums such as zendesk, when "
-"automatic data import fails to detect the original question correctly."
-msgstr ""
+msgid "This setting will help import data from other forums such as zendesk, when automatic data import fails to detect the original question correctly."
+msgstr "Ce paramètre aide l'import de données depuis d'autres forums tels que zendesk lorsque l'import automatique échoue à la détection de la question d'origine."
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "Taille maximale d'un mot-clé (tag), en nombre de caractères"
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "Taille minimale du titre, en nombre de caractères"
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "Taille minimale du corps de la question, en nombre de caractères"
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "Taille minimale du corps de la réponse, en nombre de caractères"
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr "Les mots-clés sont-ils obligatoires ?"
+
# FXME ou "offensive" ?
-#: conf/forum_data_rules.py:95
-#, fuzzy
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "Mots-clés"
+msgstr "Mots-clés obligatoires"
-#: conf/forum_data_rules.py:98
-msgid ""
-"At least one of these tags will be required for any new or newly edited "
-"question. A mandatory tag may be wildcard, if the wildcard tags are active."
-msgstr ""
+#: conf/forum_data_rules.py:138
+msgid "At least one of these tags will be required for any new or newly edited question. A mandatory tag may be wildcard, if the wildcard tags are active."
+msgstr "Au moins un de ces mots-clés sera nécessaire pour toute nouvelle question ou modification. Un mot-clé obligatoire peut-être un mot-clé associé s'ils sont activés."
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Forcer la casse minuscule des mots-clés."
-#: conf/forum_data_rules.py:112
-msgid ""
-"Attention: after checking this, please back up the database, and run a "
-"management command: <code>python manage.py fix_question_tags</code> to "
-"globally rename the tags"
-msgstr ""
+#: conf/forum_data_rules.py:152
+msgid "Attention: after checking this, please back up the database, and run a management command: <code>python manage.py fix_question_tags</code> to globally rename the tags"
+msgstr "Attention : après avoir activé ceci, merci de faire une sauvegarde de la base de données, puis exécuter la commande <code>python manage.py fix_question_tags</code> pour renommer tous les mots-clés."
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "Format de la liste des mots-clés"
-#: conf/forum_data_rules.py:128
-msgid ""
-"Select the format to show tags in, either as a simple list, or as a tag cloud"
-msgstr ""
+#: conf/forum_data_rules.py:168
+msgid "Select the format to show tags in, either as a simple list, or as a tag cloud"
+msgstr "Sélectionnez le format pour afficher les mots-clés, soit une liste soit un nuage de mots-clés"
-#: conf/forum_data_rules.py:140
-#, fuzzy
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr "Tags associés"
+msgstr "Utiliser les mots-clés associés"
-#: conf/forum_data_rules.py:142
-msgid ""
-"Wildcard tags can be used to follow or ignore many tags at once, a valid "
-"wildcard tag has a single wildcard at the very end"
-msgstr ""
+#: conf/forum_data_rules.py:182
+msgid "Wildcard tags can be used to follow or ignore many tags at once, a valid wildcard tag has a single wildcard at the very end"
+msgstr "Les mots-clés associés peuvent être utilisés pour suivre ou ignorer plusieurs mots-clés en une fois, un mot-clé associé valide a un seul mot-clé associé à la toute fin"
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
-msgstr ""
+msgstr "Nombre maximum par défaut de commentaires à afficher sous les messages"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
-msgstr ""
+msgstr "Taille maximale des commentaires, doit être < %(max_len)s"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "Limite de temps pour modifier les commentaires"
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
-msgstr ""
+msgstr "Si non coché, il n'y aura pas de limite pour modifier les commentaires"
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Minutes autorisées pour modifier un commentaire"
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Pour activer ce paramètre, cochez le précédent"
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "Sauvegarder le commentaire en appuyant sur la touche <Entrée>"
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "Taille minimale pour un terme de recherche avec Ajax"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
-msgstr ""
+msgstr "Doit correspondre au paramètre de la base de données"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "Ne pas épingler les recherches textuelles"
-#: conf/forum_data_rules.py:220
-msgid ""
-"Check to disable the \"sticky\" behavior of the search query. This may be "
-"useful if you want to move the search bar away from the default position or "
-"do not like the default sticky behavior of the text search query."
-msgstr ""
+#: conf/forum_data_rules.py:260
+msgid "Check to disable the \"sticky\" behavior of the search query. This may be useful if you want to move the search bar away from the default position or do not like the default sticky behavior of the text search query."
+msgstr "Cocher pour désactiver le comportement « épinglé » de la zone de recherche. Cela peut-être utile si vous voulez déplacer la barre de recherche de sa position par défaut ou si vous n'aimez pas ce comportement."
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "Nombre maximal de mots-clés (tags) par question"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "Nombre de questions par défaut à afficher dans la liste "
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "Que signifie \"questions sans réponses\" ?"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr "Configuration de l'authentification LDAP"
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "Utiliser l'authentification LDAP pour la connexion par mot de passe"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr "Adresse LDAP"
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr "DN de base LDAP"
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr "Niveau de recherche LDAP"
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr "Champ LDAP pour USERID"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr "Champ LDAP pour le nom commun (CommonName)"
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr "Champ LDAP pour EMAIL"
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "Barre latérale de gauche"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Activer la barre latérale de gauche"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr "Code HTML pour la barre latérale de gauche"
+
+#: conf/leading_sidebar.py:32
+msgid "Use this area to enter content at the LEFT sidebarin HTML format. When using this option, please use the HTML validation service to make sure that your input is valid and works well in all browsers."
+msgstr "Utilisez cette zone pour entrer le contenu de la barre latérale de gauche au format HTML. Lors de l'utilisation de cette option, utilisez un outil de validation du code HTML pour vous assurer qu'il soit correct."
+
#: conf/license.py:13
-msgid "Content LicensContent License"
-msgstr ""
+msgid "Content License"
+msgstr "Licence du contenu"
#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "Afficher la clause de la licence dans le pied de page"
#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "Nom court de la licence"
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "Nom complet de la licence"
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution Share Alike 3.0"
#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "Ajouter un lien vers la page de la licence"
#: conf/license.py:57
-#, fuzzy
msgid "License homepage"
-msgstr "Retour à l'accueil"
+msgstr "Page d'accueil de la licence"
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "Adresse de la page officielle de la licence avec toutes les clauses légales"
#: conf/license.py:69
-#, fuzzy
msgid "Use license logo"
-msgstr "Logo du site de Questions/Réponses"
+msgstr "Utiliser le logo de la licence"
#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Image logo de la licence"
#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "Paramètre du fournisseur de connexion"
#: conf/login_providers.py:22
-msgid ""
-"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgid "Show alternative login provider buttons on the password \"Sign Up\" page"
+msgstr "Afficher les fournisseurs de connexion alternatifs sur la page « Connexion »"
#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
-msgstr ""
+msgstr "Toujours afficher le formulaire de connexion locale et cacher le bouton « Askbot »"
#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
-msgstr ""
+msgstr "Activer pour autoriser la connexion avec un site WordPress auto-hébergé"
#: conf/login_providers.py:41
-msgid ""
-"to activate this feature you must fill out the wordpress xml-rpc setting "
-"bellow"
-msgstr ""
+msgid "to activate this feature you must fill out the wordpress xml-rpc setting bellow"
+msgstr "pour activer cette fonctionnalité vous devez configurer les paramètres XML-RPC de WordPress ci-dessous"
#: conf/login_providers.py:50
-msgid ""
-"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
-"xmlrpc.php"
-msgstr ""
+msgid "Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/xmlrpc.php"
+msgstr "Indiquez l'adresse XML-RPM de WordPress, par exemple http://example.com/xmlrpc.php"
#: conf/login_providers.py:51
-msgid ""
-"To enable, go to Settings->Writing->Remote Publishing and check the box for "
-"XML-RPC"
-msgstr ""
+msgid "To enable, go to Settings->Writing->Remote Publishing and check the box for XML-RPC"
+msgstr "Pour activer, allez dans Paramères -> Publication -> Publication distante et cochez la case XML-RPC"
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "Charger votre icône"
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
-msgstr ""
+msgstr "Activer la connexion %(provider)s"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
-msgid ""
-"Note: to really enable %(provider)s login some additional parameters will "
-"need to be set in the \"External keys\" section"
-msgstr ""
+msgid "Note: to really enable %(provider)s login some additional parameters will need to be set in the \"External keys\" section"
+msgstr "Note : pour réellement activer la connexion %(provider)s des paramètres supplémentaires doivent être indiqués dans la partie « Clefs externe »"
#: conf/markup.py:15
msgid "Markup in posts"
-msgstr ""
+msgstr "Balisage dans les messages"
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Activer le support Markdown"
#: conf/markup.py:43
-msgid ""
-"If checked, underscore characters will not trigger italic or bold formatting "
-"- bold and italic text can still be marked up with asterisks. Note that "
-"\"MathJax support\" implicitly turns this feature on, because underscores "
-"are heavily used in LaTeX input."
-msgstr ""
+msgid "If checked, underscore characters will not trigger italic or bold formatting - bold and italic text can still be marked up with asterisks. Note that \"MathJax support\" implicitly turns this feature on, because underscores are heavily used in LaTeX input."
+msgstr "Si coché, les soulignements n'activeront pas le formatage italique ou gras - ils peuvent toujours être activés avec des astérisques. Merci de noter que « le support MathJax » active cette option implicitement, car les soulignements sont beaucoup utilisés avec LaTeX."
#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
-msgstr ""
+msgstr "Support MathJax (rendu LaTeX)"
#: conf/markup.py:60
#, python-format
-msgid ""
-"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
-"installed on your server in its own directory."
-msgstr ""
+msgid "If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be installed on your server in its own directory."
+msgstr "Si vous activez cette fonctionnalité, <a href=\"%(url)s\">mathjax</a> doit être installé sur le serveur dans son propre répertoire."
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
-msgstr ""
+msgstr "Adresse de base de l'installation de MathJax"
#: conf/markup.py:76
-msgid ""
-"Note - <strong>MathJax is not included with askbot</strong> - you should "
-"deploy it yourself, preferably at a separate domain and enter url pointing "
-"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
-msgstr ""
+msgid "Note - <strong>MathJax is not included with askbot</strong> - you should deploy it yourself, preferably at a separate domain and enter url pointing to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+msgstr "Note - <strong>MathJax n'est pas inclus avec askbot</strong> - vous devriez le déployer vous-même, de préférence sur un sous-domaine et indiquer l'adresse correspondant au répertoire mathjax (par exemple : http://example.com/mathjax)"
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
-msgstr ""
+msgstr "Activer les liens automatiques avec des motifs particuliers"
#: conf/markup.py:93
-msgid ""
-"If you enable this feature, the application will be able to detect patterns "
-"and auto link to URLs"
-msgstr ""
+msgid "If you enable this feature, the application will be able to detect patterns and auto link to URLs"
+msgstr "Si vous activez cette fonctionnalité, l'application sera capable de détecter et créer automatiquement les liens"
#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "Expressions régulières pour les motifs de lien"
#: conf/markup.py:108
-msgid ""
-"Enter valid regular expressions for the patters, one per line. For example "
-"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
-"The numbers captured by the pattern in the parentheses will be transferred "
-"to the link url template. Please look up more information about regular "
-"expressions elsewhere."
-msgstr ""
+msgid "Enter valid regular expressions for the patters, one per line. For example to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). The numbers captured by the pattern in the parentheses will be transferred to the link url template. Please look up more information about regular expressions elsewhere."
+msgstr "Indiquez une expression régulière valide pour les motifs, une par ligne. Par exemple pour détecter un motif de bug tel que #bug123, utilisez l'expression régulière : #bug(\\d+). Les nombres capturés par les parenthèses seront utilisés dans le modèle de lien. Merci de chercher des informations sur les expressions régulières ailleurs."
#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "URLs pour les liens automatiques"
#: conf/markup.py:129
-msgid ""
-"Here, please enter url templates for the patterns entered in the previous "
-"setting, also one entry per line. <strong>Make sure that number of lines in "
-"this setting and the previous one are the same</strong> For example template "
-"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
-"shown above and the entry in the post #123 will produce link to the bug 123 "
-"in the redhat bug tracker."
-msgstr ""
+msgid "Here, please enter url templates for the patterns entered in the previous setting, also one entry per line. <strong>Make sure that number of lines in this setting and the previous one are the same</strong> For example template https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern shown above and the entry in the post #123 will produce link to the bug 123 in the redhat bug tracker."
+msgstr "Ici, indiquez les modèles pour les motifs entrés précédemment, également un par ligne. <strong>Assurez-vous que les deux ont bien autant de lignes</strong>. Par exemple, le modèle https://bugzilla.redhat.com/show_bug.cgi?id=\\1 avec le motif précédent et un message contenant #123 générera un lien vers le bug 123 dans l'outil de suivi de bugs de RedHat."
#: conf/minimum_reputation.py:12
msgid "Karma thresholds"
-msgstr ""
+msgstr "Seuils de karma"
#: conf/minimum_reputation.py:22
msgid "Upvote"
@@ -1272,14 +1204,12 @@ msgid "Downvote"
msgstr "vote négatif"
#: conf/minimum_reputation.py:40
-#, fuzzy
msgid "Answer own question immediately"
-msgstr "Répondre à votre propre question"
+msgstr "Répondre à votre propre question immédiatement"
#: conf/minimum_reputation.py:49
-#, fuzzy
msgid "Accept own answer"
-msgstr "\"modifier n'importe quelle réponse"
+msgstr "Accepter votre propre réponse"
#: conf/minimum_reputation.py:58
msgid "Flag offensive"
@@ -1304,13 +1234,11 @@ msgstr "Transférer des fichiers sur notre serveur"
#: conf/minimum_reputation.py:103
msgid "Close own questions"
-msgstr "Cloturer ses propres questions"
+msgstr "Clôturer ses propres questions"
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
-msgstr ""
-"Requalifier les questions publiées par d'autres utilisateurs (c'est à dire "
-"changer les mots-clés servant de marqueurs sémantiques)"
+msgstr "Requalifier les questions publiées par d'autres utilisateurs (c'est-à-dire changer les mots-clés servant de marqueurs sémantiques)"
#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
@@ -1330,7 +1258,7 @@ msgstr "Voir les drapeaux signalant des messages à contenu abusif"
#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
-msgstr "Cloturer les questions posées par d'autres"
+msgstr "Clôturer les questions posées par d'autres"
#: conf/minimum_reputation.py:166
msgid "Lock posts"
@@ -1338,23 +1266,23 @@ msgstr "Verrouiller des messages"
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "Enlever rel=nofollow de la page d'accueil"
#: conf/minimum_reputation.py:177
-msgid ""
-"When a search engine crawler will see a rel=nofollow attribute on a link - "
-"the link will not count towards the rank of the users personal site."
-msgstr ""
+msgid "When a search engine crawler will see a rel=nofollow attribute on a link - the link will not count towards the rank of the users personal site."
+msgstr "Quand un indexeur de moteur de recherche voit un lien avec l'attribut rel=nofollow, ce dernier sera exclu du calcul du rang du site."
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr "Envoyer réponses et commentaires par email"
#: conf/reputation_changes.py:13
-#, fuzzy
msgid "Karma loss and gain rules"
msgstr "Règles concernant le gain et la perte de points de réputation"
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
-msgstr ""
-"Nombre maximal de points de réputation qu'un utilisateur peut gagner par jour"
+msgstr "Nombre maximal de points de réputation qu'un utilisateur peut gagner par jour"
#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
@@ -1379,9 +1307,7 @@ msgstr "Gain pour un votant en cas de vote négatif annulé"
#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr ""
-"Perte pour un utilisateur ayant voté pour l'annulation d'une acceptation de "
-"réponse"
+msgstr "Perte pour un utilisateur ayant voté pour l'annulation d'une acceptation de réponse"
#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
@@ -1397,146 +1323,123 @@ msgstr "Perte pour l'auteur d'un message à contenu signalé 'abusif'"
#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr ""
-"Perte pour l'auteur d'un message ayant abouti à un vote (globalement) négatif"
+msgstr "Perte pour l'auteur d'un message ayant abouti à un vote (globalement) négatif"
#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
-msgstr ""
-"Perte pour l'auteur d'un message qui a été marqué/étiqueté 3 fois dans une "
-"même révision"
+msgstr "Perte pour l'auteur d'un message qui a été marqué/étiqueté 3 fois dans une même révision"
#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
-msgstr ""
-"Perte pour l'auteur d'un message qui a été marqué/étiqueté 5 fois dans une "
-"même révision"
+msgstr "Perte pour l'auteur d'un message qui a été marqué/étiqueté 5 fois dans une même révision"
#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
-msgstr ""
-"Perte pour l'auteur d'un message quand un vote (global) positif est annulé"
+msgstr "Perte pour l'auteur d'un message quand un vote (global) positif est annulé"
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
-msgstr ""
+msgstr "Barre latérale de la page principale"
-#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_main.py:20
+#: conf/sidebar_profile.py:20
#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "Entête personnalisé de la barre latérale"
-#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_main.py:23
+#: conf/sidebar_profile.py:23
#: conf/sidebar_question.py:22
-msgid ""
-"Use this area to enter content at the TOP of the sidebarin HTML format. "
-"When using this option (as well as the sidebar footer), please use the HTML "
-"validation service to make sure that your input is valid and works well in "
-"all browsers."
-msgstr ""
+msgid "Use this area to enter content at the TOP of the sidebarin HTML format. When using this option (as well as the sidebar footer), please use the HTML validation service to make sure that your input is valid and works well in all browsers."
+msgstr "Utilisez cette zone pour ajouter du contenu en haut de la barre latérale, au format HTML. Pensez à vérifier que votre code est valide et fonctionne dans tous les navigateurs."
#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "Afficher le bloc avatar dans la barre latérale"
#: conf/sidebar_main.py:38
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
-msgstr ""
+msgstr "Décochez si vous voulez cacher le bloc avatar de la barre latérale"
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "Limiter le nombre d'avatars affichés sur la barre latérale"
#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "Afficher le sélecteur de mots-clés dans la barre latérale"
#: conf/sidebar_main.py:61
-msgid ""
-"Uncheck this if you want to hide the options for choosing interesting and "
-"ignored tags "
-msgstr ""
+msgid "Uncheck this if you want to hide the options for choosing interesting and ignored tags "
+msgstr "Décochez si vous voulez cacher l'option pour décider entre les mots-clés intéressants et ceux à ignorer"
#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "Afficher la liste ou le nuage de mots-clés dans la barre latérale"
#: conf/sidebar_main.py:74
-msgid ""
-"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
-msgstr ""
+msgid "Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+msgstr "Décochez si vous voulez cacher la liste ou le nuage de mots-clés de la barre latérale"
-#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_main.py:85
+#: conf/sidebar_profile.py:36
#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "Pied-de-page personnalisé pour la barre latérale"
-#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_main.py:88
+#: conf/sidebar_profile.py:39
#: conf/sidebar_question.py:78
-msgid ""
-"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
-"When using this option (as well as the sidebar header), please use the HTML "
-"validation service to make sure that your input is valid and works well in "
-"all browsers."
-msgstr ""
+msgid "Use this area to enter content at the BOTTOM of the sidebarin HTML format. When using this option (as well as the sidebar header), please use the HTML validation service to make sure that your input is valid and works well in all browsers."
+msgstr "Utilisez cette zone pour rajouter du contenu en bas de cette barre latérale, au format HTML. Pensez à vérifier que votre code est valide et fonctionne dans tous les navigateurs."
#: conf/sidebar_profile.py:12
-#, fuzzy
msgid "User profile sidebar"
-msgstr "Profil utilisateur"
+msgstr "Barre latérale profil utilisateur"
#: conf/sidebar_question.py:11
-#, fuzzy
msgid "Question page sidebar"
-msgstr "Tags de la question"
+msgstr "Barre latérale de la page de question"
#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "Afficher la liste des mots-clés dans la barre latérale"
#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "Décochez si vous voulez cacher la liste des mots-clés de la barre latérale"
#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "Affichage des méta-informations dans la barre latérale"
#: conf/sidebar_question.py:50
-msgid ""
-"Uncheck this if you want to hide the meta information about the question "
-"(post date, views, last updated). "
-msgstr ""
+msgid "Uncheck this if you want to hide the meta information about the question (post date, views, last updated). "
+msgstr "Décochez si vous voulez cacher les méta-informations de la question (date du message, vues, dernière mise à jour)."
#: conf/sidebar_question.py:62
-#, fuzzy
msgid "Show related questions in sidebar"
-msgstr "Questions liées"
+msgstr "Afficher les questions liées dans la barre latérale"
#: conf/sidebar_question.py:64
-#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr "Cliquez ici pour voir les questions mises à jour le moins récemment"
+msgstr "Décochez si vous voulez cacher la liste des questions liées."
#: conf/site_modes.py:64
msgid "Bootstrap mode"
-msgstr ""
+msgstr "Mode d'initialisation"
#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "Activer un mode d'initialisation"
#: conf/site_modes.py:76
-msgid ""
-"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
-"more suitable for the smaller communities, <strong>WARNING:</strong> your "
-"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
-"changed after you modify this setting."
-msgstr ""
+msgid "Bootstrap mode lowers reputation and certain badge thresholds, to values, more suitable for the smaller communities, <strong>WARNING:</strong> your current value for Minimum reputation, Bagde Settings and Vote Rules will be changed after you modify this setting."
+msgstr "Le mode d'initialisation réduit les seuils de réputation et de certains badges à des valeurs plus accessibles à des petites communautés. <strong>ATTENTION :</strong> vos valeurs actuelles de réputation minimale, paramètres de badges et règles de votes seront changées après modification de ce paramètre."
#: conf/site_settings.py:12
msgid "URLS, keywords & greetings"
-msgstr ""
+msgstr "URLs, mots-clés et messages d'accueil"
#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
@@ -1544,9 +1447,7 @@ msgstr "Titre du forum de Questions/Réponses"
#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
-msgstr ""
-"Mots-clés pour qualifier votre site de Questions/Réponses (séparez les mots "
-"par des virgules)"
+msgstr "Mots-clés pour qualifier votre site de Questions/Réponses (séparez les mots par des virgules)"
#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
@@ -1560,32 +1461,27 @@ msgstr "Insérez ici la description du site, destinée aux moteurs de recherche"
msgid "Short name for your Q&A forum"
msgstr "Insérez ici le nom court de votre forum de Questions/Réponses"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
-msgstr ""
-"BaseURL de votre forum de Questions/Réponses (doit commencer par http ou "
-"https)"
+msgstr "BaseURL de votre forum de Questions/Réponses (doit commencer par http ou https)"
-#: conf/site_settings.py:79
-#, fuzzy
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr "Faux email pour utilisateur anonyme"
+msgstr "Cocher pour activer l'accueil pour les utilisateurs anonymes"
-#: conf/site_settings.py:90
-#, fuzzy
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr ""
-"Lien inséré dans le message d'accueil affiché aux utilisateurs anonymes"
+msgstr "Texte affiché dans le message d'accueil aux utilisateurs anonymes"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "Formater le message avec HTML"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "URL permettant de faire des remarques"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "si laissé vide, un formulaire de retour simple sera utilisé à la place"
@@ -1599,19 +1495,28 @@ msgstr "Valeur du compteur de votes pour \"pleines couleurs\""
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr "Couleur d'arrière plan pour votes = 0"
-
-#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
-#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
-#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
-#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
-#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
-#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
-#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
-#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
-#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
-#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
-#, fuzzy
+msgstr "Couleur d'arrière-plan pour votes = 0"
+
+#: conf/skin_counter_settings.py:30
+#: conf/skin_counter_settings.py:41
+#: conf/skin_counter_settings.py:52
+#: conf/skin_counter_settings.py:62
+#: conf/skin_counter_settings.py:72
+#: conf/skin_counter_settings.py:85
+#: conf/skin_counter_settings.py:106
+#: conf/skin_counter_settings.py:117
+#: conf/skin_counter_settings.py:128
+#: conf/skin_counter_settings.py:138
+#: conf/skin_counter_settings.py:148
+#: conf/skin_counter_settings.py:163
+#: conf/skin_counter_settings.py:186
+#: conf/skin_counter_settings.py:196
+#: conf/skin_counter_settings.py:206
+#: conf/skin_counter_settings.py:216
+#: conf/skin_counter_settings.py:228
+#: conf/skin_counter_settings.py:239
+#: conf/skin_counter_settings.py:252
+#: conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
msgstr "Nom de couleur HTML ou valeur hexadécimale"
@@ -1669,7 +1574,7 @@ msgstr "Valeur du compteur de réponses pour \"pleines couleurs\""
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr "Couleur d'arrière plan pour réponses = 0"
+msgstr "Couleur d'arrière-plan pour réponses = 0"
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
@@ -1701,7 +1606,7 @@ msgstr "Couleur de premier plan pour réponse acceptée"
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
-msgstr ""
+msgstr "Logos et partie <head> HTML"
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
@@ -1709,294 +1614,245 @@ msgstr "Logo du site de Questions/Réponses"
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
-msgstr ""
-"Pour changer le logo, sélectionnez un nouveau fichier, puis soumettez le "
-"formulaire complet."
+msgstr "Pour changer le logo, sélectionnez un nouveau fichier, puis soumettez le formulaire complet."
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "Afficher le logo"
-#: conf/skin_general_settings.py:41
-msgid ""
-"Check if you want to show logo in the forum header or uncheck in the case "
-"you do not want the logo to appear in the default location"
-msgstr ""
+#: conf/skin_general_settings.py:39
+msgid "Check if you want to show logo in the forum header or uncheck in the case you do not want the logo to appear in the default location"
+msgstr "Cochez si vous voulez afficher le logo dans l'entête du forum ou décochez si vous ne voulez pas que le logo apparaisse à l'endroit par défaut"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr ""
+msgstr "Favicône du site"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
-msgid ""
-"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
-"browser user interface. Please find more information about favicon at <a "
-"href=\"%(favicon_info_url)s\">this page</a>."
-msgstr ""
+msgid "A small 16x16 or 32x32 pixel icon image used to distinguish your site in the browser user interface. Please find more information about favicon at <a href=\"%(favicon_info_url)s\">this page</a>."
+msgstr "Une petite icône, 16x16 ou 32x32 pixels, utilisée pour distinguer votre site dans l'interface du navigateur. Vous trouverez plus d'informations sur les favicônes <a href=\"%(favicon_info_url)s\">sur cette page</a>."
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
-msgstr ""
+msgstr "Bouton de connexion par mot de passe"
-#: conf/skin_general_settings.py:75
-msgid ""
-"An 88x38 pixel image that is used on the login screen for the password login "
-"button."
-msgstr ""
+#: conf/skin_general_settings.py:71
+msgid "An 88x38 pixel image that is used on the login screen for the password login button."
+msgstr "Une image de 88x88 pixels utilisée sur l'écran de connexion pour l'authentification par mot de passe."
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
-msgstr ""
-"Afficher toutes les fonctionnalités de l'interface utilisateur à tous les "
-"utilisateurs"
+msgstr "Afficher toutes les fonctionnalités de l'interface utilisateur à tous les utilisateurs"
-#: conf/skin_general_settings.py:92
-msgid ""
-"If checked, all forum functions will be shown to users, regardless of their "
-"reputation. However to use those functions, moderation rules, reputation and "
-"other limits will still apply."
-msgstr ""
-"Si cette case est cochée, toutes les fonctionnalités du forum seront "
-"afifchées aux utilisateurs, sans tenir compte de leur réputation. Cependant, "
-"pour utiliser ces fonctions, les règles de modération, le concept de "
-"réputation et les autres limites s'appliqueront toujours..."
+#: conf/skin_general_settings.py:86
+msgid "If checked, all forum functions will be shown to users, regardless of their reputation. However to use those functions, moderation rules, reputation and other limits will still apply."
+msgstr "Si cette case est cochée, toutes les fonctionnalités du forum seront affichées aux utilisateurs, sans tenir compte de leur réputation. Cependant, pour utiliser ces fonctions, les règles de modération, le concept de réputation et les autres limites s'appliqueront toujours..."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr "Sélectionnez un thème (skin)"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "Personnaliser la partie <head> HTML"
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "Portion <head> personnalisée"
-#: conf/skin_general_settings.py:129
-msgid ""
-"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
-"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
-"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
-"meta&gt; may be added. Please, keep in mind that adding external javascript "
-"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
-"pages. Instead, it will be more efficient to place links to the javascript "
-"files into the footer. <strong>Note:</strong> if you do use this setting, "
-"please test the site with the W3C HTML validator service."
-msgstr ""
+#: conf/skin_general_settings.py:123
+msgid "<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" above. Contents of this box will be inserted into the &lt;HEAD&gt; portion of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;meta&gt; may be added. Please, keep in mind that adding external javascript to the &lt;HEAD&gt; is not recommended because it slows loading of the pages. Instead, it will be more efficient to place links to the javascript files into the footer. <strong>Note:</strong> if you do use this setting, please test the site with the W3C HTML validator service."
+msgstr "<strong>Pour utiliser cette option</strong>, cochez « Personnaliser la partie &lt;head&gt; HTML » ci-dessus. Le contenu de cette boîte sera inséré dans la balise &lt;HEAD&gt; du code HTML généré,où des éléments tels que &lt;script&gt;, &lt;link&gt;, &lt;meta&gt; peuvent être ajoutés. S'il vous plaît, gardez en mémoire que l'ajout de JavaScript externe dans &lt;HEAD&gt; est fortement déconseillé du fait du ralentissement potentiel. Dans ce cas-là, placez plutôt les liens vers le code JavaScript externe dans le pied de page. <strong>Note :</strong> Si vous utilisez ce paramètre, merci de vérifier votre site avec un outil de validation HTML."
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "En-têtes personnalisées"
-#: conf/skin_general_settings.py:153
-msgid ""
-"Header is the bar at the top of the content that contains user info and site "
-"links, and is common to all pages. Use this area to enter contents of the "
-"headerin the HTML format. When customizing the site header (as well as "
-"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
-"sure that your input is valid and works well in all browsers."
-msgstr ""
+#: conf/skin_general_settings.py:147
+msgid "Header is the bar at the top of the content that contains user info and site links, and is common to all pages. Use this area to enter contents of the headerin the HTML format. When customizing the site header (as well as footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make sure that your input is valid and works well in all browsers."
+msgstr "L'en-tête est la barre au dessus du contenu qui contient les informations utilisateurs et les liens du site, et est commune à toutes les pages. Utilisez cette zone pour entrer du contenu pour l'entête, au format HTML. Lorsque vous personnalisez l'en-tête (ainsi que le pied de page et la balise &lt;head&gt;), merci d'utiliser un outil de vérification pour vous assurer que votre code fonctionne bien dans tous les navigateurs"
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "Mode pied de page du site"
-#: conf/skin_general_settings.py:170
-msgid ""
-"Footer is the bottom portion of the content, which is common to all pages. "
-"You can disable, customize, or use the default footer."
-msgstr ""
+#: conf/skin_general_settings.py:164
+msgid "Footer is the bottom portion of the content, which is common to all pages. You can disable, customize, or use the default footer."
+msgstr "Le pied de page est la partie basse du contenu, commune à toutes les pages. Vous pouvez le désactiver, personnaliser ou utiliser celui par défaut."
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "Pied de page personnalité (format HTML)"
-#: conf/skin_general_settings.py:189
-msgid ""
-"<strong>To enable this function</strong>, please select option 'customize' "
-"in the \"Site footer mode\" above. Use this area to enter contents of the "
-"footer in the HTML format. When customizing the site footer (as well as the "
-"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
-"that your input is valid and works well in all browsers."
-msgstr ""
+#: conf/skin_general_settings.py:183
+msgid "<strong>To enable this function</strong>, please select option 'customize' in the \"Site footer mode\" above. Use this area to enter contents of the footer in the HTML format. When customizing the site footer (as well as the header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure that your input is valid and works well in all browsers."
+msgstr "<strong>Pour utiliser cette option</strong>, sélectionnez l'option « personnaliser » dans le « Mode pied de page du site » ci-dessus. Utilisez cette zone pour entrer le contenu du pied de page au format HTML. Lors de la personnalisation (de même que pour l'en-tête et la balise &lt;HEAD&gt;), utilisez des outils de validation HTML pour vous assurer que votre code est valide."
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "Appliquer une feuille de style CSS personnalisée"
-#: conf/skin_general_settings.py:206
-msgid ""
-"Check if you want to change appearance of your form by adding custom style "
-"sheet rules (please see the next item)"
-msgstr ""
+#: conf/skin_general_settings.py:200
+msgid "Check if you want to change appearance of your form by adding custom style sheet rules (please see the next item)"
+msgstr "Cochez pour changer l'apparence de votre formulaire en ajoutant des règles CSS (confère le prochain élément)"
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "Feuille de style CSS personnalisée"
-#: conf/skin_general_settings.py:220
-msgid ""
-"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
-"option above. The CSS rules added in this window will be applied after the "
-"default style sheet rules. The custom style sheet will be served dynamically "
-"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
-"depends (default is empty string) on the url configuration in your urls.py."
-msgstr ""
+#: conf/skin_general_settings.py:214
+msgid "<strong>To use this function</strong>, check \"Apply custom style sheet\" option above. The CSS rules added in this window will be applied after the default style sheet rules. The custom style sheet will be served dynamically at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part depends (default is empty string) on the url configuration in your urls.py."
+msgstr "<strong>Pour utiliser cette option</strong>, cochez l'option « Appliquer une feuille de style CSS personnalisée » ci-dessus. Les règles CSS ajoutées dans cette fenêtre seront appliquées après les règles par défaut. Les feuilles de style personnalisées seront servies dynamiquement depuis l'adresse « &lt;URL forum&gt;/custom.css », où la partie &lt;URL forum&gt; (par défaut, une chaîne vide) dépend de la configuration dans urls.py."
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "Ajouter du JavaScript personnalisé"
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
-msgstr ""
+msgstr "Cochez pour activer le code JavaScript que vous entrerez dans le prochain champ"
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "JavaScript personnalisé"
-#: conf/skin_general_settings.py:251
-msgid ""
-"Type or paste plain javascript that you would like to run on your site. Link "
-"to the script will be inserted at the bottom of the HTML output and will be "
-"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
-"your javascript code may break other functionalities of the site and that "
-"the behavior may not be consistent across different browsers (<strong>to "
-"enable your custom code</strong>, check \"Add custom javascript\" option "
-"above)."
-msgstr ""
+#: conf/skin_general_settings.py:245
+msgid "Type or paste plain javascript that you would like to run on your site. Link to the script will be inserted at the bottom of the HTML output and will be served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that your javascript code may break other functionalities of the site and that the behavior may not be consistent across different browsers (<strong>to enable your custom code</strong>, check \"Add custom javascript\" option above)."
+msgstr "Mettez du code JavaScript que vous voudriez exécuter sur vote site. Un lien vers le script sera ajouté au bas du rendu HTML et sera servi depuis l'adresse « &lt;URL forum&gt;/custom.js ». Merci de garder en tête que votre code JavaScript risque de casser d'autres fonctionnalités du site et que le comportement peut ne pas être cohérent dans les différents navigateurs (<strong>pour activer votre code personnalisé</strong>, cochez l'option « Ajouter du JavaScript personnalisé » ci-dessus)."
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr "Numéro de révision du thème"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
-msgstr ""
+msgstr "Sera activé automatiquement mais vous pourrez le modifier si vous voulez."
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
-msgstr ""
+msgstr "Condensé pour mettre à jour le numéro de révision du média automatiquement."
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
-msgstr ""
+msgstr "Sera activé automatiquement, il n'est pas nécessaire de modifier manuellement."
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
-msgstr ""
+msgstr "Partage de contenu sur les réseaux sociaux"
#: conf/social_sharing.py:20
-#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
-msgstr "Partager cette question sur twitter"
+msgstr "Cochez pour autoriser le partage de questions sur Twitter"
#: conf/social_sharing.py:29
-#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
-msgstr "Partager cette question sur facebook"
+msgstr "Cochez pour autoriser le partage de questions sur Facebook"
#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr ""
+msgstr "Cochez pour activer le partage de questions sur LinkedIn"
#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr ""
+msgstr "Cochez pour activer le partage de questions sur Identi.ca"
#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
-msgstr ""
+msgstr "Cochez pour activer le partage de questions sur Google+"
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
-msgstr ""
+msgstr "Protection de pollution Akismet"
#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
-msgstr ""
+msgstr "Activer la détection de pollution par Akismet (clefs nécessaires ci-dessous)"
#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
-msgstr ""
+msgstr "Pour obtenir une clef Akismet merci de voir le <a href=\"%(url)s\">site Akismet</a>"
#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "Clef Akismet pour la détection de pollution"
#: conf/super_groups.py:5
msgid "Reputation, Badges, Votes & Flags"
-msgstr ""
+msgstr "Réputation, badges, votes et drapeaux"
#: conf/super_groups.py:6
msgid "Static Content, URLS & UI"
-msgstr ""
+msgstr "Contenu statique, URLs et interface"
#: conf/super_groups.py:7
msgid "Data rules & Formatting"
-msgstr ""
+msgstr "Règles de données et formatage "
#: conf/super_groups.py:8
-#, fuzzy
msgid "External Services"
-msgstr "Autres services"
+msgstr "Services externes"
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
-msgstr ""
+msgstr "Compte, utilisateurs et communication"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr "FIXME - User policy settings"
+msgstr "Paramètres utilisateur"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
-msgstr ""
-"Autoriser la modification du pseudo (nom d'utilisateur affiché à l'écran)"
+msgstr "Autoriser la modification du pseudo (nom d'utilisateur affiché à l'écran)"
-#: conf/user_settings.py:30
-#, fuzzy
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Autoriser les utilisateurs à changer leur adresse email"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr ""
-"<span class=\"strong big\">Formulez votre question à l'aide du formulaire ci-"
-"dessous (un court titre résumant la question, puis la question à proprement "
-"parler, aussi détaillée que vous le souhaitez...)</span>. A l'étape "
-"suivante, vous devrez saisir votre email et votre nom (ou un pseudo si vous "
-"souhaitez rester anonyme...). Ces éléments sont nécessaires pour bénéficier "
-"des fonctionnalités de notre module de questions/réponses, qui repose sur un "
-"principe communautaire."
-
-#: conf/user_settings.py:39
+msgstr "Autoriser la récupération de compte par email"
+
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
-msgstr ""
+msgstr "Autoriser l'ajout et le retrait de méthodes de connexion"
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "Taille minimale du pseudo (nom d'utilisateur affiché à l'écran)"
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Avatar par défaut pour les utilisateurs"
+
+#: conf/user_settings.py:70
+msgid "To change the avatar image, select new file, then submit this whole form."
+msgstr "Pour changer l'avatar, sélectionnez un nouveau fichier, puis envoyez le formulaire complet."
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr "Utiliser automatiquement les avatars depuis gravatar.com"
+
+#: conf/user_settings.py:85
+msgid "Check this option if you want to allow the use of gravatar.com for avatars. Please, note that this feature might take about 10 minutes to become fully effective. You will have to enable uploaded avatars as well. For more information, please visit <a href=\"http://askbot.org/doc/optional-modules.html#uploaded-avatars\">this page</a>."
+msgstr "Cochez cette option si vous voulez autoriser l'utilisation de gravatar.com pour les avatars. Merci de noter que cette fonctionnalité peut nécessiter 10 minutes pour être effectivement active. Vous devrez aussi activer les avatars envoyés également. Pour plus d'information, merci de visiter <a href=\"http://askbot.org/doc/optional-modules.html#uploaded-avatars\">cette page</a>."
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
-msgstr ""
+msgstr "Type d'icône Gravatar par défaut"
-#: conf/user_settings.py:61
-msgid ""
-"This option allows you to set the default avatar type for email addresses "
-"without associated gravatar images. For more information, please visit <a "
-"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
-msgstr ""
+#: conf/user_settings.py:99
+msgid "This option allows you to set the default avatar type for email addresses without associated gravatar images. For more information, please visit <a href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
+msgstr "Cette option vous permet de définir le type d'avatar par défaut pour les adresses sans gravatar associé. Pour plus d'informations, merci de visiter <a href=\"http://en.gravatar.com/site/implement/images/\"> page</a>."
-#: conf/user_settings.py:71
-#, fuzzy
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr "Faux email pour utilisateur anonyme"
+msgstr "Nom de l'utilisateur anonyme"
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
-msgstr ""
+msgstr "Limites de votes et de drapeaux"
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
@@ -2008,34 +1864,51 @@ msgstr "Nombre maximum de drapeaux par utilisateur et par jour"
#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr ""
-"Seuil pour lancer un avertissement à propos des votes quotidiens restants"
+msgstr "Seuil pour lancer un avertissement à propos des votes quotidiens restants"
#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
msgstr "Nombre de jours pour autoriser l'annulation de votes"
#: conf/vote_rules.py:60
-#, fuzzy
msgid "Number of days required before answering own question"
-msgstr "Nombre de jours pour autoriser l'annulation de votes"
+msgstr "Nombre de jours nécessaires avant de se répondre"
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
-msgstr ""
-"Nombre de marqueurs/drapeaux requis pour masquer automatiquement des messages"
+msgstr "Nombre de marqueurs/drapeaux requis pour masquer automatiquement des messages"
#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
-msgstr ""
-"Nombre de marqueurs/drapeaux requis pour supprimer automatiquement des "
-"messages"
+msgstr "Nombre de marqueurs/drapeaux requis pour supprimer automatiquement des messages"
#: conf/vote_rules.py:87
-msgid ""
-"Minimum days to accept an answer, if it has not been accepted by the "
-"question poster"
-msgstr ""
+msgid "Minimum days to accept an answer, if it has not been accepted by the question poster"
+msgstr "Délai minimum en jours pour accepter une réponse, si elle n'a pas été acceptée par la personne ayant posé la question"
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "Éléments embarquables"
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "Nombre de questions à afficher "
+
+#: conf/widgets.py:28
+msgid "To embed the widget, add the following code to your site (and fill in correct base url, preferred tags, width and height):<iframe src=\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</p></iframe>"
+msgstr "Pour embarquer un élément, ajoutez le code suivant à votre site (et indiquez l'URL de base correcte, les mots-clés préférés, la largeur et la hauteur) : <iframe src=\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%\" height=\"300\"scrolling=\"no\"><p>Votre navigateur ne supporte pas les iframes.</p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "CSS pour l'élément questions"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "Entête pour l'élément questions"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "Pied de page pour l'élément questions"
#: const/__init__.py:10
msgid "duplicate question"
@@ -2078,415 +1951,413 @@ msgstr "Spam ou publicité"
msgid "too localized"
msgstr "trop spécifique à un lieu"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "date (↓)"
-#: const/__init__.py:42
+#: const/__init__.py:44
+#: skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "date (↑)"
# TODO demander au développeur de faire 2 entrées distinctes. Une contiendra "date (↑)" et l'autre "date"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "actualité (↓)"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "actualité (↑)"
# FIXME
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "nb de réponses (↓)"
# FIXME ou "bcp de réponses"
# FIXME
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "nb de réponses (↑)"
# FIXME ou "peu de réponses"
# FIXME
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "popularité (↓)"
# FIXME ou "bcp de votes"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "popularité (↑)"
# FIXME ou "peu de votes"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "pertinence"
# FIXME
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "toutes"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "ouvertes"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "favorite"
-#: const/__init__.py:64
-#, fuzzy
+#: const/__init__.py:70
msgid "list"
-msgstr "Liste des tags"
+msgstr "liste"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "nuage"
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "Cette question n'a pas de réponse"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "Cette question n'a pas de réponse acceptée"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "a posé une question"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "a répondu à une question"
-#: const/__init__.py:124
+#: const/__init__.py:127
+#: const/__init__.py:203
msgid "commented question"
msgstr "question commentée"
-#: const/__init__.py:125
+#: const/__init__.py:128
+#: const/__init__.py:204
msgid "commented answer"
msgstr "réponse commentée"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "question modifiée"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "réponse modifiée"
-#: const/__init__.py:128
-msgid "received award"
-msgstr "récompense obtenue"
+#: const/__init__.py:131
+msgid "received badge"
+msgstr "badge obtenu"
# FIXME ou "ayant reçu une récompense"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "marquée comme meilleure réponse"
# FIXME ou "élue meilleure réponse"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "notée positivement"
# FIXME ou "ayant reçu un vote positif"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "notée négativement"
# FIXME ou "ayant reçu un vote négatif"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "vote annulé"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "question supprimée"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "réponse supprimée"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "signalée comme ayant un \"contenu abusif\""
# FXME ou "offensive" ?
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "Mots-clés"
# FIXME ou "marqueurs sémantiques mis à jour ?"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "sélectionnée comme \"favorite\""
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "profil utilisateur entièrement renseigné"
# FIXME
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "Mise à jour d'email envoyée à l'utilisateur"
-#: const/__init__.py:142
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "Voir les questions sans réponses"
+msgstr "rappel envoyé pour les questions sans réponse"
# FIXME ou "ayant reçu une récompense"
-#: const/__init__.py:146
-#, fuzzy
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr "Gain pour accepter une meilleure réponse"
+msgstr "rappel envoyé pour accepter la meilleure réponse"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "mentionné dans le message"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "question_repondue"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "question_commentee"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "reponse_commentee"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "reponse_acceptee"
+msgid "answered question"
+msgstr "question résolue"
-#: const/__init__.py:206
+#: const/__init__.py:205
+msgid "accepted answer"
+msgstr "réponse acceptée"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[close]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[supprimée]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211
+#: views/readers.py:566
msgid "initial version"
msgstr "version initiale"
# FIXME
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "dont les mots-clés ont été révisés"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr "désactivé"
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr "exclure ceux ignorés"
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr "seulement ceux sélectionnés"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "instantanément"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "quotidien"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "hebdomadaire"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "Aucun email"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identicon"
-#: const/__init__.py:234
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "hier"
+msgstr "homme-mystère"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "monsterid"
-#: const/__init__.py:236
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "Qu'est ce que 'Gravatar' ?"
+msgstr "wavatar"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "retro"
-#: const/__init__.py:284
+#: const/__init__.py:287
+#: skins/default/templates/badges.html:38
msgid "gold"
msgstr "or"
-#: const/__init__.py:285
+#: const/__init__.py:288
+#: skins/default/templates/badges.html:48
msgid "silver"
msgstr "argent"
-#: const/__init__.py:286
+#: const/__init__.py:289
+#: skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronze"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "Aucun"
-#: const/__init__.py:299
-#, fuzzy
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr "Qu'est ce que 'Gravatar' ?"
+msgstr "Gravatar"
-#: const/__init__.py:300
-#, fuzzy
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr "Qu'est ce que 'Gravatar' ?"
+msgstr "Envoyer un avatar"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr "Merci de poser une question pertinente."
+msgstr "questions les plus pertinentes"
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
+msgstr "Cliquez ici pour voir les questions les plus pertinentes"
# FIXME ou "peu de votes"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr "par pertinence"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "Cliquez ici pour voir les questions les moins récentes"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr "par date"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "Cliquez ici pour voir les questions les plus récentes"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "Cliquez ici pour voir les questions mises à jour le moins récemment"
# TODO demander au développeur de faire 2 entrées distinctes. Une contiendra "date (↑)" et l'autre "date"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr "par activité"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "Cliquez ici pour voir les questions mises à jour le plus récemment"
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "Cliquez ici pour voir les questions les moins récentes"
+msgstr "Cliquez ici pour voir les questions avec le moins de réponse"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
msgid "by answers"
msgstr "par réponses"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
+msgstr "cliquez ici pour voir les questions avec le plus de réponse"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "Cliquez ici pour voir les questions ayant obtenu le moins de votes"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
msgid "by votes"
msgstr "par votes"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "Cliquez ici pour voir les questions ayant obtenu le plus de votes"
-#: deps/django_authopenid/backends.py:88
-msgid ""
-"Welcome! Please set email address (important!) in your profile and adjust "
-"screen name, if necessary."
-msgstr ""
+#: const/message_keys.py:40
+msgid "Sorry, your account appears to be blocked and you cannot make new posts until this issue is resolved. Please contact the forum administrator to reach a resolution."
+msgstr "Désolé, votre compte semble bloqué et vous ne pouvez pas envoyer de nouveaux messages jusqu'à nouvel ordre. Merci de contacter l'administrateur du forum pour trouver une solution."
+
+#: const/message_keys.py:45
+#: models/__init__.py:788
+msgid "Sorry, your account appears to be suspended and you cannot make new posts until this issue is resolved. You can, however edit your existing posts. Please contact the forum administrator to reach a resolution."
+msgstr "Désolé, votre compte semble bloqué et vous ne pouvez pas envoyer de nouveaux messages jusqu'à nouvel ordre. Vous pouvez, en revanche éditer vos propres messages. Merci de contacter l'administrateur du forum pour trouver une solution."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/backends.py:166
+msgid "Welcome! Please set email address (important!) in your profile and adjust screen name, if necessary."
+msgstr "Bienvenue ! Merci de spécifier une adresse email (c'est important !) dans votre profil et de mettre à jour votre pseudonyme, si nécessaire."
+
+#: deps/django_authopenid/forms.py:110
+#: deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "Les i-names ne sont pas supportés."
#: deps/django_authopenid/forms.py:233
-#, fuzzy, python-format
+#, python-format
msgid "Please enter your %(username_token)s"
-msgstr "Veuillez saisir votre nom d'utilisateur"
+msgstr "Veuillez saisir votre %(username_token)s"
#: deps/django_authopenid/forms.py:259
-#, fuzzy
msgid "Please, enter your user name"
msgstr "Veuillez saisir votre nom d'utilisateur"
# TODO "votre" ou "un" ?
#: deps/django_authopenid/forms.py:263
-#, fuzzy
msgid "Please, enter your password"
msgstr "Veuillez saisir votre mot de passe"
# TODO "votre" ou "un" ?
-#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
-#, fuzzy
+#: deps/django_authopenid/forms.py:270
+#: deps/django_authopenid/forms.py:274
msgid "Please, enter your new password"
-msgstr "Veuillez saisir votre mot de passe"
+msgstr "Veuillez saisir votre nouveau mot de passe"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Les mots de passe ne correspondent pas"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr ""
+msgstr "Merci de choisir un mot de passe avec plus de %(len)s caractères"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
msgstr "Mot de passe actuel"
#: deps/django_authopenid/forms.py:346
-msgid ""
-"Old password is incorrect. Please enter the correct "
-"password."
-msgstr ""
-"L'ancien mot de passe est erroné. Veuillez le corriger."
+msgid "Old password is incorrect. Please enter the correct password."
+msgstr "L'ancien mot de passe est erroné. Veuillez le corriger."
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Désolé, nous n'avons pas cette adresse email dans la base de données"
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
msgstr "Votre nom d'utilisateur (<i>obligatoire</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Nom d'utilisateur incorrect."
+msgid "sorry, there is no such user name"
+msgstr "désolé, aucun utilisateur ne porte ce nom"
-#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:9
+#: deps/django_authopenid/urls.py:12
+#: deps/django_authopenid/urls.py:15
+#: setup_templates/settings.py:210
msgid "signin/"
msgstr "connexion/"
@@ -2499,9 +2370,8 @@ msgid "complete/"
msgstr "termine/"
#: deps/django_authopenid/urls.py:15
-#, fuzzy
msgid "complete-oauth/"
-msgstr "termine/"
+msgstr "termine-oauth/"
#: deps/django_authopenid/urls.py:19
msgid "register/"
@@ -2516,834 +2386,688 @@ msgid "logout/"
msgstr "deconnecter/"
#: deps/django_authopenid/urls.py:30
-#, fuzzy
msgid "recover/"
-msgstr "reouvrir/"
+msgstr "récuperer/"
#: deps/django_authopenid/util.py:378
-#, fuzzy, python-format
+#, python-format
msgid "%(site)s user name and password"
-msgstr "Veuillez saisir votre nom d'utilisateur et un mot de passe"
+msgstr "nom d'utilisateur et mot de passe pour %(site)s"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Créer un compte protégé par mot de passe"
#: deps/django_authopenid/util.py:385
-#, fuzzy
msgid "Change your password"
-msgstr "Changer de mot de passe"
+msgstr "Changer votre mot de passe"
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Se connecter avec Yahoo"
#: deps/django_authopenid/util.py:480
-#, fuzzy
msgid "AOL screen name"
-msgstr "Pseudo"
+msgstr "Pseudonyme AOL"
#: deps/django_authopenid/util.py:488
-#, fuzzy
msgid "OpenID url"
-msgstr "URL OpenID:"
+msgstr "URL OpenID :"
#: deps/django_authopenid/util.py:517
-#, fuzzy
msgid "Flickr user name"
-msgstr "Nom d'utilisateur"
+msgstr "Nom d'utilisateur Flickr"
#: deps/django_authopenid/util.py:525
-#, fuzzy
msgid "Technorati user name"
-msgstr "choisissez un nom d'utilisateur"
+msgstr "Nom d'utilisateur Technorati"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "Nom du blog WordPress"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "Nom du blog Blogger"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "Nom du blog LiveJournal"
#: deps/django_authopenid/util.py:557
-#, fuzzy
msgid "ClaimID user name"
-msgstr "Nom d'utilisateur"
+msgstr "Nom d'utilisateur ClaimID"
#: deps/django_authopenid/util.py:565
-#, fuzzy
msgid "Vidoop user name"
-msgstr "Nom d'utilisateur"
+msgstr "Nom d'utilisateur Vidoop"
#: deps/django_authopenid/util.py:573
-#, fuzzy
msgid "Verisign user name"
-msgstr "Nom d'utilisateur"
+msgstr "Nom d'utilisateur VeriSign"
#: deps/django_authopenid/util.py:608
-#, fuzzy, python-format
+#, python-format
msgid "Change your %(provider)s password"
-msgstr "Changer de mot de passe"
+msgstr "Changer votre mot de passe %(provider)s"
#: deps/django_authopenid/util.py:612
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
-msgstr ""
+msgstr "Vérifier si votre authentification %(provider)s fonctionne toujours sur %(site_name)s"
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Créer un mot de passe pour %(provider)s"
# FIXME
#: deps/django_authopenid/util.py:625
-#, fuzzy, python-format
+#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr "Associez votre OpenID avec votre compte sur ce site"
+msgstr "Connecter votre compte %(provider)s à %(site_name)s"
#: deps/django_authopenid/util.py:634
-#, fuzzy, python-format
+#, python-format
msgid "Signin with %(provider)s user name and password"
-msgstr "Veuillez saisir votre nom d'utilisateur et un mot de passe"
+msgstr "Se connecter avec le nom d'utilisateur et le mot de passe %(provider)s"
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Se connecter avec le compte %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "L'OpenID %(openid_url)s est invalide"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261
+#: deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
-msgid ""
-"Unfortunately, there was some problem when connecting to %(provider)s, "
-"please try again or use another provider"
-msgstr ""
+msgid "Unfortunately, there was some problem when connecting to %(provider)s, please try again or use another provider"
+msgstr "Malheureusement, il y a eu des problèmes pendant la connexion avec %(provider)s, merci de réessayer ou d'utiliser un autre fournisseur"
-#: deps/django_authopenid/views.py:371
-#, fuzzy
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
-msgstr "Votre mot de passe a été mis à jour."
+msgstr "Votre nouveau mot de passe a été enregistré."
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "La combinaison nom d'utilisateur et mot de passe n'est pas correcte"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Merci de cliquer sur l'une des icônes ci-dessous pour vous connecter"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
-msgstr ""
+msgstr "Email de récupération de compte envoyé"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Merci d'ajouter une ou plusieurs méthodes de connexion"
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
-msgstr ""
+msgstr "Si vous le souhaitez, merci d'ajouter, supprimer ou re-valider vos méthodes de connexion"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
-msgstr ""
+msgstr "Merci d'attendre une seconde ! Votre compte est récupéré, mais…"
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
-msgstr ""
+msgstr "Désolé, la clef de récupération de ce compte est expirée ou invalide"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "La méthode de connexion %(provider_name)s n'existe pas"
-#: deps/django_authopenid/views.py:669
-#, fuzzy
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
-msgstr "désolé, les 2 mots de passe sont différents, veuillez recommencer"
+msgstr "Oops, désolé - une erreur est survenue - merci de réessayer"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "Votre connexion %(provider)s fonctionne bien"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056
+#: deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
-msgstr ""
-"Nous avons besoin de valider votre adresse email. <a "
-"id='validate_email_alert' href='%(details_url)s'>Cliquez ici</a> pour en "
-"savoir plus."
+msgstr "Nous avons besoin de valider votre adresse email. <a id='validate_email_alert' href='%(details_url)s'>Cliquez ici</a> pour en savoir plus."
-#: deps/django_authopenid/views.py:1098
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1083
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "Changer le mot de passe de votre compte"
+msgstr "Récupérer votre compte %(site)s"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "Merci de vérifier votre email et revenir via le lien indiqué."
-#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
+#: deps/livesettings/models.py:101
+#: deps/livesettings/models.py:140
msgid "Site"
msgstr "Site"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "Principal"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "Paramétrage de la base de données"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Valeur par défaut: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Valeur par défaut: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Valeur par défaut: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Les types de fichiers image autorisés sont %(types)s"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Félicitations, vous êtes maintenant administrateur"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Sites"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Documentation"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Changer de mot de passe"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Déconnexion"
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Accueil"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Modifier les paramétres des groupes"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Merci de bien vouloir corriger l'erreur ci-dessous."
+msgstr[1] "Merci de bien vouloir corriger les erreurs ci-dessous."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "Paramétrages inclus dans %(name)s."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Vous n'avez pas la permission de modifier ces valeurs"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Modifier le paramétrage du site"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Les paramétrages \"en direct\" sont désactivés pour ce site"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "Toutes les options de configuration doivent être modifiées dans le fichier settings.py du site"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Paramètres du groupe : %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Tout déplier"
-#: management/commands/send_accept_answer_reminders.py:57
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Félicitations, vous êtes maintenant administrateur"
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
-msgstr ""
+msgstr "Accepter la meilleure réponse pour %(question_count)d de vos questions"
-#: management/commands/send_accept_answer_reminders.py:62
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr "Soyez le premier à répondre à cette quesion !"
+msgstr "Merci d'accepter la meilleure réponse à cette question :"
-#: management/commands/send_accept_answer_reminders.py:64
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr "Cliquez ici pour voir les questions les moins récentes"
+msgstr "Merci d'accepter la meilleure réponse à ces questions :"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d question mise à jour à propos %(topics)s"
+msgstr[1] "%(question_count)d questions mises à jour à propos %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] ""
-"<p>Bonjour %(name)s,</p></p>Il y a du nouveau concernant %(num)d question:</"
-"p>"
-msgstr[1] ""
-"<p>Bonjour %(name)s,</p><p>Il y a du nouveau concernant %(num)d questions:</"
-"p>"
+msgid "<p>Dear %(name)s,</p><p>The following question has been updated %(sitename)s</p>"
+msgid_plural "<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on %(sitename)s:</p>"
+msgstr[0] "<p>Bonjour %(name)s,</p><p>La question suivante a été mise à jour %(sitename)s</p>"
+msgstr[1] "<p>Bonjour, %(name)s,</p><p>Les %(num)d questions ont été mises à jour %(sitename)s</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "nouvelle question"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Merci de visiter notre forum de Questions/Réponses pour découvrir les "
-"nouvelles questions. Passez le mot autour de vous si vous connaissez "
-"quelqu'un susceptible de nous aider en répondant à certaines questions, ou "
-"qui pourrait bénéficier de notre forum en y postant ses propres questions..."
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"FIXME - Dans vos derniers paramétrages, vous avez opté pour recevoir des "
-"mails quotidiennement. Si vous recevez plus d'un email par jour, merci "
-"d'avertir l'administrateur du forum de ce problème. "
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"FIXME - Dans vos derniers paramétrages, vous avez opté pour recevoir des "
-"mails de façon hebdomadaire. Si vous recevez plus d'un email par semaine, "
-"merci d'avertir l'administrateur du forum de ce problème. "
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"Il est possible que vous receviez des liens plusieurs fois; nous sommes en "
-"train de plancher sur ce problème"
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
-msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
-msgstr ""
-"Allez à l'adresse %(email_settings_link)s pour changer la fréquence des "
-"emails de mises à jour, ou bien informez l'administrateur à l'adresse "
-"%(admin_email)s"
+msgid "<p>Please remember that you can always <a hrefl\"%(email_settings_link)s\">adjust</a> frequency of the email updates or turn them off entirely.<br/>If you believe that this message was sent in an error, please email about it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your friendly %(sitename)s server.</p>"
+msgstr "<p>Merci de vous souvenir que vous pouvez toujours <a hrefl\"%(email_settings_link)s\">ajuster</a> la fréquence des mises à jour par email ou les désactiver totalement.<br/>Si vous pensez que ce message a été envoyé par erreur, merci de contacter l'administrateur du forum à l'adresse %(admin_email)s.</p><p>Sincèrement,</p><p>Votre ami le serveur de %(sitename)s.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d question sans réponse au sujet de %(topics)s"
+msgstr[1] "%(question_count)d questions sans réponse au sujet de %(topics)s"
-#: middleware/forum_mode.py:31
-#, fuzzy, python-format
+#: middleware/forum_mode.py:53
+#, python-format
msgid "Please log in to use %s"
-msgstr "Bitte einloggen"
+msgstr "Merci de vous connecter pour utiliser %s"
-#: models/__init__.py:317
-msgid ""
-"Sorry, you cannot accept or unaccept best answers because your account is "
-"blocked"
-msgstr ""
-"Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car "
-"votre compte est bloqué"
+#: models/__init__.py:320
+msgid "Sorry, you cannot accept or unaccept best answers because your account is blocked"
+msgstr "Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car votre compte est bloqué"
-#: models/__init__.py:321
-msgid ""
-"Sorry, you cannot accept or unaccept best answers because your account is "
-"suspended"
-msgstr ""
-"Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car "
-"votre compte est suspendu"
+#: models/__init__.py:324
+msgid "Sorry, you cannot accept or unaccept best answers because your account is suspended"
+msgstr "Désolé, vous ne pouvez pas accepter ou refuser les meilleures réponses car votre compte est suspendu"
-#: models/__init__.py:334
-#, fuzzy, python-format
-msgid ""
-">%(points)s points required to accept or unaccept your own answer to your "
-"own question"
-msgstr ""
-"Désolé, vous ne pouvez pas accepter ou rejeter votre propre réponse à votre "
-"propre question !"
+#: models/__init__.py:337
+#, python-format
+msgid ">%(points)s points required to accept or unaccept your own answer to your own question"
+msgstr "> %(points)s points nécessaires pour accepter ou non votre propre réponse"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
-msgid ""
-"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
-msgstr ""
+msgid "Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr "Désolé, vous ne pourrez accepter cette réponse qu'après %(will_be_able_at)s"
-#: models/__init__.py:361
-#, fuzzy, python-format
-msgid ""
-"Sorry, only moderators or original author of the question - %(username)s - "
-"can accept or unaccept the best answer"
-msgstr ""
-"Désolé, seul l'auteur d'origine de la question - %(username)s - peut "
-"accepter/désigner la meilleure réponse"
+#: models/__init__.py:367
+#, python-format
+msgid "Sorry, only moderators or original author of the question - %(username)s - can accept or unaccept the best answer"
+msgstr "Désolé, seul l'auteur de la question - %(username)s - ou un modérateur peut accepter ou non la meilleure réponse"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
-msgstr "Il est interdit de voter pour ses propores publications"
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr "Il est interdit de voter pour ses propres publications"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "Désolé, votre compte semble être bloqué"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "Désolé, votre compte semble être suspendu"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s points sont requis pour pouvoir voter positivement"
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s points sont requis pour pouvoir voter négativement"
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "Désolé, les utilisateurs bloqués ne peuvent pas transférer de fichier"
-#: models/__init__.py:429
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
-msgstr ""
-"Désolé, les utilisateurs suspendus ne peuvent pas transférer de fichier"
+msgstr "Désolé, les utilisateurs suspendus ne peuvent pas transférer de fichier"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr ""
-"Le transfert d'images vers notre serveur est réservé aux utilisateurs ayant "
-"plus de >%(min_rep)s points de réputation"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr "Les utilisateurs bloques ne peuvent pas publier"
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
-msgstr "Les utilisateurs suspendus ne peuvent pas publier"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr "désolé, l'envoi de fichier nécessite un karma supérieur à %(min_rep)s"
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
-msgid ""
-"Sorry, comments (except the last one) are editable only within %(minutes)s "
-"minute from posting"
-msgid_plural ""
-"Sorry, comments (except the last one) are editable only within %(minutes)s "
-"minutes from posting"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Sorry, comments (except the last one) are editable only within %(minutes)s minute from posting"
+msgid_plural "Sorry, comments (except the last one) are editable only within %(minutes)s minutes from posting"
+msgstr[0] "Désolé, les commentaires (sauf le dernier) sont modifiables uniquement pendant %(minutes)s minute après l'envoi"
+msgstr[1] "Désolé, les commentaires (sauf le dernier) sont modifiables uniquement pendant %(minutes)s minutes après l'envoi"
-#: models/__init__.py:490
-#, fuzzy
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
-msgstr ""
-"Désolé, seuls les propriétaires des questions, les administrateurs du site "
-"et les modérateurs peuvent requalifier des questions supprimées (c'est à "
-"dire modifier leurs mots-clés)"
+msgstr "Désolé, seuls les propriétaires des questions ou les modérateurs peuvent modifier des commentaires"
-#: models/__init__.py:503
-msgid ""
-"Sorry, since your account is suspended you can comment only your own posts"
-msgstr ""
-"Désolé, vous ne pouvez commenter que vos propres publications, car votre "
-"compte est suspendu"
+#: models/__init__.py:519
+msgid "Sorry, since your account is suspended you can comment only your own posts"
+msgstr "Désolé, vous ne pouvez commenter que vos propres publications, car votre compte est suspendu"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
-msgid ""
-"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
-"required. You can still comment your own posts and answers to your questions"
-msgstr ""
-"Désolé, pour commenter des publications, un minimum de %(min_rep)s points de "
-"réputation est requis. Vous pouvez toutefois commenter vos propres "
-"publications et répondre à vos questions"
+msgid "Sorry, to comment any post a minimum reputation of %(min_rep)s points is required. You can still comment your own posts and answers to your questions"
+msgstr "Désolé, pour commenter des publications, un minimum de %(min_rep)s points de réputation est requis. Vous pouvez toutefois commenter vos propres publications et répondre à vos questions"
-#: models/__init__.py:535
-#, fuzzy
-msgid ""
-"This post has been deleted and can be seen only by post owners, site "
-"administrators and moderators"
-msgstr ""
-"Ce message a été supprimé et peut seulement être consulté par ses "
-"propriétaires, les administrateurs du site, et les modérateurs"
+#: models/__init__.py:553
+msgid "This post has been deleted and can be seen only by post owners, site administrators and moderators"
+msgstr "Ce message a été supprimé et peut seulement être consulté par ses propriétaires, les administrateurs du site, et les modérateurs"
-#: models/__init__.py:552
-msgid ""
-"Sorry, only moderators, site administrators and post owners can edit deleted "
-"posts"
-msgstr ""
-"Désolé, seuls les modérateurs, les administrateurs du site et les "
-"propriétaires des messages peuvent modifier les messages supprimés"
+#: models/__init__.py:570
+msgid "Sorry, only moderators, site administrators and post owners can edit deleted posts"
+msgstr "Désolé, seuls les modérateurs, les administrateurs du site et les propriétaires des messages peuvent modifier les messages supprimés"
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
-msgstr ""
-"Désolé, vous ne pouvez pas modifier de messages, car votre compte est bloqué"
+msgstr "Désolé, vous ne pouvez pas modifier de messages, car votre compte est bloqué"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
-msgstr ""
-"Désolé, vous ne pouvez modifier que vos propres messages, car votre compte "
-"est suspendu"
+msgstr "Désolé, vous ne pouvez modifier que vos propres messages, car votre compte est suspendu"
-#: models/__init__.py:576
-#, fuzzy, python-format
-msgid ""
-"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
-msgstr ""
-"Désolé, pour modifier les messages du wiki, un minimum de %(min_rep)s points "
-"de réputation est requis"
+#: models/__init__.py:594
+#, python-format
+msgid "Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour modifier les messages du wiki, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:583
-#, fuzzy, python-format
-msgid ""
-"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
-"required"
-msgstr ""
-"Désolé, pour éditer les messages des autres utilisateurs, un minimum de "
-"%(min_rep)s points de réputation est requis"
+#: models/__init__.py:601
+#, python-format
+msgid "Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour éditer les messages des autres utilisateurs, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:646
-msgid ""
-"Sorry, cannot delete your question since it has an upvoted answer posted by "
-"someone else"
-msgid_plural ""
-"Sorry, cannot delete your question since it has some upvoted answers posted "
-"by other users"
-msgstr[0] ""
-"Désolé, impossible de supprimer votre question car elle a obtenu un vote "
-"positif de la part d'un autre utilisateur"
-msgstr[1] ""
-"Désolé, impossible de supprimer votre question car elle a obtenu des votes "
-"positifs de la part d'autres utilisateurs"
+#: models/__init__.py:664
+msgid "Sorry, cannot delete your question since it has an upvoted answer posted by someone else"
+msgid_plural "Sorry, cannot delete your question since it has some upvoted answers posted by other users"
+msgstr[0] "Désolé, impossible de supprimer votre question car elle a obtenu un vote positif de la part d'un autre utilisateur"
+msgstr[1] "Désolé, impossible de supprimer votre question car elle a obtenu des votes positifs de la part d'autres utilisateurs"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
-msgstr ""
-"Désolé, vous ne pouvez pas supprimer de messages car votre compte est bloqué"
+msgstr "Désolé, vous ne pouvez pas supprimer de messages car votre compte est bloqué"
-#: models/__init__.py:665
-msgid ""
-"Sorry, since your account is suspended you can delete only your own posts"
-msgstr ""
-"Désolé, vous pouvez seulement supprimer vos propres messages car votre "
-"compte est suspendu"
+#: models/__init__.py:683
+msgid "Sorry, since your account is suspended you can delete only your own posts"
+msgstr "Désolé, vous pouvez seulement supprimer vos propres messages car votre compte est suspendu"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
-msgid ""
-"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
-"is required"
-msgstr ""
-"Désolé, pour supprimer les messages des autres utilisateurs, un minimum de "
-"%(min_rep)s points de réputation est requis"
+msgid "Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour supprimer les messages des autres utilisateurs, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
-msgstr ""
-"Désolé, vous ne pouvez pas cloturer de questions car votre compte est bloqué"
+msgstr "Désolé, vous ne pouvez pas clôturer de questions car votre compte est bloqué"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
-msgstr ""
-"Désolé, vous ne pouvez pas cloturer de questions car votre compte est "
-"suspendu"
+msgstr "Désolé, vous ne pouvez pas clôturer de questions car votre compte est suspendu"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
-msgid ""
-"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
-"required"
-msgstr ""
-"Désolé, pour cloturer les messages des autres utilisateurs, un minimum de "
-"%(min_rep)s points de réputation est requis"
+msgid "Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour clôturer les messages des autres utilisateurs, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
-msgid ""
-"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
-msgstr ""
-"Désolé, pour clore vos propres questions, un minimum de %(min_rep)s points "
-"de réputation est requis"
+msgid "Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour clore vos propres questions, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
-msgid ""
-"Sorry, only administrators, moderators or post owners with reputation > "
-"%(min_rep)s can reopen questions."
-msgstr ""
-"Désolé, seuls les administrateurs, les modérateurs et les propriétaires des "
-"messages avec plus de %(min_rep)s points de réputation peuvent réouvrir des "
-"questions."
+msgid "Sorry, only administrators, moderators or post owners with reputation > %(min_rep)s can reopen questions."
+msgstr "Désolé, seuls les administrateurs, les modérateurs et les propriétaires des messages avec plus de %(min_rep)s points de réputation peuvent réouvrir des questions."
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
-msgid ""
-"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
-msgstr ""
-"Désolé, pour réouvrir vos propres questions, un minimum de %(min_rep)s "
-"points de réputation est requis"
+msgid "Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour réouvrir vos propres questions, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
-msgstr "Un message ne peut pas être étiqueté \"abusif\" deux fois"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr "Vous avez déjà mis un drapeau sur cette question et ne pouvez pas le refaire"
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
-msgstr "Les utilisateurs bloqués ne peuvent pas étiqueter les messages"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "Désolé, vous ne pouvez pas marquer des messages comme offensifs car votre compte est bloqué"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
-msgstr "Les utilisateurs suspendus ne peuvent pas étiqueter les messages"
+#: models/__init__.py:794
+#, python-format
+msgid "Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour marquer des messages comme offensifs, un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
-msgstr ""
-"Il faut au moins %(min_rep)s points de réputation pour pouvoir étiqueter les "
-"messages comme étant du spam"
+msgid "Sorry, you have exhausted the maximum number of %(max_flags_per_day)s offensive flags per day."
+msgstr "Désolé, vous avez épuisé le nombre maximal par jour de notification %(max_flags_per_day)s de message offensifs."
-#: models/__init__.py:784
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr "impossible de supprimer un drapeau inexistent"
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Désolé, vous ne pouvez pas supprimer d'étiquette car votre compte est bloqué"
+
+#: models/__init__.py:837
+msgid "Sorry, your account appears to be suspended and you cannot remove flags. Please contact the forum administrator to reach a resolution."
+msgstr "Désolé, votre compte semble suspendu et vous ne pouvez pas supprimer des drapeaux. Merci de contacter l'administrateur du forum pour trouver une solution."
+
+#: models/__init__.py:843
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr "%(max_flags_per_day)s dépassé"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] "Désolé, pour étiqueter un message, un minimum de %(min_rep)d point de réputation est requis"
+msgstr[1] "Désolé, pour étiqueter un message, un minimum de %(min_rep)d points de réputation est requis"
-#: models/__init__.py:799
-msgid ""
-"Sorry, only question owners, site administrators and moderators can retag "
-"deleted questions"
-msgstr ""
-"Désolé, seuls les propriétaires des questions, les administrateurs du site "
-"et les modérateurs peuvent requalifier des questions supprimées (c'est à "
-"dire modifier leurs mots-clés)"
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "vous n'avez pas la permission de supprimer toutes les étiquettes"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr "pas de drapeau pour cette entrée"
+
+#: models/__init__.py:887
+msgid "Sorry, only question owners, site administrators and moderators can retag deleted questions"
+msgstr "Désolé, seuls les propriétaires des questions, les administrateurs du site et les modérateurs peuvent requalifier des questions supprimées (c'est à dire modifier leurs mots-clés)"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
-msgstr ""
-"Désolé, vous ne pouvez pas requalifier une question (c'est à dire changer "
-"ses mots-clés) car votre compte est bloqué"
+msgstr "Désolé, vous ne pouvez pas requalifier une question (c'est à dire changer ses mots-clés) car votre compte est bloqué"
-#: models/__init__.py:810
-msgid ""
-"Sorry, since your account is suspended you can retag only your own questions"
-msgstr ""
-"Désolé, vous pouvez seulement requalifier vos propres questions (c'est à "
-"dire changer leurs mots-clés) car votre compte est suspendu"
+#: models/__init__.py:898
+msgid "Sorry, since your account is suspended you can retag only your own questions"
+msgstr "Désolé, vous pouvez seulement requalifier vos propres questions (c'est à dire changer leurs mots-clés) car votre compte est suspendu"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
-msgid ""
-"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
-msgstr ""
-"Désolé, pour requalifier une question (c'est à dire changer ses mots-clés), "
-"un minimum de %(min_rep)s points de réputation est requis"
+msgid "Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr "Désolé, pour requalifier une question (c'est-à-dire changer ses mots-clés), un minimum de %(min_rep)s points de réputation est requis"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
-msgstr ""
-"Désolé, vous ne pouvez pas supprimer de commentaires car votre compte est "
-"bloqué"
+msgstr "Désolé, vous ne pouvez pas supprimer de commentaires car votre compte est bloqué"
-#: models/__init__.py:837
-msgid ""
-"Sorry, since your account is suspended you can delete only your own comments"
-msgstr ""
-"Désolé, vous pouvez seulement supprimer vos propres commentaires car votre "
-"compte est suspendu"
+#: models/__init__.py:925
+msgid "Sorry, since your account is suspended you can delete only your own comments"
+msgstr "Désolé, vous pouvez seulement supprimer vos propres commentaires car votre compte est suspendu"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
-msgstr ""
-"Désolé, pour supprimer des commentaires, un minimum de %(min_rep)s points de "
-"réputation est requis"
+msgstr "Désolé, pour supprimer des commentaires, un minimum de %(min_rep)s points de réputation est requis"
-# FIXME ou "ayant reçu un vote négatif"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "impossible de révoquer un ancien vote"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr "désolé, mais les anciens votes ne peuvent être révoqués"
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469
+#: utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "le %(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
-msgstr ""
+msgstr "dans deux jours"
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "demain"
-#: models/__init__.py:1345
-#, fuzzy, python-format
+#: models/__init__.py:1475
+#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] "il y a %(hr)d heure"
-msgstr[1] "il y a %(hr)d heures"
+msgstr[0] "dans %(hr)d heure"
+msgstr[1] "dans %(hr)d heures"
-#: models/__init__.py:1347
-#, fuzzy, python-format
+#: models/__init__.py:1477
+#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] "il y a %(min)d minute"
-msgstr[1] "il y a %(min)d minutes"
+msgstr[0] "dans %(min)d minute"
+msgstr[1] "dans %(min)d minutes"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(days)d jour"
+msgstr[1] "%(days)d jours"
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
-msgid ""
-"New users must wait %(days)s before answering their own question. You can "
-"post an answer %(left)s"
-msgstr ""
+msgid "New users must wait %(days)s before answering their own question. You can post an answer %(left)s"
+msgstr "Les nouveaux utilisateurs doivent attendre %(days)s avant de répondre à leurs propres questions. Vous pouvez envoyer une réponse %(left)s"
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
-#, fuzzy
+#: models/__init__.py:1653
+#: skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr "anonyme"
+msgstr "Anonyme"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "Administrateur du site"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr "Modérateur de forum"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr "Utilisateur suspendu"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr "Utilisateur bloqué"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "Utilisateur enregistré"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr "Utilisateurs suivis"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr "Utilisateur certifié"
-#: models/__init__.py:1733
-#, fuzzy, python-format
+#: models/__init__.py:1870
+#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr "Votre karma est %(reputation)s"
+msgstr "Le karma de %(username)s est %(reputation)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "un badge d'or"
+msgstr[1] "%(count)d badges d'or"
-#: models/__init__.py:1750
-#, fuzzy, python-format
+#: models/__init__.py:1887
+#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] "Badge argent - blah blah"
-msgstr[1] "Badge argent - blah blah"
+msgstr[0] "un badge d'argent"
+msgstr[1] "%(count)d badges d'argent"
-#: models/__init__.py:1757
-#, fuzzy, python-format
+#: models/__init__.py:1894
+#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] "Badge bronze - blah blah"
-msgstr[1] "Badge bronze - blah blah"
+msgstr[0] "un badge de bronze"
+msgstr[1] "%(count)d badges de bronze"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s et %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
+msgstr "%(user)s a %(badges)s"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
-#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
-msgstr "Tags de la question"
+msgid "\"%(title)s\""
+msgstr "« %(title)s »"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
-msgid ""
-"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
-"href=\"%(user_profile)s\">your profile</a>."
-msgstr ""
-"Félicitations, vous avez reçu un badge '%(badge_name)s'. Consultez <a href="
-"\"%(user_profile)s\">votre profil</a>."
+msgid "Congratulations, you have received a badge '%(badge_name)s'. Check out <a href=\"%(user_profile)s\">your profile</a>."
+msgstr "Félicitations, vous avez reçu un badge '%(badge_name)s'. Consultez <a href=\"%(user_profile)s\">votre profil</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745
+#: views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
+msgstr "Votre inscription au mot-clé est enregistrée, merci !"
#: models/badges.py:129
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr ""
-"Suppression de son propre message avec un score de 3 votes positifs ou moins"
+msgstr "Suppression de son propre message avec un score de %(votes)s votes positifs ou plus"
#: models/badges.py:133
msgid "Disciplined"
msgstr "Discipliné"
#: models/badges.py:151
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr ""
-"Suppression de son propre message avec un score de 3 votes positifs ou moins"
+msgstr "Suppression de son propre message avec un score de %(votes)s votes négatifs ou plus"
#: models/badges.py:155
msgid "Peer Pressure"
@@ -3352,7 +3076,7 @@ msgstr "Pression des pairs"
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
-msgstr ""
+msgstr "Reçu au moins %(votes)s votes positifs pour une réponse pour la première fois"
#: models/badges.py:178
msgid "Teacher"
@@ -3363,7 +3087,6 @@ msgid "Supporter"
msgstr "Supporteur"
#: models/badges.py:219
-#, fuzzy
msgid "First upvote"
msgstr "Premier vote positif"
@@ -3372,12 +3095,10 @@ msgid "Critic"
msgstr "Critique"
#: models/badges.py:228
-#, fuzzy
msgid "First downvote"
msgstr "Premier vote négatif"
#: models/badges.py:237
-#, fuzzy
msgid "Civic Duty"
msgstr "Devoir civique"
@@ -3399,7 +3120,9 @@ msgstr "Autodidacte"
msgid "Nice Answer"
msgstr "Jolie réponse"
-#: models/badges.py:309 models/badges.py:321 models/badges.py:333
+#: models/badges.py:309
+#: models/badges.py:321
+#: models/badges.py:333
#, python-format
msgid "Answer voted up %(num)s times"
msgstr "Réponse ayant obtenu %(num)s votes positifs"
@@ -3416,7 +3139,9 @@ msgstr "Très bonne réponse"
msgid "Nice Question"
msgstr "Jolie question"
-#: models/badges.py:345 models/badges.py:357 models/badges.py:369
+#: models/badges.py:345
+#: models/badges.py:357
+#: models/badges.py:369
#, python-format
msgid "Question voted up %(num)s times"
msgstr "Question ayant obtenu %(num)s votes positifs"
@@ -3431,7 +3156,7 @@ msgstr "Très bonne question"
#: models/badges.py:376
msgid "Student"
-msgstr "Etudiant"
+msgstr "Étudiant"
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
@@ -3441,7 +3166,9 @@ msgstr "A posté sa première question avec au moins un vote positif"
msgid "Popular Question"
msgstr "Question populaire"
-#: models/badges.py:418 models/badges.py:429 models/badges.py:441
+#: models/badges.py:418
+#: models/badges.py:429
+#: models/badges.py:441
#, python-format
msgid "Asked a question with %(views)s views"
msgstr "A posé une question consultée plus de %(views)s fois"
@@ -3482,12 +3209,8 @@ msgstr "Première question acceptée avec au moins %(num)s votes positifs"
#: models/badges.py:518
#, python-format
-msgid ""
-"Answered a question more than %(days)s days later with at least %(votes)s "
-"votes"
-msgstr ""
-"A répondu à une question avec %(days)s jours de retard, et avec au moins "
-"%(votes)s votes"
+msgid "Answered a question more than %(days)s days later with at least %(votes)s votes"
+msgstr "A répondu à une question avec %(days)s jours de retard, et avec au moins %(votes)s votes"
#: models/badges.py:525
msgid "Necromancer"
@@ -3530,7 +3253,7 @@ msgstr "Première intervention"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Éditeur associé"
#: models/badges.py:627
#, python-format
@@ -3569,17 +3292,16 @@ msgstr "Question favorite"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Enthousiaste"
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Site visité tous les jours depuis %(num)s jours"
#: models/badges.py:732
-#, fuzzy
msgid "Commentator"
-msgstr "Documentation"
+msgstr "Commentateur"
#: models/badges.py:736
#, python-format
@@ -3595,718 +3317,3099 @@ msgstr "Taxonomiste"
msgid "Created a tag used by %(num)s questions"
msgstr "A créé un mot-clé (tag) utilisé par %(num)s questions"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "Expert"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Très actif dans une catégorie de questions"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "Désolé, cette question a été supprimée, et n'est plus accessible."
-#: models/content.py:565
-msgid ""
-"Sorry, the answer you are looking for is no longer available, because the "
-"parent question has been removed"
-msgstr ""
+#: models/post.py:1087
+msgid "Sorry, the answer you are looking for is no longer available, because the parent question has been removed"
+msgstr "Désolé, la réponse que vous demandez n'est plus disponible, car la question d'origine a été supprimée"
-#: models/content.py:572
-#, fuzzy
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "Désolé, cette question a été supprimée, et n'est plus accessible."
-#: models/meta.py:116
-msgid ""
-"Sorry, the comment you are looking for is no longer accessible, because the "
-"parent question has been removed"
-msgstr ""
+#: models/post.py:1110
+msgid "Sorry, the comment you are looking for is no longer accessible, because the parent question has been removed"
+msgstr "Désolé, le commentaire que vous voulez voir n'est plus accessible, car la question d'origine a été supprimée"
-#: models/meta.py:123
-msgid ""
-"Sorry, the comment you are looking for is no longer accessible, because the "
-"parent answer has been removed"
-msgstr ""
+#: models/post.py:1117
+msgid "Sorry, the comment you are looking for is no longer accessible, because the parent answer has been removed"
+msgstr "Désolé, le commentaire que vous voulez voir n'est plus accessible, car la réponse d'origine a été supprimée"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" et \"%s\""
-#: models/question.py:66
-#, fuzzy
+#: models/question.py:57
msgid "\" and more"
-msgstr "En savoir plus."
-
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s a modifié la question"
+msgstr "\" et plus"
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-"Les utilisateurs %(people)s ont posté %(new_answer_count)s nouvelles réponses"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s a/ont commenté cette question"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s a/ont commenté des réponses"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s a/ont commenté une réponse"
+#: models/reply_by_email.py:71
+msgid "edited by email"
+msgstr "modifié par email"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>Modifié par un modérateur. Motif :</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
-msgid ""
-"%(points)s points were added for %(username)s's contribution to question "
-"%(question_title)s"
-msgstr ""
-"%(points)s points ont été accordés pour la contribution de %(username)s à la "
-"question \"%(question_title)s\""
+msgid "%(points)s points were added for %(username)s's contribution to question %(question_title)s"
+msgstr "%(points)s points ont été accordés pour la contribution de %(username)s à la question \"%(question_title)s\""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
-msgid ""
-"%(points)s points were subtracted for %(username)s's contribution to "
-"question %(question_title)s"
-msgstr ""
-"%(points)s points ont été retirés pour la contribution de %(username)s' à la "
-"question \"%(question_title)s\""
+msgid "%(points)s points were subtracted for %(username)s's contribution to question %(question_title)s"
+msgstr "%(points)s points ont été retirés pour la contribution de %(username)s' à la question \"%(question_title)s\""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "intéressant"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "ignoré"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Forum entier"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Les questions que j'ai posées"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Les questions auxquelles j'ai répondu"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "questions sélectionnées individuellement"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr "Mentions et réponses aux commentaires"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Instantanément"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Quotidien"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "hebdomadaire"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Aucun email"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Merci d'entrer votre <span>nom d'utilisateur</span>, puis de vous connecter"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr "(ou choisissez une autre méthode de connexion ci-dessus)"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "Connexion"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Change Email"
+msgstr "Changer d'email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Sauvegarder votre adresse email"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+"<span class=\\\"strong big\\\">Entrez votre email dans la zone ci-dessous</span> si \n"
+"vous voulez utiliser une autre adresse pour <strong>mettre à jour les inscriptions</strong>.\n"
+"<br>Actuellement, vous utilisez <strong>%%(email)s</strong>"
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+"<span class='strong big'>Merci d'entrer votre adresse email dans la zone ci-dessous.</span>\n"
+"Une adresse valide est nécessaire pour ce forum Q&amp;R. Si vous voulez, \n"
+"vous pouvez <strong>recevoir des mises à jour</strong> sur les questions intéressantes\n"
+"ou la totalité du forum par email. De plus votre email est utilisé pour créer un unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> pour votre\n"
+"compte. Les adresses ne sont jamais affichées ou partagées avec quiconque."
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+"<strong>Votre nouvel email :</strong> \n"
+"(il <strong>ne sera</strong> donné à personne, il doit être valide)"
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Sauvegarder l'email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Annuler"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Valider l'email"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with your \n"
+"web browser. Email validation is necessary to help insure the proper use of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+"<span class=\\\"strong big\\\">Un email avec un lien de validation a été envoyé à \n"
+"%%(email)s.</span> Merci <strong>de suivre ce lien</strong> avec votre navigateur\n"
+"web. La validation par email est nécessaire pour s'assurer du bon fonctionnement \n"
+"des emails sur <span class=\\\"orange\\\">Q&amp;R</span>. Si vous voulez utiliser \n"
+"<strong>une autre adresse</strong>, merci <a \n"
+"href='%%(change_email_url)s'><strong>de la changer à nouveau</strong></a>."
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "Email inchangé"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+"<span class=\\\"strong big\\\">Votre adresse email %%(email)s n'a pas été changée.\n"
+"</span> Si vous décidez de le changer plus tard - vous pouvez toujours le\n"
+"faire le changement dans votre profil utilisateur en utilisant de nouveau le <a \n"
+"href='%%(change_email_url)s'><strong>formulaire précédent</strong></a>."
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "Adresse email modifiée."
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when there \n"
+"are any news."
+msgstr ""
+"\n"
+"<span class='big strong'>Votre adresse email est maintenant %%(email)s.</span> \n"
+"Les mises à jour des questions que vous préférez seront envoyées à cette adresse. \n"
+"Les notifications sont envoyées quotidiennement voire moins souvent - uniquement quand\n"
+"des nouvelles arrivent."
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Adresse email vérifiée."
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</strong>\n"
+"or less frequently."
+msgstr ""
+"<span class=\\\"big strong\\\">Merci d'avoir vérifié votre email !</span> Maintenant \n"
+"vous pouvez <strong>poser</strong> et <strong>répondre</strong> à des questions. De plus, si \n"
+"vous en trouvez une très intéressante vous pouvez vous <strong>inscrire aux\n"
+"mises à jour</strong> - dont vous serez notifié <strong>une fois par jour</strong>\n"
+"ou moins souvent."
+
+#: skins/common/templates/authopenid/changeemail.html:102
+msgid "Validation email not sent"
+msgstr "Email de validation non envoyé"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+"<span class='big strong'>Votre adresse actuelle %%(email)s a été \n"
+"validée précédemment</span> donc la nouvelle clef n'a pas été envoyée. Vous pouvez <a \n"
+"href='%%(change_link)s'>changer</a> l'adresse utilisée pour les notifications de\n"
+"mises à jour, si nécessaire."
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "Inscription"
+
+#: skins/common/templates/authopenid/complete.html:23
+msgid "User registration"
+msgstr "Inscription de l'utilisateur"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr "<strong>Recevoir les mises à jour du forum par email</strong>"
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "Merci de sélectionner une des options ci-dessus"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "S'enregistrer"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "Merci de vous être inscrit sur notre forum de Questions/Réponses !"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
-#, fuzzy
msgid "Your account details are:"
-msgstr "Informations détaillées sur votre compte:"
+msgstr "Les détails de votre compte :"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "Nom d'utilisateur :"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Mot de passe :"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
-msgstr "Merci de vous authentifiez :"
+msgstr "Merci de vous authentifier :"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
msgid ""
"Sincerely,\n"
-"Forum Administrator"
-msgstr "L'administrateur du forum"
+"Q&A Forum Administrator"
+msgstr ""
+"Sincèrement,\n"
+"L'administrateur du forum de Questions/Réponses"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Bienvenue dans notre forum de Questions/Réponses"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "Pour utiliser ce forum, utilisez le lien ci-dessous :"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
-msgstr ""
-"En cliquant sur le lien ci-dessus, vous allez nous permettre de vérifier la "
-"validité de votre adresse email."
+msgstr "En cliquant sur le lien ci-dessus, vous allez nous permettre de vérifier la validité de votre adresse email."
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"Si vous pensez que ce message a été envoyé par erreur - \n"
-"aucune action de votre part n'est nécessaire. Ignorez ce mail, et veuillez "
-"accepter nos excuses \n"
+"aucune action de votre part n'est nécessaire. Ignorez ce mail, et veuillez accepter nos excuses \n"
"pour le dérangement que nous avons occasionné"
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Déconnexion"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "Vous avez été déconnecté avec succès"
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid "However, you still may be logged in to your OpenID provider. Please logout of your provider if you wish to do so."
+msgstr "Cependant, vous êtes peut-être toujours connecté via votre fournisseur OpenID. Merci de vous déconnecter de celui-ci si vous le souhaitez."
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Veuillez vous authentifier avec votre \"OpenID\""
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+" Votre réponse à la question %(title)s %(summary)s sera publiée dès que\n"
+" vous vous serez connecté."
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"Votre question \n"
+" %(title)s %(summary)s sera publiée dès que vous vous\n"
+" serez connecté\n"
+" "
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid "Choose your favorite service below to sign in using secure OpenID or similar technology. Your external service password always stays confidential and you don't have to rememeber or create another one."
+msgstr "Choisissez votre service de connexion préféré ci-dessous, en utilisant OpenID ou une technologie proche. Votre mot de passe de service externe reste confidentiel et vous n'avez pas à vous en souvenir ou en créer un autre."
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid "It's a good idea to make sure that your existing login methods still work, or add a new one. Please click any of the icons below to check/change or add new login methods."
+msgstr "C'est une bonne idée de s'assurer que votre méthode de connexion actuelle fonctionne toujours, ou d'en ajouter une autre. Merci de cliquer sur l'une des icônes ci-dessous pour vérifier, changer ou ajouter de nouvelles méthodes."
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid "Please add a more permanent login method by clicking one of the icons below, to avoid logging in via email each time."
+msgstr "Merci d'ajouter une méthode de connexion plus permanente en cliquant sur l'une des icônes ci-dessous, pour éviter de vous connecter par email à chaque fois."
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid "Click on one of the icons below to add a new login method or re-validate an existing one."
+msgstr "Cliquez sur l'une des icônes ci-dessous pour ajouter une nouvelle méthode de connexion ou en re-valider une existante."
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid "You don't have a method to log in right now, please add one or more by clicking any of the icons below."
+msgstr "Vous n'avez pas de méthode pour vous connecter pour le moment, merci d'en ajouter au moins une en cliquant sur une des icônes ci-dessous."
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid "Please check your email and visit the enclosed link to re-connect to your account"
+msgstr "Merci de vérifier votre boîte email et suivre le lien envoyé pour vous reconnecter à votre compte"
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "ou entrez votre <span>nom d'utilisateur et mot de passe</span>, puis connectez-vous"
+
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr "Merci de vous connecter :"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "Échec de la connexion, merci de réessayer"
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr "Nom d'utilisateur ou email"
+
+#: skins/common/templates/authopenid/signin.html:108
+#: utils/forms.py:169
+msgid "Password"
+msgstr "Mot de passe"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr "Pour changer votre mot de passe - merci de saisir deux fois le nouveau, puis valider"
+
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "Nouveau mot de passe"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr "Merci de retaper"
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Voici vos méthodes de connexion actuelles"
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "fournisseur"
+
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr "dernière utilisation"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "supprimer, si vous le souhaitez"
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "Supprimer"
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr "ne peut être supprimé"
+
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr "Toujours des difficultés à se connecter ?"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Merci d'entrer votre adresse email ci-dessous et d'obtenir une nouvelle clef"
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr "Merci d'entrer votre adresse email ci-dessous pour récupérer votre compte"
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr "récupérez votre compte par email"
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "Envoyer une clef de récupération"
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "Récupérer votre compte par email"
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr "Merci de vous enregistrer en cliquant sur l'une des icônes ci-dessous"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr "ou de créer un nouveau compte et mot de passe ici"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Créer un nom d'utilisateur et un mot de passe"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+"<span class='strong big'>Si vous préférez, créez votre compte et mot de passe \n"
+"ici. Cependant</span>, souvenez-vous que nous supportons aussi la méthode de connexion \n"
+"<strong>OpenID</strong>. Avec <strong>OpenID</strong> vous pouvez facilement réutiliser\n"
+"un compte externe (e.g. GMail, AOL, ...) sans jamais partager vos informations de connexion\n"
+"ni avoir à vous souvenir d'un nouveau mot de passe"
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr "<strong>Recevoir les mises à jours périodiques par email</strong>"
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid "Please read and type in the two words below to help us prevent automated account creation."
+msgstr "Merci de lire et saisir les deux mots ci-dessous pour nous aider à lutter contre la création automatique de comptes (lutte contre le spam)."
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "ou"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "retourner à la page d'authentification OpenID"
+
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "ajouter un avatar"
+
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "Changer d'avatar"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "Votre avatar actuel :"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "Vous n'avez pas encore envoyé d'avatar. Merci d'en envoyer un maintenant."
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Envoyer une nouvelle image"
+
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr "changer d'avatar"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "Choisir un nouvel avatar par défaut"
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "Envoi"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "supprimer l'avatar"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "Merci de sélectionner l'avatar que vous voudriez supprimer."
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid "You have no avatars to delete. Please <a href=\"%(avatar_change_url)s\">upload one</a> now."
+msgstr "Vous n'avez pas d'avatar à supprimer. Merci <a href=\"%(avatar_change_url)s\">d'en envoyer un</a> maintenant."
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr "Supprimer ceci"
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr "échanger avec une question"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "lien permanent"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "lien"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "restaurer"
+
+#: skins/common/templates/question/answer_controls.html:19
+msgid "remove offensive flag"
+msgstr "supprimer le drapeau offensif"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "supprimer le drapeau"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid "report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "Signaler un abus (par exemple : spam, publicité déguisée, contenus illégaux ou inappropriés, propos déplacés)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "Marquer comme 'contenu abusif'"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "modifier"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "Cette réponse a été sélectionnée comme correcte"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr "marquer cette réponse comme correcte (cliquez à nouveau pour annuler)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid "The question has been closed for the following reason <b>\"%(close_reason)s\"</b> <i>by"
+msgstr "Cette question a été close pour la raison suivante : <b>« %(close_reason)s »</b> <i>par"
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "Date de cloture : %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "réouvrir"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "fermer"
+
+# FIXME
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "requalifier"
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr ", un de ceux-là est nécessaire"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+msgid "tags:"
+msgstr "mots-clés :"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(obligatoire)"
+
+# FIXME
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Basculer vers l'aperçu avec éditeur temps-réel"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "Masquer l'aperçu"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr "mots-clés"
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Tags intéressants"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "ajouter"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Tags ignorés"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Filtre des tags"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Page non trouvée"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Désolé, la page que vous avez demandée est introuvable."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Ceci a pu se produire pour les raisons suivantes :"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "cette question ou cette réponse a été supprimée;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "l'URL comporte une erreur - merci de la vérifier;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid "the page you tried to visit is protected or you don't have sufficient points, see"
+msgstr "la page que vous avez tenté d'afficher est protégée, ou vous n'avez pas un nombre de points suffisant pour la voir"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "FAQ"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "si vous pensez que cette erreur 404 n'aurait pas dû se produire, merci de"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "signaler ce problème."
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "retour à la page précédente"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "Voir toutes les questions"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "Voir tous les mots-clés"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "Erreur interne du serveur"
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr "L'erreur a été consigné dans les journaux d'erreurs système, et sera corrigée dès que possible "
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "Si vous le souhaitez, vous pouvez signaler cette erreur aux administrateurs du site. Merci"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "Voir les dernières questions"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "Voir les mots-clés (tags)"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Modifier la réponse"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "Retour"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "Version"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "Choisir la version"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Enregistrer les modifications"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "Afficher l'aperçu"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+msgid "Ask Your Question"
+msgstr "Poser votre question"
+
+#: skins/default/templates/badge.html:5
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Badge"
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr "Badge \"%(name)s\""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr "%(description)s"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "l'utilisateur a reçu ces badges :"
+msgstr[1] "les utilisateurs ont reçu ces badges :"
+
+#: skins/default/templates/badges.html:3
+#: skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Badges"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr "La communauté récompense vos questions, vos réponses et vos votes en vous distribuant des badges."
+
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Ci-dessous figure la liste des badges disponibles\n"
+" et le nombre de fois qu'ils ont été attribués. Si vous avez des idées\n"
+"amusantes sur les badges, <a href=\"%%(feedback_faq_url)s\">dites-le nous</a>.\n"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Badges de la communauté"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "badge d'or : le plus haut niveau et très rare"
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+"Le badge d'or est le plus haut niveau atteignable. Pour l'obtenir vous devez\n"
+"montrer de grandes connaissances en plus d'une importante participation."
+
+#: skins/default/templates/badges.html:47
+msgid "silver badge: occasionally awarded for the very high quality contributions"
+msgstr "badge d'argent : donné occasionnellement pour les contributions de très bonne qualité"
+
+#: skins/default/templates/badges.html:51
+msgid "msgid \"silver badge: occasionally awarded for the very high quality contributions"
+msgstr "msgid \"badge d'argent : donné occasionnellement pour les contributions de très bonne qualité"
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "Badge bronze - souvent remis comme une faveur spéciale"
+
+#: skins/default/templates/close.html:3
+#: skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Question close"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Clore la question"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Raisons"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "OK pour clore"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+#: views/meta.py:61
+msgid "FAQ"
+msgstr "FAQ"
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Questions fréquemment posées"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Quel genre de questions puis-je poser ici ?"
+
+#: skins/default/templates/faq_static.html:7
+msgid "Most importanly - questions should be <strong>relevant</strong> to this community."
+msgstr "Surtout, les questions doivent être <strong>pertinentes</strong> et <strong>significatives</strong> pour cette communauté."
+
+#: skins/default/templates/faq_static.html:8
+msgid "Before you ask - please make sure to search for a similar question. You can search questions by their title or tags."
+msgstr "Avant de poser une question - faites une recherche pour une question similaire. Vous pouvez chercher soit par titre soit par mots-clés."
+
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr "Quelles questions dois-je éviter de poser ?"
+
+#: skins/default/templates/faq_static.html:11
+msgid "Please avoid asking questions that are not relevant to this community, too subjective and argumentative."
+msgstr "Evitez de poser des questions qui ne sont pas pertinentes pour cette communauté, ou qui sont trop subjectives ou polémiques. "
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Que dois-je éviter dans mes réponses ?"
+
+#: skins/default/templates/faq_static.html:14
+msgid "is a <strong>question and answer</strong> site - <strong>it is not a discussion group</strong>. Please avoid holding debates in your answers as they tend to dilute the essense of questions and answers. For the brief discussions please use commenting facility."
+msgstr "est un site <strong>de questions et réponses</strong> - <strong>ce n'est pas un groupe de discussion</strong>. Merci d'éviter d'entretenir des débats dans vos réponses car ils tendent à diluer l'intérêt des questions et réponses. Pour des discussions brèves, merci d'utiliser les outils de commentaires."
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Qui modère cette communauté ?"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Pour faire court : <strong>vous !</strong>"
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Ce site est modéré par ses utilisateurs."
+
+#: skins/default/templates/faq_static.html:18
+msgid "Karma system allows users to earn rights to perform a variety of moderation tasks"
+msgstr "Le système de réputation permet aux utilisateurs d'accumuler des points, qui les autorisent ensuite à accéder à divers niveaux et tâches de modération"
+
+#: skins/default/templates/faq_static.html:20
+msgid "How does karma system work?"
+msgstr "Comment fonctionne le système de réputation ?"
+
+#: skins/default/templates/faq_static.html:21
+msgid "When a question or answer is upvoted, the user who posted them will gain some points, which are called \\\"karma points\\\". These points serve as a rough measure of the community trust to him/her. Various moderation tasks are gradually assigned to the users based on those points."
+msgstr "Quand une question ou une réponse reçoit un vote positif, l'utilisateur gagne des points appelés « points de karma ». Ces points servent pour mesurer la confiance de la communauté en lui/elle. Différentes tâches de modération sont graduellement données aux utilisateurs, en se basant sur ces points."
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid "For example, if you ask an interesting question or give a helpful answer, your input will be upvoted. On the other hand if the answer is misleading - it will be downvoted. Each vote in favor will generate <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that can be accumulated for a question or answer per day. The table below explains reputation point requirements for each type of moderation task."
+msgstr "Par exemple, si vous posez une question intéressante, ou aidez quelqu'un en répondant à l'une de ses questions, les autres utilisateurs du forum voteront positivement pour vous. En revanche, si vos réponses sont fausses ou malveillantes, vous recevrez des votes négatifs. Chaque vote en votre faveur vous rapportera <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, et chaque vote en votre défaveur vous retirera <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. Vous pouvez accumuler au maximum <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points par jour pour chaque question et chaque réponse. Le tableau ci-dessous indique combien de points sont requis pour chaque tâche de modération. "
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "vote positif"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "ajouter des commentaires"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "vote négatif"
+
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr "accepter ses propres réponses aux questions"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "ouvrir ou fermer ses propres questions"
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "requalifier les questions d'autres utilisateurs (modifier leurs mots-clés)"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "Modifier les questions du \"Wiki communautaire\"."
+
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr "éditer n'importe quelle réponse"
+
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr "supprimer n'importe quel commentaire"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr "Comment changer mon image (gravatar) et qu'est-ce qu'un gravatar ?"
+
+#: skins/default/templates/faq_static.html:70
+msgid "<p>The picture that appears on the users profiles is called <strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a <strong>cryptographic key</strong> (unbreakable code) is calculated from your email address. You upload your picture (or your favorite alter ego image) the website <a href='http://gravatar.com'><strong>gravatar.com</strong></a> from where we later retreive your image using the key.</p><p>This way all the websites you trust can show your image next to your posts and your email address remains private.</p><p>Please <strong>personalize your account</strong> with an image - just register at <a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please be sure to use the same email address that you used to register with us). Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr "<p>L'image qui apparait sur les profils utilisateurs est appelée <strong>gravatar</strong> (qui signifie <strong>g</strong>lobally <strong>r</strong>ecognized <strong>avatar</strong>).</p><p>Voici le fonctionnement : une <strong>clef cryptographique</strong> est calculée à partir de votre adresse email. Vous envoyez votre image sur le site <a href='http://gravatar.com'><strong>gravatar.com</strong></a> depuis lequel nous récupérons l'image grâce à la clef.</p><p>Ainsi tous les sites web auxquels vous accordez votre confiance affichent votre image à côté de vos messages et votre adresse reste privée.</p><p>Merci <strong>de personnaliser votre compte</strong> avec une image - enregistrez-vous sur <a href='http://gravatar.com'><strong>gravatar.com</strong></a> (assurez-vous d'utiliser la même adresse email que lors de votre inscription ici). L'image par défaut est générée automatiquement.</p>"
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Ai-je besoin de créer un nouveau mot de passe pour m'inscrire ?"
+
+#: skins/default/templates/faq_static.html:72
+msgid "No, you don't have to. You can login through any service that supports OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr "Non. Ce n'est pas obligatoire. Vous pouvez vous connecter avec n'importe quel service compatible OpenID, ex: Google, Yahoo, AOL, etc..\""
+
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "\"Je me connecte immédiatement !\""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Pourquoi les autres utilisateurs peuvent-ils modifier mes questions ou mes réponses ?"
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "L'objectif de ce site est simple :"
+
+#: skins/default/templates/faq_static.html:76
+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 "Les questions et les réponses peuvent être modifiées (sur le principe d'un wiki) par les utilisateurs habitués du site, ce qui améliore la qualité globale de la base de connaissances qui est peu à peu constituée par notre communauté."
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "Si cette approche ne vous convient pas, nous respectons votre choix."
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "D'autres questions ?"
+
+#: skins/default/templates/faq_static.html:80
+#, python-format
+msgid "Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our community better!"
+msgstr "Merci de <a href='%%(ask_question_url)s'>poser vos questions ici</a> ; vous nous aiderez ainsi à étoffer notre base de connaissances, dans l'intérêt de toute la communauté."
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Remarques"
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Envoyez nous vos remarques !"
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>Bonjour %(user_name)s</span>, nous sommes impatients de connaître votre avis sur notre module de Questions/Réponses.\n"
+" Saisissez vos remarques, critiques ou suggestions ci-dessous.\n"
+" "
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>Cher visiteur</span>, nous sommes impatients de connaître votre avis sur notre module de Questions/Réponses.\n"
+" Saisissez vos remarques, critiques ou suggestions ci-dessous.\n"
+" "
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr "(pour avoir des nouvelles de notre part, merci d'utiliser une adresse email valide ou de cocher la case ci-dessous)"
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(champ obligatoire)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(Merci de résoudre le captcha)"
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Envoyer"
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, fuzzy, python-format
+#, python-format
msgid ""
"\n"
"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
"\n"
-"Bonjour, un utilisateur du forum a souhaité faire une remarque sur : "
-"%(site_title)s \n"
+"Bonjour, un utilisateur du forum a souhaité faire une remarque sur : %(site_title)s \n"
-#: skins/old/templates/authopenid/email_validation.txt:9
-#, fuzzy
+#: skins/default/templates/help.html:2
+#: skins/default/templates/help.html:4
+msgid "Help"
+msgstr "Aide"
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "Bienvenue %(username)s,"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Bienvenu,"
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr "Merci d'utiliser %(app_name)s, voici le fonctionnement."
+
+#: skins/default/templates/help.html:16
+msgid "This site is for asking and answering questions, not for open-ended discussions."
+msgstr "Ce site permet de poser et de répondre à des questions, il ne vise pas des discussions."
+
+#: skins/default/templates/help.html:17
+msgid "We encourage everyone to use “question†space for asking and “answer†for answering."
+msgstr "Nous encourageons tout le monde à utiliser l'espace « question » pour demander et « réponse » pour répondre."
+
+#: skins/default/templates/help.html:20
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
msgstr ""
-"Si vous pensez que ce message a été envoyé par erreur - \n"
-"aucune action de votre part n'est nécessaire. Ignorez ce mail, et veuillez "
-"accepter nos excuses \n"
-"pour le dérangement que nous avons occasionné"
+"Malgré ça, chaque question et réponse peut être commentée -\n"
+" les commentaires sont bons pour des discussions limitées."
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid "Voting in %(app_name)s helps to select best answers and thank most helpful users."
+msgstr "Voter dans %(app_name)s permet de sélectionner les meilleurs réponses et remercier les utilisateurs les plus aidant."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "0"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+"Merci de voter quand vous trouvez une information utile,\n"
+" cela aide grandement la communauté de %(app_name)s."
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their attention,\n"
+" follow users and conversations and report inappropriate content by flagging it."
+msgstr ""
+"Vous pouvez également @mentionner les utilisateurs n'importe où dans le texte pour\n"
+" attirer leur attention, suivre les utilisateurs et conversations et rapporter les\n"
+" contenus inappropriés en les notifiant."
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr "Profitez."
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "Importer les données StackExchange"
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Attention :</em> si votre base de données n'est pas vide, faites\n"
+" une sauvegarde avant de continuer."
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Envoyez votre archive zip stackexchange, puis attendez que les données\n"
+" soient traitées et importées. Ce processus peut prendre plusieurs minutes.\n"
+" Les informations suite à l'import seront affichées en texte brut.\n"
+" "
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "Importer les données"
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage.py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"Au cas où vous rencontreriez des difficultés pendant l'utilisation de cet outil d'import,\n"
+" merci d'essayer de faire l'import via la ligne de commande : <code>python manage.py load_stackexchange chemin/vers/vos-donnees.zip</code>"
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Bonjour %(receiving_user_name)s,</p>"
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a laissé <a href=\"%(post_url)s\">un nouveau commentaire</a>:</p>\n"
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a laissé <a href=\"%(post_url)s\">un nouveau commentaire</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a répondu à une question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a publié une nouvelle question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a mis à jour une réponse à la question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a mis à jour une question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Sachez que vous pouvez facilement <a href=\"%(user_subscriptions_url)s\">changer</a>\n"
+"la fréquence à laquelle vous recevez les emails de notifications, ou facilement vous désabonner. Merci de l'intérêt que vous portez à notre forum !</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>Salutations,<br/>L'administrateur du forum de Questions/Réponses</p>"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+"\n"
+"\n"
+"======= Répondre au dessus de cette ligne. ====-=-=\n"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have %(receiving_user_karma)s karma. \n"
+msgstr ""
+"\n"
+"Vous pouvez envoyer une réponse ou un commentaire en répondant à la notification par email. Pour le faire\n"
+"vous devez avoir au moins %(reply_by_email_karma_threshold)s points de karma, vous avez actuellement %(receiving_user_karma)s karma. \n"
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr "Partager cette question sur %(site)s"
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "suivre %(alias)s"
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "ne plus suivre %(alias)s"
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "suivi %(alias)s"
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "Nombre de votes actuel"
+
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "anonyme"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "ce message est marqué comme wiki communauté"
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Ce message est un wiki.\n"
+" N'importe qui avec au moins %(wiki_min_rep)s points de karma est bienvenu pour l'améliorer."
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "posée"
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "répondue"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "postée"
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "actualisée"
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "Voir les questions marquées par '%(tag)s'."
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "Supprimer ce commentaire"
+
+#: skins/default/templates/macros.html:507
#: templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "Image Gravatar de %(username)s"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "Le site web de %(username)s est \"%(url)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "page précédente"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "page actuelle"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, python-format
+msgid "page %(num)s"
+msgstr "page %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "page suivante"
+
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "réponses pour %(username)s"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "vous avez %(response_count)s nouvelle réponse"
+msgstr[1] "vous avez %(response_count)s nouvelles réponses"
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "pas de nouvelles réponses pour l'instant"
+
+# FIXME
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "%(new)s nouveaux messages étiquetés et %(seen)s précédents"
+
+# FIXME
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s nouveaux messages étiquetés"
+
+# FIXME
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "%(seen)s messages taggés"
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Questions"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr "envoyer un commentaire / <strong>encore</strong> plus"
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr "voir <strong>encore</strong> plus"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+msgid "post a comment"
+msgstr "envoyer un commentaire"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Répondre à votre propre question"
+
+#: skins/default/templates/question.html:140
+msgid "Post Your Answer"
+msgstr "Envoyer votre réponse"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
+msgstr "Connexion pour envoyer"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Modifier une question"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+msgid "Retag question"
+msgstr "Changer les mots-clés de la question"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Requalifier"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Pourquoi utiliser et modifier les tags ?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr "Les mots-clés aident à conserver le contenu organisé et cherchable"
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "Les éditeurs de tags reçoivent des récompenses de la base de la communauté"
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "jusqu'à 5 tags, faisant chacun moins de 20 caractères"
+
+#: skins/default/templates/reopen.html:3
+#: skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Réouvrir cette question"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Titre"
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"Cette question a été cloturée par \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Motif de cloture :"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Quand :"
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Réouvrir cette question ?"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Réouvrir cette question"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason being:<p>\n"
msgstr ""
+"\n"
+"<p>Le système a été incapable de traiter votre message avec succès, la raison étant :</p>\n"
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Historique des révisions"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "cliquez pour afficher/masquer la révision"
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "révision %(number)s"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "S'inscrire pour les mots-clés"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr "Merci de vous inscrire aux mots-clés :"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "S'inscrire"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "mots-clés, correspondant à « %(stag)s »"
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Liste des tags"
+
+#: skins/default/templates/tags.html:14
+#: skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "Trier par &raquo;"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "triée alphabétiquement"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "par nom"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "triée par fréquence d'utilisation des tags"
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "par popularité"
+
+#: skins/default/templates/tags.html:31
+#: skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Aucun résultat"
+
+#: skins/default/templates/users.html:4
+#: skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Utilisateurs"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "voir les utilisateurs avec la plus haute réputation"
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "karma"
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "voir les utilisateurs nouvellement inscrits"
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "récent"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "voir les premiers utilisateurs du site"
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "voir les utilisateurs triés par nom"
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "par nom d'utilisateur"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "utilisateurs vérifiant les critères %(suser)s"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Aucun résultat."
+
+#: skins/default/templates/main_page/headline.html:4
+#: views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s question"
+msgstr[1] "%(q_num)s questions"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "avec la contribution de %(author_name)s"
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "Marquée avec des mots-clés"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Conseils pour la recherche:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "Réinitialiser l'auteur"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr " ou "
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "Réinitialiser les tags"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "Recommencer"
+
+# FIXME
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr " - pour développer ou restreindre en ajoutant plus de tags et en révisant la requête"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Conseil pour la recherche:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "ajouter des tags et une requête pour affiner votre recherche"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "Il n'y a aucune question sans réponse"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr "Pas de question ici."
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr "Merci de marquer quelques questions ou suivre quelques utilisateurs."
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Vous pouvez élargir votre recherche en"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "réinitialisant l'auteur"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "réinitialisant les mots-clés (\"tags\")"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "repartant de zéro"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "N'hésitez pas à poser des questions !"
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Vous n'avez pas trouvé ce que vous cherchiez ?"
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Veuillez saisir votre question !"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "S'abonner au flux RSS des questions"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid "Please note: %(app_name)s requires javascript to work properly, please enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</a>"
+msgstr "Merci de remarquer : %(app_name)s nécessite JavaScript pour fonctionner correctement, merci d'activer JavaScript dans votre navigateur, <a href=\"%(noscript_url)s\">voir ici comment faire</a>"
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "Chaque mot-clé doit comporter moins de %(max_chars)s caractère"
+msgstr[1] "Chaque mot-clé doit comporter moins de %(max_chars)s caractères"
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "Veuillez utiliser %(tag_count)s mot-clé, ou moins"
+msgstr[1] "Veuillez utiliser %(tag_count)s mots-clés, ou moins"
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid "please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "merci d'utiliser un maximum de %(tag_count)s mots-clés, chacun avec moins de %(max_chars)s caractères"
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s réponse :"
+msgstr[1] ""
+"\n"
+" %(counter)s réponses :"
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Trier par »"
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "Les réponses les plus anciennes seront affichées en premier"
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "Les réponses les plus récentes seront affichées en premier"
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "Les réponses ayant obtenu le plus de votes seront affichées en premier"
+
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr "Connexion pour répondre"
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Votre réponse"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Soyez le premier à répondre à cette quesion !"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid "<span class='strong big'>Please start posting your answer anonymously</span> - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a <strong>substantial answer</strong>, for discussions, <strong>please use comments</strong> and <strong>please do remember to vote</strong> (after you log in)!"
+msgstr "<span class='strong big'>Merci de commencer à répondre de manière anonyme</span> - votre réponse sera sauvegardée dans la session courante et publiée une fois que vous vous connecterez ou que vous créerez un compte. Merci d'essayer de donner une <strong>réponse complète</strong>, pour les discussions, <strong>merci d'utiliser les commentaires</strong> et <strong>pensez à voter</strong> (après vous être connecté) !"
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid "<span class='big strong'>You are welcome to answer your own question</span>, but please make sure to give an <strong>answer</strong>. Remember that you can always <strong>revise your original question</strong>. Please <strong>use comments for discussions</strong> and <strong>please don't forget to vote :)</strong> for the answers that you liked (or perhaps did not like)!"
+msgstr "<span class='big strong'>Vous pouvez répondre vous-même à vos questions</span>, mais assurez-vous de donner une <strong>réponse</strong>. Souvenez-vous que vous pouvez <strong>revoir votre question d'origine</strong>. Merci <strong>d'utiliser les commentaires pour les discussions</strong> et <strong>n'oubliez-pas de voter :)</strong> pour les réponses que vous avez apprécié (ou peut-être pas) !"
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid "<span class='big strong'>Please try to give a substantial answer</span>. If you wanted to comment on the question or answer, just <strong>use the commenting tool</strong>. Please remember that you can always <strong>revise your answers</strong> - no need to answer the same question twice. Also, please <strong>don't forget to vote</strong> - it really helps to select the best questions and answers!"
+msgstr "<span class='big strong'>Merci d'essayer de donner une réponse complète</span>. Si vous vouliez commenter la question ou la réponse, <strong>utilisez l'outil de commentaire</strong>. Merci de vous souvenir que vous pouvez toujours <strong>revoir vos réponses</strong> - il n'est pas nécessaire de répondre deux fois à la même question. De plus, <strong>n'oubliez pas de voter</strong> - c'est très utile pour la sélection des meilleures questions et réponses !"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid "Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> to this question via"
+msgstr "Vous connaissez quelqu'un qui a la réponse ? Partagez un <a href=\"%(question_url)s\">lien</a> vers cette question question via"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr " ou"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "email"
+
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr "Outils de question"
+
+# FIXME
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr "cliquez pour ne plus suivre cette question"
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr "Suivi"
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr "Ne plus suivre"
+
+# FIXME
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr "cliquez pour suivre cette question"
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr "Suivre"
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s suiveur"
+msgstr[1] "%(count)s suiveurs"
+
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr "Envoi des mises à jour"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid "<strong>Here</strong> (once you log in) you will be able to sign up for the periodic email updates about this question."
+msgstr "<strong>Ici</strong> (une fois connecté) vous pourrez configurer les notifications périodiques par email à propos de cette question."
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "S'abonner au flux RSS de cette question"
+
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "S'abonner au flux RSS"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "Statistiques"
+
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr "Posée"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr "Vu"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "fois"
+
+#: skins/default/templates/question/sidebar.html:54
+msgid "Last updated"
+msgstr "Dernière mise à jour"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Questions liées"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr "Me notifier les nouvelles réponses par email"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr "vous pourrez vous abonner aux mails de notifications de mise à jour dès que vous vous serez connecté"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid "<span class='strong'>Here</span> (once you log in) you will be able to sign up for the periodic email updates about this question."
+msgstr "<span class='strong'>Ici</span> (une fois connecté) vous pourrez configurer les notifications périodiques par email à propos de cette question."
+
+# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profil de l'utilisateur %(username)s"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Modifier le profil utilisateur"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "Modifier le profil"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "changer d'image"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "supprimer"
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Utilisateur enregistré"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Pseudo"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(ne peut être changé)"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Mettre à jour"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "Abonnements aux emails"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "Paramètres d'abonnement aux emails"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid "<span class='big strong'>Adjust frequency of email updates.</span> Receive updates on interesting questions by email, <strong><br/>help the community</strong> by answering questions of your colleagues. If you do not wish to receive emails - select 'no email' on all items below.<br/>Updates are only sent when there is any new activity on selected items."
+msgstr "<span class='big strong'>Ajuster la fréquence des notifications par email.</span> Recevez des notifications sur les questions intéressante par email, <strong><br/>aidez la communauté</strong> en répondant à vos collègues. Si vous ne souhaitez pas recevoir d'emails - sélectionner « pas d'email » dans tous les éléments ci-dessous.<br/>Les notifications sont uniquement envoyées quand il y a de l'activité sur les éléments sélectionnés."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+msgid "Stop Email"
+msgstr "Arrêter les emails"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr "questions suivies"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "boîte de réception"
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Sections :"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "réponses du forum (%(re_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "éléments annotés (%(flag_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "sélectionner :"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "vu"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "nouveau"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "aucun"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "marquer comme vu"
+
+# FIXME ou "ayant reçu une récompense"
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "marquée comme nouveau"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "passer outre"
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr "supprimer les drapeaux"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr "supprimer le message"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "Mettre à jour le profil"
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "gérer les méthodes de connexion"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nom réél"
+
+#: skins/default/templates/user_profile/user_info.html:58
+msgid "member since"
+msgstr "membre depuis"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "dernière connexion"
+
+#: skins/default/templates/user_profile/user_info.html:69
+msgid "website"
+msgstr "Site web"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "Lieu"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "Age"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "ans "
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "Votes non utilisés aujourd'hui"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "votes restants"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "Modération"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "Le statut actuel de %(username)s est \"%(status)s\""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "Statut de l'utilisateur modifié"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Enregistrer"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Vous avez actuellement %(reputation)s points de réputation"
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "Cet utilisateur a actuellement %(reputation)s points de réputation"
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "Réputation de l'utilisateur modifiée"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Soustraire"
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Ajouter"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Envoyer un message à %(username)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid "An email will be sent to the user with 'reply-to' field set to your email address. Please make sure that your address is entered correctly."
+msgstr "Un email sera envoyé à cet utilisateur avec le champ 'reply-to' pré-renseigné avec votre adresse email, afin qu'il puisse vous répondre directement. Merci de vérifier que votre adresse email est correcte."
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Message envoyé"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Envoyer le message"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid "Administrators have privileges of normal users, but in addition they can assign/revoke any status to any user, and are exempt from the reputation limits."
+msgstr "Les administrateurs ont les privilèges des utilisateurs normaux, mais en plus ils peuvent assigner ou révoquer n'importe quel statut de n'importe quel utilisateur, et ne sont pas soumis aux limites de réputation."
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid "Moderators have the same privileges as administrators, but cannot add or remove user status of 'moderator' or 'administrator'."
+msgstr "Les modérateurs ont les mêmes droits que les administrateurs, mais ne peuvent ajouter ou supprimer les statuts « modérateur » ou « administrateur » à un utilisateur"
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr "Le statut « approuvé » signifie la même chose qu'un utilisateur normal."
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr "Les utilisateurs suspendus ne peuvent pas éditer ou supprimer leurs propres messages"
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid "Blocked users can only login and send feedback to the site administrators."
+msgstr "Les utilisateurs bloqués peuvent seulement se connecter et envoyer des retours aux administrateurs."
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "réseau"
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "Suivi par %(count)s personne"
+msgstr[1] "Suivi par %(count)s personnes"
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "Suivi de %(count)s personne"
+msgstr[1] "Suivi de %(count)s personnes"
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid "Your network is empty. Would you like to follow someone? - Just visit their profiles and click \"follow\""
+msgstr "Votre réseau est vide. Voulez-vous ajouter quelqu'un à suivre ? - Visitez son profil et cliquez sur « suivre »"
+
+# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr "Le réseau de %(username)s est vide"
+
+# TODO demander au développeur de faire 2 entrées distinctes. Une contiendra "date (↑)" et l'autre "date"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "actualité (↓)"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "source"
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "L'évolution de votre Karma."
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Evolution du karma de %(user_name)s"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "aperçu"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Question"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Questions"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "réponse"
+msgstr[1] "réponses"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "Cette réponse a obtenu %(answer_score)s votes positifs"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s commentaire)"
+msgstr[1] "cette réponse a été commentée %(comment_count)s fois"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> Vote"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> Votes "
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "J'aime (+1)"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "L'utilisateur a voté positivement pour cela de nombreuses fois"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "J'aime pas (-1)"
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "L'utilisateur a voté négativement pour cela de nombreuses fois"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Mot-clé"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Mots-clés"
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Badge"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Badges"
+
+# FIXME
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr "Répondre à :"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Profil utilisateur"
+
+#: skins/default/templates/user_profile/user_tabs.html:10
+#: views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "Commentaires et réponses à d'autres questions"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "utilisateurs suiveurs et suivis"
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr "Graphique du karma de l'utilisateur"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr "questions que cet utilisateur suit"
+
+#: skins/default/templates/user_profile/user_tabs.html:34
+#: views/users.py:679
+msgid "user vote record"
+msgstr "Trace des votes de cet utilisateur"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_tabs.html:40
+#: views/users.py:769
+msgid "email subscription settings"
+msgstr "Paramètres d'abonnement aux emails"
+
+#: skins/default/templates/user_profile/user_tabs.html:46
+#: views/users.py:205
+msgid "moderate this user"
+msgstr "Modérer cet utilisateur"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr "Astuces"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+msgid "give an answer interesting to this community"
+msgstr "Rédiger vos réponses afin qu'elles soient pertinentes pour la communauté."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "Contentez-vous de donner une réponse, plutôt que de vous engager dans une discussion."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr "Merci de fournir suffisamment de détails."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "Soyez clair et concis."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "lisez notre FAQ (Foire aux questions)"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr "Aide sur les balises Markdown"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*italique*"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**gras**"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*italique* ou __italique__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**gras** ou __gras__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "texte"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "image"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "liste numérotée:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "les balises HTML élémentaires sont aussi supportées."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "en savoir plus sur les balises \"Markdown\""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "<span class=\"strong big\">Formulez votre question à l'aide du formulaire ci-dessous (un court titre résumant la question, puis la question à proprement parler, aussi détaillée que vous le souhaitez...)</span>. A l'étape suivante, vous devrez saisir votre email et votre nom (ou un pseudo si vous souhaitez rester anonyme...). Ces éléments sont nécessaires pour bénéficier des fonctionnalités de notre module de questions/réponses, qui repose sur un principe communautaire."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid "<span class=\\\"strong big\\\">You are welcome to start submitting your question anonymously</span>. When you submit the post, you will be redirected to the login/signup page. Your question will be saved in the current session and will be published after you log in. Login/signup process is very simple. Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr "<span class=\\\"strong big\\\">Vous pouvez envoyer des questions de manière anonyme</span>. Quand vous enverrez le message, vous serez redirigé vers la page de connexion et d'inscription. Votre question sera sauvegardée dans la session courante et sera publiée après connexion. Le processus de connexion ou d'inscription est très simple. La connexion prend 30 secondes, l'inscription initiale prend moins d'une minute."
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid "<span class='strong big'>Looks like your email address, %%(email)s has not yet been validated.</span> To post messages you must verify your email, please see <a href='%%(email_validation_faq_url)s'>more details here</a>.<br>You can submit your question now and validate email after that. Your question will saved as pending meanwhile."
+msgstr "<span class='strong big'>Il semblerait que votre adresse email, %%(email)s n'ait pas encore été validée.</span> Pour envoyer des messages vou devez vérifier votre adresse email, merci de voir <a href='%%(email_validation_faq_url)s'>ici pour plus de détails</a>.<br>Vous pouvez envoyer votre question maintenant et valider votre adresse email après. La question sera sauvegardée pendant ce temps-là."
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Contributeurs"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "Le contenu de ce site est mis à disposition sous les termes de la licence %(license)s"
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "Qui sommes-nous ?"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "aide"
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "Respect de la vie privée"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "Faire une remarque"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "Retour à l'accueil"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "Logo de %(site)s"
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "Communauté"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "Réputation"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+msgid "ask a question interesting to this community"
+msgstr "Rédiger vos réponses afin qu'elles soient pertinentes pour la communauté."
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "vue"
+msgstr[1] "vues"
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "réponse"
+msgstr[1] "réponses"
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "vote"
+msgstr[1] "votes"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "TOUS"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "Voir les questions sans réponses"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "NON RÉPONDU"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr "Voir vos questions suivies"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "SUIVI"
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "Merci de poser votre question ici"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "karma :"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "badges :"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr "déconnexion"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr "Bonjour ! Merci de vous connecter"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "paramètres"
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr "non"
+
+#: utils/decorators.py:90
+#: views/commands.py:73
+#: views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Oops, toutes nos excuses - il y a eu une erreur"
#: utils/decorators.py:109
-#, fuzzy
msgid "Please login to post"
-msgstr "Bitte einloggen"
+msgstr "Merci de vous connecter pour envoyer un message"
#: utils/decorators.py:205
msgid "Spam was detected on your post, sorry for if this is a mistake"
-msgstr ""
+msgstr "De la pollution (spam) a été détectée dans votre message, désolé si c'est une erreur"
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "ce champ est obligatoire"
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "choisissez un nom d'utilisateur"
+#: utils/forms.py:60
+msgid "Choose a screen name"
+msgstr "Choisissez un nom d'utilisateur"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "le nom d'utilisateur est obligatoire"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr "désolé, ce nom est déjà pris; veuillez en choisir un autre"
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr "désolé, ce nom n'est pas autorisé; veuillez en choisir un autre"
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr "désolé, aucun utilisateur ne porte ce nom"
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
-msgstr ""
-"désolé, ce nom d'utilisateur est utilisé par plusieurs utilisateurs. C'est "
-"un problème grave, qui peut témoigner de la présence d'un bug dans "
-"l'application. Merci de prévenir l'administrateur du site. "
+msgstr "désolé, ce nom d'utilisateur est utilisé par plusieurs utilisateurs. C'est un problème grave, qui peut témoigner de la présence d'un bug dans l'application. Merci de prévenir l'administrateur du site. "
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
-msgstr ""
-"un nom d'utilisateur doit comporter uniquement des lettres, des espaces et "
-"des caractères de soulignement (ou <i>underscores</i> : '_')"
+msgstr "un nom d'utilisateur doit comporter uniquement des lettres, des espaces et des caractères de soulignement (ou <i>underscores</i> : '_')"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Votre adresse email <i>(ne sera pas communiquée)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr "merci d'utiliser au moins quelques caractères alphabétiques dans le nom d'utilisateur"
-#: utils/forms.py:119
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr "Votre email <i>(jamais partagé)</i>"
+
+#: utils/forms.py:139
msgid "email address is required"
msgstr "l'adresse email est obligatoire"
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr "Veuillez entrer une adresse email valide"
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
-msgstr ""
-"Cette adresse email est déjà utilisée par un autre utilisateur; veuillez en "
-"saisir une autre"
-
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "choisissez un mot de passe"
+msgstr "Cette adresse email est déjà utilisée par un autre utilisateur; veuillez en saisir une autre"
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "le mot de passe est obligatoire"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Saisissez à nouveau le mot de passe <i>(pour confirmation)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr "Mot de passe <i>(retaper s'il vous plait)</i>"
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "Merci de resaisir votre mot de passe"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr "désolé, les 2 mots de passe sont différents, veuillez recommencer"
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "il y a 2 jours"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "hier"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] "il y a %(hr)d heure"
msgstr[1] "il y a %(hr)d heures"
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] "il y a %(min)d minute"
msgstr[1] "il y a %(min)d minutes"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Pour demander par email, merci de :</p>\n"
+"<ul>\n"
+" <li>Mettre dans le sujet : [Tag1; Tag2] Titre de la question</li>\n"
+" <li>Taper le détail de la question dans le corps du message</li>\n"
+"</ul>\n"
+"<p>Remarquez que les mots-clés sont composés d'un ou plusieurs mots\n"
+"et qu'ils peuvent être séparés par une virgule ou un point-virgule.</p>\n"
+
+#: utils/mail.py:167
+#, python-format
+msgid "<p>Sorry, there was an error posting your question please contact the %(site)s administrator</p>"
+msgstr "<p>Désolé, une erreur est survenue pendant l'envoi de votre question, merci de contacter les administrateurs de %(site)s </p>"
+
+#: utils/mail.py:173
+#, python-format
+msgid "<p>Sorry, in order to post questions on %(site)s by email, please <a href=\"%(url)s\">register first</a></p>"
+msgstr "<p>Désolé, afin d'envoyer vos questions sur %(site)s par email, merci de vous <a href=\"%(url)s\">inscrire d'abord</a></p>"
+
+#: utils/mail.py:181
+msgid "<p>Sorry, your question could not be posted due to insufficient privileges of your user account</p>"
+msgstr "<p>Désolé, votre question ne peut pas être envoyée à cause d'un manque de droits sur votre compte utilisateur</p>"
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
-msgstr ""
+msgstr "Nouvel avatar envoyé avec succès."
#: views/avatar_views.py:140
msgid "Successfully updated your avatar."
-msgstr ""
+msgstr "Mise à jour de l'avatar réalisée avec succès."
#: views/avatar_views.py:180
msgid "Successfully deleted the requested avatars."
-msgstr ""
+msgstr "Suppression des avatars demandés réalisée avec succès."
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "les utilisateurs anonymes ne peuvent pas voter"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "Désolé, mais les utilisateurs anonymes ne peuvent pas accéder à la boîte de réception"
+
+#: views/commands.py:112
+msgid "Sorry, anonymous users cannot vote"
+msgstr "Désolé, mais les utilisateurs anonymes ne peuvent pas voter"
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
-msgstr "Désolé, vous avez épuisé votre crédit de votes pour ajourd'hui"
+msgstr "Désolé, vous avez épuisé votre crédit de votes pour aujourd'hui"
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr "Il vous reste un crédit de %(votes_left)s votes pour aujourd'hui"
-#: views/commands.py:122
-#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-"Désolé, mais les utilisateurs anonymes ne peuvent aps accepter les réponses"
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr "Désolé, il semble y avoir un problème..."
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
-msgstr ""
-"Désolé, mais les utilisateurs anonymes ne peuvent aps accepter les réponses"
+msgstr "Désolé, mais les utilisateurs anonymes ne peuvent aps accepter les réponses"
-#: views/commands.py:288
+#: views/commands.py:339
#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr ""
-"Votre abonnement a été enegistré, mais nous devons valider votre adresse "
-"email %(email)s ; <a href='%(details_url)s'>Cliquez ici pour en savoir plus</"
-"a>."
+msgid "Your subscription is saved, but email address %(email)s needs to be validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr "Votre abonnement a été enregistré, mais nous devons valider votre adresse email %(email)s ; <a href=\"%(details_url)s\">cliquez ici pour en savoir plus</a>."
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
-msgstr ""
-"La fréquence d'envoi des emails de notification de mises à jour est "
-"désormais \"quotidienne\"."
+msgstr "La fréquence d'envoi des emails de notification de mises à jour est désormais \"quotidienne\"."
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
-msgstr ""
+msgstr "Suivi des mots-clés annulé (<a href=\"%(url)s\">annuler</a>)."
-#: views/commands.py:409
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
-msgstr ""
+msgstr "Merci de vous connecter pour suivre : %(tags)s"
-#: views/commands.py:542
-#, fuzzy
+#: views/commands.py:600
msgid "Please sign in to vote"
-msgstr "Merci de vous authentifiez :"
+msgstr "Merci de vous connecter pour voter"
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr "Merci de vous connecter pour supprimer ou restaurer des messages"
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "À propos de %(site)s"
# FIXME à vérifier
-#: views/meta.py:84
+#: views/meta.py:92
msgid "Q&A forum feedback"
-msgstr ""
-"Vos remarques, critiques et suggestions sur notre forum de questions/réponses"
+msgstr "Vos remarques, critiques et suggestions sur notre forum de questions/réponses"
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Merci pour vos remarques !"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr ""
-"Nous aimerions bien savoir ce que vous pensez de notre service de questions/"
-"réponses ! Lors de votre prochaine visite, n'hésitez pas à nous envoyer vos "
-"remarques, critiques et suggestions ;o)"
+msgstr "Nous aimerions bien savoir ce que vous pensez de notre service de questions/réponses ! Lors de votre prochaine visite, n'hésitez pas à nous envoyer vos remarques, critiques et suggestions ;o)"
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "%(q_num)s question"
-msgstr[1] "%(q_num)s questions"
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Politique en matière de respect de la vie privée"
-#: views/readers.py:159
+#: views/readers.py:133
#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s question"
-msgstr[1] "%(q_num)s questions"
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s badge"
-msgstr[1] "%(badge_count)d %(badge_level)s badges"
-
-#: views/readers.py:415
-#, fuzzy
-msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "Désolé, cette question a été supprimée, et n'est plus accessible."
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "%(q_num)s question notée"
+msgstr[1] "%(q_num)s questions notées"
-#: views/users.py:211
-msgid "moderate this user"
-msgstr "Modérer cet utilisateur"
+#: views/readers.py:388
+msgid "Sorry, the comment you are looking for has been deleted and is no longer accessible"
+msgstr "Désolé, ce commentaire a été supprimé, et n'est plus accessible."
# FIXME
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr "utilisateur modéré"
# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "profil de l'utilisateur"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
-msgstr "infOs générales sur le profil de l'utilisateur"
+msgstr "infos générales sur le profil de l'utilisateur"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "activité récente de l'utilisateur"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "profil - activité récente"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "Commentaires et réponses à d'autres questions"
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "profil - réactions"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "Trace des votes de cet utilisateur"
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "profil - votes"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "réputation de l'utilisateur au sein de la communauté"
+#: views/users.py:701
+msgid "user karma"
+msgstr "karma de l'utilisateur"
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "profil - réputation de l'utilisateur"
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr "Profil - Karma de l'utilisateur"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "questions favorites des utilisateurs"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "profil - questions favorites"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741
+#: views/users.py:745
msgid "changes saved"
msgstr "Modifications enregistrées."
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr "Modification(s) d'email(s) annulée(s)"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "Paramètres d'abonnement aux emails"
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "profil - abonnements emails"
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
-msgstr ""
-"Désolé, les utilisateurs anonymes ne peuvent pas transférer de fichiers"
+msgstr "Désolé, les utilisateurs anonymes ne peuvent pas transférer de fichiers"
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "Les types de fichiers autoprisés sont '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
-msgstr ""
-"La taille maximale autorisée pour un fichier est de %(file_size)s Kilo-octets"
+msgstr "La taille maximale autorisée pour un fichier est de %(file_size)s Kilo-octets"
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr ""
-"Une erreur est survenue lors du transfert du fichier sur notre serveur. "
-"Merci de contacter l'administrateur."
+msgstr "Une erreur est survenue lors du transfert du fichier sur notre serveur. Merci de contacter l'administrateur."
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "N'hésitez pas à poser des questions !"
+#: views/writers.py:189
+msgid "<span class=\"strong big\">You are welcome to start submitting your question anonymously</span>. When you submit the post, you will be redirected to the login/signup page. Your question will be saved in the current session and will be published after you log in. Login/signup process is very simple. Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr "<span class=\"strong big\">Vous pouvez envoyer des questions de manière anonyme</span>. Quand vous enverrez le message, vous serez redirigé vers la page de connexion et d'inscription. Votre question sera sauvegardée dans la session courante et sera publiée après connexion. Le processus de connexion ou d'inscription est très simple. La connexion prend 30 secondes, l'inscription initiale prend moins d'une minute."
-#: views/writers.py:492
-#, fuzzy
+#: views/writers.py:466
msgid "Please log in to answer questions"
-msgstr "Voir les questions sans réponses"
+msgstr "Merci de vous connecter pour répondre à des questions"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
-msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
-msgstr ""
-"Désolé, vous ne pouvez pas publier de commentaires car vous semblez être "
-"déconnecté. Merci d'essayer de vous <a href=\"%(sign_in_url)s\">reconnecter</"
-"a>."
+msgid "Sorry, you appear to be logged out and cannot post comments. Please <a href=\"%(sign_in_url)s\">sign in</a>."
+msgstr "Désolé, vous ne pouvez pas publier de commentaires car vous semblez être déconnecté. Merci d'essayer de vous <a href=\"%(sign_in_url)s\">reconnecter</a>."
-#: views/writers.py:646
-#, fuzzy
+#: views/writers.py:589
msgid "Sorry, anonymous users cannot edit comments"
-msgstr ""
-"Désolé, les utilisateurs anonymes ne peuvent pas transférer de fichiers"
+msgstr "Désolé, les utilisateurs anonymes ne peuvent pas éditer des commentaires"
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
-msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
-msgstr ""
-"Désolé, vous ne pouvez pas supprimer de commentaires car vous semblez être "
-"déconnecté. Merci d'essayer de vous <a href=\"%(sign_in_url)s\">reconnecter</"
-"a>."
+msgid "Sorry, you appear to be logged out and cannot delete comments. Please <a href=\"%(sign_in_url)s\">sign in</a>."
+msgstr "Désolé, vous ne pouvez pas supprimer de commentaires car vous semblez être déconnecté. Merci d'essayer de vous <a href=\"%(sign_in_url)s\">reconnecter</a>."
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
-"Désolé, nous rencontrons apparemment des difficultés d'ordre techniques..."
+msgstr "Désolé, nous rencontrons apparemment des difficultés d'ordre technique..."
-#~ msgid "Sites"
-#~ msgstr "Sites"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "utiliser-ces-caracteres-dans-les-mots-cles"
-#~ msgid "Documentation"
-#~ msgstr "Documentation"
+#, fuzzy
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "Cet email ne doit pas être lié à Gravatar"
-#~ msgid "Change password"
-#~ msgstr "Changer de mot de passe"
+#, fuzzy
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Explique comment changer le mot de passe LDAP"
-#~ msgid "Log out"
-#~ msgstr "Déconnexion"
+#~ msgid "question_answered"
+#~ msgstr "question_repondue"
-#~ msgid "Home"
-#~ msgstr "Accueil"
+#~ msgid "question_commented"
+#~ msgstr "question_commentee"
-#~ msgid "Edit Group Settings"
-#~ msgstr "Modifier les paramétres des groupes"
+#~ msgid "answer_commented"
+#~ msgstr "reponse_commentee"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Merci de bien vouloir corriger l'erreur ci-dessous."
-#~ msgstr[1] "Merci de bien vouloir corriger les erreurs ci-dessous."
+#~ msgid "answer_accepted"
+#~ msgstr "reponse_acceptee"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "Paramètrages inclus dans %(name)s."
+#~ msgid "Incorrect username."
+#~ msgstr "Nom d'utilisateur incorrect."
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "Vous n'avez pas la permission de modifier ces valeurs"
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
-#~ msgid "Edit Site Settings"
-#~ msgstr "Modifier le paramètrage du site"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Bonjour %(name)s,</p></p>Il y a du nouveau concernant %(num)d question:"
+#~ "</p>"
+#~ msgstr[1] ""
+#~ "<p>Bonjour %(name)s,</p><p>Il y a du nouveau concernant %(num)d questions:"
+#~ "</p>"
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "Les paramètrages \"en direct\" sont désactivés pour ce site"
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Merci de visiter notre forum de Questions/Réponses pour découvrir les "
+#~ "nouvelles questions. Passez le mot autour de vous si vous connaissez "
+#~ "quelqu'un susceptible de nous aider en répondant à certaines questions, "
+#~ "ou qui pourrait bénéficier de notre forum en y postant ses propres "
+#~ "questions..."
#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
#~ msgstr ""
-#~ "Toutes le soptions de configurations doivent être modifiées dans le "
-#~ "fichier settings.py du site"
+#~ "FIXME - Dans vos derniers paramétrages, vous avez opté pour recevoir des "
+#~ "mails quotidiennement. Si vous recevez plus d'un email par jour, merci "
+#~ "d'avertir l'administrateur du forum de ce problème. "
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "paramètres du groupe : %(name)s"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "FIXME - Dans vos derniers paramétrages, vous avez opté pour recevoir des "
+#~ "mails de façon hebdomadaire. Si vous recevez plus d'un email par semaine, "
+#~ "merci d'avertir l'administrateur du forum de ce problème. "
-#~ msgid "Uncollapse all"
-#~ msgstr "Tout déplier"
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "Il est possible que vous receviez des liens plusieurs fois; nous sommes "
+#~ "en train de plancher sur ce problème"
-#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Veuillez saisir votre nom d'utilisateur et un mot de passe"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "Allez à l'adresse %(email_settings_link)s pour changer la fréquence des "
+#~ "emails de mises à jour, ou bien informez l'administrateur à l'adresse "
+#~ "%(admin_email)s"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "Le transfert d'images vers notre serveur est réservé aux utilisateurs "
+#~ "ayant plus de >%(min_rep)s points de réputation"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr "Les utilisateurs bloques ne peuvent pas publier"
+
+#~ msgid "suspended users cannot post"
+#~ msgstr "Les utilisateurs suspendus ne peuvent pas publier"
+
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "Un message ne peut pas être étiqueté \"abusif\" deux fois"
+
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "Les utilisateurs bloqués ne peuvent pas étiqueter les messages"
+
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "Les utilisateurs suspendus ne peuvent pas étiqueter les messages"
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Il faut au moins %(min_rep)s points de réputation pour pouvoir étiqueter "
+#~ "les messages comme étant du spam"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "%(max_flags_per_day)s dépassé"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr "Les utilisateurs bloqués ne peuvent pas étiqueter les messages"
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "connexion/"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "Les utilisateurs suspendus ne peuvent pas étiqueter les messages"
-#~ msgid "Change email"
-#~ msgstr "Changer d'email"
+#, fuzzy
+#~ msgid "need > %(min_rep)d point to remove flag"
-#~ msgid "Save your email address"
-#~ msgstr "Sauvegarder votre adresse email"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Il faut au moins %(min_rep)s points de réputation pour pouvoir étiqueter "
+#~ "les messages comme étant du spam"
+#~ msgstr[1] ""
+#~ "Il faut au moins %(min_rep)s points de réputation pour pouvoir étiqueter "
+#~ "les messages comme étant du spam"
+# FIXME ou "ayant reçu un vote négatif"
+#~ msgid "cannot revoke old vote"
+#~ msgstr "impossible de révoquer un ancien vote"
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s a modifié la question"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr ""
+#~ "Les utilisateurs %(people)s ont posté %(new_answer_count)s nouvelles "
+#~ "réponses"
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s a/ont commenté cette question"
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s a/ont commenté des réponses"
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s a/ont commenté une réponse"
# FIXME
#~ msgid "change %(email)s info"
#~ msgstr "Informations concernant le changement d'email : %(email)s"
-
# FIXME
#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "voici pourquoi les emails sont obligatoires; pour plus d'infos, consultez "
#~ "la page %(gravatar_faq_url)s"
-
#~ msgid "Your new Email"
#~ msgstr ""
#~ "<strong>Votre nouvelle adresse email:</strong> (ne sera<strong>pas</"
#~ "strong> visible des autres utilisateurs; et doit être valide)"
-
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Votre adresse email</strong> (ne sera<strong>pas</strong> visible "
-#~ "des autres utilisateurs; et doit être valide)"
-
-#~ msgid "Save Email"
-#~ msgstr "Sauvegarder l'email"
-
-#~ msgid "Cancel"
-#~ msgstr "Annuler"
-
-#~ msgid "Validate email"
-#~ msgstr "Valider l'email"
-
# FIXME
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "valider l'information %(email)s ou visitez la page : %(change_email_url)s"
-
-#~ msgid "Email not changed"
-#~ msgstr "Email inchangé"
-
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
#~ "ancien email %(email)s conservé; si vous souhaitez le changer rendez-vous "
#~ "à l'url %(change_email_url)s"
-
-#~ msgid "Email changed"
-#~ msgstr "Adresse email modifiée."
-
#~ msgid "your current %(email)s can be used for this"
#~ msgstr ""
#~ "<span class='big strong'>Votre adresse email actuelle %(email)s peut être "
#~ "utilisée pour cela.</span>"
-
-#~ msgid "Email verified"
-#~ msgstr "Adresse email vérifiée."
-
#~ msgid "thanks for verifying email"
#~ msgstr ""
#~ "<span class=\"big strong\">Merci d'avoir validé votre email.</span> Vous "
@@ -4315,27 +6418,19 @@ msgstr ""
#~ "abonnez pour recevoir périodiquement par email des questions qui vous "
#~ "intéressent</strong>, ou être informé(e) des réponses et commentairesà "
#~ "vos questions."
-
# FIXME
#~ msgid "email key not sent"
#~ msgstr "l'email comportant la clé de validation n'a pas été envoyé"
-
#~ msgid "email key not sent %(email)s change email here %(change_link)s"
#~ msgstr ""
#~ "<span class='big strong'>Ihre momentane E-Mail-Adresse %(email)s wurde "
#~ "bereits bestätigt</span>. Es wurde keine neue Bestätigungsmail versandt. "
#~ "Sie können Ihre E-Mail-Adresse bei Bedarf <a href='%(change_link)"
#~ "s'>ändern</a>."
-
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "S'inscrire"
-
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "Créez vous un compte chez %(provider)s; pour plus d'infos, <a "
#~ "href='%(gravatar_faq_url)s'>cliquez ici</a>"
-
#~ msgid ""
#~ "%(username)s already exists, choose another name for \n"
#~ " %(provider)s. Email is required too, see "
@@ -4346,125 +6441,45 @@ msgstr ""
#~ "pour \n"
#~ " %(provider)s. Un email est aussi obligatoire, "
#~ "cf. %(gravatar_faq_url)s"
-
#~ msgid ""
#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "Informations concernant la création d'un nouveau compte chez un "
#~ "fournisseur d'identité externe %(provider)s; pour plus d'infos <a "
#~ "href='%(gravatar_faq_url)s'>cliquez ici</a>"
-
#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "Informations concernant la création d'un nouveau compte Facebook pour se "
#~ "connecter; pour plus d'infos visitez la page %(gravatar_faq_url)s"
-
#~ msgid "This account already exists, please use another."
#~ msgstr "Ce compte existe déjà; merci d'en utiliser un autre."
-
# FIXME
#~ msgid "Screen name label"
#~ msgstr "Pseudo"
-
# FIXME
#~ msgid "Email address label"
#~ msgstr "Adresse email"
-
-#~ msgid "please select one of the options above"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
-
#~ msgid "Tag filter tool will be your right panel, once you log in."
#~ msgstr ""
#~ "L'outil de filtrage des mots-clés sera affiché à droite de l'écran, une "
#~ "fos que vous serez authentifié"
-
#~ msgid "create account"
#~ msgstr "Créer un compte"
-
-#~ msgid "Logout"
-#~ msgstr "Déconnexion"
-
-#~ msgid "User login"
-#~ msgstr "Veuillez vous authentifier avec votre \"OpenID\""
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Votre réponse à la question </span> <i>"
-#~ "\"<strong>%(title)s</strong> %(summary)s...\"</i> <span class=\"strong big"
-#~ "\">sera publiée dès que vous vous serez authentifié.</span>"
-
-#, fuzzy
#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
#~ msgstr ""
-#~ "Votre question \n"
-#~ " %(title)s %(summary)s sera publiée dès que vous vous "
-#~ "serez authentifié\n"
-#~ " "
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Veuillez saisir votre nom d'utilisateur et un mot de passe"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "Aucun email"
-
-#~ msgid "Password"
-#~ msgstr "Mot de passe"
-
+#~ "Si vous pensez que ce message a été envoyé par erreur - \n"
+#~ "aucune action de votre part n'est nécessaire. Ignorez ce mail, et "
+#~ "veuillez accepter nos excuses \n"
+#~ "pour le dérangement que nous avons occasionné"
#~ msgid "Login"
#~ msgstr "Connexion"
-
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Nouveau mot de passe pris en compte."
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "Merci de resaisir votre mot de passe"
-
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "Utilisateur certifié"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "dernière connexion"
-
-#~ msgid "delete"
-#~ msgstr "Supprimer"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Compte supprimé."
-
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "D'autres questions ?"
-
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Changer le mot de passe de votre compte"
-
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Changer le mot de passe de votre compte"
-
#~ msgid "Why use OpenID?"
#~ msgstr "Pourquoi utiliser OpenID ?"
-
#~ msgid "with openid it is easier"
#~ msgstr "OpenID est le nouveau standard d’identification sur Internet."
-
#~ msgid "reuse openid"
#~ msgstr ""
#~ "Le principe d'OpenID est simple : au lieu de créer un nouveau compte sur "
@@ -4473,345 +6488,49 @@ msgstr ""
#~ "Orange...).Vous pourrez ensuite le réutiliser pour vous authentifier sur "
#~ "d'autres sites \"compatibles OpenID\", sans avoir besoin de remplir le "
#~ "formulaire d'inscription de ces sites..."
-
#~ msgid "openid is widely adopted"
#~ msgstr ""
#~ "OpenID à été adopté par tous les grands portails (Google, Yahoo, "
#~ "Facebook, Microsoft, Flicker, ...) ce qui porte le nombre de comptes "
#~ "OpenID à plus de 300 millions. Plus de 10000 sites sont compatibles "
#~ "OpenID. "
-
#~ msgid "openid is supported open standard"
#~ msgstr "OpenId est basé sur un standard international et libre."
-
#~ msgid "Find out more"
#~ msgstr "En savoir plus."
-
#~ msgid "Get OpenID"
#~ msgstr "Obtenir un compte OpenID"
-
-#~ msgid "Signup"
-#~ msgstr "S'enregistrer"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Merci de sélectionner une des options ci-dessus"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Créer un nom d'utilisateur et un mot de passe"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Créer un nom d'utilisateur et un mot de passe"
-
#~ msgid "Traditional signup info"
#~ msgstr "Informations sur la méthode classique de connexion"
-
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "Merci de lire et saisir les deux mots ci-dessous pour nous aider à lutter "
-#~ "contre la création automatique de comptes (lutte contre le spam)."
-
#~ msgid "Create Account"
#~ msgstr "Créer un compte"
-
-#~ msgid "or"
-#~ msgstr "ou"
-
-#~ msgid "return to OpenID login"
-#~ msgstr "retourner à la page d'authentification OpenID"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Qu'est ce que 'Gravatar' ?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Modifier les tags"
-
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Informations détaillées sur votre compte:"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Modifications enregistrées."
-
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "envoyer-sur-le-serveur/"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "réponse supprimée"
-
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "réponse supprimée"
-
#~ msgid "answer permanent link"
#~ msgstr "lien permanent vers une réponse"
-
-#~ msgid "permanent link"
-#~ msgstr "lien permanent"
-
-#~ msgid "edit"
-#~ msgstr "modifier"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "Signaler un abus (par exemple : spam, publicité déguisée, contenus "
-#~ "illégaux ou inappropriés, propos déplacés)"
-
-#~ msgid "flag offensive"
-#~ msgstr "Marquer comme 'contenu abusif'"
-
-#~ msgid "undelete"
-#~ msgstr "restaurer"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Répondre à cette question"
-
#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr ""
-#~ "marquer cette réponse comme favorite (cliquez à nouveau pour annuler)"
+#~ msgid "remove all flags"
+#~ msgstr "Voir tous les mots-clés"
#~ msgid "%(question_author)s has selected this answer as correct"
#~ msgstr "%(question_author)s a choisi cette réponse comme correcte"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr ""
-#~ "Cette question a été close pour la raison suivante : : \"%(close_reason)s"
-#~ "\" par"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "Date de cloture : %(closed_at)s"
-
-# FIXME
-#~ msgid "retag"
-#~ msgstr "requalifier"
-
-#~ msgid "reopen"
-#~ msgstr "réouvrir"
-
-#~ msgid "close"
-#~ msgstr "fermer"
-
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ce champ est obligatoire"
-
-#~ msgid "(required)"
-#~ msgstr "(obligatoire)"
-
-# FIXME
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Basculer vers l'aperçu avec éditeur temps-réel"
-
-#~ msgid "hide preview"
-#~ msgstr "Masquer l'aperçu"
-
#~ msgid "Related tags"
#~ msgstr "Tags associés"
-#~ msgid "Interesting tags"
-#~ msgstr "Tags intéressants"
-
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Ajouter"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Tags ignorés"
-
-#~ msgid "Display tag filter"
-#~ msgstr "Filtre des tags"
-
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Désolé, la page que vous avez demandé est introuvable."
-
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Ceci a pu se produire pour les raisons suivantes :"
-
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "cette question ou cette réponse a été supprimée;"
-
-#~ msgid "url has error - please check it;"
-#~ msgstr "l'URL comporte une erreur - merci de la vérifier;"
-
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "la page que vous avez tenté d'afficher est protégée, ou vous n'avez pas "
-#~ "un nombre de points suffisants pour la voir"
-
-#~ msgid "faq"
-#~ msgstr "FAQ"
-
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr ""
-#~ "si vous pensez que cette erreur 404 n'aurait pas du se produire, merci de"
-
-#~ msgid "report this problem"
-#~ msgstr "signaler ce problème."
-
-#~ msgid "back to previous page"
-#~ msgstr "retour à la page précédente"
-
-#~ msgid "see all questions"
-#~ msgstr "Voir toutes les questions"
-
-#~ msgid "see all tags"
-#~ msgstr "Voir tous les mots-clés"
-
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "L'erreur a été consigné dans les journaux d'erreurs système, et sera "
-#~ "corrigée dès que possible "
-
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr ""
-#~ "Si vous le souhaitez, vous pouvez signaler cette erreur aux "
-#~ "administrateurs du site. Merci"
-
-#~ msgid "see latest questions"
-#~ msgstr "Voir les dernières questions"
-
-#~ msgid "see tags"
-#~ msgstr "Voir les mots-clés (tags)"
-
-#~ msgid "About %(site_name)s"
-#~ msgstr "A propos de %(site_name)s"
-
-#~ msgid "Edit answer"
-#~ msgstr "Modifier la réopnse"
-
-#~ msgid "back"
-#~ msgstr "Retour"
-
-#~ msgid "revision"
-#~ msgstr "Version"
-
-#~ msgid "select revision"
-#~ msgstr "Version auswählen"
-
-#~ msgid "Save edit"
-#~ msgstr "Enregistrer les modifications"
-
-#~ msgid "show preview"
-#~ msgstr "Afficher l'aperçu"
-
#~ msgid "Ask a question"
#~ msgstr "Poser une question"
-#~ msgid "%(name)s"
-#~ msgstr "%(name)s"
-
-#~ msgid "Badge"
-#~ msgstr "Badge"
-
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "Badge \"%(name)s\""
-
-#~ msgid "%(description)s"
-#~ msgstr "%(description)s"
-
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "l'utilisateur a reçu ces badges:"
-#~ msgstr[1] "les utilisateurs ont reçu ces badges:"
-
#~ msgid "Badges summary"
#~ msgstr "Résumé badges"
-#~ msgid "Badges"
-#~ msgstr "Badges"
-
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "La communauté récompense vos questions, vos réponses et vos votes en vous "
-#~ "distribuant des badges."
-
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Ci-dessous figure la liste des badges disponibles et le nombre de vois "
-#~ "qu'ils ont été attribués. Vous pouvez nous dire ce que vous en pensez "
-#~ "sur %(feedback_faq_url)s.\n"
-
-#~ msgid "Community badges"
-#~ msgstr "Badges de la communauté"
-
#~ msgid "gold badge description"
#~ msgstr "Badge or - blah blah"
#~ msgid "silver badge description"
#~ msgstr "Badge argent - blah blah"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "Badge bronze - blah blah"
-
#~ msgid "bronze badge description"
#~ msgstr "Badge bronze - blah blah"
-#~ msgid "Close question"
-#~ msgstr "Question close"
-
-#~ msgid "Close the question"
-#~ msgstr "Clore la question"
-
-#~ msgid "Reasons"
-#~ msgstr "Raisons"
-
-#~ msgid "OK to close"
-#~ msgstr "OK pour clore"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Questions fréquemment posées"
-
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Quel genre de questions puis-je poser ici ?"
-
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "Surtout, les questions doivent être <strong>pertinentes</strong> et "
-#~ "<strong>significatives</strong> pour cette communauté."
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Avant de poser une question, merci d'utiliser notre moteur de recherche "
-#~ "afin de vérifier qu'elle n'a pas déjà été posée par quelqu'un d'autre"
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Quelles questions dois-je éviter de poser ?"
-
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Evitez de poser des questions qui ne sont pas pertinentes pour cette "
-#~ "communauté, ou quisont trop subjectives ou polémiques. "
-
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Que dois-je éviter dans mes réponses ?"
-
#~ 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 "
@@ -4822,26 +6541,6 @@ msgstr ""
#~ "Vous avez toutefois la possibilité de faire de brèves discussions dans le "
#~ "champ COMMENTAIRES."
-#~ msgid "Who moderates this community?"
-#~ msgstr "Qui modère cette communauté ?"
-
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Pour faire court : <strong>vous !</strong>"
-
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Ce site est modéré par ses utilisateurs."
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Le système de réputation permet aux utilisateurs d'accumuler des points, "
-#~ "qui les autorisent ensuite à accéder à divers niveaux et tâches de "
-#~ "modération"
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "Comment fonctionne le système de réputation ?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "Quand une question ou une réponse est jugée positivement par le reste de "
@@ -4849,61 +6548,9 @@ msgstr ""
#~ "de \"monter en grade\" et obtenir un pouvoir grandissant en terme de "
#~ "possibilités de modérations. "
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Par exemple, si vous posez une question intéressante, ou aidez quelqu'un "
-#~ "en répondant à l'une de ses questions, les autres utilisateurs du forum "
-#~ "voteront positivement pour vous. En revanche, si vos réponses sont "
-#~ "fausses ou malveillantes, vous recevrez des votes négatifs. Chaque vote "
-#~ "en votre faveur vous rapportera <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)"
-#~ "s</strong> points, et chaque vote en votre défaveur vous retirera <strong>"
-#~ "%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. Vous pouvez "
-#~ "accumuler au maximum <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points par jour pour chaque question et chaque réponse. Le tableau ci-"
-#~ "dessous indique combien de points sont requis pour chaque tâche de "
-#~ "modération. "
-
-#~ msgid "upvote"
-#~ msgstr "vote positif"
-
#~ msgid "use tags"
#~ msgstr "utiliser les mots-clés (tags)"
-#~ msgid "add comments"
-#~ msgstr "ajouter des commentaires"
-
-#~ msgid "downvote"
-#~ msgstr "vote négatif"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Erste Antwort auf eine eigene Frage akzeptiert"
-
-#~ msgid "open and close own questions"
-#~ msgstr "ouvrir ou fermer ses propres questions"
-
-#~ msgid "retag other's questions"
-#~ msgstr ""
-#~ "requalifier les questions d'autres utilisateurs (modifier leurs mots-clés)"
-
-#~ msgid "edit community wiki questions"
-#~ msgstr "Modifier les questions du \"Wiki communautaire\"."
-
-#~ msgid "\"edit any answer"
-#~ msgstr "\"modifier n'importe quelle réponse"
-
-#~ msgid "\"delete any comment"
-#~ msgstr "\"supprimer n'importe quel commentaire"
-
#~ msgid "what is gravatar"
#~ msgstr "Qu'est ce que 'Gravatar' ?"
@@ -4926,172 +6573,6 @@ msgstr ""
#~ "quelques minutes quand même. 6. Vous pouvez créer autant de gravatars "
#~ "que vous avez d’adresses e-mail."
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Ais-je besoin de créer un nouveau mot de passe pour m'inscrire ?"
-
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "Non. Ce n'est pas obligatoire. Vous pouvez vous connecter avec n'importe "
-#~ "quel service compatible OpenID, ex: Google, Yahoo, AOL, etc..\""
-
-#~ msgid "\"Login now!\""
-#~ msgstr "\"Je me connecte immédiatement !\""
-
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr ""
-#~ "Pourquoi les autres utilisateurs peuvent-ils modifier mes questions ou "
-#~ "mes réponses ?"
-
-#~ msgid "Goal of this site is..."
-#~ msgstr "L'objectif de ce site est simple :"
-
-#~ 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 ""
-#~ "Les questions et les réponses peuvent être modifiées (sur le principe "
-#~ "d'un wiki) par les utilisateurs habitués du site, ce qui améliore la "
-#~ "qualité globale de la base de connaissances qui est peu à peu constituée "
-#~ "par notre communauté."
-
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr ""
-#~ "Si cette approche ne vous convient pas, nous respectons votre choix."
-
-#~ msgid "Still have questions?"
-#~ msgstr "D'autres questions ?"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Merci de <a href='%(ask_question_url)s'>poser vos questions ici</a>; vous "
-#~ "nous aiderez ainsi à étoffer notre base de connaissances, dans l'intérêt "
-#~ "de toute la communauté."
-
-#~ msgid "Feedback"
-#~ msgstr "Remarques"
-
-#~ msgid "Give us your feedback!"
-#~ msgstr "Envoyez nous vos remarques !"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Bonjour %(user_name)s</span>, nous sommes "
-#~ "impatients de connaître votre avis sur notre module de Questions/"
-#~ "Réponses.\n"
-#~ "Saisissez vos remarques, critiques ou suggestions ci-dessous."
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Cher visiteur</span>, nous sommes impatients de "
-#~ "connaître votre avis sur notre module de Questions/Réponses.\n"
-#~ "Saisissez vos remarques, critiques ou suggestions ci-dessous."
-
-#~ msgid "(this field is required)"
-#~ msgstr "(champ obligatoire)"
-
-#~ msgid "Send Feedback"
-#~ msgstr "Envoyer"
-
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>Bonjour %(receiving_user_name)s,</p>"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a laissé <a href=\"%(post_url)s\">un nouveau "
-#~ "commentaire</a>:</p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a laissé <a href=\"%(post_url)s\">un nouveau "
-#~ "commentaire</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a répondu à une question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a publié une nouvelle question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a mis à jour une réponse à la question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a mis à jour une question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>Sachez que vous pouvez facilement <a href=\"%(user_subscriptions_url)s"
-#~ "\">changer</a>\n"
-#~ "la fréquence à laquelle vous recevez les emails de notifications, ou "
-#~ "facilement vous désabonner. Merci de l'intérêt que vous protez à notre "
-#~ "forum !</p>\n"
-
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "<p>Salutations,<br/>L'administarteur du forum de Questions/Réponses</p>"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Partager cette question sur twitter"
-
#, fuzzy
#~ msgid "i like this question (click again to cancel)"
#~ msgstr "J'aime ce message (cliquez à nouveau pour annuler)"
@@ -5099,9 +6580,6 @@ msgstr ""
#~ msgid "i like this answer (click again to cancel)"
#~ msgstr "J'aime cette réponse (cliquez à nouveau pour annuler)"
-#~ msgid "current number of votes"
-#~ msgstr "Nombre de votes actuel"
-
#, fuzzy
#~ msgid "i dont like this question (click again to cancel)"
#~ msgstr "Je n'aime pas ce message (cliquez à nouveau pour annuler)"
@@ -5109,328 +6587,35 @@ msgstr ""
#~ msgid "i dont like this answer (click again to cancel)"
#~ msgstr "Je n'aime pas cette réponse (cliquez à nouveau pour annuler)"
-#~ msgid "anonymous user"
-#~ msgstr "anonyme"
-
-#~ msgid "asked"
-#~ msgstr "posée"
-
-#~ msgid "answered"
-#~ msgstr "répondue"
-
-#~ msgid "posted"
-#~ msgstr "postée"
-
-#~ msgid "updated"
-#~ msgstr "actualisée"
-
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Voir les questions marquées par '%(tag)s'."
-
-#~ msgid "delete this comment"
-#~ msgstr "Supprimer ce commentaire"
-
#~ msgid "add comment"
#~ msgstr "Ajouter un commentaire"
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "Voir <strong>1</strong> de plus"
-#~ msgstr[1] "Voir <strong>%(counter)s</strong> de plus"
-
#~ msgid "see <strong>%(counter)s</strong> more comment"
+
#~ msgid_plural ""
#~ "see <strong>%(counter)s</strong> more comments\n"
#~ " "
#~ msgstr[0] "Voir <strong>1</strong> commentaire de plus"
#~ msgstr[1] "Voir <strong>%(counter)s</strong> commentaires de plus"
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "Le site web de %(username)s est \"%(url)s"
-
-#~ msgid "previous"
-#~ msgstr "page précédente"
-
-#~ msgid "current page"
-#~ msgstr "page actuelle"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Page %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "page suivante"
-
#~ msgid "posts per page"
#~ msgstr "messages par page"
-#~ msgid "responses for %(username)s"
-#~ msgstr "réponses pour %(username)s"
-
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "vous avez une nouvelle réponse"
-#~ msgstr[1] "vous avez %(response_count)s nouvelles réponses"
-
-#~ msgid "no new responses yet"
-#~ msgstr "pas de nouvelles réponses pour l'instant"
-
-# FIXME
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "%(new)s nouveaux messages étiquetés"
-
-# FIXME
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "%(new)s nouveaux messages étiquetés"
-
-# FIXME
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "%(seen)s messages taggés"
-
-#~ msgid "Questions"
-#~ msgstr "Questions"
-
-#~ msgid "Privacy policy"
-#~ msgstr "Politique en matière de respect de la vie privée"
-
-#~ msgid "Edit question"
-#~ msgstr "Modifier une question"
-
#~ msgid "Change tags"
#~ msgstr "Modifier les tags"
-#~ msgid "Retag"
-#~ msgstr "Requalifier"
-
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Pourquoi utiliser et modifier les tags ?"
-
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr ""
-#~ "Les éditeurs de tags reçoivent des récompenses de la base de la communauté"
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "jusqu'à 5 tags, faisant chacun moins de 20 caractères"
-
-#~ msgid "Reopen question"
-#~ msgstr "Réouvrir cette question"
-
-#~ msgid "Title"
-#~ msgstr "Titre"
-
-#~ msgid ""
-#~ "This question has been closed by \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgstr ""
-#~ "Cette question a été cloturée par \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-
-#~ msgid "Close reason:"
-#~ msgstr "Motif de cloture :"
-
-#~ msgid "When:"
-#~ msgstr "Quand :"
-
-#~ msgid "Reopen this question?"
-#~ msgstr "Réouvrir cette question ?"
-
-#~ msgid "Reopen this question"
-#~ msgstr "Réouvrir cette question"
-
-#~ msgid "Revision history"
-#~ msgstr "Historique des révisions"
-
-#~ msgid "click to hide/show revision"
-#~ msgstr "cliquez pour afficher/masquer la révision"
-
-#~ msgid "revision %(number)s"
-#~ msgstr "révision %(number)s"
-
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "utiliser les mots-clés (tags)"
-
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Cette question a été close pour la raison suivante "
-
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "utiliser les mots-clés (tags)"
-
-#~ msgid "Tag list"
-#~ msgstr "Liste des tags"
-
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Trier par:"
-
-#~ msgid "sorted alphabetically"
-#~ msgstr "triée alphabétiquement"
-
-#~ msgid "by name"
-#~ msgstr "par nom"
-
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "triée par fréquence d'utilisation des tags"
-
-#~ msgid "by popularity"
-#~ msgstr "par popularité"
-
-#~ msgid "Nothing found"
-#~ msgstr "Aucun résultat"
-
-#~ msgid "Users"
-#~ msgstr "Utilisateurs"
-
#~ msgid "reputation"
#~ msgstr "réputation"
-#~ msgid "recent"
-#~ msgstr "récent"
-
-#~ msgid "by username"
-#~ msgstr "par nom d'utilisateur"
-
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "utilisateurs vérifiant les critères %(suser)s"
-
-#~ msgid "Nothing found."
-#~ msgstr "Aucun résultat."
-
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "avec la contribution de %(author_name)s"
-
-#~ msgid "Search tips:"
-#~ msgstr "Conseils pour la recherche:"
-
-#~ msgid "reset author"
-#~ msgstr "Réinitialiser l'auteur"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "ou"
-
-#~ msgid "reset tags"
-#~ msgstr "Réinitialiser les tags"
-
-#~ msgid "start over"
-#~ msgstr "Recommencer"
-
-# FIXME
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr ""
-#~ " - pour développer ou restreindre en ajoutant plus de tags et en révisant "
-#~ "la requête"
-
-#~ msgid "Search tip:"
-#~ msgstr "Conseil pour la recherche:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "ajouter des tags et une requête pour affiner votre recherche"
-
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Il n'y a aucune question sans réponse"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Aucune question favorite."
-
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr ""
-#~ "Merci de commencer (marquer) quelques questions quand vous les visitez"
-
-#~ msgid "You can expand your search by "
-#~ msgstr "Vous pouvez élargir votre recherche en"
-
-#~ msgid "resetting author"
-#~ msgstr "réinitialisant l'auteur"
-
-#~ msgid "resetting tags"
-#~ msgstr "réinitialisant les mots-clés (\"tags\")"
-
-#~ msgid "starting over"
-#~ msgstr "repartant de zéro"
-
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "N'hésitez pas à poser des questions !"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Vous n'avez pas trouvé ce que vous cherchiez ?"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "Veuillez saisir votre question !"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "S'abonner au flux RSS des questions"
-
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "Chaque mot-clé doit comporter moins de %(max_chars)d caractère"
-#~ msgstr[1] "Chaque mot-clé doit comporter moins de %(max_chars)d caractères"
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "Veuillez utiliser %(tag_count)d mot-clé, ou moins"
-#~ msgstr[1] "Veuillez utiliser %(tag_count)d mots-clés, ou moins"
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "jusqu'à 5 tags, faisant chacun moins de 20 caractères"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)s réponse :"
-#~ msgstr[1] ""
-#~ "\n"
-#~ " %(counter)s réponses :"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "Les réponses les plus anciennes seront affichées en premier"
-
#~ msgid "oldest answers"
#~ msgstr "réponses les plus anciennes"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "Les réponses les plus récentes seront affichées en premier"
-
#~ msgid "newest answers"
#~ msgstr "Réponses les plus récentes"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr ""
-#~ "Les réponses ayant obtenu le plus de votes seront affichées en premier"
-
#~ msgid "popular answers"
#~ msgstr "réponses populaires"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Répondre à votre propre question"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Connectez vous (ou Inscrivez vous) pour poster votre réponse"
-
-#~ msgid "Your answer"
-#~ msgstr "Votre réponse"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Soyez le premier à répondre à cette quesion !"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Vous pouvez commencer par répondre anonymement à "
@@ -5452,66 +6637,17 @@ msgstr ""
#~ msgid "Answer the question"
#~ msgstr "Répondre à cette question"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "ou"
-
-#~ msgid "email"
-#~ msgstr "email"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tags de la question"
-
-# FIXME
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr ""
-#~ "Cliquez ici pour voir les questions ayant obtenu le plus de réponses"
-
-# FIXME
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr ""
-#~ "Cliquez ici pour voir les questions ayant obtenu le plus de réponses"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "Modification(s) d'email(s) annulée(s)"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "S'abonner au flux RSS des questions"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "S'abonner au flux RSS des questions"
-
#~ msgid "question asked"
#~ msgstr "question posée"
#~ msgid "question was seen"
#~ msgstr "la question a été vue:"
-#~ msgid "times"
-#~ msgstr "fois"
-
-#~ msgid "last updated"
-#~ msgstr "dernière mise à jour"
-
-#~ msgid "Related questions"
-#~ msgstr "Questions liées"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Me notifier les nouvelles réponses par email</strong> une fois "
#~ "par jour"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Me notifier les nouvelles réponses par email</strong> une fois "
-#~ "par semaine"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr "Me notifier immédiatement dès qu'il y a des nouvelles réponses"
@@ -5523,39 +6659,6 @@ msgstr ""
#~ "depuis <strong><a href='%(profile_url)s?sort=email_subscriptions'>votre "
#~ "profil</a></strong> ...)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "vous pourrez vous abonner aux mails de notifications de mise à jour dès "
-#~ "que vous vous serez connecté"
-
-# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
-#~ msgid "%(username)s's profile"
-#~ msgstr "Profil de l'utilisateur %(username)s"
-
-#~ msgid "Edit user profile"
-#~ msgstr "Modifier le profil utilisateur"
-
-#~ msgid "edit profile"
-#~ msgstr "Modifier le profil"
-
-#~ msgid "change picture"
-#~ msgstr "changer d'image"
-
-#~ msgid "Registered user"
-#~ msgstr "Utilisateur enregistré"
-
-#~ msgid "Screen Name"
-#~ msgstr "Pseudo"
-
-#~ msgid "Update"
-#~ msgstr "Mettre à jour"
-
-#~ msgid "subscriptions"
-#~ msgstr "Abonnements aux emails"
-
-#~ msgid "Email subscription settings"
-#~ msgstr "Paramètres d'abonnement aux emails"
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Infos concernant les paramètres d'abonnement aux "
@@ -5565,287 +6668,31 @@ msgstr ""
#~ msgid "Stop sending email"
#~ msgstr "Arrêter d'envoyer des emails"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Toutes les questions"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "questions"
-
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "Veuillez utiliser %(tag_count)d mot-clé, ou moins"
-
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "Supprimer"
-
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "dernière connexion"
-
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "date (↓)"
-
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "bronze"
-
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "dernière connexion"
-
-# FIXME ou "ayant reçu une récompense"
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "marquée comme meilleure réponse"
-
-#~ msgid "update profile"
-#~ msgstr "Mettre à jour le profil"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "Bitte einloggen"
-
-#~ msgid "real name"
-#~ msgstr "nom réél"
-
-#~ msgid "member for"
-#~ msgstr "membre depuis"
-
-#~ msgid "last seen"
-#~ msgstr "dernière connexion"
-
#~ msgid "user website"
#~ msgstr "Site internet"
-#~ msgid "location"
-#~ msgstr "Lieu"
-
-#~ msgid "age"
-#~ msgstr "Age"
-
-#~ msgid "age unit"
-#~ msgstr "ans "
-
-#~ msgid "todays unused votes"
-#~ msgstr "Votes non utilisés aujourd'hui"
-
-#~ msgid "votes left"
-#~ msgstr "votes restants"
-
-#~ msgid "moderation"
-#~ msgstr "Modération"
-
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "Le statut actuel de %(username)s est \"%(status)s\""
-
-#~ msgid "User status changed"
-#~ msgstr "Statut de l'utilisateur modifié"
-
-#~ msgid "Save"
-#~ msgstr "Enregistrer"
-
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "Vous avez actuellement %(reputation)s points de réputation"
-
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "Cet utilisateur a actuellement %(reputation)s points de réputation"
-
-#~ msgid "User reputation changed"
-#~ msgstr "Réputation de l'utilisateur modifiée"
-
-#~ msgid "Subtract"
-#~ msgstr "Soustraire"
-
-#~ msgid "Add"
-#~ msgstr "Ajouter"
-
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Envoyer un message à %(username)s"
-
-#~ msgid ""
-#~ "An email will be sent to the user with 'reply-to' field set to your email "
-#~ "address. Please make sure that your address is entered correctly."
-#~ msgstr ""
-#~ "Un email sera envoyé à cet utilisateur avec le champ 'reply-to' pré-"
-#~ "renseigné avec votre adresse email, afin qu'il puisse vous répondre "
-#~ "directement. Merci de vérifier que votre adresse email est correcte."
-
-#~ msgid "Message sent"
-#~ msgstr "Message envoyé"
-
-#~ msgid "Send message"
-#~ msgstr "Envoyer le message"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "Les utilisateurs suspendus ne peuvent pas étiqueter les messages"
-
-# FIXME ou bien "Annulation des emails de notification de mises à jour" ???
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "Profil de l'utilisateur %(username)s"
-
-# TODO demander au développeur de faire 2 entrées distinctes. Une contiendra "date (↑)" et l'autre "date"
-#~ msgid "activity"
-#~ msgstr "actualité (↓)"
-
-#~ msgid "Your karma change log."
-#~ msgstr "L'évolution de votre Karma."
-
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "Evolution du karma de %(user_name)s"
-
-#~ msgid "overview"
-#~ msgstr "aperçu"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Question"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Questions"
-
#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+
#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Réponse"
#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Réponses"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "Cette réponse a obtenu %(answer_score)s votes positifs"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "Cette réponse a été sélectionnée comme correct"
-
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "(%(comment_count)s commentaire)"
-#~ msgstr[1] "cette réponse a été commentée %(comment_count)s fois"
-
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> Votes "
-
-#~ msgid "thumb up"
-#~ msgstr "J'aime (+1)"
-
-#~ msgid "user has voted up this many times"
-#~ msgstr "L'utilisateur a voté positivement pour cela de nombreuses fois"
-
-#~ msgid "thumb down"
-#~ msgstr "J'aime pas (-1)"
-
-#~ msgid "user voted down this many times"
-#~ msgstr "L'utilisateur a voté négativement pour cela de nombreuses fois"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Mot-clé"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Mots-clés"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Badges"
-
-# FIXME
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Conseils pour répondre"
-
-#~ msgid "User profile"
-#~ msgstr "Profil utilisateur"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Statistiques sur la réputation de cet utilisateur"
-
#~ msgid "reputation history"
#~ msgstr "Historique de la réputation"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "questions favorites de cet utilisateur"
-
#~ msgid "recent activity"
#~ msgstr "activité récente"
# FIXME
#~ msgid "casted votes"
#~ msgstr "abgegebene Stimmen"
-
-#~ msgid "votes"
-#~ msgstr "votes"
-
# FIXME
#~ msgid "answer tips"
#~ msgstr "Conseils pour répondre"
-
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr ""
-#~ "Rédiger vos réponses afin qu'elles soient pertinentes pour la communauté."
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "Contentez-vous de donner une réponse, plutôt que de vous engagez dans une "
-#~ "discussion."
-
#~ msgid "please try to provide details"
#~ msgstr "Fournissez un maximum de détails."
-
-#~ msgid "be clear and concise"
-#~ msgstr "Soyez clair et concis."
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "lisez notre FAQ (Foire aux questions)"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Aide sur les balises \"Markdown\""
-
-#~ msgid "*italic*"
-#~ msgstr "*italique*"
-
-#~ msgid "**bold**"
-#~ msgstr "**gras**"
-
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*italique* ou __italique__"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**gras** ou __gras__"
-
-#~ msgid "link"
-#~ msgstr "lien"
-
-#~ msgid "text"
-#~ msgstr "texte"
-
-#~ msgid "image"
-#~ msgstr "image"
-
-#~ msgid "numbered list:"
-#~ msgstr "liste numérotée:"
-
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "les balises HTML élémentaires sont aussi supportées."
-
-#~ msgid "learn more about Markdown"
-#~ msgstr "en savoir plus sur les balises \"Markdown\""
-
#~ msgid "ask a question"
#~ msgstr "Poser une question"
-
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Formulez votre question à l'aide du formulaire "
-#~ "ci-dessous (un court titre résumant la question, puis la question à "
-#~ "proprement parler, aussi détaillée que vous le souhaitez...)</span>. A "
-#~ "l'étape suivante, vous devrez saisir votre email et votre nom (ou un "
-#~ "pseudo si vous souhaitez rester anonyme...). Ces éléments sont "
-#~ "nécessaires pour bénéficier des fonctionnalités de notre module de "
-#~ "questions/réponses, qui repose sur un principe communautaire."
-
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
#~ " see %(email_validation_faq_url)s\n"
@@ -5856,80 +6703,36 @@ msgstr ""
#~ "E-Mail-Adresse bestätigen. <a href='%(email_validation_faq_url)s'>Mehr "
#~ "infos hier</a>.<br>Sie können Ihren Beitrag speichern und die Bestätigung "
#~ "danach durchführen - Ihr Beitrag wird bis dahin gespeichert."
-
#~ msgid "Login/signup to post your question"
#~ msgstr "Vous devez vous authentifier pour publier votre question "
-
-#~ msgid "Ask your question"
-#~ msgstr "Poser votre question"
-
-#~ msgid "Contributors"
-#~ msgstr "Contributeurs"
-
-#~ msgid "about"
-#~ msgstr "Qui sommes nous ?"
-
-#~ msgid "privacy policy"
-#~ msgstr "Respect de la vie privée"
-
-#~ msgid "give feedback"
-#~ msgstr "Faire une remarque"
-
-#~ msgid "back to home page"
-#~ msgstr "Retour à l'accueil"
-
-#, fuzzy
-#~ msgid "%(site)s logo"
-#~ msgstr "Logo du site de Questions/Réponses"
-
-#~ msgid "users"
-#~ msgstr "Communauté"
-
-#~ msgid "badges"
-#~ msgstr "Réputation"
-
#~ msgid "question tips"
#~ msgstr "conseils pour poser une question"
-
#~ msgid "please ask a relevant question"
#~ msgstr "Merci de poser une question pertinente."
-
-#~ msgid "please try provide enough details"
-#~ msgstr "Merci de fournir suffisamment de détails."
-
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "vue"
-#~ msgstr[1] "vues"
-
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "réponse"
-#~ msgstr[1] "réponses"
-
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "vote"
-#~ msgstr[1] "votes"
-
-#~ msgid "see unanswered questions"
-#~ msgstr "Voir les questions sans réponses"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Voir vos questions favorites"
-
-#~ msgid "badges:"
-#~ msgstr "badges :"
-
#~ msgid "logout"
#~ msgstr "Déconnexion"
-
#~ msgid "login"
#~ msgstr "Connexion"
+#~ msgid "no items in counter"
+#~ msgstr "0"
+#~ msgid "your email address"
+#~ msgstr "Votre adresse email <i>(ne sera pas communiquée)</i>"
+#~ msgid "choose password"
+#~ msgstr "choisissez un mot de passe"
+#~ msgid "retype password"
+#~ msgstr "Saisissez à nouveau le mot de passe <i>(pour confirmation)</i>"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s badge"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s badges"
+#~ msgid "user reputation in the community"
+#~ msgstr "réputation de l'utilisateur au sein de la communauté"
+#, fuzzy
+#~ msgid "Please log in to ask questions"
+#~ msgstr "N'hésitez pas à poser des questions !"
-#~ msgid "settings"
-#~ msgstr "paramètres"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "La question doit comporter plus de 10 caractères."
#~ msgid "(please enter a valid email)"
#~ msgstr "(veuillez entrer une adresse email valide)"
@@ -5952,6 +6755,7 @@ msgstr ""
#~ "\n"
#~ " %(counter)s Answer:\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " %(counter)s Answers:\n"
@@ -5970,9 +6774,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Tags de la question"
-#~ msgid "questions"
-#~ msgstr "questions"
-
#~ msgid "search"
#~ msgstr "Chercher"
@@ -5989,25 +6790,14 @@ msgstr ""
# ##FIXME "Questions: [toutes] [ouvertes]" POUR GAGNER DE LA PLACE !!!
#~ msgid "In:"
#~ msgstr "Questions:"
-
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Toutes les questions"
-
-#~ msgid "Sort by:"
-#~ msgstr "Trier par:"
-
#~ msgid "Email (not shared with anyone):"
#~ msgstr "Votre email (ne sera pas communiqué):"
-
#~ msgid "Keys to connect the site with external services like Facebook, etc."
#~ msgstr ""
#~ "Clés pour connecter le site avec des services externes comme Facebook, "
#~ "etc."
-
#~ msgid "Minimum reputation required to perform actions"
#~ msgstr "Réputation minimale requise pour réaliser les actions"
-
#, fuzzy
#~ msgid "Site modes"
#~ msgstr "Sites"
@@ -6135,13 +6925,12 @@ msgstr ""
# FIXME
#~ msgid "unmark-tag/"
#~ msgstr "retirer-un-tag/"
-
#~ msgid "favorites"
#~ msgstr "favorites"
-
# FIXME coquille dans phrase anglaise ???
#, fuzzy
#~ msgid "this questions was selected as favorite %(cnt)s time"
+
#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
#~ msgstr[0] "Cette question a été sélectionnée favorite"
#~ msgstr[1] "Cette question a été sélectionnée favorite"
@@ -6170,10 +6959,6 @@ msgstr ""
#~ msgid "Email verification subject line"
#~ msgstr "Vérification de votre adresse email"
-#, fuzzy
-#~ msgid "Posted 10 comments"
-#~ msgstr "ajouter des commentaires"
-
#~ msgid "About"
#~ msgstr "A propos"
@@ -6187,10 +6972,8 @@ msgstr ""
#~ msgstr ""
#~ "Informations concernant la procédure de validation d'email avec "
#~ "%(send_email_key_url)s %(gravatar_faq_url)s"
-
#~ msgid "."
#~ msgstr "."
-
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
#~ "or permanently remove your account."
@@ -6198,18 +6981,16 @@ msgstr ""
#~ "Etant un utilisateur enregistré, vous pouvez vous connecter avec votre "
#~ "OpenID, vous déconnecter du site, ou supprimer définitivement votre "
#~ "compte."
-
#~ msgid "Logout now"
#~ msgstr "Se déconnecter"
-
#~ msgid "see questions tagged '%(tag_name)s'"
#~ msgstr "Voir les questions marquées par '%(tag_name)s' "
-
#, fuzzy
#~ msgid ""
#~ "\n"
#~ " %(q_num)s question\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " %(q_num)s questions\n"
@@ -6221,18 +7002,12 @@ msgstr ""
#~ "\n"
#~ " Nous avons trouvé %(q_num)s questions"
-#~ msgid "tagged"
-#~ msgstr "marquée avec des mots-clés"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr "Retirer '%(tag_name)s' de la liste des tags intéressants"
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "Retirer '%(tag_name)s' de la liste des tags ignorés"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "Continuer de masquer les questions ignorées"
-
#~ msgid ""
#~ "see other questions with %(view_user)s's contributions tagged '%(tag_name)"
#~ "s' "
@@ -6259,6 +7034,7 @@ msgstr ""
#~ "\n"
#~ " vote\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " votes\n"
@@ -6277,6 +7053,7 @@ msgstr ""
#~ "\n"
#~ " answer \n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " answers \n"
@@ -6292,6 +7069,7 @@ msgstr ""
#~ "\n"
#~ " view\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " views\n"
@@ -6307,6 +7085,7 @@ msgstr ""
#~ "\n"
#~ " vote\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " votes\n"
@@ -6322,6 +7101,7 @@ msgstr ""
#~ "\n"
#~ " answer \n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " answers \n"
@@ -6337,6 +7117,7 @@ msgstr ""
#~ "\n"
#~ " view\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " views\n"
@@ -6665,89 +7446,61 @@ msgstr ""
#~ msgstr ""
#~ "Le mot de passe de '%s' a été modifié. Vous pouvez maintenant vous "
#~ "connecter."
-
#~ msgid "email update message subject"
#~ msgstr "Sujet du message de modification d'email"
-
#~ msgid "sorry, system error"
#~ msgstr "Désolé, erreur interne"
-
#~ msgid "Account functions"
#~ msgstr "Gérer votre compte"
-
#~ msgid "Change email "
#~ msgstr "Changer d'adresse email"
-
#~ msgid "Add or update the email address associated with your account."
#~ msgstr "Ajouter ou modifier l'adresse email associée à votre compte"
-
#~ msgid "Change OpenID"
#~ msgstr "Changer d'OpenID"
-
#~ msgid "Change openid associated to your account"
#~ msgstr "Changer l'OpenID associé à votre compte"
-
#~ msgid "Erase your username and all your data from website"
#~ msgstr ""
#~ "Supprimer votre nom d'utilisateur et toutes vos données de notre site"
-
#~ msgid "toggle preview"
#~ msgstr "basculer vers l'aperçu"
-
#~ msgid "reading channel"
#~ msgstr "Canal de lecture"
-
#~ msgid "[author]"
#~ msgstr "[auteur]"
-
#~ msgid "[publisher]"
#~ msgstr "[auteur de la publication]"
-
#~ msgid "[publication date]"
#~ msgstr "[date de publication]"
-
#~ msgid "[price]"
#~ msgstr "[prix]"
-
#~ msgid "currency unit"
#~ msgstr "devise"
-
#~ msgid "[pages]"
#~ msgstr "[pages]"
-
#~ msgid "pages abbreviation"
#~ msgstr "abbréviation des pages"
-
#~ msgid "[tags]"
#~ msgstr "[mots-cles]"
-
#~ msgid "author blog"
#~ msgstr "blog de l'auteur"
-
#~ msgid "book directory"
#~ msgstr "bibliothèque"
-
#~ msgid "buy online"
#~ msgstr "acheter en ligne"
-
#~ msgid "reader questions"
#~ msgstr "questions des lecteurs"
-
#~ msgid "ask the author"
#~ msgstr "Demander à l'auteur"
-
#~ msgid "this question was selected as favorite"
#~ msgstr "Cette question a été sélectionnée comme favorite"
-
#~ msgid "number of times"
#~ msgstr "fois"
-
#~ msgid "the answer has been accepted to be correct"
#~ msgstr "La réponse a été jugée correcte"
-
#~ msgid "subscribe to book RSS feed"
#~ msgstr "S'abonner au flux RSS"
-
#~ msgid ""
#~ "\n"
#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
@@ -6758,115 +7511,84 @@ msgstr ""
#~ "<p>%(update_author_name)s a laissé <a href=\"%(post_url)s\">nouveau "
#~ "commentaire</a>\n"
#~ " concernant une réponse à la question \"%(origin_post_title)s\"</p>\n"
-
#~ msgid "%(rev_count)s revision"
#~ msgid_plural "%(rev_count)s revisions"
#~ msgstr[0] "%(rev_count)s revision"
#~ msgstr[1] "%(rev_count)s revisions"
-
#~ msgid "tags help us keep Questions organized"
#~ msgstr "Les tags nous permettent de classer et organiser les questions."
-
#~ msgid "less answers"
#~ msgstr "nb réponses (↑)"
-
# FIXME
#~ msgid "click to see coldest questions"
#~ msgstr ""
#~ "Cliquez ici pour voir les questions ayant obtenu le moins de réponses"
-
#~ msgid "more answers"
#~ msgstr "nb réponses (↓)"
-
#~ msgid "unpopular"
#~ msgstr "popularité (↑)"
-
#~ msgid "popular"
#~ msgstr "popularité (↓)"
-
#~ msgid "responses"
#~ msgstr "réponses"
-
#~ msgid "Account: change OpenID URL"
#~ msgstr "Compte : changer d'URL OpenID"
-
#~ msgid ""
#~ "This is where you can change your OpenID URL. Make sure you remember it!"
#~ msgstr "Cette page vous permet de changer d'URL OpenID. Ne l'oubliez pas !"
-
#~ msgid "Please correct errors below:"
#~ msgstr "Merci de bien vouloir corriger les erreurs ci-dessous :"
-
#~ msgid ""
#~ "This is where you can change your password. Make sure you remember it!"
#~ msgstr ""
#~ "Cette page vous permet de changer de mot de passe. Ne l'oubliez pas !"
-
# FIXME
#~ msgid "Connect your OpenID with this site"
#~ msgstr "Associer votre OpenID avec ce site"
-
#~ msgid "Sorry, looks like we have some errors:"
#~ msgstr "Désolé, il semble qu'une erreur se soit produite :"
-
#~ msgid "Existing account"
#~ msgstr "Ce compte existe déjà"
-
#~ msgid "password"
#~ msgstr "Mot de passe"
-
#~ msgid "Forgot your password?"
#~ msgstr "Mot de passe oublié ?"
-
#~ msgid "Account: delete account"
#~ msgstr "Compte : compte supprimé"
-
#~ msgid ""
#~ "Note: After deleting your account, anyone will be able to register this "
#~ "username."
#~ msgstr ""
#~ "Attention : après avoir supprimé votre compte, n'importe qui pourra créer "
#~ "un compte en reprenant le nom d'utilisateur que vous utilisiez..."
-
#~ msgid "Check confirm box, if you want delete your account."
#~ msgstr ""
#~ "Merci de cocher la case pour confirmer que vous voulez vraiment supprimer "
#~ "votre compte."
-
#~ msgid "I am sure I want to delete my account."
#~ msgstr "Oui, je souhaite supprimer définitivement mon compte."
-
#~ msgid "Password/OpenID URL"
#~ msgstr "Mot de passe / URL OpenID"
-
#~ msgid "(required for your security)"
#~ msgstr "(obligatoire, pour des raisons de sécurité)"
-
#~ msgid "Delete account permanently"
#~ msgstr "Supprimer définitivement ce compte"
-
#~ msgid "Traditional login information"
#~ msgstr "Information sur la méthode classique de connexion"
-
#~ msgid ""
#~ "how to login with password through external login website or use "
#~ "%(feedback_url)s"
#~ msgstr ""
#~ "comment se connecter avec un mot de passe à travers le site web d'un "
#~ "fournisseur d'identité externe ou utiliser %(feedback_url)s"
-
#~ msgid "Send new password"
#~ msgstr "Un nouveau mot de passe a été envoyé"
-
#~ msgid "password recovery information"
#~ msgstr "Informations concernant la récupération du mot de passe"
-
#~ msgid "Reset password"
#~ msgstr "Réinitialiser le mot de passe"
-
#~ msgid "return to login"
#~ msgstr "Retour à la page de connexion"
-
#~ msgid ""
#~ "Someone has requested to reset your password on %(site_url)s.\n"
#~ "If it were not you, it is safe to ignore this email."
@@ -6875,14 +7597,12 @@ msgstr ""
#~ "forum de Questions/Réponses %(site_url)s.\n"
#~ "Si vous n'êtes pas à l'origine de cette demande, ignorez ce message, et "
#~ "votre mot de passe ne sera pas modifié..."
-
#~ msgid ""
#~ "email explanation how to use new %(password)s for %(username)s\n"
#~ "with the %(key_link)s"
#~ msgstr ""
#~ "Email expliquant comment utiliser le nouveau mot de passe %(password)s "
#~ "pour l'utilisateur %(username)s avec la clé %(key_link)s"
-
#~ msgid "Click to sign in through any of these services."
#~ msgstr ""
#~ "<span class='grey'>OpenID est un nouveau système d’authentification "
@@ -6897,7 +7617,6 @@ msgstr ""
#~ "sur tout autre site \"compatible OpenID\" </span><p><span class=\"big"
#~ "\">Si vous possédez un compte \"OpenID\" chez l'un des fournisseurs ci-"
#~ "dessous, cliquez sur son logo pour vous authentifier : </span>"
-
# msgid "Click to sign in through any of these services."
# msgstr ""
# "<p><span class=\"big strong\">Please select your favorite login method
@@ -6914,68 +7633,50 @@ msgstr ""
#~ "Saisissez <span id=\"enter_your_what\">l'identifiant que vous utilisez "
#~ "habituellement chez ce fournisseur de services</span><span class='grey'>"
#~ "(à condition qu'il soit compatible OpenID)</span>"
-
#~ msgid ""
#~ "Enter your <a class=\"openid_logo\" href=\"http://openid.net\">OpenID</a> "
#~ "web address"
#~ msgstr ""
#~ "ou bien saisissez directement votre adresse web OpenID <a class="
#~ "\"openid_logo\" href=\"http://openid.net\">OpenID</a> "
-
#~ msgid "Enter your login name and password"
#~ msgstr "Saisissez votre nom d'utilisateur AskBot et votre mot de passe"
-
#~ msgid "Create account"
#~ msgstr "Créer un compte"
-
#~ msgid "Connect to %(settings.APP_SHORT_NAME)s with Facebook!"
#~ msgstr "Se connecter à %(settings.APP_SHORT_NAME)s avec FaceBook !"
-
# TODO vérifier que %s contient le username et pas le nouveau mot de passe !
#~ msgid "Your question and all of it's answers have been deleted"
#~ msgstr ""
#~ "Votre question a été supprimée, ainsi que toutes les réponses associées."
-
#~ msgid "Your question has been deleted"
#~ msgstr "Votre question a été supprimée."
-
#~ msgid "The question and all of it's answers have been deleted"
#~ msgstr "La question et toutes ses réponses ont été supprimées."
-
#~ msgid "The question has been deleted"
#~ msgstr "La question a été supprimée."
-
#~ msgid "question"
#~ msgstr "question"
-
#~ msgid "Automatically accept user's contributions for the email updates"
#~ msgstr ""
#~ "Accepter automatiquement les contributions d'utilisateurs pour les mises "
#~ "à jour par email"
-
#~ msgid "unanswered/"
#~ msgstr "nonrepondu/"
-
#~ msgid "nimda/"
#~ msgstr "nimda/"
-
#~ msgid "Première révision de mots-clés"
#~ msgstr "Erste Tag-Bearbeitung"
-
#~ msgid "open any closed question"
#~ msgstr "(ré)ouvrir n'importe quelle question cloturée"
-
#~ msgid "books"
#~ msgstr "Livres"
-
#~ msgid "general message about privacy"
#~ msgstr ""
#~ "Datenschutz und die Privatsphäre unserer Nutzer sind uns wichtig. Auf "
#~ "dieser Seite wird erklärt, wie wir mit Ihren Daten umgehen."
-
#~ msgid "Site Visitors"
#~ msgstr "Visiteurs du site"
-
#~ msgid "what technical information is collected about visitors"
#~ msgstr ""
#~ "Information über das Anschauen von Fragen, Fragen-Versionen und "
@@ -6983,44 +7684,35 @@ msgstr ""
#~ "Nutzer aufgezeichnet, um eine korrekte Zählung der Zugriffe sowie einen "
#~ "intakten Datenbestand zu gewährleisten und um zuvor angeforderte "
#~ "Benachrichtigungsmails an die Nutzer zu versenden."
-
#~ msgid "Personal Information"
#~ msgstr "Informations personnelles"
-
#~ msgid "details on personal information policies"
#~ msgstr ""
#~ "Benutzer können auf freiwilliger Basis Informationen über sich in ihrem "
#~ "Benutzerprofil ablegen. Diese Daten werden nicht ohne die ausdrückliche "
#~ "Zustimmung des Nutzers öffentlich angezeigt."
-
#~ msgid "details on sharing data with third parties"
#~ msgstr ""
#~ "Keine Daten, die nicht mit Zustimmung des Benutzers öffentlich auf der "
#~ "Internetseite angezeigt werden, werden mit Dritten geteilt. "
-
#~ msgid "Policy Changes"
#~ msgstr "Changement de politique"
-
#~ msgid "how privacy policies can be changed"
#~ msgstr ""
#~ "Unsere Datenschutzrichtlinien können sich im Laufe der Zeit verfeinern "
#~ "und verändern. Registrierte Benutzer werden in diesen Fällen automatisch "
#~ "benachrichtigt."
-
#~ msgid "Found by tags"
#~ msgstr "Trouvés (par tags)"
-
#~ msgid "Search results"
#~ msgstr "Résultats de la recherche"
-
#~ msgid "Found by title"
#~ msgstr "Trouvés (par titre)"
-
#~ msgid "Unanswered questions"
#~ msgstr "Questions sans réponses"
-
#, fuzzy
#~ msgid " %(q_num)s question found"
+
#~ msgid_plural "%(q_num)s questions found"
#~ msgstr[0] "%(q_num)s question trouvée"
#~ msgstr[1] "%(q_num)s questions trouvées"
@@ -7059,11 +7751,13 @@ msgstr ""
#~ msgstr "livres/"
#~ msgid " One question found"
+
#~ msgid_plural "%(q_num)s questions found"
#~ msgstr[0] "Eine Frage gefunden"
#~ msgstr[1] "%(q_num)s Fragen gefunden"
#~ msgid "one revision"
+
#~ msgid_plural "%(rev_count)s revisions"
#~ msgstr[0] "1 Version"
#~ msgstr[1] "%(rev_count)s Versionen"
@@ -7076,6 +7770,7 @@ msgstr ""
#~ " see <strong>one</strong> "
#~ "more \n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " see <strong>%(counter)s</"
@@ -7093,6 +7788,7 @@ msgstr ""
#~ " see <strong>one</strong> more "
#~ "comment\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " see <strong>%(counter)s</"
@@ -7110,6 +7806,7 @@ msgstr ""
#~ " see <strong>one</"
#~ "strong> more \n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " see <strong>"
@@ -7127,6 +7824,7 @@ msgstr ""
#~ " see <strong>one</"
#~ "strong> more comment\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " see <strong>"
@@ -7143,6 +7841,7 @@ msgstr ""
#~ "\n"
#~ " (one comment)\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " the answer has been commented %(comment_count)s "
@@ -7159,6 +7858,7 @@ msgstr ""
#~ "\n"
#~ " <span class=\"count\">1</span> Vote\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " <span class=\"count\">%(cnt)s</span> Votes\n"
@@ -7174,6 +7874,7 @@ msgstr ""
#~ "\n"
#~ " <span class=\"count\">1</span> Tag\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " <span class=\"count\">%(counter)s</span> Tags\n"
@@ -7202,6 +7903,7 @@ msgstr ""
#~ msgid ""
#~ " have total %(q_num)s questions containing %(searchtitle)s in full text "
+
#~ msgid_plural ""
#~ " have total %(q_num)s questions containing %(searchtitle)s in full text "
#~ msgstr[0] ""
@@ -7212,6 +7914,7 @@ msgstr ""
#~ "<strong><span class=\"darkred\">%(searchtitle)s</span></strong></p>"
#~ msgid " have total %(q_num)s questions containing %(searchtitle)s "
+
#~ msgid_plural " have total %(q_num)s questions containing %(searchtitle)s "
#~ msgstr[0] ""
#~ "<div class=\"questions-count\">%(q_num)s</div><p>question with title "
@@ -7223,6 +7926,7 @@ msgstr ""
#~ "strong></p>"
#~ msgid " have total %(q_num)s unanswered questions "
+
#~ msgid_plural " have total %(q_num)s unanswered questions "
#~ msgstr[0] ""
#~ "<div class=\"questions-count\">%(q_num)s</div>questions <strong>without "
@@ -7247,6 +7951,7 @@ msgstr ""
#~ "\n"
#~ " have total %(q_num)s unanswered questions\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " have total %(q_num)s unanswered questions\n"
@@ -7264,6 +7969,7 @@ msgstr ""
#~ "\n"
#~ " have total %(q_num)s questions\n"
#~ " "
+
#~ msgid_plural ""
#~ "\n"
#~ " have total %(q_num)s questions\n"
diff --git a/askbot/locale/fr/LC_MESSAGES/djangojs.mo b/askbot/locale/fr/LC_MESSAGES/djangojs.mo
index d1b1182b..79489007 100644
--- a/askbot/locale/fr/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/fr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/fr/LC_MESSAGES/djangojs.po b/askbot/locale/fr/LC_MESSAGES/djangojs.po
index 2e3be03d..1c65f20a 100644
--- a/askbot/locale/fr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/fr/LC_MESSAGES/djangojs.po
@@ -1,347 +1,349 @@
# 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.
+#
+# Translators:
+# Christophe kryskool <christophe.chauvet@gmail.com>, 2011.
+# Mademoiselle Geek <mademoisellegeek42@gmail.com>, 2011.
+# Alexandre Lissy <alexandrelissy@free.fr>, 2012.
#
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
-"PO-Revision-Date: 2011-09-28 08:12-0800\n"
-"Last-Translator: Rosandra Cuello <rosandra.cuello@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:54-0500\n"
+"PO-Revision-Date: 2012-06-14 15:40+0200\n"
+"Last-Translator: Alexandre Lissy <alexandrelissy@free.fr>\n"
+"Language-Team: français <>\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Content-Transfer-Encoding: 8bits\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "Etes-vous sûr de vouloir supprimer votre identifiant %s?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Merci d'ajouter au moins une méthode d'identification."
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"Vous n'avez pas encore de méthode d'identification, merci d'en ajouter une "
+"ou plus en cliquant sur un des icônes ci-dessous."
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "les mots de passe ne correspondent pas"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Afficher/modifier les méthodes d'identification actuelles"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "Merci de saisir votre %s, puis continuer"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "Connecter votre compte %(provider_name)s à %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "Modifier votre mot de passe %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Modifier le mot de passe"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "Créer un mot de passe pour %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Créer un mot de passe"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Créer un compte protégé par mot de passe"
#: skins/common/media/js/post.js:28
msgid "loading..."
-msgstr "Chargement en cours..."
-
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "Les mots-clés ne doivent pas être vides"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "Le contenu ne doit pas être vide"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "Veuillez saisir au moins %s caractères"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "Veuillez saisir un titre"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "Veuillez saisir au moins %s caractères"
+msgstr "chargement..."
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr "Privilèges insuffisants"
+msgstr "privilège insuffisant"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
-msgstr ""
-"Vous ne pouvez pas désigner une de vos propres réponses comme étant la "
-"meilleure réponse"
+msgstr "désolé, vous ne pouvez pas accepter votre propre réponse"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr "Veuillez vous authentifier"
+msgstr "merci de vous identifier"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "les utilisateurs anonymes ne peuvent pas suivre une question"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "les utilisateurs anonymes ne peuvent pas souscrire à une question"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr "les utilisateurs anonyment ne peuvent pas voter "
+msgstr "désolé, les utilisateurs anonymes ne peuvent pas voter"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
-msgstr "Veuillez confirmer que le contenu est abusif"
+msgstr ""
+"êtes-vous sûr que ce message est offensant, contient du spam, de la "
+"publicité, des remarques malveillantes, etc.?"
+
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+"êtes-vous sûr que ce message est offensant, contient du spam, de la "
+"publicité, des remarques malveillantes, etc.?"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-"Les utilisateurs anonymes ne peuvent pas signaler les messages à contenu "
-"abusif"
+"les utilisateurs anonymes ne peuvent pas signaler les messages offensants"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
-msgstr "Confirmer la suppression"
+msgstr "êtes-vous de vouloir supprimer ceci?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
-msgstr "Les utilisateurs anonymes ne peuvent pas supprimer/restaurer"
+msgstr ""
+"désolé, les utilisateurs anonymes ne peuvent pas supprimer ou annuler la "
+"suppression d'un message"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
-msgstr "Message restauré"
+msgstr "votre message a été restauré!"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
-msgstr "Message supprimé"
-
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "Restaurer"
+msgstr "votre message a été supprimé"
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "supprimer"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
-msgstr "OK"
+msgstr "ajouter un commentaire"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
+msgstr "sauvegarder un commentaire"
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "supprimer ce commentaire"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "Confirmer la suppression du commentaire"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "Veuillez entrer le titre de la question (>10 caractères)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "L'étiquette \"<span></span>\" doit correspondre:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "et %s plus, non montré"
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "Merci de sélectionner au moins un élément"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+msgstr[0] "Supprimer cet avertissement?"
+msgstr[1] "Supprimer ces avertissements?"
+
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "Fermer cette entrée ?"
+msgstr[1] "Fermer ces entrées ?"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] "Supprimer tous les drapeaux sur cette entrée ?"
+msgstr[1] "Supprimer tous les drapeaux sur ces entrées ?"
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "Supprimer cette entrée ?"
+msgstr[1] "Supprimer ces entrées ?"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
+"Veuillez <a href=\"%(signin_url)s\">vous connecter</a> pour suivre "
+"%(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "Ne plus suivre %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "Abonnement %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "Suivre %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
+msgstr "cliquer pour fermer"
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "gras"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "italique"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "lien"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
-msgstr "Citer"
+msgstr "citation"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr "Texte préformaté"
+msgstr "texte pré-formaté"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
-msgstr "Image"
+msgstr "image"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "pièce jointe"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "liste numérotée"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
-msgstr "liste"
+msgstr "liste à puces"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
-msgstr "Titre"
+msgstr "titre"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr "Barre horizontale"
+msgstr "barre horizontale"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
-msgstr "Annuler"
+msgstr "défaire"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
-msgstr "Rétablir"
+msgstr "refaire"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-"Veuillez saisir une URL menant à une image, par exemple <br />http://www."
-"votre-domaine.com/nom-image.jpg"
+"saisir l'URL de l'image, par example http://www.example.com/image.jpg ou "
+"télécharger une image vers le serveur"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
-msgstr "Entrez une URL, par exemple <br />http://www.askbot.org/ </p>"
+msgstr ""
+"saisir une adresse web, par example http://www.example.com \"titre de la page"
+"\""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "Merci de choisir un fichier et de le télécharger vers le serveur:"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "merci de saisir au moins un mot clé"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "le contenu ne peut pas être vide"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "merci de saisir plus de %s caractères"
+
+#~ msgid "please enter title"
+#~ msgstr "merci de saisir un titre"
+
+#~ msgid "%s title minchars"
+#~ msgstr "merci de saisir au moins %s caractères"
+
+#~ msgid "Follow"
+#~ msgstr "Suivre"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s Abonné"
+#~ msgstr[1] "%s Abonnés"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Abonnement</div><div class=\"unfollow\">Désabonnement</div>"
+
+#~ msgid "undelete"
+#~ msgstr "annuler la suppression"
+
+#~ msgid "delete"
+#~ msgstr "supprimer"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "merci de saisir au moins %s caractères"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s caractères restants"
+
+#~ msgid "cancel"
+#~ msgstr "annuler"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "Etes-vous sûr de ne pas vouloir publier ce commentaire?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "êtes-vous sûr de vouloir supprimer ce commentaire?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "cliquer pour modifier ce commentaire"
+
+#~ msgid "edit"
+#~ msgstr "modifier"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "voir les questions marquées '%s'"
+
+#~ msgid "image description"
+#~ msgstr "description de l'image"
+
+#~ msgid "file name"
+#~ msgstr "nom du fichier"
+
+#~ msgid "link text"
+#~ msgstr "texte du lien"
diff --git a/askbot/locale/hi/LC_MESSAGES/django.mo b/askbot/locale/hi/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..afd8c271
--- /dev/null
+++ b/askbot/locale/hi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/hi/LC_MESSAGES/django.po b/askbot/locale/hi/LC_MESSAGES/django.po
new file mode 100644
index 00000000..a957e195
--- /dev/null
+++ b/askbot/locale/hi/LC_MESSAGES/django.po
@@ -0,0 +1,6605 @@
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
+#
+# Translators:
+# Chandan kumar <chandankumar.093047@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:52-0500\n"
+"PO-Revision-Date: 2012-04-01 23:58+0000\n"
+"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\n"
+"Language-Team: Hindi (http://www.transifex.net/projects/p/askbot/language/"
+"hi/)\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: exceptions.py:13
+msgid "Sorry, but anonymous visitors cannot access this function"
+msgstr "कà¥à¤·à¤®à¤¾ करें, लेकिन अजà¥à¤žà¤¾à¤¤ आगंतà¥à¤•à¥‹à¤‚ इस फ़ंकà¥à¤¶à¤¨ का उपयोग नहीं कर सकते हैं"
+
+#: feed.py:28 feed.py:90
+msgid " - "
+msgstr " - "
+
+#: feed.py:28
+msgid "Individual question feed"
+msgstr "वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त पà¥à¤°à¤¶à¥à¤¨ फ़ीड"
+
+#: feed.py:90
+msgid "latest questions"
+msgstr "नवीनतम पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚"
+
+#: forms.py:74
+msgid "select country"
+msgstr "देश का चयन करें"
+
+#: forms.py:83
+msgid "Country"
+msgstr "देश"
+
+#: forms.py:91
+msgid "Country field is required"
+msgstr "देश फ़ीलà¥à¤¡ की आवशà¥à¤¯à¤•à¤¤à¤¾ है"
+
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "title"
+msgstr "शीरà¥à¤·à¤•"
+
+#: forms.py:105
+msgid "please enter a descriptive title for your question"
+msgstr "कृपया अपने पà¥à¤°à¤¶à¥à¤¨ के लिठà¤à¤• विवरणातà¥à¤®à¤• शीरà¥à¤·à¤• दरà¥à¤œ करें"
+
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
+msgid "content"
+msgstr "सामगà¥à¤°à¥€"
+
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
+msgid "tags"
+msgstr "लेबल "
+
+#: forms.py:188
+#, python-format
+msgid ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:222 skins/default/templates/question_retag.html:58
+msgid "tags are required"
+msgstr "लेबल की आवशà¥à¤¯à¤•à¤¤à¤¾"
+
+#: forms.py:232
+#, python-format
+msgid "please use %(tag_count)d tag or less"
+msgid_plural "please use %(tag_count)d tags or less"
+msgstr[0] "कृपया %(tag_count)d लेबल या कम का उपयोग करें"
+msgstr[1] "कृपया %(tag_count)d लेबल या कम का उपयोग करें"
+
+#: forms.py:240
+#, python-format
+msgid "At least one of the following tags is required : %(tags)s"
+msgstr "कम से कम निमà¥à¤¨à¤²à¤¿à¤–ित टैग की आवशà¥à¤¯à¤•à¤¤à¤¾ है: %(tags)s"
+
+#: forms.py:249
+#, python-format
+msgid "each tag must be shorter than %(max_chars)d character"
+msgid_plural "each tag must be shorter than %(max_chars)d characters"
+msgstr[0] "पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• लेबल %(max_chars)d अकà¥à¤·à¤°à¥‹à¤‚ से कम होना चाहिà¤"
+msgstr[1] "पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• लेबल %(max_chars)d अकà¥à¤·à¤°à¥‹à¤‚ से कम होना चाहिà¤"
+
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
+
+#: forms.py:294
+msgid "community wiki (karma is not awarded & many others can edit wiki post)"
+msgstr ""
+"सामà¥à¤¦à¤¾à¤¯à¤¿à¤• विकी (करà¥à¤®à¤¾ से नहीं समà¥à¤®à¤¾à¤¨à¤¿à¤¤ किया जायेगा और कई अनà¥à¤¯ विकि पोसà¥à¤Ÿ को संपादित "
+"कर सकते हैं)"
+
+#: forms.py:295
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+"अगर आप सामà¥à¤¦à¤¾à¤¯à¤¿à¤• विकी विकलà¥à¤ª को चà¥à¤¨à¤¤à¥‡ हैं,सवाल और जवाब अंकों को उतà¥à¤ªà¤¨à¥à¤¨ नहीं करते है और "
+"लेखक का नाम नहीं दिखाया जाà¤à¤—ा"
+
+#: forms.py:311
+msgid "update summary:"
+msgstr "सारांश अदà¥à¤¯à¤¤à¤¨:"
+
+#: forms.py:312
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+"अपने पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£ का संकà¥à¤·à¤¿à¤ªà¥à¤¤ सार दरà¥à¤œ करें(उदाहरण के लिठनियत वरà¥à¤¤à¤¨à¥€, वà¥à¤¯à¤¾à¤•à¤°à¤£, शैली में "
+"सà¥à¤§à¤¾à¤°, यह फ़ीलà¥à¤¡ वैकलà¥à¤ªà¤¿à¤• है)"
+
+#: forms.py:386
+msgid "Enter number of points to add or subtract"
+msgstr "जोड़ने या घटाना के लिठअंकों की संखà¥à¤¯à¤¾ को दरà¥à¤œ करे "
+
+#: forms.py:400 const/__init__.py:253
+msgid "approved"
+msgstr "सà¥à¤µà¥€à¤•à¥ƒà¤¤"
+
+#: forms.py:401 const/__init__.py:254
+msgid "watched"
+msgstr "देखते रहे "
+
+#: forms.py:402 const/__init__.py:255
+msgid "suspended"
+msgstr "निलंबित"
+
+#: forms.py:403 const/__init__.py:256
+msgid "blocked"
+msgstr "अवरोधित"
+
+#: forms.py:405
+msgid "administrator"
+msgstr "à¤à¤¡à¤®à¤¿à¤¨à¤¿à¤¸à¥à¤Ÿà¥à¤°à¥‡à¤Ÿà¤°"
+
+#: forms.py:406 const/__init__.py:252
+msgid "moderator"
+msgstr "मधà¥à¤¯à¤¸à¥à¤¥"
+
+#: forms.py:426
+msgid "Change status to"
+msgstr "सà¥à¤¥à¤¿à¤¤à¤¿ को बदलने के लिठ"
+
+#: forms.py:453
+msgid "which one?"
+msgstr "à¤à¤• है जो?"
+
+#: forms.py:474
+msgid "Cannot change own status"
+msgstr "अपनी सà¥à¤¥à¤¿à¤¤à¤¿ को नहीं बदल सकते हैं"
+
+#: forms.py:480
+msgid "Cannot turn other user to moderator"
+msgstr "अनà¥à¤¯ उपयोगकरà¥à¤¤à¤¾ को मधà¥à¤¯à¤¸à¥à¤¥ नहीं बना सकते है"
+
+#: forms.py:487
+msgid "Cannot change status of another moderator"
+msgstr "दूसरे मधà¥à¤¯à¤¸à¥à¤¥ की सà¥à¤¥à¤¿à¤¤à¤¿ को परिवरà¥à¤¤à¤¿à¤¤ नहीं सकते हैं"
+
+#: forms.py:493
+msgid "Cannot change status to admin"
+msgstr "à¤à¤¡à¤®à¤¿à¤¨ की सà¥à¤¥à¤¿à¤¤à¤¿ को परिवरà¥à¤¤à¤¿à¤¤ नहीं कर सकते हैं"
+
+#: forms.py:499
+#, python-format
+msgid ""
+"If you wish to change %(username)s's status, please make a meaningful "
+"selection."
+msgstr ""
+"यदि आप %(username)s की सà¥à¤¥à¤¿à¤¤à¤¿ में परिवरà¥à¤¤à¤¨ करना चाहते हैं,कृपया à¤à¤• अरà¥à¤¥à¤ªà¥‚रà¥à¤£ चà¥à¤¨à¤¾à¤µ करें."
+
+#: forms.py:508
+msgid "Subject line"
+msgstr "विषय पंकà¥à¤¤à¤¿"
+
+#: forms.py:515
+msgid "Message text"
+msgstr "संदेश पाठ"
+
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr "आपका नाम (वैकलà¥à¤ªà¤¿à¤•):"
+
+#: forms.py:531
+msgid "Email:"
+msgstr "ईमेलः"
+
+#: forms.py:533
+msgid "Your message:"
+msgstr "आपका संदेश:"
+
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr ""
+
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr ""
+
+#: forms.py:599
+msgid "ask anonymously"
+msgstr "गà¥à¤®à¤¨à¤¾à¤® रूप से पूछना"
+
+#: forms.py:601
+msgid "Check if you do not want to reveal your name when asking this question"
+msgstr "जाà¤à¤š करें यदि आप सवाल पूछते समय अपना नाम पà¥à¤°à¤•à¤Ÿ नहीं करना चाहते है"
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
+msgid ""
+"You have asked this question anonymously, if you decide to reveal your "
+"identity, please check this box."
+msgstr ""
+"आपने गà¥à¤®à¤¨à¤¾à¤® रूप से इस पà¥à¤°à¤¶à¥à¤¨ को पूछा है,यदि आप अपनी पहचान को उजागर करने का निरà¥à¤£à¤¯ लेते "
+"हैं,इस बॉकà¥à¤¸ की जाà¤à¤š करें."
+
+#: forms.py:773
+msgid "reveal identity"
+msgstr "पहचान पà¥à¤°à¤•à¤Ÿ करे "
+
+#: forms.py:831
+msgid ""
+"Sorry, only owner of the anonymous question can reveal his or her identity, "
+"please uncheck the box"
+msgstr ""
+"कà¥à¤·à¤®à¤¾ करें, केवल अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¤¶à¥à¤¨ के पूछने वाला ही अपने या उसकी पहचान को बता सकते हैं,कृपया "
+"बॉकà¥à¤¸ को अचयनित करे "
+
+#: forms.py:844
+msgid ""
+"Sorry, apparently rules have just changed - it is no longer possible to ask "
+"anonymously. Please either check the \"reveal identity\" box or reload this "
+"page and try editing the question again."
+msgstr ""
+"कà¥à¤·à¤®à¤¾ करें, जाहिर तौर पर नियमों को बदल दिठगठहैं -गà¥à¤®à¤¨à¤¾à¤® रूप से पूछना अब संभव नहीं है. "
+"कृपया \"पहचान पà¥à¤°à¤•à¤Ÿ\" बॉकà¥à¤¸ की जाà¤à¤š करें या इस पृषà¥à¤  को पà¥à¤¨à¤ƒ लोड करे और सवाल को फिर से "
+"संपादन करने की कोशिश करे ."
+
+#: forms.py:888
+msgid "Real name"
+msgstr "असली नाम"
+
+#: forms.py:895
+msgid "Website"
+msgstr "वेबसाइट"
+
+#: forms.py:902
+msgid "City"
+msgstr "शहर"
+
+#: forms.py:911
+msgid "Show country"
+msgstr "देश दिखाà¤à¤"
+
+#: forms.py:916
+msgid "Date of birth"
+msgstr "जनà¥à¤® तिथि"
+
+#: forms.py:917
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr "नहीं दिखाया जाà¤à¤—ा,उमà¥à¤° की गणना करने के लिठउपयोग किया,पà¥à¤°à¤¾à¤°à¥‚प : YYYY-MM-DD"
+
+#: forms.py:923
+msgid "Profile"
+msgstr "रूपरेखा"
+
+#: forms.py:932
+msgid "Screen name"
+msgstr "सà¥à¤•à¥à¤°à¥€à¤¨ नाम"
+
+#: forms.py:963 forms.py:964
+msgid "this email has already been registered, please use another one"
+msgstr "यह ईमेल पहले से ही पंजीकृत किया गया है,कृपया à¤à¤• दूसरे उपयोग करें"
+
+#: forms.py:971
+msgid "Choose email tag filter"
+msgstr "ईमेल टैग फिलà¥à¤Ÿà¤° चà¥à¤¨à¥‡à¤‚"
+
+#: forms.py:1018
+msgid "Asked by me"
+msgstr "मेरे दà¥à¤µà¤¾à¤°à¤¾ पूछा गया"
+
+#: forms.py:1021
+msgid "Answered by me"
+msgstr "मेरे दà¥à¤µà¤¾à¤°à¤¾ उतà¥à¤¤à¤° दिया गया "
+
+#: forms.py:1024
+msgid "Individually selected"
+msgstr "वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त रूप से चयनित"
+
+#: forms.py:1027
+msgid "Entire forum (tag filtered)"
+msgstr "संपूरà¥à¤£ फोरम (फ़िलà¥à¤Ÿà¤°à¥à¤¡ टैग)"
+
+#: forms.py:1031
+msgid "Comments and posts mentioning me"
+msgstr "टिपà¥à¤ªà¤£à¤¿à¤¯à¤¾à¤ और पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ मà¥à¤à¥‡ उलà¥à¤²à¥‡à¤–ित करती है"
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "उपरोकà¥à¤¤ विकलà¥à¤ªà¥‹à¤‚ में से à¤à¤• का चयन करें"
+
+#: forms.py:1115
+msgid "okay, let's try!"
+msgstr "ठीक है,चलो कोशिश करे!"
+
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr "कोई askbot ईमेल नहीं है कृपया, धनà¥à¤¯à¤µà¤¾à¤¦"
+
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
+msgid "about/"
+msgstr "about/"
+
+#: urls.py:42
+msgid "faq/"
+msgstr "faq/"
+
+#: urls.py:43
+msgid "privacy/"
+msgstr "privacy/"
+
+#: urls.py:44
+msgid "help/"
+msgstr "help/"
+
+#: urls.py:46 urls.py:51
+msgid "answers/"
+msgstr "answers/"
+
+#: urls.py:46 urls.py:87 urls.py:212
+msgid "edit/"
+msgstr "edit/"
+
+#: urls.py:51 urls.py:117
+msgid "revisions/"
+msgstr "revisions/"
+
+#: urls.py:61
+msgid "questions"
+msgstr "पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ "
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
+msgid "questions/"
+msgstr "questions/"
+
+#: urls.py:82
+msgid "ask/"
+msgstr "ask/"
+
+#: urls.py:92
+msgid "retag/"
+msgstr "retag/"
+
+#: urls.py:97
+msgid "close/"
+msgstr "close/"
+
+#: urls.py:102
+msgid "reopen/"
+msgstr "reopen/"
+
+#: urls.py:107
+msgid "answer/"
+msgstr "answer/"
+
+#: urls.py:112
+msgid "vote/"
+msgstr "vote/"
+
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgets/"
+
+#: urls.py:158
+msgid "tags/"
+msgstr "tags/"
+
+#: urls.py:201
+msgid "subscribe-for-tags/"
+msgstr "subscribe-for-tags/"
+
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
+msgid "users/"
+msgstr "users/"
+
+#: urls.py:219
+msgid "subscriptions/"
+msgstr "subscriptions/"
+
+#: urls.py:231
+msgid "users/update_has_custom_avatar/"
+msgstr "users/update_has_custom_avatar/"
+
+#: urls.py:236 urls.py:241
+msgid "badges/"
+msgstr "badges/"
+
+#: urls.py:246
+msgid "messages/"
+msgstr "messages/"
+
+#: urls.py:246
+msgid "markread/"
+msgstr "markread/"
+
+#: urls.py:262
+msgid "upload/"
+msgstr "upload/"
+
+#: urls.py:263
+msgid "feedback/"
+msgstr "feedback/"
+
+#: urls.py:305
+msgid "question/"
+msgstr "question/"
+
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
+msgid "account/"
+msgstr "account/"
+
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr "पà¥à¤°à¤µà¥‡à¤¶ नियंतà¥à¤°à¤£ सेटिंगà¥à¤¸"
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr "केवल पंजीकृत उपयोगकरà¥à¤¤à¤¾ फोरम का उपयोग करने की अनà¥à¤®à¤¤à¤¿ दें"
+
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr "बिलà¥à¤²à¤¾ सेटिंग"
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr "अनà¥à¤¶à¤¾à¤¸à¤¿à¤¤: हटाठगठपद हेतॠनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में "
+
+#: conf/badges.py:32
+msgid "Peer Pressure: minimum downvotes for deleted post"
+msgstr "सहकरà¥à¤®à¥€ दबाव: हटाठगठपद हेतॠनà¥à¤¯à¥‚नतम वोट विपकà¥à¤· में"
+
+#: conf/badges.py:41
+msgid "Teacher: minimum upvotes for the answer"
+msgstr "शिकà¥à¤·à¤•: जवाब देने के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:50
+msgid "Nice Answer: minimum upvotes for the answer"
+msgstr "सूकà¥à¤·à¥à¤® उतà¥à¤¤à¤°: जवाब देने के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:59
+msgid "Good Answer: minimum upvotes for the answer"
+msgstr "अचà¥à¤›à¤¾ उतà¥à¤¤à¤°: जवाब देने के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:68
+msgid "Great Answer: minimum upvotes for the answer"
+msgstr "उपयà¥à¤•à¥à¤¤ उतà¥à¤¤à¤°:जवाब देने के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:77
+msgid "Nice Question: minimum upvotes for the question"
+msgstr "सूकà¥à¤·à¥à¤® पà¥à¤°à¤¶à¥à¤¨: सवाल के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:86
+msgid "Good Question: minimum upvotes for the question"
+msgstr "अचà¥à¤›à¤¾ पà¥à¤°à¤¶à¥à¤¨: पà¥à¤°à¤¶à¥à¤¨ के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:95
+msgid "Great Question: minimum upvotes for the question"
+msgstr "उपयà¥à¤•à¥à¤¤ पà¥à¤°à¤¶à¥à¤¨: पà¥à¤°à¤¶à¥à¤¨ के लिठनà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:104
+msgid "Popular Question: minimum views"
+msgstr "लोकपà¥à¤°à¤¿à¤¯ पà¥à¤°à¤¶à¥à¤¨: कम से कम बार देखा गया"
+
+#: conf/badges.py:113
+msgid "Notable Question: minimum views"
+msgstr "उलà¥à¤²à¥‡à¤–नीय पà¥à¤°à¤¶à¥à¤¨: कम से कम बार देखा गया"
+
+#: conf/badges.py:122
+msgid "Famous Question: minimum views"
+msgstr "मशहूर पà¥à¤°à¤¶à¥à¤¨: कम से कम बार देखा गया"
+
+#: conf/badges.py:131
+msgid "Self-Learner: minimum answer upvotes"
+msgstr "सà¥à¤µ-शिकà¥à¤·à¤¾à¤°à¥à¤¥à¥€: नà¥à¤¯à¥‚नतम जवाब देने वाला वोट पकà¥à¤· में"
+
+#: conf/badges.py:140
+msgid "Civic Duty: minimum votes"
+msgstr "पौर करà¥à¤¤à¤µà¥à¤¯: कम से कम वोट"
+
+#: conf/badges.py:149
+msgid "Enlightened Duty: minimum upvotes"
+msgstr "पà¥à¤°à¤¬à¥à¤¦à¥à¤§ शà¥à¤²à¥à¤•: नà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:158
+msgid "Guru: minimum upvotes"
+msgstr "गà¥à¤°à¥: नà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:167
+msgid "Necromancer: minimum upvotes"
+msgstr "पà¥à¤°à¥‡à¤¤-साधक: नà¥à¤¯à¥‚नतम वोट पकà¥à¤· में"
+
+#: conf/badges.py:176
+msgid "Necromancer: minimum delay in days"
+msgstr "पà¥à¤°à¥‡à¤¤-साधक: दिन में नà¥à¤¯à¥‚नतम देरी"
+
+#: conf/badges.py:185
+msgid "Associate Editor: minimum number of edits"
+msgstr "सहयोगी संपादक: संपादनों की नà¥à¤¯à¥‚नतम संखà¥à¤¯à¤¾"
+
+#: conf/badges.py:194
+msgid "Favorite Question: minimum stars"
+msgstr "पसंदीदा पà¥à¤°à¤¶à¥à¤¨: नà¥à¤¯à¥‚नतम सितारों"
+
+#: conf/badges.py:203
+msgid "Stellar Question: minimum stars"
+msgstr "नकà¥à¤·à¤¤à¥à¤°à¥€à¤¯ पà¥à¤°à¤¶à¥à¤¨: नà¥à¤¯à¥‚नतम सितारों"
+
+#: conf/badges.py:212
+msgid "Commentator: minimum comments"
+msgstr "टिपà¥à¤ªà¤£à¥€à¤•à¤¾à¤°: नà¥à¤¯à¥‚नतम टिपà¥à¤ªà¤£à¤¿à¤¯à¤¾à¤"
+
+#: conf/badges.py:221
+msgid "Taxonomist: minimum tag use count"
+msgstr "वरà¥à¤—ीकरण शासà¥à¤¤à¥à¤°à¥€: कम से कम इसà¥à¤¤à¥‡à¤®à¤¾à¤² किये गठटैग की गणना"
+
+#: conf/badges.py:230
+msgid "Enthusiast: minimum days"
+msgstr "उतà¥à¤¸à¤¾à¤¹à¥€: कम दिन"
+
+#: conf/email.py:15
+msgid "Email and email alert settings"
+msgstr "ईमेल और ईमेल चेतावनी सेटिंग"
+
+#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr "ईमेल के विषय पंकà¥à¤¤à¤¿ के लिठउपसरà¥à¤—"
+
+#: conf/email.py:26
+msgid ""
+"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
+"value entered here will overridethe default."
+msgstr ""
+"यह EMAIL_SUBJECT_PREFIX django सेटिंग से डिफ़ॉलà¥à¤Ÿ सेटिंग लेता है.दरà¥à¤œ किया गया मान से "
+"डिफ़ॉलà¥à¤Ÿ के ऊपर लिख देगा."
+
+#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "ईमेल और ईमेल चेतावनी सेटिंग"
+
+#: conf/email.py:47
+msgid "Maximum number of news entries in an email alert"
+msgstr "ईमेल चेतावनी में समाचार पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¥‹à¤‚ की अधिकतम संखà¥à¤¯à¤¾"
+
+#: conf/email.py:57
+msgid "Default notification frequency all questions"
+msgstr "वà¥à¤¯à¤¤à¤¿à¤•à¥à¤°à¤® अधिसूचना सारे पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ की आवृतà¥à¤¤à¤¿ करता है"
+
+#: conf/email.py:59
+msgid "Option to define frequency of emailed updates for: all questions."
+msgstr "सभी सवालों: के लिठईमेल की अदà¥à¤¯à¤¤à¤¨ की आवृतà¥à¤¤à¤¿ को परिभाषित करने का विकलà¥à¤ª होगा."
+
+#: conf/email.py:71
+msgid "Default notification frequency questions asked by the user"
+msgstr "उपयोगकरà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ पूछे जाने वाले पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के वà¥à¤¯à¤¤à¤¿à¤•à¥à¤°à¤® अधिसूचना की आवृतà¥à¤¤à¤¿"
+
+#: conf/email.py:73
+msgid ""
+"Option to define frequency of emailed updates for: Question asked by the "
+"user."
+msgstr ""
+"उपयोगकरà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ पूछे जाने वाले सभी पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ : के लिठईमेल की अदà¥à¤¯à¤¤à¤¨ की आवृतà¥à¤¤à¤¿ को "
+"परिभाषित करने का विकलà¥à¤ª होगा."
+
+#: conf/email.py:85
+msgid "Default notification frequency questions answered by the user"
+msgstr "उपयोगकरà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ सवालों के जवाब की वà¥à¤¯à¤¤à¤¿à¤•à¥à¤°à¤® अधिसूचना की आवृतà¥à¤¤à¤¿"
+
+#: conf/email.py:87
+msgid ""
+"Option to define frequency of emailed updates for: Question answered by the "
+"user."
+msgstr ""
+"उपयोगकरà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ सवालों के जवाब : के लिठईमेल की अदà¥à¤¯à¤¤à¤¨ की आवृतà¥à¤¤à¤¿ को परिभाषित करने "
+"का विकलà¥à¤ª होगा."
+
+#: conf/email.py:99
+msgid ""
+"Default notification frequency questions individually "
+"selected by the user"
+msgstr ""
+
+#: conf/email.py:102
+msgid ""
+"Option to define frequency of emailed updates for: Question individually "
+"selected by the user."
+msgstr ""
+
+#: conf/email.py:114
+msgid ""
+"Default notification frequency for mentions and "
+"comments"
+msgstr ""
+
+#: conf/email.py:117
+msgid ""
+"Option to define frequency of emailed updates for: Mentions and comments."
+msgstr ""
+
+#: conf/email.py:128
+msgid "Send periodic reminders about unanswered questions"
+msgstr "अनà¥à¤¤à¥à¤¤à¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के बारे में आवरà¥à¤¤à¥€ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¥‹à¤‚ को भेजें"
+
+#: conf/email.py:130
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_unanswered_question_reminders\" (for example, via a cron job "
+"- with an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:143
+msgid "Days before starting to send reminders about unanswered questions"
+msgstr "पहले दिनों में अनà¥à¤¤à¥à¤¤à¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के बारे में अनà¥à¤¸à¥à¤®à¤¾à¤°à¤• भेजना शà¥à¤°à¥‚ करे"
+
+#: conf/email.py:154
+msgid ""
+"How often to send unanswered question reminders (in days between the "
+"reminders sent)."
+msgstr "अनà¥à¤¤à¥à¤¤à¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¥‹à¤‚ को कितनी बार भेजे (दिनों के बीच में अनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¥‹à¤‚ को भेजे)."
+
+#: conf/email.py:166
+msgid "Max. number of reminders to send about unanswered questions"
+msgstr "अनà¥à¤¤à¥à¤¤à¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के बारे में भेजे गठअनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¥‹à¤‚ की अधिकतम संखà¥à¤¯à¤¾"
+
+#: conf/email.py:177
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: conf/email.py:179
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:192
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:203
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:215
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:227
+msgid "Require email verification before allowing to post"
+msgstr "पास पोसà¥à¤Ÿ करने के लिठअनà¥à¤®à¤¤à¤¿ देने से पहले ईमेल के सतà¥à¤¯à¤¾à¤ªà¤¨ की आवशà¥à¤¯à¤•à¤¤à¤¾ है"
+
+#: conf/email.py:228
+msgid ""
+"Active email verification is done by sending a verification key in email"
+msgstr "सकà¥à¤°à¤¿à¤¯ ईमेल सतà¥à¤¯à¤¾à¤ªà¤¨ ईमेल में à¤à¤• सतà¥à¤¯à¤¾à¤ªà¤¨ कà¥à¤‚जी भेजकर किया जाता है"
+
+#: conf/email.py:237
+msgid "Allow only one account per email address"
+msgstr "ईमेल पते के पà¥à¤°à¤¤à¤¿ केवल à¤à¤• खाते की अनà¥à¤®à¤¤à¤¿ दें"
+
+#: conf/email.py:246
+msgid "Fake email for anonymous user"
+msgstr "अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾ के लिठफरà¥à¤œà¥€ ईमेल"
+
+#: conf/email.py:247
+msgid "Use this setting to control gravatar for email-less user"
+msgstr ""
+"कम ईमेल उपयोगकरà¥à¤¤à¤¾ के लिठgravatar को नियंतà¥à¤°à¤¿à¤¤ करने के लिठइस सेटिंग का उपयोग करे "
+
+#: conf/email.py:256
+msgid "Allow posting questions by email"
+msgstr "ईमेल के दà¥à¤µà¤¾à¤°à¤¾ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के पोसà¥à¤Ÿ करने की अनà¥à¤®à¤¤à¤¿"
+
+#: conf/email.py:258
+msgid ""
+"Before enabling this setting - please fill out IMAP settings in the settings."
+"py file"
+msgstr ""
+"इस सेटिंग को सकà¥à¤·à¤® करने से पहले -कृपया settings.py फ़ाइल में IMAP सेटिंग को पहले भरे "
+
+#: conf/email.py:269
+msgid "Replace space in emailed tags with dash"
+msgstr "ईमेल टैगà¥à¤¸ में सà¥à¤¥à¤¾à¤¨ को डैश से बदलें"
+
+#: conf/email.py:271
+msgid ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
+msgstr ""
+"यह सेटिंग ईमेल दà¥à¤µà¤¾à¤°à¤¾ अधिसूचित पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के विषय पंकà¥à¤¤à¤¿ में लिखा टैग के लिठलागू होता है "
+
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "ईमेल के दà¥à¤µà¤¾à¤°à¤¾ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के पोसà¥à¤Ÿ करने की अनà¥à¤®à¤¤à¤¿"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr ""
+
+#: conf/external_keys.py:19
+msgid "Google site verification key"
+msgstr "गूगल साइट सतà¥à¤¯à¤¾à¤ªà¤¨ कà¥à¤‚जी"
+
+#: conf/external_keys.py:21
+#, python-format
+msgid ""
+"This key helps google index your site please obtain is at <a href=\"%(url)s?"
+"hl=%(lang)s\">google webmasters tools site</a>"
+msgstr ""
+"यह कà¥à¤‚जी गूगल को आपकी साइट का सूचकांक करने में मदद करता है कृपया <a href=\"%(url)s?hl="
+"%(lang)s\">गà¥à¤—ल वेबमासà¥à¤Ÿà¤°à¥à¤¸ उपकरण साइट</a> से पà¥à¤°à¤¾à¤ªà¥à¤¤ करे "
+
+#: conf/external_keys.py:36
+msgid "Google Analytics key"
+msgstr "गूगल विशà¥à¤²à¥‡à¤·à¤¿à¤•à¥€ कà¥à¤‚जी"
+
+#: conf/external_keys.py:38
+#, python-format
+msgid ""
+"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
+"use Google Analytics to monitor your site"
+msgstr ""
+"<a href=\"%(url)s\">गूगल विशà¥à¤²à¥‡à¤·à¤¿à¤•à¥€</a> साईट पर पà¥à¤°à¤¾à¤ªà¥à¤¤ करे,अगर आप गूगल विशà¥à¤²à¥‡à¤·à¤¿à¤•à¥€ का "
+"उपयोग करके अपनी साइट की निगरानी करना चाहते हैं"
+
+#: conf/external_keys.py:51
+msgid "Enable recaptcha (keys below are required)"
+msgstr " reCAPTCHA (नीचे कà¥à¤‚जी की आवशà¥à¤¯à¤•à¤¤à¤¾ है) सकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/external_keys.py:62
+msgid "Recaptcha public key"
+msgstr "ReCAPTCHA सारà¥à¤µà¤œà¤¨à¤¿à¤• कà¥à¤‚जी"
+
+#: conf/external_keys.py:70
+msgid "Recaptcha private key"
+msgstr "ReCAPTCHA निजी कà¥à¤‚जी"
+
+#: conf/external_keys.py:72
+#, python-format
+msgid ""
+"Recaptcha is a tool that helps distinguish real people from annoying spam "
+"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
+"a>"
+msgstr ""
+"ReCAPTCHA à¤à¤• उपकरण है कि कषà¥à¤Ÿà¤ªà¥à¤°à¤¦ सà¥à¤ªà¥ˆà¤® रोबोटों से वासà¥à¤¤à¤µà¤¿à¤• लोगों में से भेद करने में मदद "
+"करता है.कृपया <a href=\"%(url)s\">%(url)s</a> पर à¤à¤• सारà¥à¤µà¤œà¤¨à¤¿à¤• कà¥à¤‚जी और इसे पà¥à¤°à¤¾à¤ªà¥à¤¤ "
+"करे "
+
+#: conf/external_keys.py:84
+msgid "Facebook public API key"
+msgstr "फेसबà¥à¤• सारà¥à¤µà¤œà¤¨à¤¿à¤• à¤à¤ªà¥€à¤†à¤ˆ कà¥à¤‚जी"
+
+#: conf/external_keys.py:86
+#, python-format
+msgid ""
+"Facebook API key and Facebook secret allow to use Facebook Connect login "
+"method at your site. Please obtain these keys at <a href=\"%(url)s"
+"\">facebook create app</a> site"
+msgstr ""
+" फेसबà¥à¤• à¤à¤ªà¥€à¤†à¤ˆ कà¥à¤‚जी और गà¥à¤ªà¥à¤¤ फेसबà¥à¤• अपनी साइट पर फेसबà¥à¤• कनेकà¥à¤Ÿ लॉगिन विधि का उपयोग करने के "
+"लिठअनà¥à¤®à¤¤à¤¿ देते हैं. कृपया <a href=\"%(url)s\">facebook create app</a>साईट पर इन "
+"कà¥à¤‚जी को पà¥à¤°à¤¾à¤ªà¥à¤¤ करें"
+
+#: conf/external_keys.py:99
+msgid "Facebook secret key"
+msgstr "फेसबà¥à¤• गà¥à¤ªà¥à¤¤ कà¥à¤‚जी"
+
+#: conf/external_keys.py:107
+msgid "Twitter consumer key"
+msgstr "टà¥à¤µà¤¿à¤Ÿà¤° उपभोकà¥à¤¤à¤¾ कà¥à¤‚जी"
+
+#: conf/external_keys.py:109
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
+"a>"
+msgstr ""
+"कृपया <a href=\"%(url)s\">twitter applications site</a> पर अपने फोरम का "
+"पंजीकरण करे "
+
+#: conf/external_keys.py:120
+msgid "Twitter consumer secret"
+msgstr "टà¥à¤µà¤¿à¤Ÿà¤° उपभोकà¥à¤¤à¤¾ रहसà¥à¤¯"
+
+#: conf/external_keys.py:128
+msgid "LinkedIn consumer key"
+msgstr "LinkedIn उपभोकà¥à¤¤à¤¾ कà¥à¤‚जी"
+
+#: conf/external_keys.py:130
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr ""
+"कृपया <a href=\"%(url)s\">LinkedIn developer site</a> पर अपने फोरम का पंजीकरण "
+"करे "
+
+#: conf/external_keys.py:141
+msgid "LinkedIn consumer secret"
+msgstr "LinkedIn उपभोकà¥à¤¤à¤¾ रहसà¥à¤¯"
+
+#: conf/external_keys.py:149
+msgid "ident.ca consumer key"
+msgstr "ident.ca उपभोकà¥à¤¤à¤¾ कà¥à¤‚जी"
+
+#: conf/external_keys.py:151
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
+msgstr ""
+"<a href=\"%(url)s\">Identi.ca applications site</a>पर अपने फोरम का पंजीकरण करे "
+
+#: conf/external_keys.py:162
+msgid "ident.ca consumer secret"
+msgstr "ident.ca उपभोकà¥à¤¤à¤¾ रहसà¥à¤¯"
+
+#: conf/flatpages.py:11
+msgid "Flatpages - about, privacy policy, etc."
+msgstr "flatpages -बारे में, गोपनीयता नीति, आदि."
+
+#: conf/flatpages.py:19
+msgid "Text of the Q&A forum About page (html format)"
+msgstr "Q&A फोरम के बारे में पृषà¥à¤  (HTML सà¥à¤µà¤°à¥‚प) के टेकà¥à¤¸à¥à¤Ÿ "
+
+#: conf/flatpages.py:22
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"about\" page to check your input."
+msgstr ""
+"सहेजे, \"बारे में\" पृषà¥à¤  पर अपने इनपà¥à¤Ÿ की जाà¤à¤š करने के लिà¤<a href=\"http://validator.w3."
+"org/\">HTML Validator का पà¥à¤°à¤¯à¥‹à¤—</a > करे ."
+
+#: conf/flatpages.py:32
+msgid "Text of the Q&A forum FAQ page (html format)"
+msgstr "Q&A फोरम FAQ पृषà¥à¤Ÿ (HTML सà¥à¤µà¤°à¥‚प) का टेकà¥à¤¸à¥à¤Ÿ"
+
+#: conf/flatpages.py:35
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"faq\" page to check your input."
+msgstr ""
+"सहेजे, \"faq\" पृषà¥à¤  पर अपने इनपà¥à¤Ÿ की जाà¤à¤š करने के लिà¤<a href=\"http://validator.w3."
+"org/\">HTML Validator का पà¥à¤°à¤¯à¥‹à¤—</a > करे ."
+
+#: conf/flatpages.py:46
+msgid "Text of the Q&A forum Privacy Policy (html format)"
+msgstr "Q&A फोरम गोपनीयता नीति (HTML सà¥à¤µà¤°à¥‚प) का टेकà¥à¤¸à¥à¤Ÿ "
+
+#: conf/flatpages.py:49
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"privacy\" page to check your input."
+msgstr ""
+"सहेजे, \"गोपनीयता\" पृषà¥à¤  पर अपने इनपà¥à¤Ÿ की जाà¤à¤š करने के लिà¤<a href=\"http://validator."
+"w3.org/\">HTML Validator का पà¥à¤°à¤¯à¥‹à¤—</a > करे ."
+
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
+msgstr ""
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr ""
+" à¤à¤®à¥à¤¬à¥‡à¤¡ वीडियो को सकà¥à¤°à¤¿à¤¯ करें.नोट: कृपया पढ़ें <a href=\"%(url)s> इस </ a> के पहले</ "
+"em> पढ़ें."
+
+#: conf/forum_data_rules.py:33
+msgid "Check to enable community wiki feature"
+msgstr "सामà¥à¤¦à¤¾à¤¯à¤¿à¤• विकी सà¥à¤µà¤¿à¤§à¤¾ को सकà¥à¤·à¤® करने के लिठजाà¤à¤š करें"
+
+#: conf/forum_data_rules.py:42
+msgid "Allow asking questions anonymously"
+msgstr "गà¥à¤®à¤¨à¤¾à¤® पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को पूछने की अनà¥à¤®à¤¤à¤¿ दें"
+
+#: conf/forum_data_rules.py:44
+msgid ""
+"Users do not accrue reputation for anonymous questions and their identity is "
+"not revealed until they change their mind"
+msgstr ""
+"उपयोगकरà¥à¤¤à¤¾ अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के लिठपà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾ देय नहीं होंगे और उनकी पहचान नहीं पà¥à¤°à¤—ट होता है "
+"और उनकी पहचान नहीं पà¥à¤°à¤—ट होता है जब तक वे अपने मन बदलते हैं"
+
+#: conf/forum_data_rules.py:56
+msgid "Allow posting before logging in"
+msgstr "लॉग इन करने से पहले पोसà¥à¤Ÿà¤¿à¤‚ग की अनà¥à¤®à¤¤à¤¿ दे"
+
+#: conf/forum_data_rules.py:58
+msgid ""
+"Check if you want to allow users start posting questions or answers before "
+"logging in. Enabling this may require adjustments in the user login system "
+"to check for pending posts every time the user logs in. The builtin Askbot "
+"login system supports this feature."
+msgstr ""
+"जाà¤à¤š करें यदि आप उपयोगकरà¥à¤¤à¤¾à¤“ं को अंदर पà¥à¤°à¤µà¥‡à¤¶ करने से पहले पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के या जवाब पोसà¥à¤Ÿà¤¿à¤‚ग शà¥à¤°à¥‚ करने "
+"की अनà¥à¤®à¤¤à¤¿ चाहते हैं.इसे सकà¥à¤·à¤® करने से उपयोगकरà¥à¤¤à¤¾ लॉगिन पà¥à¤°à¤£à¤¾à¤²à¥€ में समायोजन लंबित पदों के "
+"लिठहर समय उपयोगकरà¥à¤¤à¤¾ में लॉग की जाà¤à¤š करने की आवशà¥à¤¯à¤•à¤¤à¤¾ हो सकती है.Builtin Askbot "
+"लॉगिन पà¥à¤°à¤£à¤¾à¤²à¥€ इस सà¥à¤µà¤¿à¤§à¤¾ का समरà¥à¤¥à¤¨ करता है."
+
+#: conf/forum_data_rules.py:73
+msgid "Allow swapping answer with question"
+msgstr "सवाल के साथ जवाब के सà¥à¤µà¥ˆà¤ªà¤¿à¤‚ग की अनà¥à¤®à¤¤à¤¿ दें"
+
+#: conf/forum_data_rules.py:75
+msgid ""
+"This setting will help import data from other forums such as zendesk, when "
+"automatic data import fails to detect the original question correctly."
+msgstr ""
+"यह सेटिंग zendesk जैसे अनà¥à¤¯ फोरम से डेटा को आयात करने में मदद मिलेगी,जब सà¥à¤µà¤¤: डेटा आयात "
+"करने के लिठमौलिक सवाल का सही ढंग से पता लगाने में विफल रहता है."
+
+#: conf/forum_data_rules.py:87
+msgid "Maximum length of tag (number of characters)"
+msgstr "टैग की अधिकतम लंबाई (अकà¥à¤·à¤°à¥‹à¤‚ की संखà¥à¤¯à¤¾)"
+
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "शीरà¥à¤·à¤• की अधिकतम लंबाई (अकà¥à¤·à¤°à¥‹à¤‚ की संखà¥à¤¯à¤¾)"
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "पà¥à¤°à¤¶à¥à¤¨ शरीर का नà¥à¤¯à¥‚नतम लंबाई (वरà¥à¤£à¥‹à¤‚ की संखà¥à¤¯à¤¾)"
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "जवाब शरीर की नà¥à¤¯à¥‚नतम लमà¥à¤¬à¤¾à¤ˆ (वरà¥à¤£à¥‹à¤‚ की संखà¥à¤¯à¤¾)"
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "लेबल की आवशà¥à¤¯à¤•à¤¤à¤¾"
+
+#: conf/forum_data_rules.py:135
+msgid "Mandatory tags"
+msgstr "अनिवारà¥à¤¯ टैग"
+
+#: conf/forum_data_rules.py:138
+msgid ""
+"At least one of these tags will be required for any new or newly edited "
+"question. A mandatory tag may be wildcard, if the wildcard tags are active."
+msgstr ""
+"कम से कम इन टैग का कोई नया या नठसंपादित सवाल के लिठआवशà¥à¤¯à¤• हो सकती है .अनिवारà¥à¤¯ टैग "
+"वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ का हो सकता है , अगर वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ टैग सकà¥à¤°à¤¿à¤¯ है."
+
+#: conf/forum_data_rules.py:150
+msgid "Force lowercase the tags"
+msgstr "टैग का लोअरकेस में करे "
+
+#: conf/forum_data_rules.py:152
+msgid ""
+"Attention: after checking this, please back up the database, and run a "
+"management command: <code>python manage.py fix_question_tags</code> to "
+"globally rename the tags"
+msgstr ""
+"धà¥à¤¯à¤¾à¤¨ दें: इस जाà¤à¤š के बाद, कृपया डेटाबेस के बैकअप करे , और à¤à¤• पà¥à¤°à¤¬à¤‚धन कमांड चलाà¤à¤: "
+"<code>python manage.py fix_question_tags</code> टैग को गà¥à¤²à¥‹à¤¬à¤²à¥€ पà¥à¤¨à¤ƒà¤¨à¤¾à¤®à¤•à¤°à¤£ करे "
+
+#: conf/forum_data_rules.py:166
+msgid "Format of tag list"
+msgstr "टैग सूची का पà¥à¤°à¤¾à¤°à¥‚प"
+
+#: conf/forum_data_rules.py:168
+msgid ""
+"Select the format to show tags in, either as a simple list, or as a tag cloud"
+msgstr ""
+"पà¥à¤°à¤¾à¤°à¥‚प का चयन या तो à¤à¤• साधारण सूची के रूप या à¤à¤• टैग कà¥à¤²à¥Œà¤¡ में, करके टैग को दिखाà¤à¤‚"
+
+#: conf/forum_data_rules.py:180
+msgid "Use wildcard tags"
+msgstr "वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ टैग का पà¥à¤°à¤¯à¥‹à¤— करें"
+
+#: conf/forum_data_rules.py:182
+msgid ""
+"Wildcard tags can be used to follow or ignore many tags at once, a valid "
+"wildcard tag has a single wildcard at the very end"
+msgstr ""
+"वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ टैग का इसà¥à¤¤à¥‡à¤®à¤¾à¤² अनà¥à¤¸à¤°à¤£ करने या कई टैग की अनदेखी करने के लिठकिया जा सकता है,"
+"वैध वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ टैग के सबसे अंत में à¤à¤•à¤² वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ होता है."
+
+#: conf/forum_data_rules.py:195
+msgid "Default max number of comments to display under posts"
+msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ के तहत पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ करने के लिठटिपà¥à¤ªà¤£à¥€ की डिफ़ॉलà¥à¤Ÿ रूप से अधिकतम संखà¥à¤¯à¤¾"
+
+#: conf/forum_data_rules.py:206
+#, python-format
+msgid "Maximum comment length, must be < %(max_len)s"
+msgstr "अधिकतम टिपà¥à¤ªà¤£à¥€ की लंबाई < %(max_len)s हो सकती है."
+
+#: conf/forum_data_rules.py:216
+msgid "Limit time to edit comments"
+msgstr "टिपà¥à¤ªà¤£à¤¿à¤¯à¥‹à¤‚ के संपादित करने के लिठसमय सीमा"
+
+#: conf/forum_data_rules.py:218
+msgid "If unchecked, there will be no time limit to edit the comments"
+msgstr "अगर अनियंतà¥à¤°à¤¿à¤¤ हो तो , वहाठकोई भी समय सीमा से टिपà¥à¤ªà¤£à¥€ संपादित हो सकता है "
+
+#: conf/forum_data_rules.py:229
+msgid "Minutes allowed to edit a comment"
+msgstr "कारà¥à¤¯à¤µà¥ƒà¤¤à¥à¤¤ तक कोई टिपà¥à¤ªà¤£à¥€ संपादित को करने की अनà¥à¤®à¤¤à¤¿"
+
+#: conf/forum_data_rules.py:230
+msgid "To enable this setting, check the previous one"
+msgstr "इस सेटिंग को सकà¥à¤·à¤® करने के लिà¤, पिछले जाà¤à¤š करें"
+
+#: conf/forum_data_rules.py:239
+msgid "Save comment by pressing <Enter> key"
+msgstr "<Enter> कà¥à¤‚जी दबाकर टिपà¥à¤ªà¤£à¥€ सहेजें"
+
+#: conf/forum_data_rules.py:248
+msgid "Minimum length of search term for Ajax search"
+msgstr "Ajax खोज के लिठखोज शबà¥à¤¦ का नà¥à¤¯à¥‚नतम लंबाई"
+
+#: conf/forum_data_rules.py:249
+msgid "Must match the corresponding database backend setting"
+msgstr "संगत डेटाबेस के बैकà¤à¤‚ड सेटिंग से मेल खानी चाहिà¤"
+
+#: conf/forum_data_rules.py:258
+msgid "Do not make text query sticky in search"
+msgstr "टेकà¥à¤¸à¥à¤Ÿ कà¥à¤µà¥‡à¤°à¥€ खोज में सà¥à¤Ÿà¤¿à¤•à¥€ मत बनाओ"
+
+#: conf/forum_data_rules.py:260
+msgid ""
+"Check to disable the \"sticky\" behavior of the search query. This may be "
+"useful if you want to move the search bar away from the default position or "
+"do not like the default sticky behavior of the text search query."
+msgstr ""
+"सरà¥à¤š कà¥à¤µà¥‡à¤°à¥€ के \"सà¥à¤¤à¤¿à¤šà¥à¤•à¥à¤¯ \" वà¥à¤¯à¤µà¤¹à¤¾à¤° को निषà¥à¤•à¥à¤°à¤¿à¤¯ करने के लिठजाà¤à¤š करें.यह उपयोगी हो सकता "
+"है.अगर आप सरà¥à¤š बार को डिफ़ॉलà¥à¤Ÿ सà¥à¤¥à¤¿à¤¤à¤¿ से दूर ले जाà¤à¤ या टेकà¥à¤¸à¥à¤Ÿ खोज कà¥à¤µà¥‡à¤°à¥€ के डिफ़ॉलà¥à¤Ÿ सà¥à¤Ÿà¤¿à¤•à¥€ "
+"वà¥à¤¯à¤µà¤¹à¤¾à¤° को पसंद नहीं करना चाहते हो."
+
+#: conf/forum_data_rules.py:273
+msgid "Maximum number of tags per question"
+msgstr "पà¥à¤°à¤¶à¥à¤¨ के अनà¥à¤¸à¤¾à¤° टैग की अधिकतम संखà¥à¤¯à¤¾"
+
+#: conf/forum_data_rules.py:285
+msgid "Number of questions to list by default"
+msgstr " तयशà¥à¤¦à¤¾ रूप से पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ के संखà¥à¤¯à¤¾ की सूची"
+
+#: conf/forum_data_rules.py:295
+msgid "What should \"unanswered question\" mean?"
+msgstr "\"अनà¥à¤¤à¥à¤¤à¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨\" का कà¥à¤¯à¤¾ मतलब होना चाहिà¤?"
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "कूटशबà¥à¤¦ लॉगिन के लिठLDAP सतà¥à¤¯à¤¾à¤ªà¤¨ का उपयोग करें"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "LDAP सेवा पà¥à¤°à¤¦à¤¾à¤¤à¤¾ नाम"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "LDAP सेवा पà¥à¤°à¤¦à¤¾à¤¤à¤¾ नाम"
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "सामानà¥à¤¯ बाईं साइडबार"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "बाईं साइडबार सकà¥à¤·à¤® करें"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr "बाईं साइडबार के लिठHTML"
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/license.py:13
+#, fuzzy
+msgid "Content License"
+msgstr "विषयवसà¥à¤¤à¥ LicensContent लाइसेंस "
+
+#: conf/license.py:21
+msgid "Show license clause in the site footer"
+msgstr "साइट पादलेख में लाइसेंस खंड दिखाà¤à¤"
+
+#: conf/license.py:30
+msgid "Short name for the license"
+msgstr "लाइसेंस के लिठछोटी नाम"
+
+#: conf/license.py:39
+msgid "Full name of the license"
+msgstr "लाइसेंस का पूरा नाम"
+
+#: conf/license.py:40
+msgid "Creative Commons Attribution Share Alike 3.0"
+msgstr "कà¥à¤°à¤¿à¤à¤Ÿà¤¿à¤µ कॉमनà¥à¤¸ à¤à¤Ÿà¥à¤°à¤¿à¤¬à¥à¤¯à¥‚शन ShareAlike 3.0"
+
+#: conf/license.py:48
+msgid "Add link to the license page"
+msgstr "लाइसेंस पृषà¥à¤  के लिठलिंक जोड़ें"
+
+#: conf/license.py:57
+msgid "License homepage"
+msgstr "लाइसेंस मà¥à¤–पृषà¥à¤ "
+
+#: conf/license.py:59
+msgid "URL of the official page with all the license legal clauses"
+msgstr "सभी लाइसेंस कानूनी खंड के साथ आधिकारिक पृषà¥à¤  का यूआरà¤à¤²"
+
+#: conf/license.py:69
+msgid "Use license logo"
+msgstr "लाइसेंस लोगो का पà¥à¤°à¤¯à¥‹à¤— करें"
+
+#: conf/license.py:78
+msgid "License logo image"
+msgstr "लाइसेंस लोगो छवि"
+
+#: conf/login_providers.py:13
+msgid "Login provider setings"
+msgstr "लॉगइन पà¥à¤°à¤¦à¤¾à¤¤à¤¾ सेटिंगà¥à¤¸"
+
+#: conf/login_providers.py:22
+msgid ""
+"Show alternative login provider buttons on the password \"Sign Up\" page"
+msgstr "कूटशबà¥à¤¦ \"साइन अप\" पृषà¥à¤  पर वैकलà¥à¤ªà¤¿à¤• लॉगिन पà¥à¤°à¤¦à¤¾à¤¤à¤¾ बटन को दरà¥à¤¶à¤¾à¤ "
+
+#: conf/login_providers.py:31
+msgid "Always display local login form and hide \"Askbot\" button."
+msgstr "हमेशा सà¥à¤¥à¤¾à¤¨à¥€à¤¯ पà¥à¤°à¤µà¥‡à¤¶ फारà¥à¤® को पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ करे और \"Askbot\" बटन छà¥à¤ªà¤¾à¤à¤."
+
+#: conf/login_providers.py:40
+msgid "Activate to allow login with self-hosted wordpress site"
+msgstr "सà¥à¤µà¤¯à¤‚ दà¥à¤µà¤¾à¤°à¤¾ होसà¥à¤Ÿ किठWordPress साइट के साथ लॉगिन की अनà¥à¤®à¤¤à¤¿ के लिठसकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/login_providers.py:41
+msgid ""
+"to activate this feature you must fill out the wordpress xml-rpc setting "
+"bellow"
+msgstr ""
+"इस सà¥à¤µà¤¿à¤§à¤¾ को सकà¥à¤°à¤¿à¤¯ करने के लिठआपको WordPress XML-RPC bellow सेटिंग में भरना होगा"
+
+#: conf/login_providers.py:50
+msgid ""
+"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
+"xmlrpc.php"
+msgstr ""
+" WordPress यूआरà¤à¤² के साथ XML-RPC के लिà¤, http://mysite.com/xmlrpc.php पर "
+"सामानà¥à¤¯ रूप से भरे "
+
+#: conf/login_providers.py:51
+msgid ""
+"To enable, go to Settings->Writing->Remote Publishing and check the box for "
+"XML-RPC"
+msgstr ""
+"सकà¥à¤·à¤® करने के लिà¤, Settings->Writing->Remote Publishing पर जाये और XML-RPC के लिठ"
+"चेक बॉकà¥à¤¸"
+
+#: conf/login_providers.py:60
+msgid "Upload your icon"
+msgstr "अपने आइकन अपलोड करें"
+
+#: conf/login_providers.py:90
+#, python-format
+msgid "Activate %(provider)s login"
+msgstr "%(provider)s लॉगिन सकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/login_providers.py:95
+#, python-format
+msgid ""
+"Note: to really enable %(provider)s login some additional parameters will "
+"need to be set in the \"External keys\" section"
+msgstr ""
+"नोट: वासà¥à¤¤à¤µ में %(provider)s लॉगिन को सकà¥à¤·à¤® करने के लिठकà¥à¤› अतिरिकà¥à¤¤ पैरामीटर \"विदेश "
+"कà¥à¤‚जी\" खंड में सेट करने की आवशà¥à¤¯à¤•à¤¤à¤¾ होगी"
+
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ में मारà¥à¤•à¤…प"
+
+#: conf/markup.py:41
+msgid "Enable code-friendly Markdown"
+msgstr "कोड के अनà¥à¤•à¥‚ल markdown सकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/markup.py:43
+msgid ""
+"If checked, underscore characters will not trigger italic or bold formatting "
+"- bold and italic text can still be marked up with asterisks. Note that "
+"\"MathJax support\" implicitly turns this feature on, because underscores "
+"are heavily used in LaTeX input."
+msgstr ""
+"अगर जाà¤à¤š की जाये, अंडरसà¥à¤•à¥‹à¤° वरà¥à¤£ इटैलिक या बोलà¥à¤¡ सà¥à¤µà¤°à¥‚पण को टà¥à¤°à¤¿à¤—र नहीं करेगा-बोलà¥à¤¡ और "
+"इटैलिक टेकà¥à¤¸à¥à¤Ÿ अभी भी à¤à¤¸à¥à¤Ÿà¥‡à¤°à¤¿à¤¸à¥à¤• से चिहà¥à¤¨à¤¿à¤¤ किया जा सकता है.धà¥à¤¯à¤¾à¤¨ दें कि \"MathJax support"
+"\" संकेत पर इस सà¥à¤µà¤¿à¤§à¤¾ को बदल देता है, कà¥à¤¯à¥‹à¤‚कि लेटेकà¥à¤¸ इनपà¥à¤Ÿ के रूप अंडरसà¥à¤•à¥‹à¤° का जà¥à¤¯à¤¾à¤¦à¤¾ "
+"इसà¥à¤¤à¥‡à¤®à¤¾à¤² होता है ."
+
+#: conf/markup.py:58
+msgid "Mathjax support (rendering of LaTeX)"
+msgstr "Mathjax समरà¥à¤¥à¤¨ (लेटेकà¥à¤¸ का पà¥à¤°à¤¤à¤¿à¤ªà¤¾à¤¦à¤¨)"
+
+#: conf/markup.py:60
+#, python-format
+msgid ""
+"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
+"installed on your server in its own directory."
+msgstr ""
+"यदि आपको इस विशेषता को सकà¥à¤·à¤® करना चाहते है ,<a href=\"%(url)s\"> mathjax </ a> "
+"अपनी निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ में आपके सरà¥à¤µà¤° पर सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ होना आवशà¥à¤¯à¤• है."
+
+#: conf/markup.py:74
+msgid "Base url of MathJax deployment"
+msgstr "MathJax परिनियोजन के आधार यूआरà¤à¤²"
+
+#: conf/markup.py:76
+msgid ""
+"Note - <strong>MathJax is not included with askbot</strong> - you should "
+"deploy it yourself, preferably at a separate domain and enter url pointing "
+"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+msgstr ""
+"नोट - <strong> MathJax askbot के साथ शामिल नहीं है </ strong> आप इसे अपने आप को "
+"अधिमानतः à¤à¤• अलग डोमेन पर और यूआरà¤à¤² \"mathjax\" निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ (उदाहरण के लिà¤: http://"
+"mysite.com/mathjax) की ओर इशारा करते हà¥à¤ दरà¥à¤œ करके परिनियोजित करनी चाहिà¤,"
+
+#: conf/markup.py:91
+msgid "Enable autolinking with specific patterns"
+msgstr "विशिषà¥à¤Ÿ नमूनों के लिठऔतोलिनà¥à¤•à¤¿à¤‚ग सकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/markup.py:93
+msgid ""
+"If you enable this feature, the application will be able to detect patterns "
+"and auto link to URLs"
+msgstr ""
+"यदि आप इस फ़ीचर को सकà¥à¤°à¤¿à¤¯ करते है ,अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— यूआरà¤à¤² के लिठपैटरà¥à¤¨ और सà¥à¤µà¤¤ लिंक का पता "
+"लगाने में सकà¥à¤·à¤® हो जाà¤à¤—ा"
+
+#: conf/markup.py:106
+msgid "Regexes to detect the link patterns"
+msgstr "लिंक पैटरà¥à¤¨ का पता लगाने के लिठरिजेकà¥à¤¸"
+
+#: conf/markup.py:108
+msgid ""
+"Enter valid regular expressions for the patters, one per line. For example "
+"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
+"The numbers captured by the pattern in the parentheses will be transferred "
+"to the link url template. Please look up more information about regular "
+"expressions elsewhere."
+msgstr ""
+"क पैटरà¥à¤¨ पà¥à¤°à¤¤à¤¿ पंकà¥à¤¤à¤¿ के लिठमानà¥à¤¯ नियमित अभिवà¥à¤¯à¤•à¥à¤¤à¤¿ दरà¥à¤œ करें.उदाहरण के लिठà¤à¤• बग पैटरà¥à¤¨ "
+"का पता लगाने के लिà¤, # bug123 के समान,निमà¥à¤¨à¤²à¤¿à¤–ित regex: #bug(\\d+) का उपयोग करे, "
+"कोषà¥à¤ à¤•à¥‹à¤‚ में पैटरà¥à¤¨ दà¥à¤µà¤¾à¤°à¤¾ कबà¥à¤œà¤¾ किये गठसंखà¥à¤¯à¤¾ को लिंक यूआरà¤à¤² टेमà¥à¤ªà¤²à¥‡à¤Ÿ में हसà¥à¤¤à¤¾à¤‚तरित किया "
+"जाà¤à¤—ा.कृपया नियमित अभिवà¥à¤¯à¤•à¥à¤¤à¤¿ के बारे में अधिक जानकारी के लिठकहीं और देखो."
+
+#: conf/markup.py:127
+msgid "URLs for autolinking"
+msgstr "Autolinking के लिठयूआरà¤à¤²"
+
+#: conf/markup.py:129
+msgid ""
+"Here, please enter url templates for the patterns entered in the previous "
+"setting, also one entry per line. <strong>Make sure that number of lines in "
+"this setting and the previous one are the same</strong> For example template "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
+"shown above and the entry in the post #123 will produce link to the bug 123 "
+"in the redhat bug tracker."
+msgstr ""
+"कृपया यहाठपिछले सेटिंग में दरà¥à¤œ किया पैटरà¥à¤¨ के अनà¥à¤¸à¤¾à¤° पंकà¥à¤¤à¤¿ à¤à¤• पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ का यूआरà¤à¤² टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ "
+"दरà¥à¤œ करें,<strong>सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि इस सेटिंग और पिछले à¤à¤• में लाइनों की संखà¥à¤¯à¤¾ à¤à¤• ही हैं</"
+"strong >उदाहरण के लिà¤à¤Šà¤ªà¤° दिखाठगठपैटरà¥à¤¨ टेमà¥à¤ªà¤²à¥‡à¤Ÿ https://bugzilla.redhat.com/"
+"show_bug.cgi?id=\\1 के साथ और पोसà¥à¤Ÿ 123 में पà¥à¤°à¤µà¥‡à¤¶ redhat बग टà¥à¤°à¥ˆà¤•à¤° में बग 123 के लिठ"
+"लिंक का उतà¥à¤ªà¤¾à¤¦à¤¨ होगा."
+
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr "करà¥à¤®à¤¾ थà¥à¤°à¥‡à¤¸à¤¹à¥‹à¤²à¥à¤¡"
+
+#: conf/minimum_reputation.py:22
+msgid "Upvote"
+msgstr "वोट पकà¥à¤· में "
+
+#: conf/minimum_reputation.py:31
+msgid "Downvote"
+msgstr "वोट विपकà¥à¤· में"
+
+#: conf/minimum_reputation.py:40
+msgid "Answer own question immediately"
+msgstr "तà¥à¤°à¤‚त सà¥à¤µà¤¯à¤‚ के पà¥à¤°à¤¶à¥à¤¨ के उतà¥à¤¤à¤° दे "
+
+#: conf/minimum_reputation.py:49
+msgid "Accept own answer"
+msgstr "सà¥à¤µà¤¯à¤‚ का उतà¥à¤¤à¤° सà¥à¤µà¥€à¤•à¤¾à¤°à¥‡à¤‚"
+
+#: conf/minimum_reputation.py:58
+msgid "Flag offensive"
+msgstr "धà¥à¤µà¤œ आपतà¥à¤¤à¤¿à¤œà¤¨à¤•"
+
+#: conf/minimum_reputation.py:67
+msgid "Leave comments"
+msgstr "टिपà¥à¤ªà¤£à¥€ छोड़ दे "
+
+#: conf/minimum_reputation.py:76
+msgid "Delete comments posted by others"
+msgstr "दूसरों के दà¥à¤µà¤¾à¤°à¤¾ पोसà¥à¤Ÿ किया गया टिपà¥à¤ªà¤£à¤¿à¤¯à¥‹à¤‚ को हटाà¤à¤"
+
+#: conf/minimum_reputation.py:85
+msgid "Delete questions and answers posted by others"
+msgstr "दूसरों के दà¥à¤µà¤¾à¤°à¤¾ पोसà¥à¤Ÿ की गयी पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ और उतà¥à¤¤à¤°à¥‹à¤‚ को हटाà¤à¤"
+
+#: conf/minimum_reputation.py:94
+msgid "Upload files"
+msgstr "फ़ाइलें अपलोड करें"
+
+#: conf/minimum_reputation.py:103
+msgid "Close own questions"
+msgstr "खà¥à¤¦ के पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को बंद करें"
+
+#: conf/minimum_reputation.py:112
+msgid "Retag questions posted by other people"
+msgstr "अनà¥à¤¯ लोगों दà¥à¤µà¤¾à¤°à¤¾ पोसà¥à¤Ÿ सवालों के पà¥à¤¨à¤ƒ टैग करे "
+
+#: conf/minimum_reputation.py:121
+msgid "Reopen own questions"
+msgstr "खà¥à¤¦ के सवालों को पà¥à¤¨à¤ƒ खोलें "
+
+#: conf/minimum_reputation.py:130
+msgid "Edit community wiki posts"
+msgstr "सामà¥à¤¦à¤¾à¤¯à¤¿à¤• विकी पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ संपादित करें"
+
+#: conf/minimum_reputation.py:139
+msgid "Edit posts authored by other people"
+msgstr "अनà¥à¤¯ लोगों दà¥à¤µà¤¾à¤°à¤¾ लिखी पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ संपादित करें"
+
+#: conf/minimum_reputation.py:148
+msgid "View offensive flags"
+msgstr "आपतà¥à¤¤à¤¿à¤œà¤¨à¤• धà¥à¤µà¤œà¥‹à¤‚ को देखे"
+
+#: conf/minimum_reputation.py:157
+msgid "Close questions asked by others"
+msgstr "दूसरों के दà¥à¤µà¤¾à¤°à¤¾ पूछा पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को बंद करे"
+
+#: conf/minimum_reputation.py:166
+msgid "Lock posts"
+msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ लॉक करें"
+
+#: conf/minimum_reputation.py:175
+msgid "Remove rel=nofollow from own homepage"
+msgstr "खà¥à¤¦ के होमपेज से rel=nofollow हटायें"
+
+#: conf/minimum_reputation.py:177
+msgid ""
+"When a search engine crawler will see a rel=nofollow attribute on a link - "
+"the link will not count towards the rank of the users personal site."
+msgstr ""
+"जब à¤à¤• खोज इंजन कà¥à¤°à¥‰à¤²à¤° à¤à¤• लिंक पर à¤à¤• rel = nofollow गà¥à¤£ देखेंगे - लिंक उपयोगकरà¥à¤¤à¤¾à¤“ं को "
+"वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त साइट की रैंक की ओर गिनती नहीं होगी."
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
+msgstr "करà¥à¤®à¤¾ के हानि और लाभ के नियम"
+
+#: conf/reputation_changes.py:23
+msgid "Maximum daily reputation gain per user"
+msgstr "पà¥à¤°à¤¤à¤¿ उपयोगकरà¥à¤¤à¤¾ अधिकतम दैनिक पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾ लाभ"
+
+#: conf/reputation_changes.py:32
+msgid "Gain for receiving an upvote"
+msgstr "पकà¥à¤· में वोट पà¥à¤°à¤¾à¤ªà¥à¤¤ करने से लाभ"
+
+#: conf/reputation_changes.py:41
+msgid "Gain for the author of accepted answer"
+msgstr "सà¥à¤µà¥€à¤•à¤¾à¤° किठगठजवाब से लेखक को लाभ"
+
+#: conf/reputation_changes.py:50
+msgid "Gain for accepting best answer"
+msgstr "सबसे अचà¥à¤›à¤¾ जवाब को सà¥à¤µà¥€à¤•à¤¾à¤° करने पर लाभ"
+
+#: conf/reputation_changes.py:59
+msgid "Gain for post owner on canceled downvote"
+msgstr "विपकà¥à¤· में वोट रदà¥à¤¦ होने पर पोसà¥à¤Ÿ सà¥à¤µà¤¾à¤®à¥€ के लिठलाभ"
+
+#: conf/reputation_changes.py:68
+msgid "Gain for voter on canceling downvote"
+msgstr "विपकà¥à¤· में वोट रदà¥à¤¦ करने पर मतदाता के लिठलाभ"
+
+#: conf/reputation_changes.py:78
+msgid "Loss for voter for canceling of answer acceptance"
+msgstr "मतदाता के जवाब के सà¥à¤µà¥€à¤•à¥ƒà¤¤à¤¿ की रदà¥à¤¦ करने से नà¥à¤•à¤¸à¤¾à¤¨"
+
+#: conf/reputation_changes.py:88
+msgid "Loss for author whose answer was \"un-accepted\""
+msgstr "लेखक के लिठघाटा जिसका जवाब को \"असà¥à¤µà¥€à¤•à¤¾à¤°\" किठजाते हैं"
+
+#: conf/reputation_changes.py:98
+msgid "Loss for giving a downvote"
+msgstr "विपकà¥à¤· में वोट देने के लिठघाटा"
+
+#: conf/reputation_changes.py:108
+msgid "Loss for owner of post that was flagged offensive"
+msgstr "पोसà¥à¤Ÿ के मालिक के लिठनà¥à¤•à¤¸à¤¾à¤¨ को आकà¥à¤°à¤¾à¤®à¤• दिखाकर धà¥à¤µà¤œà¤¾à¤‚कित किया गया था"
+
+#: conf/reputation_changes.py:118
+msgid "Loss for owner of post that was downvoted"
+msgstr "पोसà¥à¤Ÿ के सà¥à¤µà¤¾à¤®à¥€ को घाटा विपकà¥à¤· में वोट से हà¥à¤†"
+
+#: conf/reputation_changes.py:128
+msgid "Loss for owner of post that was flagged 3 times per same revision"
+msgstr ""
+"पोसà¥à¤Ÿ के मालिक के लिठनà¥à¤•à¤¸à¤¾à¤¨ को à¤à¤• ही संशोधन के अनà¥à¤¸à¤¾à¤° 3 बार धà¥à¤µà¤œà¤¾à¤‚कित किया गया था"
+
+#: conf/reputation_changes.py:138
+msgid "Loss for owner of post that was flagged 5 times per same revision"
+msgstr ""
+"पोसà¥à¤Ÿ के मालिक के लिठनà¥à¤•à¤¸à¤¾à¤¨ को à¤à¤• ही संशोधन के अनà¥à¤¸à¤¾à¤° 5 बार धà¥à¤µà¤œà¤¾à¤‚कित किया गया था"
+
+#: conf/reputation_changes.py:148
+msgid "Loss for post owner when upvote is canceled"
+msgstr "जब पकà¥à¤· के वोट को रदà¥à¤¦ कर दिया है तो पोसà¥à¤Ÿ सà¥à¤µà¤¾à¤®à¥€ को नà¥à¤•à¤¸à¤¾à¤¨"
+
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
+msgstr "मà¥à¤–à¥à¤¯ पृषà¥à¤  साइडबार"
+
+#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_question.py:19
+msgid "Custom sidebar header"
+msgstr "कसà¥à¤Ÿà¤® साइडबार हैडर"
+
+#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_question.py:22
+msgid ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+"इस कà¥à¤·à¥‡à¤¤à¥à¤° का उपयोग sidebarin HTML सà¥à¤µà¤°à¥‚प के शीरà¥à¤· पर कंटेंट दरà¥à¤œ करने के लिठकरें, जब "
+"इस विकलà¥à¤ª का उपयोग (साइडबार पादलेख के रूप में) करते है , HTML सतà¥à¤¯à¤¾à¤ªà¤¨ सेवा का उपयोग "
+"करने के लिठसà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि कृपया आपके इनपà¥à¤Ÿ मानà¥à¤¯ है और अचà¥à¤›à¥€ तरह से सभी बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤°à¥‹à¤‚ में "
+"काम करता है."
+
+#: conf/sidebar_main.py:36
+msgid "Show avatar block in sidebar"
+msgstr "साइडबार में अवतार बà¥à¤²à¥‰à¤• दिखाà¤à¤"
+
+#: conf/sidebar_main.py:38
+msgid "Uncheck this if you want to hide the avatar block from the sidebar "
+msgstr "अचयनित यदि आप इस साइडबार से अवतार बà¥à¤²à¥‰à¤• को छिपाना चाहते हैं "
+
+#: conf/sidebar_main.py:49
+msgid "Limit how many avatars will be displayed on the sidebar"
+msgstr "सीमित करें कि कितने बदलते रूपों को साइडबार पर पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ किया जाà¤à¤—ा"
+
+#: conf/sidebar_main.py:59
+msgid "Show tag selector in sidebar"
+msgstr "साइडबार में टैग चयनकरà¥à¤¤à¤¾ दिखाà¤à¤ "
+
+#: conf/sidebar_main.py:61
+msgid ""
+"Uncheck this if you want to hide the options for choosing interesting and "
+"ignored tags "
+msgstr ""
+"अचयनित करे यदि आप इस रोचक और नजरअंदाज टैग के चयन के लिठविकलà¥à¤ªà¥‹à¤‚ को छिपाना चाहते हैं "
+
+#: conf/sidebar_main.py:72
+msgid "Show tag list/cloud in sidebar"
+msgstr "टैग सूची /कà¥à¤²à¤¾à¤‰à¤¡ को साइडबार में दरà¥à¤¶à¤¾à¤ "
+
+#: conf/sidebar_main.py:74
+msgid ""
+"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+msgstr "अचयनित करे यदि आप टैग कà¥à¤²à¤¾à¤‰à¤¡ या टैग सूची को साइडबार से छà¥à¤ªà¤¾à¤¨à¤¾ चाहते हैं "
+
+#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_question.py:75
+msgid "Custom sidebar footer"
+msgstr "कसà¥à¤Ÿà¤® साइडबार पादलेख"
+
+#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_question.py:78
+msgid ""
+"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
+"When using this option (as well as the sidebar header), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr "उपयोगकरà¥à¤¤à¤¾ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² साइडबार"
+
+#: conf/sidebar_question.py:11
+msgid "Question page sidebar"
+msgstr "पà¥à¤°à¤¶à¥à¤¨ पृषà¥à¤  साइडबार"
+
+#: conf/sidebar_question.py:35
+msgid "Show tag list in sidebar"
+msgstr "साइडबार में टैग सूची दिखाà¤à¤"
+
+#: conf/sidebar_question.py:37
+msgid "Uncheck this if you want to hide the tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_question.py:48
+msgid "Show meta information in sidebar"
+msgstr "साइडबार में मेटा जानकारी दिखाà¤à¤"
+
+#: conf/sidebar_question.py:50
+msgid ""
+"Uncheck this if you want to hide the meta information about the question "
+"(post date, views, last updated). "
+msgstr ""
+
+#: conf/sidebar_question.py:62
+msgid "Show related questions in sidebar"
+msgstr "साइडबार में संबंधित पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को दिखाठ"
+
+#: conf/sidebar_question.py:64
+msgid "Uncheck this if you want to hide the list of related questions. "
+msgstr ""
+
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr "बूटसà¥à¤Ÿà¥à¤°à¥ˆà¤ª मोड"
+
+#: conf/site_modes.py:74
+msgid "Activate a \"Bootstrap\" mode"
+msgstr "\"बूटसà¥à¤Ÿà¥à¤°à¥ˆà¤ª\" मोड सकà¥à¤°à¤¿à¤¯ करें"
+
+#: conf/site_modes.py:76
+msgid ""
+"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
+"more suitable for the smaller communities, <strong>WARNING:</strong> your "
+"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
+"changed after you modify this setting."
+msgstr ""
+
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr "यूआरà¤à¤²à¥‹à¤‚, खोजशबà¥à¤¦à¥‹à¤‚ & बधाई"
+
+#: conf/site_settings.py:21
+msgid "Site title for the Q&A forum"
+msgstr "Q&A फोरम के लिठसाइट शीरà¥à¤·à¤•"
+
+#: conf/site_settings.py:30
+msgid "Comma separated list of Q&A site keywords"
+msgstr "Q&A इट खोजशबà¥à¤¦à¥‹à¤‚ की à¤à¤• अलà¥à¤ªà¤µà¤¿à¤°à¤¾à¤® विभाजित सूची"
+
+#: conf/site_settings.py:39
+msgid "Copyright message to show in the footer"
+msgstr "पादलेख में दिखाने के लिठकॉपीराइट संदेश"
+
+#: conf/site_settings.py:49
+msgid "Site description for the search engines"
+msgstr "खोज इंजन के लिठसाइट विवरण"
+
+#: conf/site_settings.py:58
+msgid "Short name for your Q&A forum"
+msgstr "अपने Q&A फोरम के लिठसंकà¥à¤·à¤¿à¤ªà¥à¤¤ नाम"
+
+#: conf/site_settings.py:67
+msgid "Base URL for your Q&A forum, must start with http or https"
+msgstr ""
+
+#: conf/site_settings.py:78
+msgid "Check to enable greeting for anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:89
+msgid "Text shown in the greeting message shown to the anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:93
+msgid "Use HTML to format the message "
+msgstr ""
+
+#: conf/site_settings.py:102
+msgid "Feedback site URL"
+msgstr "पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ साइट यूआरà¤à¤²"
+
+#: conf/site_settings.py:104
+msgid "If left empty, a simple internal feedback form will be used instead"
+msgstr ""
+
+#: conf/skin_counter_settings.py:11
+msgid "Skin: view, vote and answer counters"
+msgstr ""
+
+#: conf/skin_counter_settings.py:19
+msgid "Vote counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:29
+msgid "Background color for votes = 0"
+msgstr "मतों के लिठपृषà¥à¤ à¤­à¥‚मि रंग = 0"
+
+#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
+#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
+#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
+#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
+#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
+#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
+#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
+#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
+#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
+#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
+msgid "HTML color name or hex value"
+msgstr "HTML रंग का नाम या हेकà¥à¤¸ मान"
+
+#: conf/skin_counter_settings.py:40
+msgid "Foreground color for votes = 0"
+msgstr "मतों के लिठअगà¥à¤°à¤­à¥‚मि रंग = 0"
+
+#: conf/skin_counter_settings.py:51
+msgid "Background color for votes"
+msgstr "मतों के लिठपृषà¥à¤ à¤­à¥‚मि रंग"
+
+#: conf/skin_counter_settings.py:61
+msgid "Foreground color for votes"
+msgstr "मतों के लिठअगà¥à¤°à¤­à¥‚मि रंग"
+
+#: conf/skin_counter_settings.py:71
+msgid "Background color for votes = MAX"
+msgstr "मतों के लिठपृषà¥à¤ à¤­à¥‚मि रंग = MAX"
+
+#: conf/skin_counter_settings.py:84
+msgid "Foreground color for votes = MAX"
+msgstr "मतों के लिठअगà¥à¤°à¤­à¥‚मि रंग = MAX"
+
+#: conf/skin_counter_settings.py:95
+msgid "View counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:105
+msgid "Background color for views = 0"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मि रंग = 0"
+
+#: conf/skin_counter_settings.py:116
+msgid "Foreground color for views = 0"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठअगà¥à¤°à¤­à¥‚मि रंग = 0"
+
+#: conf/skin_counter_settings.py:127
+msgid "Background color for views"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मि रंग"
+
+#: conf/skin_counter_settings.py:137
+msgid "Foreground color for views"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठअगà¥à¤°à¤­à¥‚मि रंग"
+
+#: conf/skin_counter_settings.py:147
+msgid "Background color for views = MAX"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मि रंग = MAX"
+
+#: conf/skin_counter_settings.py:162
+msgid "Foreground color for views = MAX"
+msgstr "दृशà¥à¤¯à¥‹à¤‚ के लिठअगà¥à¤°à¤­à¥‚मि रंग = MAX"
+
+#: conf/skin_counter_settings.py:173
+msgid "Answer counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:185
+msgid "Background color for answers = 0"
+msgstr "उतà¥à¤¤à¤°à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मिक रंग = 0"
+
+#: conf/skin_counter_settings.py:195
+msgid "Foreground color for answers = 0"
+msgstr "जवाब के लिठअगà¥à¤°à¤­à¥‚मि रंग = 0"
+
+#: conf/skin_counter_settings.py:205
+msgid "Background color for answers"
+msgstr "उतà¥à¤¤à¤°à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मिक रंग"
+
+#: conf/skin_counter_settings.py:215
+msgid "Foreground color for answers"
+msgstr "जवाब के लिठअगà¥à¤°à¤­à¥‚मि रंग"
+
+#: conf/skin_counter_settings.py:227
+msgid "Background color for answers = MAX"
+msgstr "उतà¥à¤¤à¤°à¥‹à¤‚ के लिठपृषà¥à¤ à¤­à¥‚मिक रंग = MAX"
+
+#: conf/skin_counter_settings.py:238
+msgid "Foreground color for answers = MAX"
+msgstr " जवाब के लिठअगà¥à¤°à¤­à¥‚मि रंग = MAX"
+
+#: conf/skin_counter_settings.py:251
+msgid "Background color for accepted"
+msgstr "सà¥à¤µà¥€à¤•à¥ƒà¤¤à¤¿ के लिठपृषà¥à¤ à¤­à¥‚मि रंग "
+
+#: conf/skin_counter_settings.py:261
+msgid "Foreground color for accepted answer"
+msgstr ""
+
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
+
+#: conf/skin_general_settings.py:23
+msgid "Q&A site logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:25
+msgid "To change the logo, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/skin_general_settings.py:37
+msgid "Show logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:39
+msgid ""
+"Check if you want to show logo in the forum header or uncheck in the case "
+"you do not want the logo to appear in the default location"
+msgstr ""
+
+#: conf/skin_general_settings.py:51
+msgid "Site favicon"
+msgstr "साइट favicon"
+
+#: conf/skin_general_settings.py:53
+#, python-format
+msgid ""
+"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
+"browser user interface. Please find more information about favicon at <a "
+"href=\"%(favicon_info_url)s\">this page</a>."
+msgstr ""
+
+#: conf/skin_general_settings.py:69
+msgid "Password login button"
+msgstr ""
+
+#: conf/skin_general_settings.py:71
+msgid ""
+"An 88x38 pixel image that is used on the login screen for the password login "
+"button."
+msgstr ""
+
+#: conf/skin_general_settings.py:84
+msgid "Show all UI functions to all users"
+msgstr ""
+
+#: conf/skin_general_settings.py:86
+msgid ""
+"If checked, all forum functions will be shown to users, regardless of their "
+"reputation. However to use those functions, moderation rules, reputation and "
+"other limits will still apply."
+msgstr ""
+
+#: conf/skin_general_settings.py:101
+msgid "Select skin"
+msgstr ""
+
+#: conf/skin_general_settings.py:112
+msgid "Customize HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:121
+msgid "Custom portion of the HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:123
+msgid ""
+"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
+"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
+"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
+"meta&gt; may be added. Please, keep in mind that adding external javascript "
+"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
+"pages. Instead, it will be more efficient to place links to the javascript "
+"files into the footer. <strong>Note:</strong> if you do use this setting, "
+"please test the site with the W3C HTML validator service."
+msgstr ""
+
+#: conf/skin_general_settings.py:145
+msgid "Custom header additions"
+msgstr ""
+
+#: conf/skin_general_settings.py:147
+msgid ""
+"Header is the bar at the top of the content that contains user info and site "
+"links, and is common to all pages. Use this area to enter contents of the "
+"headerin the HTML format. When customizing the site header (as well as "
+"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
+"sure that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:162
+msgid "Site footer mode"
+msgstr ""
+
+#: conf/skin_general_settings.py:164
+msgid ""
+"Footer is the bottom portion of the content, which is common to all pages. "
+"You can disable, customize, or use the default footer."
+msgstr ""
+
+#: conf/skin_general_settings.py:181
+msgid "Custom footer (HTML format)"
+msgstr ""
+
+#: conf/skin_general_settings.py:183
+msgid ""
+"<strong>To enable this function</strong>, please select option 'customize' "
+"in the \"Site footer mode\" above. Use this area to enter contents of the "
+"footer in the HTML format. When customizing the site footer (as well as the "
+"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
+"that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:198
+msgid "Apply custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:200
+msgid ""
+"Check if you want to change appearance of your form by adding custom style "
+"sheet rules (please see the next item)"
+msgstr ""
+
+#: conf/skin_general_settings.py:212
+msgid "Custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:214
+msgid ""
+"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
+"option above. The CSS rules added in this window will be applied after the "
+"default style sheet rules. The custom style sheet will be served dynamically "
+"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
+"depends (default is empty string) on the url configuration in your urls.py."
+msgstr ""
+
+#: conf/skin_general_settings.py:230
+msgid "Add custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:233
+msgid "Check to enable javascript that you can enter in the next field"
+msgstr ""
+
+#: conf/skin_general_settings.py:243
+msgid "Custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:245
+msgid ""
+"Type or paste plain javascript that you would like to run on your site. Link "
+"to the script will be inserted at the bottom of the HTML output and will be "
+"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
+"your javascript code may break other functionalities of the site and that "
+"the behavior may not be consistent across different browsers (<strong>to "
+"enable your custom code</strong>, check \"Add custom javascript\" option "
+"above)."
+msgstr ""
+
+#: conf/skin_general_settings.py:263
+msgid "Skin media revision number"
+msgstr ""
+
+#: conf/skin_general_settings.py:265
+msgid "Will be set automatically but you can modify it if necessary."
+msgstr ""
+
+#: conf/skin_general_settings.py:276
+msgid "Hash to update the media revision number automatically."
+msgstr ""
+
+#: conf/skin_general_settings.py:280
+msgid "Will be set automatically, it is not necesary to modify manually."
+msgstr ""
+
+#: conf/social_sharing.py:11
+msgid "Sharing content on social networks"
+msgstr ""
+
+#: conf/social_sharing.py:20
+msgid "Check to enable sharing of questions on Twitter"
+msgstr ""
+
+#: conf/social_sharing.py:29
+msgid "Check to enable sharing of questions on Facebook"
+msgstr ""
+
+#: conf/social_sharing.py:38
+msgid "Check to enable sharing of questions on LinkedIn"
+msgstr ""
+
+#: conf/social_sharing.py:47
+msgid "Check to enable sharing of questions on Identi.ca"
+msgstr ""
+
+#: conf/social_sharing.py:56
+msgid "Check to enable sharing of questions on Google+"
+msgstr ""
+
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
+msgstr ""
+
+#: conf/spam_and_moderation.py:18
+msgid "Enable Akismet spam detection(keys below are required)"
+msgstr ""
+
+#: conf/spam_and_moderation.py:21
+#, python-format
+msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
+msgstr ""
+
+#: conf/spam_and_moderation.py:31
+msgid "Akismet key for spam detection"
+msgstr ""
+
+#: conf/super_groups.py:5
+msgid "Reputation, Badges, Votes & Flags"
+msgstr ""
+
+#: conf/super_groups.py:6
+msgid "Static Content, URLS & UI"
+msgstr ""
+
+#: conf/super_groups.py:7
+msgid "Data rules & Formatting"
+msgstr ""
+
+#: conf/super_groups.py:8
+msgid "External Services"
+msgstr ""
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:14
+msgid "User settings"
+msgstr ""
+
+#: conf/user_settings.py:23
+msgid "Allow editing user screen name"
+msgstr ""
+
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr ""
+
+#: conf/user_settings.py:41
+msgid "Allow account recovery by email"
+msgstr ""
+
+#: conf/user_settings.py:50
+msgid "Allow adding and removing login methods"
+msgstr ""
+
+#: conf/user_settings.py:60
+msgid "Minimum allowed length for screen name"
+msgstr ""
+
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr ""
+
+#: conf/user_settings.py:99
+msgid ""
+"This option allows you to set the default avatar type for email addresses "
+"without associated gravatar images. For more information, please visit <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:109
+msgid "Name for the Anonymous user"
+msgstr ""
+
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
+
+#: conf/vote_rules.py:24
+msgid "Number of votes a user can cast per day"
+msgstr ""
+
+#: conf/vote_rules.py:33
+msgid "Maximum number of flags per user per day"
+msgstr ""
+
+#: conf/vote_rules.py:42
+msgid "Threshold for warning about remaining daily votes"
+msgstr ""
+
+#: conf/vote_rules.py:51
+msgid "Number of days to allow canceling votes"
+msgstr ""
+
+#: conf/vote_rules.py:60
+msgid "Number of days required before answering own question"
+msgstr ""
+
+#: conf/vote_rules.py:69
+msgid "Number of flags required to automatically hide posts"
+msgstr ""
+
+#: conf/vote_rules.py:78
+msgid "Number of flags required to automatically delete posts"
+msgstr ""
+
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr ""
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr ""
+
+#: const/__init__.py:10
+msgid "duplicate question"
+msgstr ""
+
+#: const/__init__.py:11
+msgid "question is off-topic or not relevant"
+msgstr ""
+
+#: const/__init__.py:12
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: const/__init__.py:13
+msgid "not a real question"
+msgstr ""
+
+#: const/__init__.py:14
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: const/__init__.py:15
+msgid "question is not relevant or outdated"
+msgstr ""
+
+#: const/__init__.py:16
+msgid "question contains offensive or malicious remarks"
+msgstr ""
+
+#: const/__init__.py:17
+msgid "spam or advertising"
+msgstr ""
+
+#: const/__init__.py:18
+msgid "too localized"
+msgstr ""
+
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
+msgid "newest"
+msgstr ""
+
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
+msgid "oldest"
+msgstr ""
+
+#: const/__init__.py:45
+msgid "active"
+msgstr ""
+
+#: const/__init__.py:46
+msgid "inactive"
+msgstr ""
+
+#: const/__init__.py:47
+msgid "hottest"
+msgstr ""
+
+#: const/__init__.py:48
+msgid "coldest"
+msgstr ""
+
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
+msgid "most voted"
+msgstr ""
+
+#: const/__init__.py:50
+msgid "least voted"
+msgstr ""
+
+#: const/__init__.py:51
+msgid "relevance"
+msgstr ""
+
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
+msgid "all"
+msgstr ""
+
+#: const/__init__.py:64
+msgid "unanswered"
+msgstr ""
+
+#: const/__init__.py:65
+msgid "favorite"
+msgstr ""
+
+#: const/__init__.py:70
+msgid "list"
+msgstr ""
+
+#: const/__init__.py:71
+msgid "cloud"
+msgstr ""
+
+#: const/__init__.py:79
+msgid "Question has no answers"
+msgstr ""
+
+#: const/__init__.py:80
+msgid "Question has no accepted answers"
+msgstr ""
+
+#: const/__init__.py:125
+msgid "asked a question"
+msgstr ""
+
+#: const/__init__.py:126
+msgid "answered a question"
+msgstr ""
+
+#: const/__init__.py:127 const/__init__.py:203
+msgid "commented question"
+msgstr ""
+
+#: const/__init__.py:128 const/__init__.py:204
+msgid "commented answer"
+msgstr ""
+
+#: const/__init__.py:129
+msgid "edited question"
+msgstr ""
+
+#: const/__init__.py:130
+msgid "edited answer"
+msgstr ""
+
+#: const/__init__.py:131
+msgid "received badge"
+msgstr ""
+
+#: const/__init__.py:132
+msgid "marked best answer"
+msgstr ""
+
+#: const/__init__.py:133
+msgid "upvoted"
+msgstr ""
+
+#: const/__init__.py:134
+msgid "downvoted"
+msgstr ""
+
+#: const/__init__.py:135
+msgid "canceled vote"
+msgstr ""
+
+#: const/__init__.py:136
+msgid "deleted question"
+msgstr ""
+
+#: const/__init__.py:137
+msgid "deleted answer"
+msgstr ""
+
+#: const/__init__.py:138
+msgid "marked offensive"
+msgstr ""
+
+#: const/__init__.py:139
+msgid "updated tags"
+msgstr ""
+
+#: const/__init__.py:140
+msgid "selected favorite"
+msgstr ""
+
+#: const/__init__.py:141
+msgid "completed user profile"
+msgstr ""
+
+#: const/__init__.py:142
+msgid "email update sent to user"
+msgstr ""
+
+#: const/__init__.py:145
+msgid "reminder about unanswered questions sent"
+msgstr ""
+
+#: const/__init__.py:149
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:151
+msgid "mentioned in the post"
+msgstr ""
+
+#: const/__init__.py:202
+#, fuzzy
+msgid "answered question"
+msgstr "नवीनतम पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "सà¥à¤µà¤¯à¤‚ का उतà¥à¤¤à¤° सà¥à¤µà¥€à¤•à¤¾à¤°à¥‡à¤‚"
+
+#: const/__init__.py:209
+msgid "[closed]"
+msgstr ""
+
+#: const/__init__.py:210
+msgid "[deleted]"
+msgstr ""
+
+#: const/__init__.py:211 views/readers.py:566
+msgid "initial version"
+msgstr ""
+
+#: const/__init__.py:212
+msgid "retagged"
+msgstr ""
+
+#: const/__init__.py:220
+msgid "off"
+msgstr ""
+
+#: const/__init__.py:221
+msgid "exclude ignored"
+msgstr ""
+
+#: const/__init__.py:222
+msgid "only selected"
+msgstr ""
+
+#: const/__init__.py:226
+msgid "instantly"
+msgstr ""
+
+#: const/__init__.py:227
+msgid "daily"
+msgstr ""
+
+#: const/__init__.py:228
+msgid "weekly"
+msgstr ""
+
+#: const/__init__.py:229
+msgid "no email"
+msgstr ""
+
+#: const/__init__.py:236
+msgid "identicon"
+msgstr ""
+
+#: const/__init__.py:237
+msgid "mystery-man"
+msgstr ""
+
+#: const/__init__.py:238
+msgid "monsterid"
+msgstr ""
+
+#: const/__init__.py:239
+msgid "wavatar"
+msgstr ""
+
+#: const/__init__.py:240
+msgid "retro"
+msgstr ""
+
+#: const/__init__.py:287 skins/default/templates/badges.html:38
+msgid "gold"
+msgstr ""
+
+#: const/__init__.py:288 skins/default/templates/badges.html:48
+msgid "silver"
+msgstr ""
+
+#: const/__init__.py:289 skins/default/templates/badges.html:55
+msgid "bronze"
+msgstr ""
+
+#: const/__init__.py:301
+msgid "None"
+msgstr ""
+
+#: const/__init__.py:302
+msgid "Gravatar"
+msgstr ""
+
+#: const/__init__.py:303
+msgid "Uploaded Avatar"
+msgstr ""
+
+#: const/message_keys.py:21
+msgid "most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:22
+msgid "click to see most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:23
+msgid "by relevance"
+msgstr ""
+
+#: const/message_keys.py:24
+msgid "click to see the oldest questions"
+msgstr ""
+
+#: const/message_keys.py:25
+msgid "by date"
+msgstr ""
+
+#: const/message_keys.py:26
+msgid "click to see the newest questions"
+msgstr ""
+
+#: const/message_keys.py:27
+msgid "click to see the least recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:28
+msgid "by activity"
+msgstr ""
+
+#: const/message_keys.py:29
+msgid "click to see the most recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:30
+msgid "click to see the least answered questions"
+msgstr ""
+
+#: const/message_keys.py:31
+msgid "by answers"
+msgstr ""
+
+#: const/message_keys.py:32
+msgid "click to see the most answered questions"
+msgstr ""
+
+#: const/message_keys.py:33
+msgid "click to see least voted questions"
+msgstr ""
+
+#: const/message_keys.py:34
+msgid "by votes"
+msgstr ""
+
+#: const/message_keys.py:35
+msgid "click to see most voted questions"
+msgstr ""
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
+msgid ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
+msgid "i-names are not supported"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:233
+#, python-format
+msgid "Please enter your %(username_token)s"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:259
+msgid "Please, enter your user name"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:263
+msgid "Please, enter your password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
+msgid "Please, enter your new password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:285
+msgid "Passwords did not match"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:297
+#, python-format
+msgid "Please choose password > %(len)s characters"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:335
+msgid "Current password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:346
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:399
+msgid "Sorry, we don't have this email address in the database"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:435
+msgid "Your user name (<i>required</i>)"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:450
+msgid "sorry, there is no such user name"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
+msgid "signin/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:10
+msgid "signout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:12
+msgid "complete/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:15
+msgid "complete-oauth/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:19
+msgid "register/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:21
+msgid "signup/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:25
+msgid "logout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:30
+msgid "recover/"
+msgstr ""
+
+#: deps/django_authopenid/util.py:378
+#, python-format
+msgid "%(site)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
+msgid "Create a password-protected account"
+msgstr ""
+
+#: deps/django_authopenid/util.py:385
+msgid "Change your password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:473
+msgid "Sign in with Yahoo"
+msgstr ""
+
+#: deps/django_authopenid/util.py:480
+msgid "AOL screen name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:488
+msgid "OpenID url"
+msgstr ""
+
+#: deps/django_authopenid/util.py:517
+msgid "Flickr user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:525
+msgid "Technorati user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:533
+msgid "WordPress blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:541
+msgid "Blogger blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:549
+msgid "LiveJournal blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:557
+msgid "ClaimID user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:565
+msgid "Vidoop user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:573
+msgid "Verisign user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:608
+#, python-format
+msgid "Change your %(provider)s password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:612
+#, python-format
+msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:621
+#, python-format
+msgid "Create password for %(provider)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:625
+#, python-format
+msgid "Connect your %(provider)s account to %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:634
+#, python-format
+msgid "Signin with %(provider)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:641
+#, python-format
+msgid "Sign in with your %(provider)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:149
+#, python-format
+msgid "OpenID %(openid_url)s is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
+#, python-format
+msgid ""
+"Unfortunately, there was some problem when connecting to %(provider)s, "
+"please try again or use another provider"
+msgstr ""
+
+#: deps/django_authopenid/views.py:358
+msgid "Your new password saved"
+msgstr ""
+
+#: deps/django_authopenid/views.py:462
+msgid "The login password combination was not correct"
+msgstr ""
+
+#: deps/django_authopenid/views.py:564
+msgid "Please click any of the icons below to sign in"
+msgstr ""
+
+#: deps/django_authopenid/views.py:566
+msgid "Account recovery email sent"
+msgstr ""
+
+#: deps/django_authopenid/views.py:569
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: deps/django_authopenid/views.py:571
+msgid "If you wish, please add, remove or re-validate your login methods"
+msgstr ""
+
+#: deps/django_authopenid/views.py:573
+msgid "Please wait a second! Your account is recovered, but ..."
+msgstr ""
+
+#: deps/django_authopenid/views.py:575
+msgid "Sorry, this account recovery key has expired or is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:648
+#, python-format
+msgid "Login method %(provider_name)s does not exist"
+msgstr ""
+
+#: deps/django_authopenid/views.py:654
+msgid "Oops, sorry - there was some error - please try again"
+msgstr ""
+
+#: deps/django_authopenid/views.py:745
+#, python-format
+msgid "Your %(provider)s login works fine"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
+#, python-format
+msgid "your email needs to be validated see %(details_url)s"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1083
+#, python-format
+msgid "Recover your %(site)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1155
+msgid "Please check your email and visit the enclosed link."
+msgstr ""
+
+#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
+msgid "Site"
+msgstr ""
+
+#: deps/livesettings/values.py:69
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:128
+msgid "Base Settings"
+msgstr ""
+
+#: deps/livesettings/values.py:235
+msgid "Default value: \"\""
+msgstr ""
+
+#: deps/livesettings/values.py:242
+msgid "Default value: "
+msgstr ""
+
+#: deps/livesettings/values.py:245
+#, python-format
+msgid "Default value: %s"
+msgstr ""
+
+#: deps/livesettings/values.py:629
+#, python-format
+msgid "Allowed image file types are %(types)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+msgstr[1] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, python-format
+msgid "Group settings: %(name)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr ""
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:63
+msgid "Please accept the best answer for this question:"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:65
+msgid "Please accept the best answer for these questions:"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:414
+#, python-format
+msgid "%(question_count)d updated question about %(topics)s"
+msgid_plural "%(question_count)d updated questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:449
+msgid "new question"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:474
+#, python-format
+msgid ""
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
+
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
+msgid "%(question_count)d unanswered question about %(topics)s"
+msgid_plural "%(question_count)d unanswered questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr ""
+
+#: models/__init__.py:320
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"blocked"
+msgstr ""
+
+#: models/__init__.py:324
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"suspended"
+msgstr ""
+
+#: models/__init__.py:337
+#, python-format
+msgid ""
+">%(points)s points required to accept or unaccept your own answer to your "
+"own question"
+msgstr ""
+
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+
+#: models/__init__.py:367
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+msgstr ""
+
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr ""
+
+#: models/__init__.py:394
+msgid "Sorry your account appears to be blocked "
+msgstr ""
+
+#: models/__init__.py:399
+msgid "Sorry your account appears to be suspended "
+msgstr ""
+
+#: models/__init__.py:409
+#, python-format
+msgid ">%(points)s points required to upvote"
+msgstr ""
+
+#: models/__init__.py:415
+#, python-format
+msgid ">%(points)s points required to downvote"
+msgstr ""
+
+#: models/__init__.py:430
+msgid "Sorry, blocked users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:431
+msgid "Sorry, suspended users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
+
+#: models/__init__.py:482
+#, python-format
+msgid ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minute from posting"
+msgid_plural ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minutes from posting"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:494
+msgid "Sorry, but only post owners or moderators can edit comments"
+msgstr ""
+
+#: models/__init__.py:519
+msgid ""
+"Sorry, since your account is suspended you can comment only your own posts"
+msgstr ""
+
+#: models/__init__.py:523
+#, python-format
+msgid ""
+"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
+"required. You can still comment your own posts and answers to your questions"
+msgstr ""
+
+#: models/__init__.py:553
+msgid ""
+"This post has been deleted and can be seen only by post owners, site "
+"administrators and moderators"
+msgstr ""
+
+#: models/__init__.py:570
+msgid ""
+"Sorry, only moderators, site administrators and post owners can edit deleted "
+"posts"
+msgstr ""
+
+#: models/__init__.py:585
+msgid "Sorry, since your account is blocked you cannot edit posts"
+msgstr ""
+
+#: models/__init__.py:589
+msgid "Sorry, since your account is suspended you can edit only your own posts"
+msgstr ""
+
+#: models/__init__.py:594
+#, python-format
+msgid ""
+"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:601
+#, python-format
+msgid ""
+"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:664
+msgid ""
+"Sorry, cannot delete your question since it has an upvoted answer posted by "
+"someone else"
+msgid_plural ""
+"Sorry, cannot delete your question since it has some upvoted answers posted "
+"by other users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:679
+msgid "Sorry, since your account is blocked you cannot delete posts"
+msgstr ""
+
+#: models/__init__.py:683
+msgid ""
+"Sorry, since your account is suspended you can delete only your own posts"
+msgstr ""
+
+#: models/__init__.py:687
+#, python-format
+msgid ""
+"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
+"is required"
+msgstr ""
+
+#: models/__init__.py:707
+msgid "Sorry, since your account is blocked you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:711
+msgid "Sorry, since your account is suspended you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:715
+#, python-format
+msgid ""
+"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:724
+#, python-format
+msgid ""
+"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:748
+#, python-format
+msgid ""
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
+msgstr ""
+
+#: models/__init__.py:754
+#, python-format
+msgid ""
+"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
+msgid ""
+"Sorry, only question owners, site administrators and moderators can retag "
+"deleted questions"
+msgstr ""
+
+#: models/__init__.py:894
+msgid "Sorry, since your account is blocked you cannot retag questions"
+msgstr ""
+
+#: models/__init__.py:898
+msgid ""
+"Sorry, since your account is suspended you can retag only your own questions"
+msgstr ""
+
+#: models/__init__.py:902
+#, python-format
+msgid ""
+"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:921
+msgid "Sorry, since your account is blocked you cannot delete comment"
+msgstr ""
+
+#: models/__init__.py:925
+msgid ""
+"Sorry, since your account is suspended you can delete only your own comments"
+msgstr ""
+
+#: models/__init__.py:929
+#, python-format
+msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
+
+#: models/__init__.py:1469 utils/functions.py:78
+#, python-format
+msgid "on %(date)s"
+msgstr ""
+
+#: models/__init__.py:1471
+msgid "in two days"
+msgstr ""
+
+#: models/__init__.py:1473
+msgid "tomorrow"
+msgstr ""
+
+#: models/__init__.py:1475
+#, python-format
+msgid "in %(hr)d hour"
+msgid_plural "in %(hr)d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1477
+#, python-format
+msgid "in %(min)d min"
+msgid_plural "in %(min)d mins"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1478
+#, python-format
+msgid "%(days)d day"
+msgid_plural "%(days)d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1480
+#, python-format
+msgid ""
+"New users must wait %(days)s before answering their own question. You can "
+"post an answer %(left)s"
+msgstr ""
+
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
+msgid "Anonymous"
+msgstr ""
+
+#: models/__init__.py:1749
+msgid "Site Adminstrator"
+msgstr ""
+
+#: models/__init__.py:1751
+msgid "Forum Moderator"
+msgstr ""
+
+#: models/__init__.py:1753
+msgid "Suspended User"
+msgstr ""
+
+#: models/__init__.py:1755
+msgid "Blocked User"
+msgstr ""
+
+#: models/__init__.py:1757
+msgid "Registered User"
+msgstr ""
+
+#: models/__init__.py:1759
+msgid "Watched User"
+msgstr ""
+
+#: models/__init__.py:1761
+msgid "Approved User"
+msgstr ""
+
+#: models/__init__.py:1870
+#, python-format
+msgid "%(username)s karma is %(reputation)s"
+msgstr ""
+
+#: models/__init__.py:1880
+#, python-format
+msgid "one gold badge"
+msgid_plural "%(count)d gold badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1887
+#, python-format
+msgid "one silver badge"
+msgid_plural "%(count)d silver badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1894
+#, python-format
+msgid "one bronze badge"
+msgid_plural "%(count)d bronze badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1905
+#, python-format
+msgid "%(item1)s and %(item2)s"
+msgstr ""
+
+#: models/__init__.py:1909
+#, python-format
+msgid "%(user)s has %(badges)s"
+msgstr ""
+
+#: models/__init__.py:2389
+#, python-format
+msgid "\"%(title)s\""
+msgstr ""
+
+#: models/__init__.py:2542
+#, python-format
+msgid ""
+"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
+"href=\"%(user_profile)s\">your profile</a>."
+msgstr ""
+
+#: models/__init__.py:2745 views/commands.py:460
+msgid "Your tag subscription was saved, thanks!"
+msgstr ""
+
+#: models/badges.py:129
+#, python-format
+msgid "Deleted own post with %(votes)s or more upvotes"
+msgstr ""
+
+#: models/badges.py:133
+msgid "Disciplined"
+msgstr ""
+
+#: models/badges.py:151
+#, python-format
+msgid "Deleted own post with %(votes)s or more downvotes"
+msgstr ""
+
+#: models/badges.py:155
+msgid "Peer Pressure"
+msgstr ""
+
+#: models/badges.py:174
+#, python-format
+msgid "Received at least %(votes)s upvote for an answer for the first time"
+msgstr ""
+
+#: models/badges.py:178
+msgid "Teacher"
+msgstr ""
+
+#: models/badges.py:218
+msgid "Supporter"
+msgstr ""
+
+#: models/badges.py:219
+msgid "First upvote"
+msgstr ""
+
+#: models/badges.py:227
+msgid "Critic"
+msgstr ""
+
+#: models/badges.py:228
+msgid "First downvote"
+msgstr ""
+
+#: models/badges.py:237
+msgid "Civic Duty"
+msgstr ""
+
+#: models/badges.py:238
+#, python-format
+msgid "Voted %(num)s times"
+msgstr ""
+
+#: models/badges.py:252
+#, python-format
+msgid "Answered own question with at least %(num)s up votes"
+msgstr ""
+
+#: models/badges.py:256
+msgid "Self-Learner"
+msgstr ""
+
+#: models/badges.py:304
+msgid "Nice Answer"
+msgstr ""
+
+#: models/badges.py:309 models/badges.py:321 models/badges.py:333
+#, python-format
+msgid "Answer voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:316
+msgid "Good Answer"
+msgstr ""
+
+#: models/badges.py:328
+msgid "Great Answer"
+msgstr ""
+
+#: models/badges.py:340
+msgid "Nice Question"
+msgstr ""
+
+#: models/badges.py:345 models/badges.py:357 models/badges.py:369
+#, python-format
+msgid "Question voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:352
+msgid "Good Question"
+msgstr ""
+
+#: models/badges.py:364
+msgid "Great Question"
+msgstr ""
+
+#: models/badges.py:376
+msgid "Student"
+msgstr ""
+
+#: models/badges.py:381
+msgid "Asked first question with at least one up vote"
+msgstr ""
+
+#: models/badges.py:414
+msgid "Popular Question"
+msgstr ""
+
+#: models/badges.py:418 models/badges.py:429 models/badges.py:441
+#, python-format
+msgid "Asked a question with %(views)s views"
+msgstr ""
+
+#: models/badges.py:425
+msgid "Notable Question"
+msgstr ""
+
+#: models/badges.py:436
+msgid "Famous Question"
+msgstr ""
+
+#: models/badges.py:450
+msgid "Asked a question and accepted an answer"
+msgstr ""
+
+#: models/badges.py:453
+msgid "Scholar"
+msgstr ""
+
+#: models/badges.py:495
+msgid "Enlightened"
+msgstr ""
+
+#: models/badges.py:499
+#, python-format
+msgid "First answer was accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:507
+msgid "Guru"
+msgstr ""
+
+#: models/badges.py:510
+#, python-format
+msgid "Answer accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:518
+#, python-format
+msgid ""
+"Answered a question more than %(days)s days later with at least %(votes)s "
+"votes"
+msgstr ""
+
+#: models/badges.py:525
+msgid "Necromancer"
+msgstr ""
+
+#: models/badges.py:548
+msgid "Citizen Patrol"
+msgstr ""
+
+#: models/badges.py:551
+msgid "First flagged post"
+msgstr ""
+
+#: models/badges.py:563
+msgid "Cleanup"
+msgstr ""
+
+#: models/badges.py:566
+msgid "First rollback"
+msgstr ""
+
+#: models/badges.py:577
+msgid "Pundit"
+msgstr ""
+
+#: models/badges.py:580
+msgid "Left 10 comments with score of 10 or more"
+msgstr ""
+
+#: models/badges.py:612
+msgid "Editor"
+msgstr ""
+
+#: models/badges.py:615
+msgid "First edit"
+msgstr ""
+
+#: models/badges.py:623
+msgid "Associate Editor"
+msgstr ""
+
+#: models/badges.py:627
+#, python-format
+msgid "Edited %(num)s entries"
+msgstr ""
+
+#: models/badges.py:634
+msgid "Organizer"
+msgstr ""
+
+#: models/badges.py:637
+msgid "First retag"
+msgstr ""
+
+#: models/badges.py:644
+msgid "Autobiographer"
+msgstr ""
+
+#: models/badges.py:647
+msgid "Completed all user profile fields"
+msgstr ""
+
+#: models/badges.py:663
+#, python-format
+msgid "Question favorited by %(num)s users"
+msgstr ""
+
+#: models/badges.py:689
+msgid "Stellar Question"
+msgstr ""
+
+#: models/badges.py:698
+msgid "Favorite Question"
+msgstr ""
+
+#: models/badges.py:710
+msgid "Enthusiast"
+msgstr ""
+
+#: models/badges.py:714
+#, python-format
+msgid "Visited site every day for %(num)s days in a row"
+msgstr ""
+
+#: models/badges.py:732
+msgid "Commentator"
+msgstr ""
+
+#: models/badges.py:736
+#, python-format
+msgid "Posted %(num_comments)s comments"
+msgstr ""
+
+#: models/badges.py:752
+msgid "Taxonomist"
+msgstr ""
+
+#: models/badges.py:756
+#, python-format
+msgid "Created a tag used by %(num)s questions"
+msgstr ""
+
+#: models/badges.py:774
+msgid "Expert"
+msgstr ""
+
+#: models/badges.py:777
+msgid "Very active in one tag"
+msgstr ""
+
+#: models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1110
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1117
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent answer has been removed"
+msgstr ""
+
+#: models/question.py:54
+#, python-format
+msgid "\" and \"%s\""
+msgstr ""
+
+#: models/question.py:57
+msgid "\" and more"
+msgstr ""
+
+#: models/reply_by_email.py:71
+msgid "edited by email"
+msgstr ""
+
+#: models/repute.py:143
+#, python-format
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr ""
+
+#: models/repute.py:154
+#, python-format
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
+msgstr ""
+
+#: models/repute.py:159
+#, python-format
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
+msgstr ""
+
+#: models/tag.py:106
+msgid "interesting"
+msgstr ""
+
+#: models/tag.py:106
+msgid "ignored"
+msgstr ""
+
+#: models/user.py:266
+msgid "Entire forum"
+msgstr ""
+
+#: models/user.py:267
+msgid "Questions that I asked"
+msgstr ""
+
+#: models/user.py:268
+msgid "Questions that I answered"
+msgstr ""
+
+#: models/user.py:269
+msgid "Individually selected questions"
+msgstr ""
+
+#: models/user.py:270
+msgid "Mentions and comment responses"
+msgstr ""
+
+#: models/user.py:273
+msgid "Instantly"
+msgstr ""
+
+#: models/user.py:274
+msgid "Daily"
+msgstr ""
+
+#: models/user.py:275
+msgid "Weekly"
+msgstr ""
+
+#: models/user.py:276
+msgid "No email"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Change Email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+msgid "Validation email not sent"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:23
+msgid "User registration"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:9
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "आपतà¥à¤¤à¤¿à¤œà¤¨à¤• धà¥à¤µà¤œà¥‹à¤‚ को देखे"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "देश फ़ीलà¥à¤¡ की आवशà¥à¤¯à¤•à¤¤à¤¾ है"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "लेबल "
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr ""
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "खà¥à¤¦ के पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को बंद करें"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr ""
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr ""
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr ""
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr ""
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:20
+msgid "How does karma system work?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:80
+#, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr ""
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr ""
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr ""
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr ""
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr ""
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr ""
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr ""
+
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr ""
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, python-format
+msgid "page %(num)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr ""
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "टिपà¥à¤ªà¤£à¥€ छोड़ दे "
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr ""
+
+#: skins/default/templates/question.html:140
+msgid "Post Your Answer"
+msgstr ""
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
+msgstr ""
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "नवीनतम पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr ""
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr ""
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr ""
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr ""
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr ""
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr ""
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr ""
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr ""
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr ""
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "मेरे दà¥à¤µà¤¾à¤°à¤¾ पूछा गया"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:54
+msgid "Last updated"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "ईमेलः"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:58
+msgid "member since"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "वेबसाइट"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+msgid "give an answer interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr ""
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+msgid "ask a question interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr ""
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
+
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
+
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr ""
+
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
+msgstr "सà¥à¤•à¥à¤°à¥€à¤¨ नाम"
+
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr ""
+
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr ""
+
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr ""
+
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr ""
+
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr ""
+
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr ""
+
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+
+#: utils/forms.py:170
+msgid "password is required"
+msgstr ""
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr ""
+
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr ""
+
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr ""
+
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
+
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
+
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
+msgstr "कà¥à¤·à¤®à¤¾ करें, लेकिन अजà¥à¤žà¤¾à¤¤ आगंतà¥à¤•à¥‹à¤‚ इस फ़ंकà¥à¤¶à¤¨ का उपयोग नहीं कर सकते हैं"
+
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
+
+#: views/commands.py:339
+#, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr ""
+
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr ""
+
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+
+#: views/users.py:206
+msgid "moderate user"
+msgstr ""
+
+#: views/users.py:381
+msgid "user profile"
+msgstr ""
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr ""
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr ""
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr ""
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr ""
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr ""
+
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
+
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr ""
+
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr ""
+
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr ""
+
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr ""
+
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr ""
+
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr ""
+
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
+
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
+
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
+
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
+
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr " टैग-में-इन-अकà¥à¤·à¤°à¥‹à¤‚-का-उपयोग-करें"
+
+#~ msgid "URL for the LDAP service"
+#~ msgstr "LDAP सेवा के लिठयूआरà¤à¤²"
+
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "वà¥à¤¯à¤¾à¤–à¥à¤¯à¤¾ कीजिये LDAP कूटशबà¥à¤¦ को परिवरà¥à¤¤à¤¿à¤¤ कैसे करे "
+
+#~ msgid ""
+#~ "As a registered user you can login with your OpenID, log out of the site "
+#~ "or permanently remove your account."
+#~ msgstr ""
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
+
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
+
+#~ msgid ""
+#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
+#~ "s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
+
+#~ msgid "reputation points"
+#~ msgstr "karma"
diff --git a/askbot/locale/hi/LC_MESSAGES/djangojs.mo b/askbot/locale/hi/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..78db01f8
--- /dev/null
+++ b/askbot/locale/hi/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/hi/LC_MESSAGES/djangojs.po b/askbot/locale/hi/LC_MESSAGES/djangojs.po
new file mode 100644
index 00000000..d2c85414
--- /dev/null
+++ b/askbot/locale/hi/LC_MESSAGES/djangojs.po
@@ -0,0 +1,343 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# Chandan kumar <chandankumar.093047@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:53-0500\n"
+"PO-Revision-Date: 2012-02-27 09:25+0000\n"
+"Last-Translator: Chandan kumar <chandankumar.093047@gmail.com>\n"
+"Language-Team: Hindi (http://www.transifex.net/projects/p/askbot/language/"
+"hi/)\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, perl-format
+msgid "Are you sure you want to remove your %s login?"
+msgstr "कà¥à¤¯à¤¾ आप सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि आप अपने %s लॉगइन को हटाना चाहते हैं?"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:90
+msgid "Please add one or more login methods."
+msgstr "कृपया à¤à¤• या à¤à¤• से अधिक लॉगइन तरीकों को जोड़ें."
+
+#: skins/common/media/jquery-openid/jquery.openid.js:93
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+"आपके पास ठीक अभी लोगिनइन होने की विधि नहीं है.कृपया à¤à¤• या अधिक नीचे दिठगठकिसी भी "
+"पà¥à¤°à¤¤à¥€à¤• पर कà¥à¤²à¤¿à¤• करके जोड़ा गया."
+
+#: skins/common/media/jquery-openid/jquery.openid.js:135
+msgid "passwords do not match"
+msgstr "कूटशबà¥à¤¦ मेल नहीं खाता है"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:161
+msgid "Show/change current login methods"
+msgstr "को दिखाà¤à¤ / वरà¥à¤¤à¤®à¤¾à¤¨ लॉगिन तरीकों का को परिवरà¥à¤¤à¤¨"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
+msgid "Please enter your %s, then proceed"
+msgstr "कृपया अपना %s दरà¥à¤œ करें, उसके बाद आगे बढे "
+
+#: skins/common/media/jquery-openid/jquery.openid.js:228
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr "%(site)s को %(provider_name)s खाते से कनेकà¥à¤Ÿ करें"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
+msgid "Change your %s password"
+msgstr "अपना %s कूटशबà¥à¤¦ बदले "
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+msgid "Change password"
+msgstr "कूटशबà¥à¤¦ बदले "
+
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
+msgid "Create a password for %s"
+msgstr "%s के लिठकूटशबà¥à¤¦ बनाà¤à¤"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:327
+msgid "Create password"
+msgstr "कूटशबà¥à¤¦ बनाà¤à¤"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:343
+msgid "Create a password-protected account"
+msgstr "कूटशबà¥à¤¦ रकà¥à¤·à¤¿à¤¤ खाता बनाà¤à¤"
+
+#: skins/common/media/js/post.js:28
+msgid "loading..."
+msgstr "लोड हो रहा है ..."
+
+#: skins/common/media/js/post.js:318
+msgid "insufficient privilege"
+msgstr "अपरà¥à¤¯à¤¾à¤ªà¥à¤¤ विशेषाधिकार"
+
+#: skins/common/media/js/post.js:319
+msgid "cannot pick own answer as best"
+msgstr "खेद है, आप अपने सà¥à¤µà¤¯à¤‚ के जवाब को सà¥à¤µà¥€à¤•à¤¾à¤° नहीं कर सकते है "
+
+#: skins/common/media/js/post.js:324
+msgid "please login"
+msgstr "कृपया लॉगिन करें"
+
+#: skins/common/media/js/post.js:326
+msgid "anonymous users cannot follow questions"
+msgstr "अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾à¤“ं पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ का अनà¥à¤¸à¤°à¤£ नहीं कर सकते हैं"
+
+#: skins/common/media/js/post.js:327
+msgid "anonymous users cannot subscribe to questions"
+msgstr "अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾à¤“ं सवालों करने के लिठसदसà¥à¤¯à¤¤à¤¾ ले सकता है "
+
+#: skins/common/media/js/post.js:328
+msgid "anonymous users cannot vote"
+msgstr "खेद है,अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾à¤“ं को मतदान नहीं कर सकते है "
+
+#: skins/common/media/js/post.js:330
+msgid "please confirm offensive"
+msgstr ""
+"कà¥à¤¯à¤¾ आप सहमत है की यह पोसà¥à¤Ÿ सà¥à¤ªà¥ˆà¤®, विजà¥à¤žà¤¾à¤ªà¤¨, दà¥à¤°à¥à¤­à¤¾à¤µà¤¨à¤¾à¤ªà¥‚रà¥à¤£ टिपà¥à¤ªà¤£à¥€, अपमानजनक आदि में "
+"शामिल है?"
+
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr ""
+"कà¥à¤¯à¤¾ आप सहमत है की यह पोसà¥à¤Ÿ सà¥à¤ªà¥ˆà¤®, विजà¥à¤žà¤¾à¤ªà¤¨, दà¥à¤°à¥à¤­à¤¾à¤µà¤¨à¤¾à¤ªà¥‚रà¥à¤£ टिपà¥à¤ªà¤£à¥€, अपमानजनक आदि में "
+"शामिल है?"
+
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr "अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾à¤“ं को आपतà¥à¤¤à¤¿à¤œà¤¨à¤• धà¥à¤µà¤œà¤¾à¤‚कित पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ नहीं कर सकते हैं"
+
+#: skins/common/media/js/post.js:333
+msgid "confirm delete"
+msgstr "आप सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि आप इसे हटाना चाहते हैं?"
+
+#: skins/common/media/js/post.js:334
+msgid "anonymous users cannot delete/undelete"
+msgstr "खेद है, अजà¥à¤žà¤¾à¤¤ उपयोगकरà¥à¤¤à¤¾à¤“ं के पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ को रदà¥à¤¦ या नहीं रदà¥à¤¦à¤•à¤° सकते हैं"
+
+#: skins/common/media/js/post.js:335
+msgid "post recovered"
+msgstr "आपकी पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ अभी पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ किया जाता है!"
+
+#: skins/common/media/js/post.js:336
+msgid "post deleted"
+msgstr "आपकी पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ को मिटा दिया गया है "
+
+#: skins/common/media/js/post.js:1206
+msgid "add comment"
+msgstr "टिपà¥à¤ªà¤£à¥€ जोड़ें"
+
+#: skins/common/media/js/post.js:1209
+msgid "save comment"
+msgstr "टिपà¥à¤ªà¤£à¥€ सहेजे "
+
+#: skins/common/media/js/post.js:1874
+msgid "Please enter question title (>10 characters)"
+msgstr "पà¥à¤°à¤¶à¥à¤¨ के शीरà¥à¤·à¤• (>10 अकà¥à¤·à¤°) दरà¥à¤œ करें"
+
+#: skins/common/media/js/tag_selector.js:15
+msgid "Tag \"<span></span>\" matches:"
+msgstr "लेबल \"<span></span>\" मेल खा रहा है:"
+
+#: skins/common/media/js/tag_selector.js:84
+#, perl-format
+msgid "and %s more, not shown..."
+msgstr "और %s से अधिक है,नहीं दिखाया गया"
+
+#: skins/common/media/js/user.js:14
+msgid "Please select at least one item"
+msgstr "कृपया कम से कम à¤à¤• आइटम का चयन करें"
+
+#: skins/common/media/js/user.js:58
+msgid "Delete this notification?"
+msgid_plural "Delete these notifications?"
+msgstr[0] "इस अधिसूचना को हटाà¤à¤?"
+msgstr[1] "इस अधिसूचनाà¤à¤ को हटाà¤à¤?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "इस टिपà¥à¤ªà¤£à¥€ को मिटाठ"
+msgstr[1] "इस टिपà¥à¤ªà¤£à¥€ को मिटाठ"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "इस टिपà¥à¤ªà¤£à¥€ को मिटाठ"
+msgstr[1] "इस टिपà¥à¤ªà¤£à¥€ को मिटाठ"
+
+#: skins/common/media/js/user.js:159
+msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
+msgstr ""
+"कृपया %(username)s का अनà¥à¤¸à¤°à¤£ करने के लिठ<a href=\"%(signin_url)s\"> सतà¥à¤¯à¤¾à¤ªà¤¨ करें."
+
+#: skins/common/media/js/user.js:191
+#, perl-format
+msgid "unfollow %s"
+msgstr "%s का अनà¥à¤¸à¤°à¤£ न करें"
+
+#: skins/common/media/js/user.js:194
+#, perl-format
+msgid "following %s"
+msgstr "%s का अनà¥à¤¸à¤°à¤£ कर रहा है "
+
+#: skins/common/media/js/user.js:200
+#, perl-format
+msgid "follow %s"
+msgstr "%s का अनà¥à¤¸à¤°à¤£ करे "
+
+#: skins/common/media/js/utils.js:44
+msgid "click to close"
+msgstr "बंद करने के के लिठकà¥à¤²à¤¿à¤• करें"
+
+#: skins/common/media/js/wmd/wmd.js:26
+msgid "bold"
+msgstr "मोटा"
+
+#: skins/common/media/js/wmd/wmd.js:27
+msgid "italic"
+msgstr "इटालिक"
+
+#: skins/common/media/js/wmd/wmd.js:28
+msgid "link"
+msgstr "लिंक"
+
+#: skins/common/media/js/wmd/wmd.js:29
+msgid "quote"
+msgstr "उदà¥à¤§à¤°à¤£"
+
+#: skins/common/media/js/wmd/wmd.js:30
+msgid "preformatted text"
+msgstr "पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ सà¥à¤µà¤°à¥‚प वाला पाठ"
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "image"
+msgstr "छवि"
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "attachment"
+msgstr "अनà¥à¤²à¤—à¥à¤¨à¤•"
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "numbered list"
+msgstr "कà¥à¤°à¤®à¤¾à¤‚कित सूची"
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "bulleted list"
+msgstr "बà¥à¤²à¥‡à¤Ÿà¥‡à¤¡ सूची"
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "heading"
+msgstr "शीरà¥à¤·à¤•"
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "horizontal bar"
+msgstr "कà¥à¤·à¥ˆà¤¤à¤¿à¤œ पटà¥à¤Ÿà¥€"
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "undo"
+msgstr "पूरà¥à¤µà¤µà¤¤à¥ करें"
+
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
+msgid "redo"
+msgstr "फिर से करे "
+
+#: skins/common/media/js/wmd/wmd.js:47
+msgid "enter image url"
+msgstr ""
+"छवि का यूआरà¤à¤² पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ करें, जैसे http://www.example.com/image.jpg या किसी छवि फ़ाइल "
+"को अपलोड करें"
+
+#: skins/common/media/js/wmd/wmd.js:48
+msgid "enter url"
+msgstr "वेब पता पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ करें जैसे:http://www.example.com \"page title\""
+
+#: skins/common/media/js/wmd/wmd.js:49
+msgid "upload file attachment"
+msgstr "कृपया चà¥à¤¨à¥‡à¤‚ और फ़ाइल को अपलोड करें:"
+
+#~ msgid "tags cannot be empty"
+#~ msgstr "कृपया कम से कम à¤à¤• लेबल को दरà¥à¤œ करें"
+
+#~ msgid "content cannot be empty"
+#~ msgstr "सामगà¥à¤°à¥€ रिकà¥à¤¤ नहीं हो सकता है"
+
+#~ msgid "%s content minchars"
+#~ msgstr "कृपया %s वरà¥à¤£à¥‹à¤‚ से अधिक दरà¥à¤œ करें "
+
+#~ msgid "please enter title"
+#~ msgstr "कृपया शीरà¥à¤·à¤• दरà¥à¤œ करें"
+
+#~ msgid "%s title minchars"
+#~ msgstr "कम से कम %s अकà¥à¤·à¤° दरà¥à¤œ करें"
+
+#~ msgid "Follow"
+#~ msgstr "पालन करें"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s अनà¥à¤¸à¤°à¤£à¤•à¤°à¥à¤¤à¤¾"
+#~ msgstr[1] "%s अनà¥à¤¸à¤°à¤£à¤•à¤°à¥à¤¤à¤¾"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>निमà¥à¤¨à¤²à¤¿à¤–ित</div><div class=\"unfollow\">Unfollow</div>"
+
+#~ msgid "undelete"
+#~ msgstr "न मिटाठ"
+
+#~ msgid "delete"
+#~ msgstr "मिटाठ"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "कम से कम %s से अधिक अकà¥à¤·à¤°à¥‹à¤‚ की पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ करें"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s अकà¥à¤·à¤°à¥‹à¤‚ को छोड़ दिया है."
+
+#~ msgid "cancel"
+#~ msgstr "रदà¥à¤¦ करें"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "कà¥à¤¯à¤¾ आप सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करेंगे कि आप इस टिपà¥à¤ªà¤£à¥€ को पोसà¥à¤Ÿ नहीं करना चाहते हैं?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "कà¥à¤¯à¤¾ आप सच में इस टिपà¥à¤ªà¤£à¥€ को नषà¥à¤Ÿ करना चाहते हैं?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "इस टिपà¥à¤ªà¤£à¥€ को संपादित करने के लिठकà¥à¤²à¤¿à¤• करें"
+
+#~ msgid "edit"
+#~ msgstr "संपादित करें"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "'%s' पà¥à¤°à¤¶à¥à¤¨à¥‹à¤‚ को चिहà¥à¤¨à¤¿à¤¤ करे "
+
+#~ msgid "image description"
+#~ msgstr "छवि विवरण"
+
+#~ msgid "file name"
+#~ msgstr "फ़ाइल का नाम"
+
+#~ msgid "link text"
+#~ msgstr "लिंक पाठ"
diff --git a/askbot/locale/hu/LC_MESSAGES/django.mo b/askbot/locale/hu/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..97d032d7
--- /dev/null
+++ b/askbot/locale/hu/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/hu/LC_MESSAGES/django.po b/askbot/locale/hu/LC_MESSAGES/django.po
new file mode 100644
index 00000000..30604e9b
--- /dev/null
+++ b/askbot/locale/hu/LC_MESSAGES/django.po
@@ -0,0 +1,7108 @@
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
+# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:54-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Evgeny Fadeev <evgeny.fadeev@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!= 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+
+#: exceptions.py:13
+msgid "Sorry, but anonymous visitors cannot access this function"
+msgstr ""
+
+#: feed.py:28 feed.py:90
+msgid " - "
+msgstr ""
+
+#: feed.py:28
+msgid "Individual question feed"
+msgstr ""
+
+#: feed.py:90
+msgid "latest questions"
+msgstr ""
+
+#: forms.py:74
+msgid "select country"
+msgstr ""
+
+#: forms.py:83
+msgid "Country"
+msgstr ""
+
+#: forms.py:91
+msgid "Country field is required"
+msgstr ""
+
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "title"
+msgstr ""
+
+#: forms.py:105
+msgid "please enter a descriptive title for your question"
+msgstr ""
+
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
+msgid "content"
+msgstr ""
+
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
+msgid "tags"
+msgstr ""
+
+#: forms.py:188
+#, python-format
+msgid ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:222 skins/default/templates/question_retag.html:58
+msgid "tags are required"
+msgstr ""
+
+#: forms.py:232
+#, python-format
+msgid "please use %(tag_count)d tag or less"
+msgid_plural "please use %(tag_count)d tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:240
+#, python-format
+msgid "At least one of the following tags is required : %(tags)s"
+msgstr ""
+
+#: forms.py:249
+#, python-format
+msgid "each tag must be shorter than %(max_chars)d character"
+msgid_plural "each tag must be shorter than %(max_chars)d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
+
+#: forms.py:294
+msgid "community wiki (karma is not awarded & many others can edit wiki post)"
+msgstr ""
+
+#: forms.py:295
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+
+#: forms.py:311
+msgid "update summary:"
+msgstr ""
+
+#: forms.py:312
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+
+#: forms.py:386
+msgid "Enter number of points to add or subtract"
+msgstr ""
+
+#: forms.py:400 const/__init__.py:253
+msgid "approved"
+msgstr ""
+
+#: forms.py:401 const/__init__.py:254
+msgid "watched"
+msgstr ""
+
+#: forms.py:402 const/__init__.py:255
+msgid "suspended"
+msgstr ""
+
+#: forms.py:403 const/__init__.py:256
+msgid "blocked"
+msgstr ""
+
+#: forms.py:405
+msgid "administrator"
+msgstr ""
+
+#: forms.py:406 const/__init__.py:252
+msgid "moderator"
+msgstr ""
+
+#: forms.py:426
+msgid "Change status to"
+msgstr ""
+
+#: forms.py:453
+msgid "which one?"
+msgstr ""
+
+#: forms.py:474
+msgid "Cannot change own status"
+msgstr ""
+
+#: forms.py:480
+msgid "Cannot turn other user to moderator"
+msgstr ""
+
+#: forms.py:487
+msgid "Cannot change status of another moderator"
+msgstr ""
+
+#: forms.py:493
+msgid "Cannot change status to admin"
+msgstr ""
+
+#: forms.py:499
+#, python-format
+msgid ""
+"If you wish to change %(username)s's status, please make a meaningful "
+"selection."
+msgstr ""
+
+#: forms.py:508
+msgid "Subject line"
+msgstr ""
+
+#: forms.py:515
+msgid "Message text"
+msgstr ""
+
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr ""
+
+#: forms.py:531
+msgid "Email:"
+msgstr ""
+
+#: forms.py:533
+msgid "Your message:"
+msgstr ""
+
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr ""
+
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr ""
+
+#: forms.py:599
+msgid "ask anonymously"
+msgstr ""
+
+#: forms.py:601
+msgid "Check if you do not want to reveal your name when asking this question"
+msgstr ""
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
+msgid ""
+"You have asked this question anonymously, if you decide to reveal your "
+"identity, please check this box."
+msgstr ""
+
+#: forms.py:773
+msgid "reveal identity"
+msgstr ""
+
+#: forms.py:831
+msgid ""
+"Sorry, only owner of the anonymous question can reveal his or her identity, "
+"please uncheck the box"
+msgstr ""
+
+#: forms.py:844
+msgid ""
+"Sorry, apparently rules have just changed - it is no longer possible to ask "
+"anonymously. Please either check the \"reveal identity\" box or reload this "
+"page and try editing the question again."
+msgstr ""
+
+#: forms.py:888
+msgid "Real name"
+msgstr ""
+
+#: forms.py:895
+msgid "Website"
+msgstr ""
+
+#: forms.py:902
+msgid "City"
+msgstr ""
+
+#: forms.py:911
+msgid "Show country"
+msgstr ""
+
+#: forms.py:916
+msgid "Date of birth"
+msgstr ""
+
+#: forms.py:917
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr ""
+
+#: forms.py:923
+msgid "Profile"
+msgstr ""
+
+#: forms.py:932
+msgid "Screen name"
+msgstr ""
+
+#: forms.py:963 forms.py:964
+msgid "this email has already been registered, please use another one"
+msgstr ""
+
+#: forms.py:971
+msgid "Choose email tag filter"
+msgstr ""
+
+#: forms.py:1018
+msgid "Asked by me"
+msgstr ""
+
+#: forms.py:1021
+msgid "Answered by me"
+msgstr ""
+
+#: forms.py:1024
+msgid "Individually selected"
+msgstr ""
+
+#: forms.py:1027
+msgid "Entire forum (tag filtered)"
+msgstr ""
+
+#: forms.py:1031
+msgid "Comments and posts mentioning me"
+msgstr ""
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr ""
+
+#: forms.py:1115
+msgid "okay, let's try!"
+msgstr ""
+
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr "no askbot email please, thanks"
+
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
+msgid "about/"
+msgstr ""
+
+#: urls.py:42
+msgid "faq/"
+msgstr ""
+
+#: urls.py:43
+msgid "privacy/"
+msgstr ""
+
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
+msgid "answers/"
+msgstr ""
+
+#: urls.py:46 urls.py:87 urls.py:212
+msgid "edit/"
+msgstr ""
+
+#: urls.py:51 urls.py:117
+msgid "revisions/"
+msgstr ""
+
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr "Tags"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
+msgid "questions/"
+msgstr ""
+
+#: urls.py:82
+msgid "ask/"
+msgstr ""
+
+#: urls.py:92
+msgid "retag/"
+msgstr ""
+
+#: urls.py:97
+msgid "close/"
+msgstr ""
+
+#: urls.py:102
+msgid "reopen/"
+msgstr ""
+
+#: urls.py:107
+msgid "answer/"
+msgstr ""
+
+#: urls.py:112
+msgid "vote/"
+msgstr ""
+
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
+msgid "tags/"
+msgstr ""
+
+#: urls.py:201
+msgid "subscribe-for-tags/"
+msgstr ""
+
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
+msgid "users/"
+msgstr ""
+
+#: urls.py:219
+msgid "subscriptions/"
+msgstr ""
+
+#: urls.py:231
+msgid "users/update_has_custom_avatar/"
+msgstr ""
+
+#: urls.py:236 urls.py:241
+msgid "badges/"
+msgstr ""
+
+#: urls.py:246
+msgid "messages/"
+msgstr ""
+
+#: urls.py:246
+msgid "markread/"
+msgstr ""
+
+#: urls.py:262
+msgid "upload/"
+msgstr ""
+
+#: urls.py:263
+msgid "feedback/"
+msgstr ""
+
+#: urls.py:305
+msgid "question/"
+msgstr ""
+
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
+msgid "account/"
+msgstr ""
+
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr ""
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr ""
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:32
+msgid "Peer Pressure: minimum downvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:41
+msgid "Teacher: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:50
+msgid "Nice Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:59
+msgid "Good Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:68
+msgid "Great Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:77
+msgid "Nice Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:86
+msgid "Good Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:95
+msgid "Great Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:104
+msgid "Popular Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:113
+msgid "Notable Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:122
+msgid "Famous Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:131
+msgid "Self-Learner: minimum answer upvotes"
+msgstr ""
+
+#: conf/badges.py:140
+msgid "Civic Duty: minimum votes"
+msgstr ""
+
+#: conf/badges.py:149
+msgid "Enlightened Duty: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:158
+msgid "Guru: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:167
+msgid "Necromancer: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:176
+msgid "Necromancer: minimum delay in days"
+msgstr ""
+
+#: conf/badges.py:185
+msgid "Associate Editor: minimum number of edits"
+msgstr ""
+
+#: conf/badges.py:194
+msgid "Favorite Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:203
+msgid "Stellar Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:212
+msgid "Commentator: minimum comments"
+msgstr ""
+
+#: conf/badges.py:221
+msgid "Taxonomist: minimum tag use count"
+msgstr ""
+
+#: conf/badges.py:230
+msgid "Enthusiast: minimum days"
+msgstr ""
+
+#: conf/email.py:15
+msgid "Email and email alert settings"
+msgstr ""
+
+#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr ""
+
+#: conf/email.py:26
+msgid ""
+"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
+"value entered here will overridethe default."
+msgstr ""
+
+#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
+msgid "Maximum number of news entries in an email alert"
+msgstr ""
+
+#: conf/email.py:57
+msgid "Default notification frequency all questions"
+msgstr ""
+
+#: conf/email.py:59
+msgid "Option to define frequency of emailed updates for: all questions."
+msgstr ""
+
+#: conf/email.py:71
+msgid "Default notification frequency questions asked by the user"
+msgstr ""
+
+#: conf/email.py:73
+msgid ""
+"Option to define frequency of emailed updates for: Question asked by the "
+"user."
+msgstr ""
+
+#: conf/email.py:85
+msgid "Default notification frequency questions answered by the user"
+msgstr ""
+
+#: conf/email.py:87
+msgid ""
+"Option to define frequency of emailed updates for: Question answered by the "
+"user."
+msgstr ""
+
+#: conf/email.py:99
+msgid ""
+"Default notification frequency questions individually "
+"selected by the user"
+msgstr ""
+
+#: conf/email.py:102
+msgid ""
+"Option to define frequency of emailed updates for: Question individually "
+"selected by the user."
+msgstr ""
+
+#: conf/email.py:114
+msgid ""
+"Default notification frequency for mentions and "
+"comments"
+msgstr ""
+
+#: conf/email.py:117
+msgid ""
+"Option to define frequency of emailed updates for: Mentions and comments."
+msgstr ""
+
+#: conf/email.py:128
+msgid "Send periodic reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:130
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_unanswered_question_reminders\" (for example, via a cron job "
+"- with an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:143
+msgid "Days before starting to send reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:154
+msgid ""
+"How often to send unanswered question reminders (in days between the "
+"reminders sent)."
+msgstr ""
+
+#: conf/email.py:166
+msgid "Max. number of reminders to send about unanswered questions"
+msgstr ""
+
+#: conf/email.py:177
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: conf/email.py:179
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:192
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:203
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:215
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:227
+msgid "Require email verification before allowing to post"
+msgstr ""
+
+#: conf/email.py:228
+msgid ""
+"Active email verification is done by sending a verification key in email"
+msgstr ""
+
+#: conf/email.py:237
+msgid "Allow only one account per email address"
+msgstr ""
+
+#: conf/email.py:246
+msgid "Fake email for anonymous user"
+msgstr ""
+
+#: conf/email.py:247
+msgid "Use this setting to control gravatar for email-less user"
+msgstr ""
+
+#: conf/email.py:256
+msgid "Allow posting questions by email"
+msgstr ""
+
+#: conf/email.py:258
+msgid ""
+"Before enabling this setting - please fill out IMAP settings in the settings."
+"py file"
+msgstr ""
+
+#: conf/email.py:269
+msgid "Replace space in emailed tags with dash"
+msgstr ""
+
+#: conf/email.py:271
+msgid ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
+msgstr ""
+
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr ""
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr ""
+
+#: conf/external_keys.py:19
+msgid "Google site verification key"
+msgstr ""
+
+#: conf/external_keys.py:21
+#, python-format
+msgid ""
+"This key helps google index your site please obtain is at <a href=\"%(url)s?"
+"hl=%(lang)s\">google webmasters tools site</a>"
+msgstr ""
+
+#: conf/external_keys.py:36
+msgid "Google Analytics key"
+msgstr ""
+
+#: conf/external_keys.py:38
+#, python-format
+msgid ""
+"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
+"use Google Analytics to monitor your site"
+msgstr ""
+
+#: conf/external_keys.py:51
+msgid "Enable recaptcha (keys below are required)"
+msgstr ""
+
+#: conf/external_keys.py:62
+msgid "Recaptcha public key"
+msgstr ""
+
+#: conf/external_keys.py:70
+msgid "Recaptcha private key"
+msgstr ""
+
+#: conf/external_keys.py:72
+#, python-format
+msgid ""
+"Recaptcha is a tool that helps distinguish real people from annoying spam "
+"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:84
+msgid "Facebook public API key"
+msgstr ""
+
+#: conf/external_keys.py:86
+#, python-format
+msgid ""
+"Facebook API key and Facebook secret allow to use Facebook Connect login "
+"method at your site. Please obtain these keys at <a href=\"%(url)s"
+"\">facebook create app</a> site"
+msgstr ""
+
+#: conf/external_keys.py:99
+msgid "Facebook secret key"
+msgstr ""
+
+#: conf/external_keys.py:107
+msgid "Twitter consumer key"
+msgstr ""
+
+#: conf/external_keys.py:109
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:120
+msgid "Twitter consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:128
+msgid "LinkedIn consumer key"
+msgstr ""
+
+#: conf/external_keys.py:130
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr ""
+
+#: conf/external_keys.py:141
+msgid "LinkedIn consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:149
+msgid "ident.ca consumer key"
+msgstr ""
+
+#: conf/external_keys.py:151
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
+msgstr ""
+
+#: conf/external_keys.py:162
+msgid "ident.ca consumer secret"
+msgstr ""
+
+#: conf/flatpages.py:11
+msgid "Flatpages - about, privacy policy, etc."
+msgstr ""
+
+#: conf/flatpages.py:19
+msgid "Text of the Q&A forum About page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:22
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"about\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:32
+msgid "Text of the Q&A forum FAQ page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:35
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"faq\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:46
+msgid "Text of the Q&A forum Privacy Policy (html format)"
+msgstr ""
+
+#: conf/flatpages.py:49
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"privacy\" page to check your input."
+msgstr ""
+
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
+msgstr ""
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
+#, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr ""
+
+#: conf/forum_data_rules.py:33
+msgid "Check to enable community wiki feature"
+msgstr ""
+
+#: conf/forum_data_rules.py:42
+msgid "Allow asking questions anonymously"
+msgstr ""
+
+#: conf/forum_data_rules.py:44
+msgid ""
+"Users do not accrue reputation for anonymous questions and their identity is "
+"not revealed until they change their mind"
+msgstr ""
+
+#: conf/forum_data_rules.py:56
+msgid "Allow posting before logging in"
+msgstr ""
+
+#: conf/forum_data_rules.py:58
+msgid ""
+"Check if you want to allow users start posting questions or answers before "
+"logging in. Enabling this may require adjustments in the user login system "
+"to check for pending posts every time the user logs in. The builtin Askbot "
+"login system supports this feature."
+msgstr ""
+
+#: conf/forum_data_rules.py:73
+msgid "Allow swapping answer with question"
+msgstr ""
+
+#: conf/forum_data_rules.py:75
+msgid ""
+"This setting will help import data from other forums such as zendesk, when "
+"automatic data import fails to detect the original question correctly."
+msgstr ""
+
+#: conf/forum_data_rules.py:87
+msgid "Maximum length of tag (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr ""
+
+#: conf/forum_data_rules.py:135
+msgid "Mandatory tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:138
+msgid ""
+"At least one of these tags will be required for any new or newly edited "
+"question. A mandatory tag may be wildcard, if the wildcard tags are active."
+msgstr ""
+
+#: conf/forum_data_rules.py:150
+msgid "Force lowercase the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:152
+msgid ""
+"Attention: after checking this, please back up the database, and run a "
+"management command: <code>python manage.py fix_question_tags</code> to "
+"globally rename the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:166
+msgid "Format of tag list"
+msgstr ""
+
+#: conf/forum_data_rules.py:168
+msgid ""
+"Select the format to show tags in, either as a simple list, or as a tag cloud"
+msgstr ""
+
+#: conf/forum_data_rules.py:180
+msgid "Use wildcard tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:182
+msgid ""
+"Wildcard tags can be used to follow or ignore many tags at once, a valid "
+"wildcard tag has a single wildcard at the very end"
+msgstr ""
+
+#: conf/forum_data_rules.py:195
+msgid "Default max number of comments to display under posts"
+msgstr ""
+
+#: conf/forum_data_rules.py:206
+#, python-format
+msgid "Maximum comment length, must be < %(max_len)s"
+msgstr ""
+
+#: conf/forum_data_rules.py:216
+msgid "Limit time to edit comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:218
+msgid "If unchecked, there will be no time limit to edit the comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:229
+msgid "Minutes allowed to edit a comment"
+msgstr ""
+
+#: conf/forum_data_rules.py:230
+msgid "To enable this setting, check the previous one"
+msgstr ""
+
+#: conf/forum_data_rules.py:239
+msgid "Save comment by pressing <Enter> key"
+msgstr ""
+
+#: conf/forum_data_rules.py:248
+msgid "Minimum length of search term for Ajax search"
+msgstr ""
+
+#: conf/forum_data_rules.py:249
+msgid "Must match the corresponding database backend setting"
+msgstr ""
+
+#: conf/forum_data_rules.py:258
+msgid "Do not make text query sticky in search"
+msgstr ""
+
+#: conf/forum_data_rules.py:260
+msgid ""
+"Check to disable the \"sticky\" behavior of the search query. This may be "
+"useful if you want to move the search bar away from the default position or "
+"do not like the default sticky behavior of the text search query."
+msgstr ""
+
+#: conf/forum_data_rules.py:273
+msgid "Maximum number of tags per question"
+msgstr ""
+
+#: conf/forum_data_rules.py:285
+msgid "Number of questions to list by default"
+msgstr ""
+
+#: conf/forum_data_rules.py:295
+msgid "What should \"unanswered question\" mean?"
+msgstr ""
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/license.py:13
+msgid "Content License"
+msgstr ""
+
+#: conf/license.py:21
+msgid "Show license clause in the site footer"
+msgstr ""
+
+#: conf/license.py:30
+msgid "Short name for the license"
+msgstr ""
+
+#: conf/license.py:39
+msgid "Full name of the license"
+msgstr ""
+
+#: conf/license.py:40
+msgid "Creative Commons Attribution Share Alike 3.0"
+msgstr ""
+
+#: conf/license.py:48
+msgid "Add link to the license page"
+msgstr ""
+
+#: conf/license.py:57
+msgid "License homepage"
+msgstr ""
+
+#: conf/license.py:59
+msgid "URL of the official page with all the license legal clauses"
+msgstr ""
+
+#: conf/license.py:69
+msgid "Use license logo"
+msgstr ""
+
+#: conf/license.py:78
+msgid "License logo image"
+msgstr ""
+
+#: conf/login_providers.py:13
+msgid "Login provider setings"
+msgstr ""
+
+#: conf/login_providers.py:22
+msgid ""
+"Show alternative login provider buttons on the password \"Sign Up\" page"
+msgstr ""
+
+#: conf/login_providers.py:31
+msgid "Always display local login form and hide \"Askbot\" button."
+msgstr ""
+
+#: conf/login_providers.py:40
+msgid "Activate to allow login with self-hosted wordpress site"
+msgstr ""
+
+#: conf/login_providers.py:41
+msgid ""
+"to activate this feature you must fill out the wordpress xml-rpc setting "
+"bellow"
+msgstr ""
+
+#: conf/login_providers.py:50
+msgid ""
+"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
+"xmlrpc.php"
+msgstr ""
+
+#: conf/login_providers.py:51
+msgid ""
+"To enable, go to Settings->Writing->Remote Publishing and check the box for "
+"XML-RPC"
+msgstr ""
+
+#: conf/login_providers.py:60
+msgid "Upload your icon"
+msgstr ""
+
+#: conf/login_providers.py:90
+#, python-format
+msgid "Activate %(provider)s login"
+msgstr ""
+
+#: conf/login_providers.py:95
+#, python-format
+msgid ""
+"Note: to really enable %(provider)s login some additional parameters will "
+"need to be set in the \"External keys\" section"
+msgstr ""
+
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr ""
+
+#: conf/markup.py:41
+msgid "Enable code-friendly Markdown"
+msgstr ""
+
+#: conf/markup.py:43
+msgid ""
+"If checked, underscore characters will not trigger italic or bold formatting "
+"- bold and italic text can still be marked up with asterisks. Note that "
+"\"MathJax support\" implicitly turns this feature on, because underscores "
+"are heavily used in LaTeX input."
+msgstr ""
+
+#: conf/markup.py:58
+msgid "Mathjax support (rendering of LaTeX)"
+msgstr ""
+
+#: conf/markup.py:60
+#, python-format
+msgid ""
+"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
+"installed on your server in its own directory."
+msgstr ""
+
+#: conf/markup.py:74
+msgid "Base url of MathJax deployment"
+msgstr ""
+
+#: conf/markup.py:76
+msgid ""
+"Note - <strong>MathJax is not included with askbot</strong> - you should "
+"deploy it yourself, preferably at a separate domain and enter url pointing "
+"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+msgstr ""
+
+#: conf/markup.py:91
+msgid "Enable autolinking with specific patterns"
+msgstr ""
+
+#: conf/markup.py:93
+msgid ""
+"If you enable this feature, the application will be able to detect patterns "
+"and auto link to URLs"
+msgstr ""
+
+#: conf/markup.py:106
+msgid "Regexes to detect the link patterns"
+msgstr ""
+
+#: conf/markup.py:108
+msgid ""
+"Enter valid regular expressions for the patters, one per line. For example "
+"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
+"The numbers captured by the pattern in the parentheses will be transferred "
+"to the link url template. Please look up more information about regular "
+"expressions elsewhere."
+msgstr ""
+
+#: conf/markup.py:127
+msgid "URLs for autolinking"
+msgstr ""
+
+#: conf/markup.py:129
+msgid ""
+"Here, please enter url templates for the patterns entered in the previous "
+"setting, also one entry per line. <strong>Make sure that number of lines in "
+"this setting and the previous one are the same</strong> For example template "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
+"shown above and the entry in the post #123 will produce link to the bug 123 "
+"in the redhat bug tracker."
+msgstr ""
+
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
+
+#: conf/minimum_reputation.py:22
+msgid "Upvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:31
+msgid "Downvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:40
+msgid "Answer own question immediately"
+msgstr ""
+
+#: conf/minimum_reputation.py:49
+msgid "Accept own answer"
+msgstr ""
+
+#: conf/minimum_reputation.py:58
+msgid "Flag offensive"
+msgstr ""
+
+#: conf/minimum_reputation.py:67
+msgid "Leave comments"
+msgstr ""
+
+#: conf/minimum_reputation.py:76
+msgid "Delete comments posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:85
+msgid "Delete questions and answers posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:94
+msgid "Upload files"
+msgstr ""
+
+#: conf/minimum_reputation.py:103
+msgid "Close own questions"
+msgstr ""
+
+#: conf/minimum_reputation.py:112
+msgid "Retag questions posted by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:121
+msgid "Reopen own questions"
+msgstr ""
+
+#: conf/minimum_reputation.py:130
+msgid "Edit community wiki posts"
+msgstr ""
+
+#: conf/minimum_reputation.py:139
+msgid "Edit posts authored by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:148
+msgid "View offensive flags"
+msgstr ""
+
+#: conf/minimum_reputation.py:157
+msgid "Close questions asked by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:166
+msgid "Lock posts"
+msgstr ""
+
+#: conf/minimum_reputation.py:175
+msgid "Remove rel=nofollow from own homepage"
+msgstr ""
+
+#: conf/minimum_reputation.py:177
+msgid ""
+"When a search engine crawler will see a rel=nofollow attribute on a link - "
+"the link will not count towards the rank of the users personal site."
+msgstr ""
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
+msgstr ""
+
+#: conf/reputation_changes.py:23
+msgid "Maximum daily reputation gain per user"
+msgstr ""
+
+#: conf/reputation_changes.py:32
+msgid "Gain for receiving an upvote"
+msgstr ""
+
+#: conf/reputation_changes.py:41
+msgid "Gain for the author of accepted answer"
+msgstr ""
+
+#: conf/reputation_changes.py:50
+msgid "Gain for accepting best answer"
+msgstr ""
+
+#: conf/reputation_changes.py:59
+msgid "Gain for post owner on canceled downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:68
+msgid "Gain for voter on canceling downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:78
+msgid "Loss for voter for canceling of answer acceptance"
+msgstr ""
+
+#: conf/reputation_changes.py:88
+msgid "Loss for author whose answer was \"un-accepted\""
+msgstr ""
+
+#: conf/reputation_changes.py:98
+msgid "Loss for giving a downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:108
+msgid "Loss for owner of post that was flagged offensive"
+msgstr ""
+
+#: conf/reputation_changes.py:118
+msgid "Loss for owner of post that was downvoted"
+msgstr ""
+
+#: conf/reputation_changes.py:128
+msgid "Loss for owner of post that was flagged 3 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:138
+msgid "Loss for owner of post that was flagged 5 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:148
+msgid "Loss for post owner when upvote is canceled"
+msgstr ""
+
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_question.py:19
+msgid "Custom sidebar header"
+msgstr ""
+
+#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_question.py:22
+msgid ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_main.py:36
+msgid "Show avatar block in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:38
+msgid "Uncheck this if you want to hide the avatar block from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:49
+msgid "Limit how many avatars will be displayed on the sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:59
+msgid "Show tag selector in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:61
+msgid ""
+"Uncheck this if you want to hide the options for choosing interesting and "
+"ignored tags "
+msgstr ""
+
+#: conf/sidebar_main.py:72
+msgid "Show tag list/cloud in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:74
+msgid ""
+"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_question.py:75
+msgid "Custom sidebar footer"
+msgstr ""
+
+#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_question.py:78
+msgid ""
+"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
+"When using this option (as well as the sidebar header), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:11
+msgid "Question page sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:35
+msgid "Show tag list in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:37
+msgid "Uncheck this if you want to hide the tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_question.py:48
+msgid "Show meta information in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:50
+msgid ""
+"Uncheck this if you want to hide the meta information about the question "
+"(post date, views, last updated). "
+msgstr ""
+
+#: conf/sidebar_question.py:62
+msgid "Show related questions in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:64
+msgid "Uncheck this if you want to hide the list of related questions. "
+msgstr ""
+
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
+
+#: conf/site_modes.py:74
+msgid "Activate a \"Bootstrap\" mode"
+msgstr ""
+
+#: conf/site_modes.py:76
+msgid ""
+"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
+"more suitable for the smaller communities, <strong>WARNING:</strong> your "
+"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
+"changed after you modify this setting."
+msgstr ""
+
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
+
+#: conf/site_settings.py:21
+msgid "Site title for the Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:30
+msgid "Comma separated list of Q&A site keywords"
+msgstr ""
+
+#: conf/site_settings.py:39
+msgid "Copyright message to show in the footer"
+msgstr ""
+
+#: conf/site_settings.py:49
+msgid "Site description for the search engines"
+msgstr ""
+
+#: conf/site_settings.py:58
+msgid "Short name for your Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:67
+msgid "Base URL for your Q&A forum, must start with http or https"
+msgstr ""
+
+#: conf/site_settings.py:78
+msgid "Check to enable greeting for anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:89
+msgid "Text shown in the greeting message shown to the anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:93
+msgid "Use HTML to format the message "
+msgstr ""
+
+#: conf/site_settings.py:102
+msgid "Feedback site URL"
+msgstr ""
+
+#: conf/site_settings.py:104
+msgid "If left empty, a simple internal feedback form will be used instead"
+msgstr ""
+
+#: conf/skin_counter_settings.py:11
+msgid "Skin: view, vote and answer counters"
+msgstr ""
+
+#: conf/skin_counter_settings.py:19
+msgid "Vote counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:29
+msgid "Background color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
+#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
+#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
+#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
+#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
+#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
+#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
+#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
+#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
+#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
+msgid "HTML color name or hex value"
+msgstr ""
+
+#: conf/skin_counter_settings.py:40
+msgid "Foreground color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:51
+msgid "Background color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:61
+msgid "Foreground color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:71
+msgid "Background color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:84
+msgid "Foreground color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:95
+msgid "View counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:105
+msgid "Background color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:116
+msgid "Foreground color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:127
+msgid "Background color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:137
+msgid "Foreground color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:147
+msgid "Background color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:162
+msgid "Foreground color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:173
+msgid "Answer counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:185
+msgid "Background color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:195
+msgid "Foreground color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:205
+msgid "Background color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:215
+msgid "Foreground color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:227
+msgid "Background color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:238
+msgid "Foreground color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:251
+msgid "Background color for accepted"
+msgstr ""
+
+#: conf/skin_counter_settings.py:261
+msgid "Foreground color for accepted answer"
+msgstr ""
+
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
+
+#: conf/skin_general_settings.py:23
+msgid "Q&A site logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:25
+msgid "To change the logo, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/skin_general_settings.py:37
+msgid "Show logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:39
+msgid ""
+"Check if you want to show logo in the forum header or uncheck in the case "
+"you do not want the logo to appear in the default location"
+msgstr ""
+
+#: conf/skin_general_settings.py:51
+msgid "Site favicon"
+msgstr ""
+
+#: conf/skin_general_settings.py:53
+#, python-format
+msgid ""
+"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
+"browser user interface. Please find more information about favicon at <a "
+"href=\"%(favicon_info_url)s\">this page</a>."
+msgstr ""
+
+#: conf/skin_general_settings.py:69
+msgid "Password login button"
+msgstr ""
+
+#: conf/skin_general_settings.py:71
+msgid ""
+"An 88x38 pixel image that is used on the login screen for the password login "
+"button."
+msgstr ""
+
+#: conf/skin_general_settings.py:84
+msgid "Show all UI functions to all users"
+msgstr ""
+
+#: conf/skin_general_settings.py:86
+msgid ""
+"If checked, all forum functions will be shown to users, regardless of their "
+"reputation. However to use those functions, moderation rules, reputation and "
+"other limits will still apply."
+msgstr ""
+
+#: conf/skin_general_settings.py:101
+msgid "Select skin"
+msgstr ""
+
+#: conf/skin_general_settings.py:112
+msgid "Customize HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:121
+msgid "Custom portion of the HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:123
+msgid ""
+"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
+"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
+"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
+"meta&gt; may be added. Please, keep in mind that adding external javascript "
+"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
+"pages. Instead, it will be more efficient to place links to the javascript "
+"files into the footer. <strong>Note:</strong> if you do use this setting, "
+"please test the site with the W3C HTML validator service."
+msgstr ""
+
+#: conf/skin_general_settings.py:145
+msgid "Custom header additions"
+msgstr ""
+
+#: conf/skin_general_settings.py:147
+msgid ""
+"Header is the bar at the top of the content that contains user info and site "
+"links, and is common to all pages. Use this area to enter contents of the "
+"headerin the HTML format. When customizing the site header (as well as "
+"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
+"sure that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:162
+msgid "Site footer mode"
+msgstr ""
+
+#: conf/skin_general_settings.py:164
+msgid ""
+"Footer is the bottom portion of the content, which is common to all pages. "
+"You can disable, customize, or use the default footer."
+msgstr ""
+
+#: conf/skin_general_settings.py:181
+msgid "Custom footer (HTML format)"
+msgstr ""
+
+#: conf/skin_general_settings.py:183
+msgid ""
+"<strong>To enable this function</strong>, please select option 'customize' "
+"in the \"Site footer mode\" above. Use this area to enter contents of the "
+"footer in the HTML format. When customizing the site footer (as well as the "
+"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
+"that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:198
+msgid "Apply custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:200
+msgid ""
+"Check if you want to change appearance of your form by adding custom style "
+"sheet rules (please see the next item)"
+msgstr ""
+
+#: conf/skin_general_settings.py:212
+msgid "Custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:214
+msgid ""
+"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
+"option above. The CSS rules added in this window will be applied after the "
+"default style sheet rules. The custom style sheet will be served dynamically "
+"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
+"depends (default is empty string) on the url configuration in your urls.py."
+msgstr ""
+
+#: conf/skin_general_settings.py:230
+msgid "Add custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:233
+msgid "Check to enable javascript that you can enter in the next field"
+msgstr ""
+
+#: conf/skin_general_settings.py:243
+msgid "Custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:245
+msgid ""
+"Type or paste plain javascript that you would like to run on your site. Link "
+"to the script will be inserted at the bottom of the HTML output and will be "
+"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
+"your javascript code may break other functionalities of the site and that "
+"the behavior may not be consistent across different browsers (<strong>to "
+"enable your custom code</strong>, check \"Add custom javascript\" option "
+"above)."
+msgstr ""
+
+#: conf/skin_general_settings.py:263
+msgid "Skin media revision number"
+msgstr ""
+
+#: conf/skin_general_settings.py:265
+msgid "Will be set automatically but you can modify it if necessary."
+msgstr ""
+
+#: conf/skin_general_settings.py:276
+msgid "Hash to update the media revision number automatically."
+msgstr ""
+
+#: conf/skin_general_settings.py:280
+msgid "Will be set automatically, it is not necesary to modify manually."
+msgstr ""
+
+#: conf/social_sharing.py:11
+msgid "Sharing content on social networks"
+msgstr ""
+
+#: conf/social_sharing.py:20
+msgid "Check to enable sharing of questions on Twitter"
+msgstr ""
+
+#: conf/social_sharing.py:29
+msgid "Check to enable sharing of questions on Facebook"
+msgstr ""
+
+#: conf/social_sharing.py:38
+msgid "Check to enable sharing of questions on LinkedIn"
+msgstr ""
+
+#: conf/social_sharing.py:47
+msgid "Check to enable sharing of questions on Identi.ca"
+msgstr ""
+
+#: conf/social_sharing.py:56
+msgid "Check to enable sharing of questions on Google+"
+msgstr ""
+
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
+msgstr ""
+
+#: conf/spam_and_moderation.py:18
+msgid "Enable Akismet spam detection(keys below are required)"
+msgstr ""
+
+#: conf/spam_and_moderation.py:21
+#, python-format
+msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
+msgstr ""
+
+#: conf/spam_and_moderation.py:31
+msgid "Akismet key for spam detection"
+msgstr ""
+
+#: conf/super_groups.py:5
+msgid "Reputation, Badges, Votes & Flags"
+msgstr ""
+
+#: conf/super_groups.py:6
+msgid "Static Content, URLS & UI"
+msgstr ""
+
+#: conf/super_groups.py:7
+msgid "Data rules & Formatting"
+msgstr ""
+
+#: conf/super_groups.py:8
+msgid "External Services"
+msgstr ""
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:14
+msgid "User settings"
+msgstr ""
+
+#: conf/user_settings.py:23
+msgid "Allow editing user screen name"
+msgstr ""
+
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Your email <i>(never shared)</i>"
+
+#: conf/user_settings.py:41
+msgid "Allow account recovery by email"
+msgstr ""
+
+#: conf/user_settings.py:50
+msgid "Allow adding and removing login methods"
+msgstr ""
+
+#: conf/user_settings.py:60
+msgid "Minimum allowed length for screen name"
+msgstr ""
+
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr ""
+
+#: conf/user_settings.py:99
+msgid ""
+"This option allows you to set the default avatar type for email addresses "
+"without associated gravatar images. For more information, please visit <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:109
+msgid "Name for the Anonymous user"
+msgstr ""
+
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
+
+#: conf/vote_rules.py:24
+msgid "Number of votes a user can cast per day"
+msgstr ""
+
+#: conf/vote_rules.py:33
+msgid "Maximum number of flags per user per day"
+msgstr ""
+
+#: conf/vote_rules.py:42
+msgid "Threshold for warning about remaining daily votes"
+msgstr ""
+
+#: conf/vote_rules.py:51
+msgid "Number of days to allow canceling votes"
+msgstr ""
+
+#: conf/vote_rules.py:60
+msgid "Number of days required before answering own question"
+msgstr ""
+
+#: conf/vote_rules.py:69
+msgid "Number of flags required to automatically hide posts"
+msgstr ""
+
+#: conf/vote_rules.py:78
+msgid "Number of flags required to automatically delete posts"
+msgstr ""
+
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr ""
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr ""
+
+#: const/__init__.py:10
+msgid "duplicate question"
+msgstr ""
+
+#: const/__init__.py:11
+msgid "question is off-topic or not relevant"
+msgstr ""
+
+#: const/__init__.py:12
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: const/__init__.py:13
+msgid "not a real question"
+msgstr ""
+
+#: const/__init__.py:14
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: const/__init__.py:15
+msgid "question is not relevant or outdated"
+msgstr ""
+
+#: const/__init__.py:16
+msgid "question contains offensive or malicious remarks"
+msgstr ""
+
+#: const/__init__.py:17
+msgid "spam or advertising"
+msgstr ""
+
+#: const/__init__.py:18
+msgid "too localized"
+msgstr ""
+
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
+msgid "newest"
+msgstr ""
+
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
+msgid "oldest"
+msgstr ""
+
+#: const/__init__.py:45
+msgid "active"
+msgstr ""
+
+#: const/__init__.py:46
+msgid "inactive"
+msgstr ""
+
+#: const/__init__.py:47
+msgid "hottest"
+msgstr ""
+
+#: const/__init__.py:48
+msgid "coldest"
+msgstr ""
+
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
+msgid "most voted"
+msgstr ""
+
+#: const/__init__.py:50
+msgid "least voted"
+msgstr ""
+
+#: const/__init__.py:51
+msgid "relevance"
+msgstr ""
+
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
+msgid "all"
+msgstr ""
+
+#: const/__init__.py:64
+msgid "unanswered"
+msgstr ""
+
+#: const/__init__.py:65
+msgid "favorite"
+msgstr ""
+
+#: const/__init__.py:70
+msgid "list"
+msgstr ""
+
+#: const/__init__.py:71
+msgid "cloud"
+msgstr ""
+
+#: const/__init__.py:79
+msgid "Question has no answers"
+msgstr ""
+
+#: const/__init__.py:80
+msgid "Question has no accepted answers"
+msgstr ""
+
+#: const/__init__.py:125
+msgid "asked a question"
+msgstr ""
+
+#: const/__init__.py:126
+msgid "answered a question"
+msgstr ""
+
+#: const/__init__.py:127 const/__init__.py:203
+msgid "commented question"
+msgstr ""
+
+#: const/__init__.py:128 const/__init__.py:204
+msgid "commented answer"
+msgstr ""
+
+#: const/__init__.py:129
+msgid "edited question"
+msgstr ""
+
+#: const/__init__.py:130
+msgid "edited answer"
+msgstr ""
+
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
+msgstr "received badge"
+
+#: const/__init__.py:132
+msgid "marked best answer"
+msgstr ""
+
+#: const/__init__.py:133
+msgid "upvoted"
+msgstr ""
+
+#: const/__init__.py:134
+msgid "downvoted"
+msgstr ""
+
+#: const/__init__.py:135
+msgid "canceled vote"
+msgstr ""
+
+#: const/__init__.py:136
+msgid "deleted question"
+msgstr ""
+
+#: const/__init__.py:137
+msgid "deleted answer"
+msgstr ""
+
+#: const/__init__.py:138
+msgid "marked offensive"
+msgstr ""
+
+#: const/__init__.py:139
+msgid "updated tags"
+msgstr ""
+
+#: const/__init__.py:140
+msgid "selected favorite"
+msgstr ""
+
+#: const/__init__.py:141
+msgid "completed user profile"
+msgstr ""
+
+#: const/__init__.py:142
+msgid "email update sent to user"
+msgstr ""
+
+#: const/__init__.py:145
+msgid "reminder about unanswered questions sent"
+msgstr ""
+
+#: const/__init__.py:149
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:151
+msgid "mentioned in the post"
+msgstr ""
+
+#: const/__init__.py:202
+#, fuzzy
+msgid "answered question"
+msgstr "Post Your Answer"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "oldest"
+
+#: const/__init__.py:209
+msgid "[closed]"
+msgstr ""
+
+#: const/__init__.py:210
+msgid "[deleted]"
+msgstr ""
+
+#: const/__init__.py:211 views/readers.py:566
+msgid "initial version"
+msgstr ""
+
+#: const/__init__.py:212
+msgid "retagged"
+msgstr ""
+
+#: const/__init__.py:220
+msgid "off"
+msgstr ""
+
+#: const/__init__.py:221
+msgid "exclude ignored"
+msgstr ""
+
+#: const/__init__.py:222
+msgid "only selected"
+msgstr ""
+
+#: const/__init__.py:226
+msgid "instantly"
+msgstr ""
+
+#: const/__init__.py:227
+msgid "daily"
+msgstr ""
+
+#: const/__init__.py:228
+msgid "weekly"
+msgstr ""
+
+#: const/__init__.py:229
+msgid "no email"
+msgstr ""
+
+#: const/__init__.py:236
+msgid "identicon"
+msgstr ""
+
+#: const/__init__.py:237
+msgid "mystery-man"
+msgstr ""
+
+#: const/__init__.py:238
+msgid "monsterid"
+msgstr ""
+
+#: const/__init__.py:239
+msgid "wavatar"
+msgstr ""
+
+#: const/__init__.py:240
+msgid "retro"
+msgstr ""
+
+#: const/__init__.py:287 skins/default/templates/badges.html:38
+msgid "gold"
+msgstr ""
+
+#: const/__init__.py:288 skins/default/templates/badges.html:48
+msgid "silver"
+msgstr ""
+
+#: const/__init__.py:289 skins/default/templates/badges.html:55
+msgid "bronze"
+msgstr ""
+
+#: const/__init__.py:301
+msgid "None"
+msgstr ""
+
+#: const/__init__.py:302
+msgid "Gravatar"
+msgstr ""
+
+#: const/__init__.py:303
+msgid "Uploaded Avatar"
+msgstr ""
+
+#: const/message_keys.py:21
+msgid "most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:22
+msgid "click to see most relevant questions"
+msgstr ""
+
+#: const/message_keys.py:23
+msgid "by relevance"
+msgstr "relevance"
+
+#: const/message_keys.py:24
+msgid "click to see the oldest questions"
+msgstr ""
+
+#: const/message_keys.py:25
+msgid "by date"
+msgstr "date"
+
+#: const/message_keys.py:26
+msgid "click to see the newest questions"
+msgstr ""
+
+#: const/message_keys.py:27
+msgid "click to see the least recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:28
+msgid "by activity"
+msgstr "activity"
+
+#: const/message_keys.py:29
+msgid "click to see the most recently updated questions"
+msgstr ""
+
+#: const/message_keys.py:30
+msgid "click to see the least answered questions"
+msgstr ""
+
+#: const/message_keys.py:31
+msgid "by answers"
+msgstr "answers"
+
+#: const/message_keys.py:32
+msgid "click to see the most answered questions"
+msgstr ""
+
+#: const/message_keys.py:33
+msgid "click to see least voted questions"
+msgstr ""
+
+#: const/message_keys.py:34
+msgid "by votes"
+msgstr "votes"
+
+#: const/message_keys.py:35
+msgid "click to see most voted questions"
+msgstr ""
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
+msgid ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
+msgid "i-names are not supported"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:233
+#, python-format
+msgid "Please enter your %(username_token)s"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:259
+msgid "Please, enter your user name"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:263
+msgid "Please, enter your password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
+msgid "Please, enter your new password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:285
+msgid "Passwords did not match"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:297
+#, python-format
+msgid "Please choose password > %(len)s characters"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:335
+msgid "Current password"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:346
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:399
+msgid "Sorry, we don't have this email address in the database"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:435
+msgid "Your user name (<i>required</i>)"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:450
+msgid "sorry, there is no such user name"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
+msgid "signin/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:10
+msgid "signout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:12
+msgid "complete/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:15
+msgid "complete-oauth/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:19
+msgid "register/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:21
+msgid "signup/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:25
+msgid "logout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:30
+msgid "recover/"
+msgstr ""
+
+#: deps/django_authopenid/util.py:378
+#, python-format
+msgid "%(site)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
+msgid "Create a password-protected account"
+msgstr ""
+
+#: deps/django_authopenid/util.py:385
+msgid "Change your password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:473
+msgid "Sign in with Yahoo"
+msgstr ""
+
+#: deps/django_authopenid/util.py:480
+msgid "AOL screen name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:488
+msgid "OpenID url"
+msgstr ""
+
+#: deps/django_authopenid/util.py:517
+msgid "Flickr user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:525
+msgid "Technorati user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:533
+msgid "WordPress blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:541
+msgid "Blogger blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:549
+msgid "LiveJournal blog name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:557
+msgid "ClaimID user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:565
+msgid "Vidoop user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:573
+msgid "Verisign user name"
+msgstr ""
+
+#: deps/django_authopenid/util.py:608
+#, python-format
+msgid "Change your %(provider)s password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:612
+#, python-format
+msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:621
+#, python-format
+msgid "Create password for %(provider)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:625
+#, python-format
+msgid "Connect your %(provider)s account to %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:634
+#, python-format
+msgid "Signin with %(provider)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:641
+#, python-format
+msgid "Sign in with your %(provider)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:149
+#, python-format
+msgid "OpenID %(openid_url)s is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
+#, python-format
+msgid ""
+"Unfortunately, there was some problem when connecting to %(provider)s, "
+"please try again or use another provider"
+msgstr ""
+
+#: deps/django_authopenid/views.py:358
+msgid "Your new password saved"
+msgstr ""
+
+#: deps/django_authopenid/views.py:462
+msgid "The login password combination was not correct"
+msgstr ""
+
+#: deps/django_authopenid/views.py:564
+msgid "Please click any of the icons below to sign in"
+msgstr ""
+
+#: deps/django_authopenid/views.py:566
+msgid "Account recovery email sent"
+msgstr ""
+
+#: deps/django_authopenid/views.py:569
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: deps/django_authopenid/views.py:571
+msgid "If you wish, please add, remove or re-validate your login methods"
+msgstr ""
+
+#: deps/django_authopenid/views.py:573
+msgid "Please wait a second! Your account is recovered, but ..."
+msgstr ""
+
+#: deps/django_authopenid/views.py:575
+msgid "Sorry, this account recovery key has expired or is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:648
+#, python-format
+msgid "Login method %(provider_name)s does not exist"
+msgstr ""
+
+#: deps/django_authopenid/views.py:654
+msgid "Oops, sorry - there was some error - please try again"
+msgstr ""
+
+#: deps/django_authopenid/views.py:745
+#, python-format
+msgid "Your %(provider)s login works fine"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
+#, python-format
+msgid "your email needs to be validated see %(details_url)s"
+msgstr ""
+"Your email needs to be validated. Please see details <a "
+"id='validate_email_alert' href='%(details_url)s'>here</a>."
+
+#: deps/django_authopenid/views.py:1083
+#, python-format
+msgid "Recover your %(site)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1155
+msgid "Please check your email and visit the enclosed link."
+msgstr ""
+
+#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
+msgid "Site"
+msgstr ""
+
+#: deps/livesettings/values.py:69
+msgid "Main"
+msgstr ""
+
+#: deps/livesettings/values.py:128
+msgid "Base Settings"
+msgstr ""
+
+#: deps/livesettings/values.py:235
+msgid "Default value: \"\""
+msgstr ""
+
+#: deps/livesettings/values.py:242
+msgid "Default value: "
+msgstr ""
+
+#: deps/livesettings/values.py:245
+#, python-format
+msgid "Default value: %s"
+msgstr ""
+
+#: deps/livesettings/values.py:629
+#, python-format
+msgid "Allowed image file types are %(types)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "karma"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+#, fuzzy
+msgid "Change password"
+msgstr "Password"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+msgstr[1] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, python-format
+msgid "Group settings: %(name)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr ""
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:63
+msgid "Please accept the best answer for this question:"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:65
+msgid "Please accept the best answer for these questions:"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:414
+#, python-format
+msgid "%(question_count)d updated question about %(topics)s"
+msgid_plural "%(question_count)d updated questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:449
+msgid "new question"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:474
+#, python-format
+msgid ""
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
+
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
+msgid "%(question_count)d unanswered question about %(topics)s"
+msgid_plural "%(question_count)d unanswered questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr ""
+
+#: models/__init__.py:320
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"blocked"
+msgstr ""
+
+#: models/__init__.py:324
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"suspended"
+msgstr ""
+
+#: models/__init__.py:337
+#, python-format
+msgid ""
+">%(points)s points required to accept or unaccept your own answer to your "
+"own question"
+msgstr ""
+
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+
+#: models/__init__.py:367
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+msgstr ""
+
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
+msgstr "Sorry, you cannot vote for your own posts"
+
+#: models/__init__.py:394
+msgid "Sorry your account appears to be blocked "
+msgstr ""
+
+#: models/__init__.py:399
+msgid "Sorry your account appears to be suspended "
+msgstr ""
+
+#: models/__init__.py:409
+#, python-format
+msgid ">%(points)s points required to upvote"
+msgstr ">%(points)s points required to upvote "
+
+#: models/__init__.py:415
+#, python-format
+msgid ">%(points)s points required to downvote"
+msgstr ">%(points)s points required to downvote "
+
+#: models/__init__.py:430
+msgid "Sorry, blocked users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:431
+msgid "Sorry, suspended users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
+
+#: models/__init__.py:482
+#, python-format
+msgid ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minute from posting"
+msgid_plural ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minutes from posting"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:494
+msgid "Sorry, but only post owners or moderators can edit comments"
+msgstr ""
+
+#: models/__init__.py:519
+msgid ""
+"Sorry, since your account is suspended you can comment only your own posts"
+msgstr ""
+
+#: models/__init__.py:523
+#, python-format
+msgid ""
+"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
+"required. You can still comment your own posts and answers to your questions"
+msgstr ""
+
+#: models/__init__.py:553
+msgid ""
+"This post has been deleted and can be seen only by post owners, site "
+"administrators and moderators"
+msgstr ""
+
+#: models/__init__.py:570
+msgid ""
+"Sorry, only moderators, site administrators and post owners can edit deleted "
+"posts"
+msgstr ""
+
+#: models/__init__.py:585
+msgid "Sorry, since your account is blocked you cannot edit posts"
+msgstr ""
+
+#: models/__init__.py:589
+msgid "Sorry, since your account is suspended you can edit only your own posts"
+msgstr ""
+
+#: models/__init__.py:594
+#, python-format
+msgid ""
+"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:601
+#, python-format
+msgid ""
+"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:664
+msgid ""
+"Sorry, cannot delete your question since it has an upvoted answer posted by "
+"someone else"
+msgid_plural ""
+"Sorry, cannot delete your question since it has some upvoted answers posted "
+"by other users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:679
+msgid "Sorry, since your account is blocked you cannot delete posts"
+msgstr ""
+
+#: models/__init__.py:683
+msgid ""
+"Sorry, since your account is suspended you can delete only your own posts"
+msgstr ""
+
+#: models/__init__.py:687
+#, python-format
+msgid ""
+"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
+"is required"
+msgstr ""
+
+#: models/__init__.py:707
+msgid "Sorry, since your account is blocked you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:711
+msgid "Sorry, since your account is suspended you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:715
+#, python-format
+msgid ""
+"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:724
+#, python-format
+msgid ""
+"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:748
+#, python-format
+msgid ""
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
+msgstr ""
+
+#: models/__init__.py:754
+#, python-format
+msgid ""
+"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Sorry, since your account is blocked you cannot remove flags"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
+msgid ""
+"Sorry, only question owners, site administrators and moderators can retag "
+"deleted questions"
+msgstr ""
+
+#: models/__init__.py:894
+msgid "Sorry, since your account is blocked you cannot retag questions"
+msgstr ""
+
+#: models/__init__.py:898
+msgid ""
+"Sorry, since your account is suspended you can retag only your own questions"
+msgstr ""
+
+#: models/__init__.py:902
+#, python-format
+msgid ""
+"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:921
+msgid "Sorry, since your account is blocked you cannot delete comment"
+msgstr ""
+
+#: models/__init__.py:925
+msgid ""
+"Sorry, since your account is suspended you can delete only your own comments"
+msgstr ""
+
+#: models/__init__.py:929
+#, python-format
+msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
+
+#: models/__init__.py:1469 utils/functions.py:78
+#, python-format
+msgid "on %(date)s"
+msgstr ""
+
+#: models/__init__.py:1471
+msgid "in two days"
+msgstr ""
+
+#: models/__init__.py:1473
+msgid "tomorrow"
+msgstr ""
+
+#: models/__init__.py:1475
+#, python-format
+msgid "in %(hr)d hour"
+msgid_plural "in %(hr)d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1477
+#, python-format
+msgid "in %(min)d min"
+msgid_plural "in %(min)d mins"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1478
+#, python-format
+msgid "%(days)d day"
+msgid_plural "%(days)d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1480
+#, python-format
+msgid ""
+"New users must wait %(days)s before answering their own question. You can "
+"post an answer %(left)s"
+msgstr ""
+
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
+msgid "Anonymous"
+msgstr ""
+
+#: models/__init__.py:1749
+msgid "Site Adminstrator"
+msgstr ""
+
+#: models/__init__.py:1751
+msgid "Forum Moderator"
+msgstr ""
+
+#: models/__init__.py:1753
+msgid "Suspended User"
+msgstr ""
+
+#: models/__init__.py:1755
+msgid "Blocked User"
+msgstr ""
+
+#: models/__init__.py:1757
+msgid "Registered User"
+msgstr ""
+
+#: models/__init__.py:1759
+msgid "Watched User"
+msgstr ""
+
+#: models/__init__.py:1761
+msgid "Approved User"
+msgstr ""
+
+#: models/__init__.py:1870
+#, python-format
+msgid "%(username)s karma is %(reputation)s"
+msgstr ""
+
+#: models/__init__.py:1880
+#, python-format
+msgid "one gold badge"
+msgid_plural "%(count)d gold badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1887
+#, python-format
+msgid "one silver badge"
+msgid_plural "%(count)d silver badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1894
+#, python-format
+msgid "one bronze badge"
+msgid_plural "%(count)d bronze badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1905
+#, python-format
+msgid "%(item1)s and %(item2)s"
+msgstr ""
+
+#: models/__init__.py:1909
+#, python-format
+msgid "%(user)s has %(badges)s"
+msgstr ""
+
+#: models/__init__.py:2389
+#, python-format
+msgid "\"%(title)s\""
+msgstr ""
+
+#: models/__init__.py:2542
+#, python-format
+msgid ""
+"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
+"href=\"%(user_profile)s\">your profile</a>."
+msgstr ""
+
+#: models/__init__.py:2745 views/commands.py:460
+msgid "Your tag subscription was saved, thanks!"
+msgstr ""
+
+#: models/badges.py:129
+#, python-format
+msgid "Deleted own post with %(votes)s or more upvotes"
+msgstr ""
+
+#: models/badges.py:133
+msgid "Disciplined"
+msgstr ""
+
+#: models/badges.py:151
+#, python-format
+msgid "Deleted own post with %(votes)s or more downvotes"
+msgstr ""
+
+#: models/badges.py:155
+msgid "Peer Pressure"
+msgstr ""
+
+#: models/badges.py:174
+#, python-format
+msgid "Received at least %(votes)s upvote for an answer for the first time"
+msgstr ""
+
+#: models/badges.py:178
+msgid "Teacher"
+msgstr ""
+
+#: models/badges.py:218
+msgid "Supporter"
+msgstr ""
+
+#: models/badges.py:219
+msgid "First upvote"
+msgstr ""
+
+#: models/badges.py:227
+msgid "Critic"
+msgstr ""
+
+#: models/badges.py:228
+msgid "First downvote"
+msgstr ""
+
+#: models/badges.py:237
+msgid "Civic Duty"
+msgstr ""
+
+#: models/badges.py:238
+#, python-format
+msgid "Voted %(num)s times"
+msgstr ""
+
+#: models/badges.py:252
+#, python-format
+msgid "Answered own question with at least %(num)s up votes"
+msgstr ""
+
+#: models/badges.py:256
+msgid "Self-Learner"
+msgstr ""
+
+#: models/badges.py:304
+msgid "Nice Answer"
+msgstr ""
+
+#: models/badges.py:309 models/badges.py:321 models/badges.py:333
+#, python-format
+msgid "Answer voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:316
+msgid "Good Answer"
+msgstr ""
+
+#: models/badges.py:328
+msgid "Great Answer"
+msgstr ""
+
+#: models/badges.py:340
+msgid "Nice Question"
+msgstr ""
+
+#: models/badges.py:345 models/badges.py:357 models/badges.py:369
+#, python-format
+msgid "Question voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:352
+msgid "Good Question"
+msgstr ""
+
+#: models/badges.py:364
+msgid "Great Question"
+msgstr ""
+
+#: models/badges.py:376
+msgid "Student"
+msgstr ""
+
+#: models/badges.py:381
+msgid "Asked first question with at least one up vote"
+msgstr ""
+
+#: models/badges.py:414
+msgid "Popular Question"
+msgstr ""
+
+#: models/badges.py:418 models/badges.py:429 models/badges.py:441
+#, python-format
+msgid "Asked a question with %(views)s views"
+msgstr ""
+
+#: models/badges.py:425
+msgid "Notable Question"
+msgstr ""
+
+#: models/badges.py:436
+msgid "Famous Question"
+msgstr ""
+
+#: models/badges.py:450
+msgid "Asked a question and accepted an answer"
+msgstr ""
+
+#: models/badges.py:453
+msgid "Scholar"
+msgstr ""
+
+#: models/badges.py:495
+msgid "Enlightened"
+msgstr ""
+
+#: models/badges.py:499
+#, python-format
+msgid "First answer was accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:507
+msgid "Guru"
+msgstr ""
+
+#: models/badges.py:510
+#, python-format
+msgid "Answer accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:518
+#, python-format
+msgid ""
+"Answered a question more than %(days)s days later with at least %(votes)s "
+"votes"
+msgstr ""
+
+#: models/badges.py:525
+msgid "Necromancer"
+msgstr ""
+
+#: models/badges.py:548
+msgid "Citizen Patrol"
+msgstr ""
+
+#: models/badges.py:551
+msgid "First flagged post"
+msgstr ""
+
+#: models/badges.py:563
+msgid "Cleanup"
+msgstr ""
+
+#: models/badges.py:566
+msgid "First rollback"
+msgstr ""
+
+#: models/badges.py:577
+msgid "Pundit"
+msgstr ""
+
+#: models/badges.py:580
+msgid "Left 10 comments with score of 10 or more"
+msgstr ""
+
+#: models/badges.py:612
+msgid "Editor"
+msgstr ""
+
+#: models/badges.py:615
+msgid "First edit"
+msgstr ""
+
+#: models/badges.py:623
+msgid "Associate Editor"
+msgstr ""
+
+#: models/badges.py:627
+#, python-format
+msgid "Edited %(num)s entries"
+msgstr ""
+
+#: models/badges.py:634
+msgid "Organizer"
+msgstr ""
+
+#: models/badges.py:637
+msgid "First retag"
+msgstr ""
+
+#: models/badges.py:644
+msgid "Autobiographer"
+msgstr ""
+
+#: models/badges.py:647
+msgid "Completed all user profile fields"
+msgstr ""
+
+#: models/badges.py:663
+#, python-format
+msgid "Question favorited by %(num)s users"
+msgstr ""
+
+#: models/badges.py:689
+msgid "Stellar Question"
+msgstr ""
+
+#: models/badges.py:698
+msgid "Favorite Question"
+msgstr ""
+
+#: models/badges.py:710
+msgid "Enthusiast"
+msgstr ""
+
+#: models/badges.py:714
+#, python-format
+msgid "Visited site every day for %(num)s days in a row"
+msgstr ""
+
+#: models/badges.py:732
+msgid "Commentator"
+msgstr ""
+
+#: models/badges.py:736
+#, python-format
+msgid "Posted %(num_comments)s comments"
+msgstr ""
+
+#: models/badges.py:752
+msgid "Taxonomist"
+msgstr ""
+
+#: models/badges.py:756
+#, python-format
+msgid "Created a tag used by %(num)s questions"
+msgstr ""
+
+#: models/badges.py:774
+msgid "Expert"
+msgstr ""
+
+#: models/badges.py:777
+msgid "Very active in one tag"
+msgstr ""
+
+#: models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1110
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1117
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent answer has been removed"
+msgstr ""
+
+#: models/question.py:54
+#, python-format
+msgid "\" and \"%s\""
+msgstr ""
+
+#: models/question.py:57
+msgid "\" and more"
+msgstr ""
+
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Change Email"
+
+#: models/repute.py:143
+#, python-format
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr ""
+
+#: models/repute.py:154
+#, python-format
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
+msgstr ""
+
+#: models/repute.py:159
+#, python-format
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
+msgstr ""
+
+#: models/tag.py:106
+msgid "interesting"
+msgstr ""
+
+#: models/tag.py:106
+msgid "ignored"
+msgstr ""
+
+#: models/user.py:266
+msgid "Entire forum"
+msgstr ""
+
+#: models/user.py:267
+msgid "Questions that I asked"
+msgstr ""
+
+#: models/user.py:268
+msgid "Questions that I answered"
+msgstr ""
+
+#: models/user.py:269
+msgid "Individually selected questions"
+msgstr ""
+
+#: models/user.py:270
+msgid "Mentions and comment responses"
+msgstr ""
+
+#: models/user.py:273
+msgid "Instantly"
+msgstr ""
+
+#: models/user.py:274
+msgid "Daily"
+msgstr ""
+
+#: models/user.py:275
+msgid "Weekly"
+msgstr ""
+
+#: models/user.py:276
+msgid "No email"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+#, fuzzy
+msgid "Save your email address"
+msgstr "Your email <i>(never shared)</i>"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+#, fuzzy
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:9
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Sign out"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "User login"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+#, fuzzy
+msgid "Password"
+msgstr "Password"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Password"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "Last updated"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "sorry, but older votes cannot be revoked"
+
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Retag question"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "Retag question"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Post Your Answer"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "link"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:19
+msgid "remove offensive flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+#, fuzzy
+msgid "reopen"
+msgstr "You can safely re-use the same login for all OpenID-enabled websites."
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+#, fuzzy
+msgid "Interesting tags"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:21
+#, fuzzy
+msgid "Ignored tags"
+msgstr "Retag question"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+#, fuzzy
+msgid "see all questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+#, fuzzy
+msgid "see latest questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/500.jinja.html:13
+#, fuzzy
+msgid "see tags"
+msgstr "Tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+#, fuzzy
+msgid "Edit answer"
+msgstr "oldest"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr ""
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr ""
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+#, fuzzy
+msgid "Badges"
+msgstr "Badges"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun "
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>\n"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Badge levels"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+#, fuzzy
+msgid "Close question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/close.html:6
+#, fuzzy
+msgid "Close the question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr ""
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+#, fuzzy
+msgid "What should I avoid in my answers?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "How does karma system work?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:36
+#, fuzzy
+msgid "add comments"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "answers"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+#, fuzzy
+msgid "Still have questions?"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "Choose screen name"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr "Sorry, anonymous users cannot vote"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+#, fuzzy
+msgid "answered"
+msgstr "answers"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+#, fuzzy
+msgid "updated"
+msgstr "Last updated"
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr ""
+
+#: skins/default/templates/macros.html:304
+#, fuzzy
+msgid "delete this comment"
+msgstr "post a comment"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr ""
+
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr ""
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "page %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "Choose screen name"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+#, fuzzy
+msgid "Questions"
+msgstr "Tags"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "post a comment"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+#, fuzzy
+msgid "Answer Your Own Question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "most voted"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+#, fuzzy
+msgid "Edit question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Tags"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+#, fuzzy
+msgid "Reopen question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:26
+#, fuzzy
+msgid "Reopen this question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+#, fuzzy
+msgid "Revision history"
+msgstr "karma"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr ""
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr ""
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Tags"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr ""
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "People"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+#, fuzzy
+msgid "by username"
+msgstr "Choose screen name"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+#, fuzzy
+msgid "Search tips:"
+msgstr "Tips"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:30
+#, fuzzy
+msgid "reset tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "answered question"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:19
+#, fuzzy
+msgid "resetting tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+#, fuzzy
+msgid "Please, post your question!"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+#, fuzzy
+msgid "subscribe to the questions feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question/new_answer_form.html:24
+#, fuzzy
+msgid "Your answer"
+msgstr "most voted"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Tags"
+
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:62
+#, fuzzy
+msgid "Related questions"
+msgstr "Tags"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Notify me</strong> weekly when there are any new answers or updates"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:39
+#, fuzzy
+msgid "Screen Name"
+msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "sorry, but older votes cannot be revoked"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+#, fuzzy
+msgid "Update"
+msgstr "date"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+#, fuzzy
+msgid "Email subscription settings"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "post a comment"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "member since"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "website"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_info.html:88
+#, fuzzy
+msgid "todays unused votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "user karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+#, fuzzy
+msgid "activity"
+msgstr "activity"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "answers"
+msgstr[1] "answers"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "Tips"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+#, fuzzy
+msgid "User profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "Graph of user karma"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+#, fuzzy
+msgid "votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+#, fuzzy
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "provide enough details"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+#, fuzzy
+msgid "see frequently asked questions"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown basics"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "people"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr ""
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "answers"
+msgstr[1] "answers"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "votes"
+msgstr[1] "votes"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+#, fuzzy
+msgid "see unanswered questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr ""
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
+
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
+
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr ""
+
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
+msgstr "Choose screen name"
+
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr ""
+
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr ""
+
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr ""
+
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr ""
+
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr ""
+
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr ""
+
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+
+#: utils/forms.py:170
+msgid "password is required"
+msgstr ""
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr ""
+
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr ""
+
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr ""
+
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
+
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
+
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
+msgstr "Sorry, anonymous users cannot vote"
+
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
+
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href='%(details_url)s'>more details here</a>"
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr ""
+
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr ""
+
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+
+#: views/users.py:206
+msgid "moderate user"
+msgstr ""
+
+#: views/users.py:381
+msgid "user profile"
+msgstr ""
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr ""
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr ""
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr ""
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr ""
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr ""
+
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
+
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
+msgstr "Profile - User's Karma"
+
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr ""
+
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr ""
+
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr ""
+
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr ""
+
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr ""
+
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
+
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
+
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
+
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
+
+#~ msgid "question_answered"
+#~ msgstr "answered question"
+
+#~ msgid "question_commented"
+#~ msgstr "commented question"
+
+#~ msgid "Incorrect username."
+#~ msgstr "sorry, there is no such user name"
+
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Dear %(name)s,</p></p>The following question has been updated on the "
+#~ "Q&A forum:</p>"
+#~ msgstr[1] ""
+#~ "<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated "
+#~ "on the Q&A forum:</p>"
+
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Please remember that you can always <a "
+#~ "href='%(email_settings_link)s'>adjust</a> frequency of the email updates "
+#~ "or turn them off entirely.<br/>If you believe that this message was sent "
+#~ "in an error, please email about it the forum administrator at "
+#~ "%(admin_email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum server.</"
+#~ "p>"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "sorry, file uploading requires karma >%(min_rep)s"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr ""
+#~ "You have flagged this question before and cannot do it more than once"
+
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, since your account is blocked you cannot flag posts as offensive"
+
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+#~ "required"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr ""
+#~ "Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+#~ "offensive flags per day."
+
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot remove flags. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+#~ msgstr[1] ""
+#~ "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "sorry, but older votes cannot be revoked"
+
+#~ msgid "change %(email)s info"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Enter your new email into the box below</span> "
+#~ "if you'd like to use another email for <strong>update subscriptions</"
+#~ "strong>.<br>Currently you are using <strong>%(email)s</strong>"
+
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Please enter your email address in the box below."
+#~ "</span> Valid email address is required on this Q&amp;A forum. If you "
+#~ "like, you can <strong>receive updates</strong> on interesting questions "
+#~ "or entire forum via email. Also, your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. Email addresses are never shown or otherwise shared with anybody "
+#~ "else."
+
+#~ msgid "Your new Email"
+#~ msgstr ""
+#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
+#~ "anyone, must be valid)"
+
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">An email with a validation link has been sent "
+#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
+#~ "your web browser. Email validation is necessary to help insure the proper "
+#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>."
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Your email address %(email)s has not been "
+#~ "changed.</span> If you decide to change it later - you can always do it "
+#~ "by editing it in your user profile or by using the <a "
+#~ "href='%(change_email_url)s'><strong>previous form</strong></a> again."
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Your email address is now set to %(email)s.</"
+#~ "span> Updates on the questions that you like most will be sent to this "
+#~ "address. Email notifications are sent once a day or less frequently - "
+#~ "only when there are any news."
+
+#~ msgid "thanks for verifying email"
+#~ msgstr ""
+#~ "<span class=\"big strong\">Thank you for verifying your email!</span> Now "
+#~ "you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+#~ "if you find a very interesting question you can <strong>subscribe for the "
+#~ "updates</strong> - then will be notified about changes <strong>once a "
+#~ "day</strong> or less frequently."
+
+#~ msgid "email key not sent"
+#~ msgstr "Validation email not sent"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "<span class='big strong'>Your current email address %(email)s has been "
+#~ "validated before</span> so the new key was not sent. You can <a "
+#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
+#~ "necessary."
+
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "%(provider)s login.</span> Please create your <strong>screen name</"
+#~ "strong> and save your <strong>email</strong> address. Saved email address "
+#~ "will let you <strong>subscribe for the updates</strong> on the most "
+#~ "interesting questions and will be used to create and retrieve your unique "
+#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
+#~ "a>.</p>"
+
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<p><span class='strong big'>Oops... looks like screen name %(username)s "
+#~ "is already used in another account.</span></p><p>Please choose another "
+#~ "screen name to use with your %(provider)s login. Also, a valid email "
+#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>"
+
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "%(provider)s login.</span></p><p>You can either keep your <strong>screen "
+#~ "name</strong> the same as your %(provider)s login name or choose some "
+#~ "other nickname.</p><p>Also, please save a valid <strong>email</strong> "
+#~ "address. With the email you can <strong>subscribe for the updates</"
+#~ "strong> on the most interesting questions. Email address is also used to "
+#~ "create and retrieve your unique avatar image - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "Facebook login.</span> Please create your <strong>screen name</strong> "
+#~ "and save your <strong>email</strong> address. Saved email address will "
+#~ "let you <strong>subscribe for the updates</strong> on the most "
+#~ "interesting questions and will be used to create and retrieve your unique "
+#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
+#~ "a>.</p>"
+
+#~ msgid "Screen name label"
+#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>Email Address</strong> (<i>will <strong>not</strong> be shared "
+#~ "with anyone, must be valid</i>)"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr ""
+#~ "<strong>Receive forum updates by email</strong> - this will help our "
+#~ "community grow and become more useful.<br/>By default <span "
+#~ "class='orange'>Q&amp;A</span> forum sends up to <strong>one email digest "
+#~ "per week</strong> - only when there is anything new.<br/>If you like, "
+#~ "please adjust this now or any time later from your user account."
+
+#~ msgid "create account"
+#~ msgstr "Signup"
+
+#~ msgid "Login"
+#~ msgstr "Sign in"
+
+#~ msgid "with openid it is easier"
+#~ msgstr "With the OpenID you don't need to create new username and password."
+
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "You can safely re-use the same login for all OpenID-enabled websites."
+
+#~ msgid "openid is widely adopted"
+#~ msgstr ""
+#~ "There are > 160,000,000 OpenID account in use. Over 10,000 sites are "
+#~ "OpenID-enabled."
+
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenID is based on an open standard, supported by many organizations."
+
+#~ msgid "Traditional signup info"
+#~ msgstr ""
+#~ "<span class='strong big'>If you prefer, create your forum login name and "
+#~ "password here. However</span>, please keep in mind that we also support "
+#~ "<strong>OpenID</strong> login method. With <strong>OpenID</strong> you "
+#~ "can simply reuse your external login (e.g. Gmail or AOL) without ever "
+#~ "sharing your login details with anyone and having to remember yet another "
+#~ "password."
+
+#~ msgid "Create Account"
+#~ msgstr "Signup"
+
+#~ msgid "answer permanent link"
+#~ msgstr "permanent link"
+
+#~ msgid "Related tags"
+#~ msgstr "Tags"
+
+#~ msgid "Ask a question"
+#~ msgstr "Ask Your Question"
+
+#~ msgid "Badges summary"
+#~ msgstr "Badges"
+
+#~ msgid "gold badge description"
+#~ msgstr ""
+#~ "Gold badge is the highest award in this community. To obtain it have to "
+#~ "show profound knowledge and ability in addition to your active "
+#~ "participation."
+
+#~ msgid "silver badge description"
+#~ msgstr ""
+#~ "silver badge: occasionally awarded for the very high quality contributions"
+
+#~ msgid "bronze badge description"
+#~ msgstr "bronze badge: often given as a special honor"
+
+#~ 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 ""
+#~ "is a <strong>question and answer</strong> site - <strong>it is not a "
+#~ "discussion group</strong>. Please avoid holding debates in your answers "
+#~ "as they tend to dilute the essense of questions and answers. For the "
+#~ "brief discussions please use commenting facility."
+
+#~ msgid "Rep system summary"
+#~ msgstr ""
+#~ "When a question or answer is upvoted, the user who posted them will gain "
+#~ "some points, which are called \"karma points\". These points serve as a "
+#~ "rough measure of the community trust to him/her. Various moderation tasks "
+#~ "are gradually assigned to the users based on those points."
+
+#, fuzzy
+#~ msgid "use tags"
+#~ msgstr "Tags"
+
+#~ msgid "what is gravatar"
+#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#~ msgid "gravatar faq info"
+#~ msgstr ""
+#~ "<p>The picture that appears on the users profiles is called "
+#~ "<strong>gravatar</strong> (which means <strong>g</strong>lobally "
+#~ "<strong>r</strong>ecognized <strong>avatar</strong>).</p><p>Here is how "
+#~ "it works: a <strong>cryptographic key</strong> (unbreakable code) is "
+#~ "calculated from your email address. You upload your picture (or your "
+#~ "favorite alter ego image) the website <a href='http://gravatar."
+#~ "com'><strong>gravatar.com</strong></a> from where we later retreive your "
+#~ "image using the key.</p><p>This way all the websites you trust can show "
+#~ "your image next to your posts and your email address remains private.</"
+#~ "p><p>Please <strong>personalize your account</strong> with an image - "
+#~ "just register at <a href='http://gravatar.com'><strong>gravatar.com</"
+#~ "strong></a> (just please be sure to use the same email address that you "
+#~ "used to register with us). Default image that looks like a kitchen tile "
+#~ "is generated automatically.</p>"
+
+#~ msgid "Change tags"
+#~ msgstr "Retag question"
+
+#~ msgid "reputation"
+#~ msgstr "karma"
+
+#~ msgid "newest answers"
+#~ msgstr "newest"
+
+#~ msgid "popular answers"
+#~ msgstr "most voted"
+
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr ""
+#~ "<span class='strong big'>Please start posting your answer anonymously</"
+#~ "span> - your answer will be saved within the current session and "
+#~ "published after you log in or create a new account. Please try to give a "
+#~ "<strong>substantial answer</strong>, for discussions, <strong>please use "
+#~ "comments</strong> and <strong>please do remember to vote</strong> (after "
+#~ "you log in)!"
+
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr ""
+#~ "<span class='big strong'>You are welcome to answer your own question</"
+#~ "span>, but please make sure to give an <strong>answer</strong>. Remember "
+#~ "that you can always <strong>revise your original question</strong>. "
+#~ "Please <strong>use comments for discussions</strong> and <strong>please "
+#~ "don't forget to vote :)</strong> for the answers that you liked (or "
+#~ "perhaps did not like)! "
+
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr ""
+#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
+#~ "If you wanted to comment on the question or answer, just <strong>use the "
+#~ "commenting tool</strong>. Please remember that you can always "
+#~ "<strong>revise your answers</strong> - no need to answer the same "
+#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
+#~ "really helps to select the best questions and answers!"
+
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Login/Signup to Post"
+
+#~ msgid "question asked"
+#~ msgstr "Asked"
+
+#~ msgid "question was seen"
+#~ msgstr "Seen"
+
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Notify me</strong> once a day by email when there are any new "
+#~ "answers or updates"
+
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr ""
+#~ "<strong>Notify me</strong> immediately when there are any new answers or "
+#~ "updates"
+
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr ""
+#~ "(note: you can always <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
+#~ "updates)"
+
+#~ msgid "email subscription settings info"
+#~ msgstr ""
+#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
+#~ "Receive updates on interesting questions by email, <strong><br/>help the "
+#~ "community</strong> by answering questions of your colleagues. If you do "
+#~ "not wish to receive emails - select 'no email' on all items below.<br/"
+#~ ">Updates are only sent when there is any new activity on selected items."
+
+#~ msgid "Stop sending email"
+#~ msgstr "Stop Email"
+
+#~ msgid "reputation history"
+#~ msgstr "karma"
+
+#~ msgid "recent activity"
+#~ msgstr "activity"
+
+#~ msgid "casted votes"
+#~ msgstr "votes"
+
+#~ msgid "answer tips"
+#~ msgstr "Tips"
+
+#~ msgid "please try to provide details"
+#~ msgstr "provide enough details"
+
+#~ msgid "ask a question"
+#~ msgstr "Ask Your Question"
+
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<span class='strong big'>Looks like your email address, %(email)s has not "
+#~ "yet been validated.</span> To post messages you must verify your email, "
+#~ "please see <a href='%(email_validation_faq_url)s'>more details here</a>."
+#~ "<br>You can submit your question now and validate email after that. Your "
+#~ "question will saved as pending meanwhile. "
+
+#~ msgid "Login/signup to post your question"
+#~ msgstr "Login/Signup to Post"
+
+#~ msgid "question tips"
+#~ msgstr "Tips"
+
+#~ msgid "please ask a relevant question"
+#~ msgstr "ask a question interesting to this community"
+
+#~ msgid "logout"
+#~ msgstr "sign out"
+
+#~ msgid "login"
+#~ msgstr "Hi, there! Please sign in"
+
+#~ msgid "no items in counter"
+#~ msgstr "no"
+
+#~ msgid "choose password"
+#~ msgstr "Password"
+
+#~ msgid "retype password"
+#~ msgstr "Password <i>(please retype)</i>"
+
+#~ msgid "user reputation in the community"
+#~ msgstr "user karma"
+
+#~ msgid "Please log in to ask questions"
+#~ msgstr ""
+#~ "<span class=\"strong big\">You are welcome to start submitting your "
+#~ "question anonymously</span>. When you submit the post, you will be "
+#~ "redirected to the login/signup page. Your question will be saved in the "
+#~ "current session and will be published after you log in. Login/signup "
+#~ "process is very simple. Login takes about 30 seconds, initial signup "
+#~ "takes a minute or less."
+
+#~ msgid ""
+#~ "As a registered user you can login with your OpenID, log out of the site "
+#~ "or permanently remove your account."
+#~ msgstr ""
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
+
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
+
+#~ msgid ""
+#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
+#~ "s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
+
+#~ msgid "reputation points"
+#~ msgstr "karma"
diff --git a/askbot/locale/hu/LC_MESSAGES/djangojs.mo b/askbot/locale/hu/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..52ed62e1
--- /dev/null
+++ b/askbot/locale/hu/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/hu/LC_MESSAGES/djangojs.po b/askbot/locale/hu/LC_MESSAGES/djangojs.po
new file mode 100644
index 00000000..a7a3ff37
--- /dev/null
+++ b/askbot/locale/hu/LC_MESSAGES/djangojs.po
@@ -0,0 +1,264 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:55-0500\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"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, perl-format
+msgid "Are you sure you want to remove your %s login?"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:90
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:93
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:135
+msgid "passwords do not match"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:161
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:228
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:327
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:343
+msgid "Create a password-protected account"
+msgstr ""
+
+#: skins/common/media/js/post.js:28
+msgid "loading..."
+msgstr ""
+
+#: skins/common/media/js/post.js:318
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:319
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:324
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:326
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:327
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:328
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:330
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:333
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:334
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:335
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:336
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:1206
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1209
+msgid "save comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1874
+msgid "Please enter question title (>10 characters)"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:15
+msgid "Tag \"<span></span>\" matches:"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:84
+#, perl-format
+msgid "and %s more, not shown..."
+msgstr ""
+
+#: skins/common/media/js/user.js:14
+msgid "Please select at least one item"
+msgstr ""
+
+#: skins/common/media/js/user.js:58
+msgid "Delete this notification?"
+msgid_plural "Delete these notifications?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:159
+msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
+msgstr ""
+
+#: skins/common/media/js/user.js:191
+#, perl-format
+msgid "unfollow %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:194
+#, perl-format
+msgid "following %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:200
+#, perl-format
+msgid "follow %s"
+msgstr ""
+
+#: skins/common/media/js/utils.js:44
+msgid "click to close"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:26
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:27
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:28
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:29
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:30
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:47
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:48
+msgid "enter url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:49
+msgid "upload file attachment"
+msgstr ""
diff --git a/askbot/locale/it/LC_MESSAGES/django.mo b/askbot/locale/it/LC_MESSAGES/django.mo
index 0235a51f..cb32cbde 100644
--- a/askbot/locale/it/LC_MESSAGES/django.mo
+++ b/askbot/locale/it/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/it/LC_MESSAGES/django.po b/askbot/locale/it/LC_MESSAGES/django.po
index 7c375803..6cf0a2c6 100644
--- a/askbot/locale/it/LC_MESSAGES/django.po
+++ b/askbot/locale/it/LC_MESSAGES/django.po
@@ -2,35 +2,35 @@
# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the CNPROG package.
# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:33-0600\n"
+"POT-Creation-Date: 2012-04-18 18:51-0500\n"
"PO-Revision-Date: 2011-11-19 11:27\n"
"Last-Translator: <tapion@pdp.linux.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Translated-Using: django-rosetta 0.5.6\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+"X-Translated-Using: django-rosetta 0.5.6\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "Mi spiace, ma devi essere registrato per usare questa funzionalità"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr " - "
-#: feed.py:26
+#: feed.py:28
msgid "Individual question feed"
msgstr "Feed di un'unica domanda"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "domande recenti"
@@ -46,7 +46,10 @@ msgstr "Paese"
msgid "Country field is required"
msgstr "Il campo Stato è obbligatorio"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "titolo"
@@ -54,63 +57,81 @@ msgstr "titolo"
msgid "please enter a descriptive title for your question"
msgstr "per favore inserisci un titolo descrittivo per la tua domanda"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "il titolo deve essere più lungo di 10 caratteri"
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "il titolo deve essere più lungo di 10 caratteri"
+msgstr[1] "il titolo deve essere più lungo di 10 caratteri"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "contenuto"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "la domanda deve contenere più di 10 caratteri"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "tag"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"I tag sono brevi parole chiave, senza spaziature tra una e l'altra. Possono "
+"essere inseriti fino a 5 tags."
+msgstr[1] ""
"I tag sono brevi parole chiave, senza spaziature tra una e l'altra. Possono "
"essere inseriti fino a 5 tags."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "i tag sono obbligatori"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "per favore usa un numero uguale o inferiore a %(tag_count)d tag"
msgstr[1] "per favore usa un numero uguale o inferiore a %(tag_count)d tags"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr "Devi inserire almeno uno di questi tag: %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "ogni tag deve essere più corto di %(max_chars)d carattere"
msgstr[1] "ogni tag deve essere più corto di %(max_chars)d caratteri"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "usa-questi-caratteri-nei-tag"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
"wiki della comunità (il karma non è ricompensato & molti altri possono "
"modificare le pagine del wiki)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -118,11 +139,11 @@ msgstr ""
"se scegli l'opzione 'domanda comunitaria', le domanda e le risposte non "
"genereranno punti ed il nome dell'autore non verrà mostrato"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "aggiorna il sommario:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -130,59 +151,59 @@ msgstr ""
"inserisci una breve descrizione della tua modifica (ad esempio, corretta "
"l'ortografia, migliorato lo stile. Questo campo è opzionale)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "Inserisci un numero di punti da aggiungere o rimuovere"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "approvato"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "osservato"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr "sospeso"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "bloccato"
-#: forms.py:346
+#: forms.py:405
msgid "administrator"
msgstr "Amministratore"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "moderatore"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "Cambia lo stato a"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "quale?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr "Non è possibile cambiare il proprio stato"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "Non è possibile rendere moderatore un altro utente"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "Non è possibile cambiare lo stato di un altro moderatore"
-#: forms.py:434
+#: forms.py:493
msgid "Cannot change status to admin"
msgstr "Non è possibile cambiare il proprio stato ad amministratore"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
@@ -191,45 +212,50 @@ msgstr ""
"Se desideri cambiare lo stato di %(username)s, per piacere fai una selezione "
"sensata."
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "Oggetto"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "Messaggio"
-#: forms.py:542
+#: forms.py:530
#, fuzzy
msgid "Your name (optional):"
msgstr "Il tuo nome:"
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr "e-mail:"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "Il tuo messaggio:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr "chiedi come utente anonimo"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr "Controlla se non vuoi rivelare il tuo nome quando fai questa domanda"
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
@@ -237,11 +263,11 @@ msgstr ""
"Hai posto questa domanda in modo anonimo. se decidi di rivelare la tua "
"identità, per favore seleziona questo campo."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr "rivela l'identità"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
@@ -249,7 +275,7 @@ msgstr ""
"Spiacenti, solo il proprietario della domanda anonima può rivelare la sua "
"identità, per favore togli la spunta dal campo"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
@@ -259,109 +285,131 @@ msgstr ""
"porre domande anonime. Controlla il box \"rivela identità\" oppure ricarica "
"questa pagina e prova a modificare la domanda ancora"
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr "questa email verrà linkata a gravatar"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nome reale"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Sito web"
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr "Città"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr "Mostra paese"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Data di nascita"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"non verrà mostrata, utilizzato per calcolare l'età, formato: YYYY-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profilo"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Nome utente"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "questa email è già stata registrata, per favore utilizzane un'altra"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "Scegli il tag filtro per l'email"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Chiesto da me"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Risposta fornita da me"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Selezionato individualmente"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Tutto il forum (tag filtrati)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Commenti e post che mi citano"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "per favore scegli una delle opzioni soprariportate"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "okay, proviamo!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "per favore scegli una delle opzioni soprariportate"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr "about/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "faq/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "privacy/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "risposte/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "modifica/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "revisioni/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "domande"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "domande/"
@@ -389,51 +437,56 @@ msgstr "rispondi/"
msgid "vote/"
msgstr "vota/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr "tag/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr "iscrivi-per-tag/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "utenti/"
-#: urls.py:214
+#: urls.py:219
msgid "subscriptions/"
msgstr "iscrizioni/"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr "utenti/aggiornamenti_ha_avatar_personalizzzato"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "badges/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "messaggi/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "segnacomeletto/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "upload/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "contatti/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "domanda/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "account/"
@@ -564,22 +617,27 @@ msgstr ""
"EMAIL_SUBJECT_PREFIX. Ail valore inserito quà sovrascriverà il predefinito."
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configurazione email ed avvisi tramite mail"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "Massimo numero di news in un avviso tramite mail"
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr "Frequenza di notifica news predefinita"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr "Opzione per determinare la frequenza di email autovalutate"
-#: conf/email.py:62
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
msgstr "Frequenza predefinita della notifica delle domande fatte dagli utenti"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
@@ -587,12 +645,12 @@ msgstr ""
"Opzione per definire la frequenza degli aggiornamenti per email per: Domande "
"chieste dall'utente"
-#: conf/email.py:76
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
"Frequenza predefinita di invio delle notifiche per risposte date dall'utente"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
@@ -600,7 +658,7 @@ msgstr ""
"Opzione per definire la frequenza degli aggiornamenti email per: Domande "
"risposte da utente."
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
@@ -608,7 +666,7 @@ msgstr ""
"Frequenza predefinita di aggiornamento per le domande selezionate "
"individualmente dall'utente"
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
@@ -616,104 +674,104 @@ msgstr ""
"Opzione per definire la frequenza di aggiornamenti email per: Domande "
"individuali, selezionati dall'utente."
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
"Frequenza predefinita per le notifiche per menzionare ecommenti"
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
"Opzione per definire la frequenza degli aggiornamenti email per: Menzionati "
"e commenti."
-#: conf/email.py:119
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr "Non ci sono domande senza risposte"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
"Giorni trascorsi prima di inviare promemoria riguardo domande non risposte"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
"Quanto spesso inviare i promemoria riguardo alle domande senza risposta"
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
"Numero massimo di promemoria da inviare riguardo alle domande non risposte"
-#: conf/email.py:168
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr "Manda promemoria periodici per accettare la risposta migliore"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
"Giorni trascorsi prima di inviare un promemoria per accettare una risposta"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr "Quanto spesso "
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
"Numero massimo di promemoria da inviare per accettare la miglior risposta"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
"Richiede la verifica dell'indirizzo email prima di consentire la "
"pubblicazione di post"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr "La verifica dell'email è effettuata inviando una chiave all'indirizzo "
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr "Consenti solo un account per indirizzo email"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr "Email fasulla per gli utenti non registrati"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
"Utilizza questi settaggi per controllare il gravatar per utenti senza email"
-#: conf/email.py:247
+#: conf/email.py:256
msgid "Allow posting questions by email"
msgstr "Consenti di inviare domande per email"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
@@ -721,11 +779,11 @@ msgstr ""
"Prima di abilitare questa opzione, prima compila le impostazioni IMAP nelle "
"impostazioni.file py"
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr "Sostituisci lo spazio nei tag delle email con un trattino"
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
@@ -733,6 +791,25 @@ msgstr ""
"Queste impostazioni si applicano ai tag scritti nel campo oggetto della "
"domanda risoltaper email"
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "Consenti di inviare domande per email"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr "Chiave per servizi esterni"
@@ -768,15 +845,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr "Abilita il recaptcha (le chiavi quà sotto sono necessarie)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Chiave pubblica Recaptcha"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Chiave privata Recaptcha"
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -787,11 +864,11 @@ msgstr ""
"spam robots. Per favore ottieni questa ed una chiave pubblica all'indirizzo "
"<a href=\"%(url)s\">recaptcha.net</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Facebook API key"
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -802,15 +879,15 @@ msgstr ""
"Connect per i login al tuo sito. Per favore ottieni queste chiavi presso la "
"pagina <a href=\"%(url)s\">facebook create app</a>"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Facebook secret key"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr "Il codice utente di Twitter"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
@@ -819,15 +896,15 @@ msgstr ""
"Per favore registra il tuo form a <a href=\"%(url)s\">sito dell'applicazione "
"twitter</a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr "Il codice segreto dell'utente di Twitter"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr "Il codice utente di LinkedIn"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
@@ -835,41 +912,25 @@ msgstr ""
"Per favore, registra il tuo form a <a href=\"%(url)s\">sito di sviluppo di "
"LinkedIn"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr "Codice segreto di LinkedIn"
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr "codice utente di ident.ca"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr "Per favore registra il tuo forum a <a href\"%(url)s\">Identi.ca"
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr "codice utente di identi.ca"
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr "Usa l'autenticazione LDAP per le passwird "
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr "Nome utente del provider LDAP"
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr "URL del servizio LDAP"
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr "Spiega come modificare la password LDAP"
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Pagine statiche - about, privacy policy, etc."
@@ -914,11 +975,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr "Impostazioni per la visualizzazione dei dati di Askbot"
-#: conf/forum_data_rules.py:22
-#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
"Abilita l'inserimento di video. <em>Nota: per favore leggi <a href="
"\"%(url)s>leggi questo</a> prima </em>"
@@ -971,11 +1034,31 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr "Massima lunghezza di un tag (numero di caratteri)"
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+#, fuzzy
+msgid "Minimum length of title (number of characters)"
+msgstr "Massima lunghezza di un tag (numero di caratteri)"
+
+#: conf/forum_data_rules.py:106
+#, fuzzy
+msgid "Minimum length of question body (number of characters)"
+msgstr "Massima lunghezza di un tag (numero di caratteri)"
+
+#: conf/forum_data_rules.py:117
+#, fuzzy
+msgid "Minimum length of answer body (number of characters)"
+msgstr "Massima lunghezza di un tag (numero di caratteri)"
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "i tag sono obbligatori"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
msgstr "Tag obbligatori"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
@@ -984,11 +1067,11 @@ msgstr ""
"Il tag obbligatorio può essere anche un wildcard, se i tag wilcard sono "
"attivi."
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr "Forza tag con lettere minuscole"
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
@@ -998,22 +1081,22 @@ msgstr ""
"database ed esegui il comando <code>python manage.py fix_question_tags</"
"code> per aggiornare i tag globalmente"
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr "Formato della lista dei tag"
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
"Seleziona il formato con cui mostrare i tag: lista semplice o come una "
"nuvola di tag"
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
msgstr "Usa tag multipli"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
@@ -1021,49 +1104,49 @@ msgstr ""
"I tag wildcards possono essere usati per selezionare o ignorare più tag "
"insieme, un tag wildcard valido ha una wildcard singola alla fine"
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr "Numero massimo di commenti da mostrare sotto il post"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr "La lunghezza massima del commento deve essere < %(max_len)s"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr "Limita il tempo per modificare i commenti"
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
"Se non selezionato, non ci sarà un limite di tempo per modificare i commenti"
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr "Minuti concessi per modificare un commento"
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr "Per abilitare questa impostazione devi selezionare la precedente"
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr "Salva i commenti premendo <Enter>"
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr "Lunghezza minima dei termini di ricerca per la ricerca Ajax"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr "Deve corrispondere all'analoga impostazione backend del database"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr "Non rendere il campo di ricerca adesivo"
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
@@ -1074,20 +1157,76 @@ msgstr ""
"sua posizione predefinita o non ti piace il comportamento adesivo "
"predefinito della barra di ricerca."
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "Massimo numero di tag per domanda"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "Numero di domande da mostrare di default"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "Cosa dovrebbe significare \"domande senza risposta\"?"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "Usa l'autenticazione LDAP per le passwird "
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "Nome utente del provider LDAP"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "Nome utente del provider LDAP"
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Pagina delle domande nella barra laterale"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "Profilo utente"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+#, fuzzy
+msgid "Content License"
msgstr "Contenuto LicensaContenuto Licensa"
#: conf/license.py:21
@@ -1167,16 +1306,16 @@ msgstr ""
"Per abilitarlo, vai in Impostazioni->Scrittura->Pubblicazione Remota e "
"seleziona la casella per XML-RPC"
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr "Carica la tua icona"
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr "Attiva il login per %(provider)s"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1342,6 +1481,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr "Regole relative all'ottenimento e cessione di punti reputazione"
@@ -1551,27 +1694,27 @@ msgstr "Descrizione del sito per i motori di ricerca"
msgid "Short name for your Q&A forum"
msgstr "Nome breve per il tuo forum Q&A"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "URL base per il tuo forum Q&A (deve cominciare con http o https)"
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr "Seleziona per abilitare i saluti agli utenti anonimi"
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr "Testo mostrato nel benvenuto agli utenti anonimi"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr "Usa l'HTML per formattare il messaggio"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "URL di un sito esterno per i contatti"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "Se lasciato vuoto, verrà usata una pagina interna per i contatti"
@@ -1697,21 +1840,21 @@ msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
"Per cambiare il logo, seleziona il nuovo file, poi salva le impostazioni"
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1719,21 +1862,21 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr "Mostra tutte le funzionalità a tutti gli utenti"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
@@ -1743,19 +1886,19 @@ msgstr ""
"utenti, anche se non hanno reputazione sufficiente per utilizzarle. In ogni "
"caso, i vincoli di reputazione necessari per utilizzarle rimangono validi."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr "Scegli skin"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1767,11 +1910,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1780,21 +1923,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1803,21 +1946,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1826,19 +1969,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1849,19 +1992,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr "Numero di revisione dei media della skin"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1926,38 +2069,68 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
msgid "User settings"
msgstr "Impostazioni degli utenti"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr "Permetti di modificare il nome utente visualizzato"
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Consenti solo un account per indirizzo email"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
msgstr "Consenti il recupero dell'account per email"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "Lunghezza minima per il nome utente visualizzato"
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Valore predefinito: %s"
+
+#: conf/user_settings.py:70
+#, fuzzy
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+"Per cambiare il logo, seleziona il nuovo file, poi salva le impostazioni"
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr "Nome per gli utenti anonimi"
@@ -2005,6 +2178,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "Numero di domande da mostrare di default"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Chiudi la domanda"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "nascondi le domande ignorate"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "domande preferite"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "la domanda è già stata posta"
@@ -2042,325 +2248,339 @@ msgstr "spam o pubblicità"
msgid "too localized"
msgstr "troppo specifica"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "più recenti"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "meno recenti"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "attive"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "inattive"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "più attive"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "meno attive"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "più votate"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "meno votate"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "rilevanza"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "tutte"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "senza risposta"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "preferite"
-#: const/__init__.py:64
+#: const/__init__.py:70
msgid "list"
msgstr "lista"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "La domanda non ha risposte"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "La domanda non ha risposte accettate"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "ha posto una domanda"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "ha risposto a una domanda"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "ha commentato una domanda"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "ha commentato una risposta"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "ha modificato una domanda"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "ha modificato una risposta"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "ha ricevuto una medaglia"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "ha accettato una risposta"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "ha dato un voto positivo"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "ha dato un voto positivo"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "ha annullato un voto"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "ha cancellato una domanda"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "ha cancellato una risposta"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "ha segnalato come inappropriata"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "ha aggiornato i tag"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "ha scelto un tag preferito"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "ha completato il suo profilo utente"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "aggiornamento via mail inviato all'utente"
-#: const/__init__.py:142
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
msgstr "notifica le domande inviate che non hanno avuto risposta"
-#: const/__init__.py:146
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
msgstr "notifica quando la risposta viene considerata la migliore"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "menzionato nel post"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "risposta_a_una_domanda"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "commento_a_una_domanda"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "risposta_commentata"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "risposta_accettata"
+#, fuzzy
+msgid "answered question"
+msgstr "ha risposto a una domanda"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "ha modificato una risposta"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[chiusa]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[cancellata]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "versione iniziale"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "ritaggata"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr "escludi gli ignorati"
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr "unico selezionato"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "immediatamente"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "ogni giorno"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "ogni settimana"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "mai"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
msgid "mystery-man"
msgstr "mystery-man"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
msgid "wavatar"
msgstr "wavatar"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "oro"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "argento"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronzo"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
msgid "most relevant questions"
msgstr "la domanda più rilevante"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
msgstr "clicca qui se vuoi vedere le domande più rilevanti"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr "per rilevanza"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "clicca qui per vedere le domande più vecchie"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr "per data"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "clicca qui per vedere le domande più nuove"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "clicca qui per vedere le domande modificate meno recentemente"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr "per attività"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "clicca qui per vedere le domande modificate più di recente"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
msgstr "clicca qui per vedere l'ultima domanda risposta"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
msgid "by answers"
msgstr "per risposte"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
msgstr "clicca qui per vedere le domande più risposte"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "clicca per vedere le domande meno votate"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
msgid "by votes"
msgstr "per voti"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "clicca qui per vedere le domande più votate"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-names non sono supportati"
@@ -2411,11 +2631,12 @@ msgid "Your user name (<i>required</i>)"
msgstr "Il tuo username (<i>required</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Mi spiace, questo username non esiste"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "mi spiace, questo nome utente è già in uso"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "signin/"
@@ -2453,6 +2674,7 @@ msgid "%(site)s user name and password"
msgstr "Per favore inserisci username e password di %(site)s"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2534,77 +2756,77 @@ msgstr "Per favore inserisci username e password"
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "L'OpenID %(openid_url)s non è valido"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr "Nuova password salvata"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr "Oops! C'è stato un errore, per favore riprova"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Il tuo indirizzo e-mail dev'essere verificato &mdash; vedi %(details_url)s"
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr "Recupera la password su %(site)s"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2612,187 +2834,176 @@ msgstr ""
msgid "Site"
msgstr "Sito"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "Impostazioni base"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Valore predefinito: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Valore predefinito:"
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Valore predefinito: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "I tipi di file immagine consentiti sono %(types)s"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Congratulazioni, ora sei un Amministratore"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Siti"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Documentazione"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Cambia password"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Log out"
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Home"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Modifica le impostazioni dei gruppi"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Per favore correggi l'errore sottostante"
+msgstr[1] "Per favore correggi gli errori sottostanti"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+msgid "Settings included in %(name)s."
+msgstr "Impostazioni incluse in %(name)s."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Non hai i permessi per modificare i valori."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Modifica impostazioni del sito"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "I Livesettings sono disabilitati per questo sito."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
+"Tutte le opzioni di configurazione devono essere modificate nel file "
+"settings.py"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Impostazioni per i gruppi: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Espandi tutti"
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Congratulazioni, ora sei un Amministratore"
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
msgstr "Per favore accetta la migliore risposta per questa domanda:"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
msgstr "Per favore accetta la migliore risposta per queste domande:"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"<p>Caro %(name)s,</p></p>ci sono degli aggiornamenti riguardanti questa "
-"domanda sul forum Q&A:</p>"
msgstr[1] ""
-"<p>Caro %(name)s,</p><p>ci sono degli aggiornamenti riguardanti queste "
-"%(num) domande sul forum Q&A:</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "nuova domanda"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Visita Askbot e controlla cosa c'è di nuovo! Spargi la voce: qualcuno che "
-"conosci può rispondere a queste domande, o trovare utile porne una?"
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"Hai scelto di ricevere gli aggiornamenti al massimo 'ogni giorno' su alcune "
-"domande. Se ricevi più di un messaggio per giorno per favore notifica questo "
-"problema all'amministratore di Askbot."
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"Hai scelto di ricevere gli aggiornamenti al massimo 'ogni settimana' su "
-"alcune domande. Se ricevi più di un messaggio per settimana per favore "
-"notifica questo problema all'amministratore di Askbot."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"A causa di un problema tecnico, è possibile che tu riceva dei link già "
-"inviati prima. Stiamo lavorando per risolvere questo problema."
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Ricorda che puoi <a href='%(email_settings_link)s'>modificare</a> la "
-"frequenza degli aggiornamenti via e-mail o disabilitarli completamente.<br/"
-">\n"
-"Se credi di avere ricevuto questo messaggio erroneamente, per favore avverti "
-"l'amministratore del forum all'indirizzo %(admin_email)s.</p><p>Cordialmente,"
-"</p><p>Il tuo amico server del forum Q&A</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
msgstr[1] ""
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "Accedi o registrati per inserire domande"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
"Mi spiace, non puoi accettare risposte perché il tuo account è stato bloccato"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr "Mi spiace, non puoi accettare risposte perché il tuo account è sospeso"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2801,13 +3012,13 @@ msgstr ""
"Ti servono più di %(points)s punti per accettare o negare la risposta alla "
"tua stessa domanda"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
@@ -2816,61 +3027,45 @@ msgstr ""
"Mi spiace, solo il moderatore o l'autore della domanda, %(username)s, può "
"accettare la risposta migliore"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "Mi spiace, non puoi votare per i tuoi post"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "Mi spiace, il tuo account è stato bloccato"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "Mi spiace, il tuo account è stato sospeso"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
"Serve avere più di %(points)s punti reputazione per poter votare a favore"
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
"Serve avere più di %(points)s punti reputazione per poter votare contro"
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "Mi spiace, gli utenti bloccati non possono caricare files"
-#: models/__init__.py:429
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr "Mi spiace, gli utenti sospesi non possono caricare files"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr ""
-"Mi spiace, serve avere più di %(min_rep)s punti reputazione per caricare "
-"immagini"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr ""
-"Mi spiace, il tuo account è stato bloccato; non puoi fare nuovi post finché "
-"la questione non verrà risolta. Contatta l'amministratore del forum per "
-"trovare una soluzione."
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Mi spiace, il tuo account è stato sospeso; non puoi fare nuovi post finché "
-"la questione non verrà risolta. Puoi però modificare i tuoi vecchi post. "
-"Contatta l'amministratore del forum per trovare una soluzione."
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2881,20 +3076,20 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"Mi spiace, solo gli autori, i moderatori e gli amministratori possono "
"modificare i commenti"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
"Mi spiace, visto che il tuo account è sospeso puoi commentare solo i tuoi "
"post"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2904,7 +3099,7 @@ msgstr ""
"Per commentare gli altri post serve avere almeno %(min_rep)s punti "
"reputazione. "
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2912,7 +3107,7 @@ msgstr ""
"Questo post è stato cancellato e può essere consultato solo dall'autore, dai "
"moderatori e dagli amministratori"
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2920,18 +3115,18 @@ msgstr ""
"Mi spiace, solo l'autore, i moderatori e gli amministratori possono "
"modificare un post cancellato."
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
"Mi spiace, non puoi modificare alcun post perché il tuo account è stato "
"bloccato"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
"Mi spiace, puoi modificare solo i tuoi post perché il tuo account è sospeso"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2939,7 +3134,7 @@ msgstr ""
"Mi spiace, per modificare i post appartenenti allo wiki servono almeno "
"%(min_rep)s punti reputazione"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
@@ -2948,7 +3143,7 @@ msgstr ""
"Mi spiace, per modificare i post altrui servono almeno %(min_rep)s punti "
"reputazione"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2962,17 +3157,17 @@ msgstr[1] ""
"Mi spiace, non puoi cancellare la tua domanda perché qualcun altro ha "
"fornito delle risposte con voti a favore"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr "Mi spiace, non puoi cancellare post perché il tuo account è blocato"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
"Mi spiace, puoi cancellare solo i tuoi post perché il tuo account è sospeso"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -2981,16 +3176,16 @@ msgstr ""
"Mi spiace, per cancellare i post altrui servono almeno %(min_rep)s punti "
"reputazione"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
"Mi spiace, non puoi chiudere domande perché il tuo account è stato bloccato"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr "Mi spiace, non puoi chiudere domande perché il tuo account è sospeso"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -2999,7 +3194,7 @@ msgstr ""
"Mi spiace, per chiudere post altrui servono almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
@@ -3007,7 +3202,7 @@ msgstr ""
"Mi spiace, per chiudere una tua domanda servono almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
@@ -3016,7 +3211,7 @@ msgstr ""
"Mi spiace, solo amministratori, moderatori e autori con più di %(min_rep)s "
"punti reputazione possono riaprire domande."
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -3024,39 +3219,68 @@ msgstr ""
"Mi spiace, per riaprire una tua domanda devi avere almeno %(min_rep)s punti "
"reputazione."
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-"Hai già segnalato questo messaggio come inappropriato, non puoi farlo una "
-"seconda volta."
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
-msgstr ""
-"Non puoi segnalare questo messaggio come inappropriato perché il tuo account "
-"è stato bloccato."
+#: models/__init__.py:783
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "Mi spiace, non puoi cancellare post perché il tuo account è blocato"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
-"Non puoi segnalare questo messaggio come inappropriato perché il tuo account "
-"è sospeso."
+"Mi spiace, servono almeno %(min_rep)s punti reputazione per cambiare i tag "
+"di una domanda"
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-"Mi spiace, servono più di %(min_rep)s punti reputazione per segnalare un "
-"post come inappropriato."
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
msgstr ""
-"Mi spiace, hai già segnalato %(max_flags_per_day)s post come offensivi oggi, "
-"hai superato il massimo giornaliero."
-#: models/__init__.py:799
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Mi spiace, non puoi cancellare post perché il tuo account è blocato"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Mi spiace, servono almeno %(min_rep)s punti reputazione per cambiare i tag "
+"di una domanda"
+msgstr[1] ""
+"Mi spiace, servono almeno %(min_rep)s punti reputazione per cambiare i tag "
+"di una domanda"
+
+#: models/__init__.py:862
+#, fuzzy
+msgid "you don't have the permission to remove all flags"
+msgstr "Non hai i permessi per modificare i valori."
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3064,19 +3288,19 @@ msgstr ""
"Mi spiace, solo gli autori, i moderatori e gli amministratori possono "
"cambiare i tag di una domanda cancellata"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
"Mi spiace, non puoi cambiare i tag perché il tuo account è stato bloccato."
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
"Mi spiace, puoi cambiare i tag solo alle tue domande perché il tuo account è "
"sospeso."
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
@@ -3084,152 +3308,145 @@ msgstr ""
"Mi spiace, servono almeno %(min_rep)s punti reputazione per cambiare i tag "
"di una domanda"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
"Mi spiace, non puoi cancellare commenti perché il tuo account è stato "
"bloccato."
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
"Mi spiace, puoi cancellare solo i tuoi commenti perché il tuo account è "
"sospeso."
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
"Mi spiace, servono almeno %(min_rep)s punti reputazione per cancellare "
"commenti."
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "Mi spiace, non è possibile annullare voti."
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "il %(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "%(hr)d ora fa"
msgstr[1] "%(hr)d ore fa"
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "%(min)d minuto fa"
msgstr[1] "%(min)d minuti fa"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "utente non registrato"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "Amministratore del sito"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr "Moderatore del forum"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr "Utente sospeso"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr "Utente bloccato"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "Utente registrato"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr "Utente in prova"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr "Utente approvato"
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s ha %(reputation)s punti reputazione"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "una medaglia d'argento"
msgstr[1] "%(count)d medaglie d'argento"
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "una medaglia di bronzo"
msgstr[1] "%(count)d medaglie di bronzo"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
+#: models/__init__.py:2389
+#, fuzzy, python-format
+msgid "\"%(title)s\""
msgstr "Re:\"%(title)s\""
-#: models/__init__.py:2200 models/__init__.py:2205
-#, python-format
-msgid "Question: \"%(title)s\""
-msgstr "Domanda: \"%(title)s\""
-
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3238,7 +3455,7 @@ msgstr ""
"Congratulazioni, hai ricevuto la medaglia %(badge_name)s. Controlla il <a "
"href=\"%(user_profile)s\">tuo profilo</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3498,80 +3715,60 @@ msgstr "Tassonomista"
msgid "Created a tag used by %(num)s questions"
msgstr "Ha creato un tag usato da almeno 50 domande"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "Esperto"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Molto attivo in domande con lo stesso tag"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "Mi spiace, questa domanda è stata cancellata e non è più accessibile"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr "\" ed altro ancora"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s ha modificato la sua domanda"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s ha/hanno scritto %(new_answer_count)s nuova/e risposta/e"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s ha/hanno commentato la domanda"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s ha/hanno commentato alcune risposte"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s ha/hanno commentato una risposta"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Verifica e-mail"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>Modificato da un moderatore. Motivo:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
@@ -3580,7 +3777,7 @@ msgstr ""
" %(username)s ha guadagnato %(points)s punti reputazione per i suoi "
"contributi alla domanda %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
@@ -3589,113 +3786,1203 @@ msgstr ""
" %(username)s ha perso %(points)s punti reputazione per i suoi contributi "
"alla domanda %(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "interessanti"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "ignorate"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Tutto il forum"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Domande poste da me"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Domande a cui ho risposto"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Domande selezionate individualmente"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr "Citazioni e risposte ai miei commenti"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Immediatamente"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Ogni giorno"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Ogni settimana"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Mai"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Per favore inserisci username e password"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "scegli una delle opzioni qui sopra"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+#, fuzzy
+msgid "Sign in"
+msgstr "signin/"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Cambia e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Salva il tuo indirizzo e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Salva e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Annulla"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Verifica e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "E-mail non modificata"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "E-mail modificata"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "E-mail verificata"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Verifica e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "Registrati"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Registrati"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "scegli una delle opzioni qui sopra"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Accedi"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "Grazie per esserti registrato sul nostro forum Q&A!"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "Il tuo account è:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "Nome utente:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Password:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "Puoi accedere al tuo account da qui:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"Cordialmente,\n"
" l'Amministratore"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Benvenuto sul forum Q&A"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "Per utilizzare il forum, clicca sul collegamento qui sotto:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
"Cliccando sul collegamento qui sopra, verificherai il tuo indirizzo e-mail."
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"Se hai ricevuto questo messaggio per errore, basta che tu ignori questa e-"
"mail. Ci scusiamo per il problema."
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Logout"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Accesso utente"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">La tua risposta alla domanda </span> <i>\"<strong>"
+"%(title)s</strong> %(summary)s...\"</i> <span class=\"strong big\">è stata "
+"memorizzata e verrà pubblicata non appena ti registrerai.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">La tua domanda</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">è stata memorizzata "
+"e verrà pubblicata non appena ti registrerai.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+#, fuzzy
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr "Per favore inserisci la tua password"
+
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Per favore inserisci username e password"
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Puoi accedere al tuo account da qui:"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "mai"
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Password"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "New password created"
+
+#: skins/common/templates/authopenid/signin.html:133
+#, fuzzy
+msgid "Please, retype"
+msgstr "per favore, digita di nuovo la password"
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+#, fuzzy
+msgid "provider"
+msgstr "Utente approvato"
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "ultimo accesso"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "cancella"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "Account eliminato."
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Hai altre domande?"
+
+#: skins/common/templates/authopenid/signin.html:197
+#, fuzzy
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Per favore inserisci la tua password"
+
+#: skins/common/templates/authopenid/signin.html:199
+#, fuzzy
+msgid "Please, enter your email address below to recover your account"
+msgstr "Per favore inserisci la tua password"
+
+#: skins/common/templates/authopenid/signin.html:202
+#, fuzzy
+msgid "recover your account via email"
+msgstr "Scegli una nuova password"
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+#, fuzzy
+msgid "Recover your account via email"
+msgstr "Scegli una nuova password"
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "scegli una delle opzioni qui sopra"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Scegli nome utente e password"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Scegli nome utente e password"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"Riscrivi le due parole che leggi qui sotto. Questo serve a impedire la "
+"creazione automatizzata di nuovi account."
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "oppure"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "torna al login OpenID"
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr ""
+"Come cambio la mia immagine personale (gravatar)? Che cos'è il gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Cambia tag"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr "Il tuo account è:"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "i cambiamenti sono stati salvati"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+#, fuzzy
+msgid "Upload"
+msgstr "upload/"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "ha cancellato una risposta"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+#, fuzzy
+msgid "Delete These"
+msgstr "ha cancellato una risposta"
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Rispondi alla domanda"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "link permanente"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "collegamento"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "riattiva domanda"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Visualizzare i flag inappropriati"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "vedi tutti i tag"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "segnala questo messaggio come offensivo (spam, pubblicità, insulti...)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "segnala come offensivo"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "modifica"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "questa risposta è stata accettata dall'autore"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+"segna questa risposta tra le preferite (clicca una seconda volta per "
+"annullare)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"Questa domanda è stata chiusa per il seguente motivo: \"%(close_reason)s\" da"
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "data di chiusura %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "riapri"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "chiudi"
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "modifica i tag"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "campo obbligatorio"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "tag"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(campo obbligatorio)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "attiva/disattiva l'anteprima del codice Markdown"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "nascondi anteprima"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Tag preferiti"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "Aggiungi"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Tag ignorati"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+#, fuzzy
+msgid "Display tag filter"
+msgstr "Scegli il tag filtro per l'email"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Pagina non trovata"
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Possibili motivi:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "questa domanda o risposta è stata cancellata;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "l'indirizzo è errato &mdash; controllalo;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"la pagina che stai cercando di visitare è protetta oppure non hai "
+"sufficienti punti reputazione, vedi"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "domande frequenti"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "se credi che questo messaggio di errore 404 sia inappropriato,"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "per favore segnala questo problema"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "torna alla pagina precedente"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "vedi tutte le domande"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "vedi tutti i tag"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr "questo errore è stato registrato, sarà risolto al più presto possibile"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "puoi segnalare tu stesso questo errore agli amministratori del sito"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "vedi le domande recenti"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "vedi i tag"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Modifica risposta"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "indietro"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "revisione"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "scegli revisione"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Salva modifica"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "mostra anteprima"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Chiedi"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, fuzzy, python-format
+msgid "%(name)s"
+msgstr "il %(date)s"
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Medaglia"
+
+#: skins/default/templates/badge.html:7
+#, fuzzy, python-format
+msgid "Badge \"%(name)s\""
+msgstr "il %(date)s"
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr "notifiche"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "utente ha guadagnato questa medaglia:"
+msgstr[1] "utenti hanno guadagnato questa medaglia:"
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Medaglie"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"Il tuo contributo a questa comunità, attraverso domande, risposte e voti, "
+"viene premiato con delle medaglie."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Qui sotto trovi una lista delle medaglie disponibili, con indicato il numero "
+"di persone che le hanno ottenute. Hai qualche idea per delle nuove medaglie? "
+"<a href='%(feedback_faq_url)s'>Proponila</a>"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Tipi di medaglie "
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "Medaglie di bronzo: date anche come riconoscimento speciale"
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Chiudi domanda"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Chiudi la domanda"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Motivo:"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "Chiudi"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Domande frequenti"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Che tipo di domande posso porre qui?"
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"La cosa più importante &mdash; le domande devono essere "
+"<strong>interessanti</strong> per gli altri"
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Prima di porre una domanda, usa la funzione di ricerca per assicurarti che "
+"non sia già stata posta"
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "Che domande devo evitare?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Evita domande che sono troppo vaghe, polemiche o poco interessanti per gli "
+"altri"
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Cosa devo evitare nelle risposte?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Chi sono i moderatori?"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "In breve: <strong>tu</strong>."
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Questo sito è moderato dai suoi utenti."
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Il sistema dei punti reputazione consente agli utenti di guadagnare il "
+"diritto di effettuare le varie operazioni di moderazione."
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "Come funzionano i punti reputazione?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Per esempio, se poni una domanda interessante o dai una risposta utile, gli "
+"utenti ti daranno dei voti positivi. D'altro canto, se la risposta è "
+"sbagliata, gli utenti ti daranno dei voti negativi. Ogni voto a tuo favore "
+"ti procura <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> punti "
+"reputazione; ogni voto contro di te ti fa perdere <strong>"
+"%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> punti reputazione. Puoi "
+"guadagnare un massimo di <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
+"punti al giorno per ogni tua domanda o risposta. Nella tabella qui sotto "
+"trovi quanti punti reputazione sono necessari per ogni tipo di potere di "
+"moderazione."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "votare a favore"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "aggiungere commenti"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "votare contro"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "Prima risposta accettata a una tua domanda"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "aprire e chiudere le proprie domande"
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "modificare i tag delle domande altrui"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "modificare le 'domande comunitarie'"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "modificare ogni risposta"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "cancellare commenti altrui"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Devo scegliere una password per registrarmi?"
+
+#: skins/default/templates/faq_static.html:72
+#, fuzzy
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"No, non è necessario. Puoi accedere attraverso il tuo account su un "
+"qualunque sito che supporta OpenID, come Google, Yahoo, AOL, eccetera."
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Accedi ora!"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Perché le altre persone possono modificare quello che scrivo?"
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+"Lo scopo di questo sito è di creare una comunità dedita allo scambio di idee "
+"e alla creazione di contenuti il più possibile utili alla comunità stessa."
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Perciò domande e risposte possono essere modificate come pagine di uno wiki "
+"dagli utenti più esperti; questo contribuisce a migliorare la qualità totale "
+"dei contenuti in questo sito."
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "Se questo approccio non fa per te, rispettiamo la tua scelta."
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Hai altre domande?"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"<a href='%(ask_question_url)s'>Ponile</a> tu stesso, e contribuisci a "
+"migliorare questo sito!"
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Contatti"
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Dicci cosa pensi di questo sito!"
+
+#: skins/default/templates/feedback.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Caro %(user_name)s</span>, ci interessa moltissimo "
+"sentire la tua opinione. Scrivi i tuoi commenti qui sotto."
+
+#: skins/default/templates/feedback.html:21
+#, fuzzy
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Caro visitatore</span>, ci interessa moltissimo la "
+"tua opinione. Scrivi i tuoi commenti qui sotto."
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(campo obbligatorio)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Invia"
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
#, fuzzy, python-format
msgid ""
"\n"
@@ -3704,26 +4991,1566 @@ msgstr ""
"\n"
"Salve, questo è un messaggio di notifica del forum %(site_title)s.\n"
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "risposte per %(username)s"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Caro %(receiving_user_name)s,</p>"
+
+#: skins/default/templates/instant_notification.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha lasciato un <a href=\"%%(post_url)s\">nuovo "
+"commento</a>\n"
+"alla domanda \"%(origin_post_title)s\"</p>\n"
+
+#: skins/default/templates/instant_notification.html:8
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha lasciato un <a href=\"%%(post_url)s\">nuovo "
+"commento</a>\n"
+"alla domanda \"%(origin_post_title)s\"</p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha risposto alla domanda\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha posto una nuova domanda <a href=\"%(post_url)s"
+"\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha modificato una risposta alla domanda <a href="
+"\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ha modificato la domanda\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:37
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<p>Puoi <a href=\"%(user_subscriptions_url)s\">configurare</a> la frequenza "
+"con cui ti vengono inviati questi aggiornamenti o eliminarli. Grazie per la "
+"tua partecipazione a questo forum!</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>Cordialmente,<br/>l'amministratore</p>"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "Riapri questa domanda"
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "numero attuale di voti"
+
+#: skins/default/templates/macros.html:46
#, fuzzy
+msgid "anonymous user"
+msgstr "utente non registrato"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
msgstr ""
-"Se hai ricevuto questo messaggio per errore, basta che tu ignori questa e-"
-"mail. Ci scusiamo per il problema."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "chiesto il"
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "risposto il"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "scritto il"
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "modificato"
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "vedi domande con i tag '%(tag)s'"
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "cancella questo commento"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "Immagine gravatar per %(username)s "
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "precedente"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "pagina corrente"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "pagina %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "pagina successiva"
+
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "risposte per %(username)s"
+
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "hai una nuova risposta"
+msgstr[1] "hai %(response_count)s nuove risposte"
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "nessuna nuova risposta"
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "Ha segnalato un post come inappropriato"
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts"
+msgstr "Ha segnalato un post come inappropriato"
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, fuzzy, python-format
+msgid "%(seen)s flagged posts"
+msgstr "Ha segnalato un post come inappropriato"
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Domande"
+
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr "visualizza <strong>%(counter)s</strong> commento aggiuntivo"
+
+#: skins/default/templates/question.html:113
+#, fuzzy
+msgid "see <strong>some</strong> more"
+msgstr "visualizza <strong>%(counter)s</strong> commento aggiuntivo"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "aggiungi commento"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Rispondi alla tua domanda"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "La tua risposta"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Accedi/registrati per scrivere la tua risposta"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Modifica domanda"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Domande simili"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Modifica tag"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Perché usare e modificare i tag?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "sarai premiato con delle medaglie per il buon uso dei tag"
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "fino a 5 tag, ognuno lungo al massimo 20 caratteri"
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Riapri domanda"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Titolo"
+
+#: skins/default/templates/reopen.html:11
+#, fuzzy, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"Questa domanda è stata chiusa da\n"
+"<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>"
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Motivo della chiusura:"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Quando:"
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Riapri questa domanda?"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Riapri questa domanda"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Storia delle modifiche"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "clicca per mostrare/nascondere le modifiche"
+
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "Numero di revisione dei media della skin"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "usare i tag"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+#, fuzzy
+msgid "Please, subscribe for the following tags:"
+msgstr "Accedi per sottoscrivere i tag: %(tags)s"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "usare i tag"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Lista dei tag"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+#, fuzzy
+msgid "Sort by &raquo;"
+msgstr "Ordina per:"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "ordina i tag alfabeticamente"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "per nome"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "ordina i tag per frequenza d'uso"
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "per numero di voti"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Nessun risultato"
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Utenti"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "più recenti"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "per nome"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "utenti contenenti %(suser)s:"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Nessun utente trovato"
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s domanda"
+msgstr[1] "%(q_num)s domande"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "contenenti messaggi di %(author_name)s"
+
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "con i tag"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Consigli per la ricerca:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "azzera autore"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#, fuzzy
+msgid " or "
+msgstr "oppure"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "azzera i tag"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "ricomincia da capo"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+"- per espandere, o raffinare la tua ricerca aggiungendo altri tag o "
+"modificando le parole chiave"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Suggerimenti per la ricerca:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "aggiungi tag e parole chiave per restringere il campo"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "Non ci sono domande senza risposte"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "Non ci sono domande preferite"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+#, fuzzy
+msgid "Please follow some questions or follow some users."
+msgstr "Aggiungi qualche domanda alla tua lista di domande preferite"
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "puoi espandere la tua ricerca"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "azzerando l'autore"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "azzerando i tag"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "ricominciando da capo"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "Ricorda, puoi sempre porre tu stesso una domanda!"
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Non hai trovato quello che cercavi?"
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Poni tu stesso la domanda!"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "sottoscrivi al feed delle domande"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "ogni tag deve essere più corto di %(max_chars)d carattere"
+msgstr[1] "ogni tag deve essere più corto di %(max_chars)d caratteri"
+
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "per favore usa un numero uguale o inferiore a %(tag_count)d tag"
+msgstr[1] "per favore usa un numero uguale o inferiore a %(tag_count)d tags"
+
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "fino a 5 tag, ognuno lungo al massimo 20 caratteri"
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"%(counter)s Risposta:"
+msgstr[1] ""
+"\n"
+"%(counter)s Risposte:"
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr "Ordina per:"
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "mostra prima le risposte più vecchie"
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "mostra prima le risposte più nuove"
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "mostra prima le risposte più votate"
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Accedi/registrati per scrivere la tua risposta"
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "La tua risposta"
+
+#: skins/default/templates/question/new_answer_form.html:26
+#, fuzzy
+msgid "Be the first one to answer this question!"
+msgstr "Per favore accetta la migliore risposta per questa domanda:"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+#, fuzzy
+msgid " or"
+msgstr "oppure"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "e-mail:"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Tag"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "clicca qui per vedere le domande con più risposte"
+
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Chiudi domanda"
+
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Chiudi domanda"
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "clicca qui per vedere le domande con più risposte"
+
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Chiudi domanda"
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "notifiche via e-mail cancellate"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "sottoscrivi al feed delle domande"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "sottoscrivi al feed delle domande"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "chiesto il"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "volte"
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Aggiornata l'ultima voltail"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Domande simili"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
+"settimana"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"Se ti registri, potrai scegliere di ricevere periodicamente aggiornamenti "
+"via e-mail sullo stato di questa domanda."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "profilo dell'utente %(username)s"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Modifica profilo"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "modifica profilo"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "cambia immagine"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Utente registrato"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Nome visualizzato"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "Account eliminato."
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Conferma"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "notifiche"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "E-mail di notifica"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Il tuo indirizzo e-mail</strong> (<i>deve essere valido, non sarà "
+"mai rivelato agli altri utenti</i>)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Chiudi domanda"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "domande"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "per favore usa un numero uguale o inferiore a %(tag_count)d tag"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+#, fuzzy
+msgid "select:"
+msgstr "cancella"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "ultimo accesso"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+#, fuzzy
+msgid "new"
+msgstr "più recenti"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+#, fuzzy
+msgid "none"
+msgstr "bronzo"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "ultimo accesso"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+#, fuzzy
+msgid "mark as new"
+msgstr "ha accettato una risposta"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "vedi tutti i tag"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "cancella"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "aggiorna profilo"
+
+#: skins/default/templates/user_profile/user_info.html:40
+#, fuzzy
+msgid "manage login methods"
+msgstr "Accedi o registrati per inserire domande"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nome vero"
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "membro dal"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "ultimo accesso"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "Sito web"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "residenza"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "età"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "anni"
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "voti rimanenti per oggi"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "voti rimanenti"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "modera"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "Lo stato dell'utente è stato modificato"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Salva"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Hai %(reputation)s punti reputazione"
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "Questo utente ha %(reputation)s punti reputazione"
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "La reputazione dell'utente è stata modificata"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Sottrai"
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Aggiungi"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Spedisci messaggio a %(username)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"Verrà spedita all'utente un'e-mail utilizzando il tuo indirizzo come campo "
+"'reply-to'. Assicurati che il tuo indirizzo sia inserito correttamente."
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Messaggio spedito"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Spedisci messaggio"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Non puoi segnalare questo messaggio come inappropriato perché il tuo account "
+"è sospeso."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "profilo dell'utente %(username)s"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "attività"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Registro dei tuoi punti reputazione"
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Registro dei punti reputazione di %(user_name)s"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "dettagli"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Domanda"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Domande"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "risposta"
+msgstr[1] "risposta"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "questa risposta ha ricevuto %(answer_score)s voti"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s commento)"
+msgstr[1] "(%(comment_count)s commenti)"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> Voto"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> Voti"
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "pollice su"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "l'utente ha dato questo numero di voti a favore"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "pollice in giù"
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "l'utente ha dato questo numero di voti contro"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Tag"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Tag"
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Medaglia"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Medaglie"
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "consigli per le risposte"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+#, fuzzy
+msgid "User profile"
+msgstr "profilo utente"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "commenti e risposte a domande"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "registro dei punti reputazione"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+#, fuzzy
+msgid "questions that user is following"
+msgstr "domande preferite da questo utente"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "elenco dei voti dati"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "voti"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "impostazioni notifiche via e-mail"
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "modera questo utente"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "fai in modo che la tua risposta sia interessante per la comunità"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "cerca di dare una risposta, non di iniziare una discussione"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "sii sufficientemente dettagliato"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "sii chiaro e conciso"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "vedi le domande frequenti"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "sintassi Markdown"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+#, fuzzy
+msgid "*italic* or _italic_"
+msgstr "*corsivo* o _corsivo_"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**grassetto** o __grassetto__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "testo"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "immagine"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "lista numerata:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "sono supportati anche alcuni semplici tag HTML"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "informazioni su Markdown"
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">Puoi cominciare ora a scrivere la tua domanda "
+"come utente non registrato</span>. Quando avrai finito, sarai reindirizzato "
+"alla pagina di accesso/registrazione. La tua domanda sarà salvata e "
+"pubblicata non appena ti sarai registrato. Accedere al proprio account "
+"richiede circa 30 secondi, registrarne uno nuovo meno di un minuto."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Utenti attivi"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "informazioni su Askbot"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "privacy"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "contatti"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "torna alla home page"
+
+#: skins/default/templates/widgets/logo.html:4
+#, fuzzy, python-format
+msgid "%(site)s logo"
+msgstr "Logo del forum Q&A"
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "utenti"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "medaglie"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "fai in modo che la tua risposta sia interessante per la comunità"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "consultazione"
+msgstr[1] "consultazioni"
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "risposta"
+msgstr[1] "risposta"
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "voto"
+msgstr[1] "voti"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "vedi domande senza risposta"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "vedi le tue domande preferite"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "Poni tu stesso la domanda!"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "medaglie:"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "signout/"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "Puoi accedere al tuo account da qui:"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "impostazioni"
+
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "bronzo"
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
msgid "Oops, apologies - there was some error"
msgstr ""
@@ -3735,98 +6562,130 @@ msgstr "Accedi o registrati per inserire domande"
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "campo obbligatorio"
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "Scegli un nome utente"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "il nome utente è obbligatorio"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr "mi spiace, questo nome utente è in uso, scegline un altro"
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr "mi spiace, questo nome utente non è consentito, scegline un altro"
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr "mi spiace, questo nome utente è già in uso"
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
"mi spiace, c'è un errore imprevisto &mdash; questo nome utente è già in uso "
"da più di un utente"
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr "il nome utente può contenere solo lettere, spazi, e _trattini_bassi_"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "la tua e-mail <i>(resterà privata)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr "l'indirizzo e-mail è obbligatorio"
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr "inserisci un indirizzo e-mail valido"
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr "questa e-mail è già in uso, scegline un'altra"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Password"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "la password è obbligatoria"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Password <i>(per conferma)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "per favore, digita di nuovo la password"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr "le due password non coincidono, riprova"
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "2 giorni fa"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "ieri"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] "%(hr)d ora fa"
msgstr[1] "%(hr)d ore fa"
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] "%(min)d minuto fa"
msgstr[1] "%(min)d minuti fa"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -3839,198 +6698,191 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+"Spiacenti, gli utenti anonimi non possono accedere ai messaggi in arrivo"
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
msgstr "mi spiace, devi essere registrato per votare"
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr "hai superato il massimo giornaliero di voti consentiti"
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr "Puoi votare ancora %(votes_left)s volte oggi"
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-"Spiacenti, gli utenti anonimi non possono accedere ai messaggi in arrivo"
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr "Mi spiace, qualcosa non va qui..."
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
msgstr "mi spiace, devi essere registrato per accettare una risposta"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"La tua iscrizione è stata registrata, ma il tuo indirizzo e-mail %(email)s "
"dev'essere verificato, leggi <a href='%(details_url)s'>qui</a> per maggiori "
"dettagli"
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr ""
"la frequenza delle notifiche via e-mail è stata impostata a 'ogni giorno'"
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr "Accedi per sottoscrivere i tag: %(tags)s"
-#: views/commands.py:542
+#: views/commands.py:600
msgid "Please sign in to vote"
msgstr "Accedi per votare"
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Accedi per votare"
+
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "il %(date)s"
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr "Contatti forum Q&A"
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Grazie per il tuo messaggio!"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
"Siamo curiosi di sentire la tua opinione! Sarà per la prossima volta :)"
-#: views/readers.py:151
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Regole per la privacy"
+
+#: views/readers.py:133
#, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "%(q_num)s domanda, taggata"
msgstr[1] "%(q_num)s domande, taggate"
-#: views/readers.py:159
-#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s domanda"
-msgstr[1] "%(q_num)s domande"
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d%(badge_level)s medaglia"
-msgstr[1] "%(badge_count)d%(badge_level)s medaglie"
-
-#: views/readers.py:415
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "Mi spiace, questo commento è stata cancellato e non è più accessibile"
-#: views/users.py:211
-msgid "moderate this user"
-msgstr "modera questo utente"
-
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr "modera utente"
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "profilo utente"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr "profilo"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "attività recente"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "profilo utente &mdash; attività recente"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "commenti e risposte a domande"
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "profilo utente &mdash; risposte"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "elenco dei voti dati"
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "profilo utente &mdash; voti"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "punti reputazione"
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "profilo utente &mdash; reputazione"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "domande preferite"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "profilo utente &mdash; domande preferite"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr "i cambiamenti sono stati salvati"
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr "notifiche via e-mail cancellate"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "impostazioni notifiche via e-mail"
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "profilo utente &mdash; notifiche via e-mail"
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
msgstr "Mi spiace, gli utenti non registrati non possono caricare file."
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "i tipi di file consentiti sono: '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr "la dimensione massima di file caricabile è %(file_size)sK"
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr "Errore nel caricamento del file. Contatta un amministratore."
-#: views/writers.py:191
-msgid "Please log in to ask questions"
-msgstr "Accedi per fare una domanda"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
msgid "Please log in to answer questions"
msgstr "Accedi per rispondere alle domande"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
@@ -4039,12 +6891,12 @@ msgstr ""
"Gli utenti non registrati non possono lasciare commenti. <a href="
"\"%(sign_in_url)s\">Accedi o registrati</a>."
-#: views/writers.py:646
+#: views/writers.py:589
msgid "Sorry, anonymous users cannot edit comments"
msgstr ""
"Mi spiace, gli utenti non registrati non possono modificare i commenti."
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
@@ -4053,74 +6905,173 @@ msgstr ""
"Gli utenti non registrati non possono cancellare commenti. <a href="
"\"%(sign_in_url)s\">Accedi o registrati</a>."
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
msgstr "Mi spiace, ci sono dei problemi tecnici"
-#~ msgid "Sites"
-#~ msgstr "Siti"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "usa-questi-caratteri-nei-tag"
+
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "questa email verrà linkata a gravatar"
-#~ msgid "Documentation"
-#~ msgstr "Documentazione"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "URL del servizio LDAP"
-#~ msgid "Change password"
-#~ msgstr "Cambia password"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Spiega come modificare la password LDAP"
-#~ msgid "Log out"
-#~ msgstr "Log out"
+#~ msgid "question_answered"
+#~ msgstr "risposta_a_una_domanda"
-#~ msgid "Home"
-#~ msgstr "Home"
+#~ msgid "question_commented"
+#~ msgstr "commento_a_una_domanda"
-#~ msgid "Edit Group Settings"
-#~ msgstr "Modifica le impostazioni dei gruppi"
+#~ msgid "answer_commented"
+#~ msgstr "risposta_commentata"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Per favore correggi l'errore sottostante"
-#~ msgstr[1] "Per favore correggi gli errori sottostanti"
+#~ msgid "answer_accepted"
+#~ msgstr "risposta_accettata"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "Impostazioni incluse in %(name)s."
+#~ msgid "Incorrect username."
+#~ msgstr "Mi spiace, questo username non esiste"
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "Non hai i permessi per modificare i valori."
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Caro %(name)s,</p></p>ci sono degli aggiornamenti riguardanti questa "
+#~ "domanda sul forum Q&A:</p>"
+#~ msgstr[1] ""
+#~ "<p>Caro %(name)s,</p><p>ci sono degli aggiornamenti riguardanti queste "
+#~ "%(num) domande sul forum Q&A:</p>"
+
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Visita Askbot e controlla cosa c'è di nuovo! Spargi la voce: qualcuno che "
+#~ "conosci può rispondere a queste domande, o trovare utile porne una?"
-#~ msgid "Edit Site Settings"
-#~ msgstr "Modifica impostazioni del sito"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Hai scelto di ricevere gli aggiornamenti al massimo 'ogni giorno' su "
+#~ "alcune domande. Se ricevi più di un messaggio per giorno per favore "
+#~ "notifica questo problema all'amministratore di Askbot."
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "I Livesettings sono disabilitati per questo sito."
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Hai scelto di ricevere gli aggiornamenti al massimo 'ogni settimana' su "
+#~ "alcune domande. Se ricevi più di un messaggio per settimana per favore "
+#~ "notifica questo problema all'amministratore di Askbot."
#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
#~ msgstr ""
-#~ "Tutte le opzioni di configurazione devono essere modificate nel file "
-#~ "settings.py"
+#~ "A causa di un problema tecnico, è possibile che tu riceva dei link già "
+#~ "inviati prima. Stiamo lavorando per risolvere questo problema."
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "Impostazioni per i gruppi: %(name)s"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Ricorda che puoi <a href='%(email_settings_link)s'>modificare</a> la "
+#~ "frequenza degli aggiornamenti via e-mail o disabilitarli completamente."
+#~ "<br/>\n"
+#~ "Se credi di avere ricevuto questo messaggio erroneamente, per favore "
+#~ "avverti l'amministratore del forum all'indirizzo %(admin_email)s.</"
+#~ "p><p>Cordialmente,</p><p>Il tuo amico server del forum Q&A</p>"
-#~ msgid "Uncollapse all"
-#~ msgstr "Espandi tutti"
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "Mi spiace, serve avere più di %(min_rep)s punti reputazione per caricare "
+#~ "immagini"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Mi spiace, il tuo account è stato bloccato; non puoi fare nuovi post "
+#~ "finché la questione non verrà risolta. Contatta l'amministratore del "
+#~ "forum per trovare una soluzione."
+
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Mi spiace, il tuo account è stato sospeso; non puoi fare nuovi post "
+#~ "finché la questione non verrà risolta. Puoi però modificare i tuoi vecchi "
+#~ "post. Contatta l'amministratore del forum per trovare una soluzione."
+
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr ""
+#~ "Hai già segnalato questo messaggio come inappropriato, non puoi farlo una "
+#~ "seconda volta."
+
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Non puoi segnalare questo messaggio come inappropriato perché il tuo "
+#~ "account è stato bloccato."
+
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Non puoi segnalare questo messaggio come inappropriato perché il tuo "
+#~ "account è sospeso."
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Mi spiace, servono più di %(min_rep)s punti reputazione per segnalare un "
+#~ "post come inappropriato."
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr ""
+#~ "Mi spiace, hai già segnalato %(max_flags_per_day)s post come offensivi "
+#~ "oggi, hai superato il massimo giornaliero."
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Per favore inserisci username e password"
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr ""
+#~ "Non puoi segnalare questo messaggio come inappropriato perché il tuo "
+#~ "account è stato bloccato."
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "scegli una delle opzioni qui sopra"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Non puoi segnalare questo messaggio come inappropriato perché il tuo "
+#~ "account è sospeso."
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "signin/"
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Mi spiace, servono più di %(min_rep)s punti reputazione per segnalare un "
+#~ "post come inappropriato."
+#~ msgstr[1] ""
+#~ "Mi spiace, servono più di %(min_rep)s punti reputazione per segnalare un "
+#~ "post come inappropriato."
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "Mi spiace, non è possibile annullare voti."
-#~ msgid "Change email"
-#~ msgstr "Cambia e-mail"
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s ha modificato la sua domanda"
-#~ msgid "Save your email address"
-#~ msgstr "Salva il tuo indirizzo e-mail"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s ha/hanno scritto %(new_answer_count)s nuova/e risposta/e"
+
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s ha/hanno commentato la domanda"
+
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s ha/hanno commentato alcune risposte"
+
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s ha/hanno commentato una risposta"
#~ msgid "change %(email)s info"
#~ msgstr ""
@@ -4135,29 +7086,16 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "span> &Egrave; obbligatorio inserire un indirizzo e-mail valido. Se lo "
#~ "desideri, puoi ricevere <strong>messaggi di notifica</strong> sulle "
#~ "domande che ti interessano o sull'intero forum. Inoltre, il tuo indirizzo "
-#~ "è usato per creare un'immagine <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> unica per il tuo account. Il tuo "
-#~ "indirizzo e-mail non sarà mai pubblicato o comunicato a terze parti."
+#~ "è usato per creare un'immagine <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> unica per il "
+#~ "tuo account. Il tuo indirizzo e-mail non sarà mai pubblicato o comunicato "
+#~ "a terze parti."
#~ msgid "Your new Email"
#~ msgstr ""
#~ "<strong>Il tuo nuovo indirizzo e-mail:</strong> (non verrà <strong>mai</"
#~ "strong> rivelato agli altri utenti, deve essere valido)"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Il tuo indirizzo e-mail</strong> (<i>deve essere valido, non sarà "
-#~ "mai rivelato agli altri utenti</i>)"
-
-#~ msgid "Save Email"
-#~ msgstr "Salva e-mail"
-
-#~ msgid "Cancel"
-#~ msgstr "Annulla"
-
-#~ msgid "Validate email"
-#~ msgstr "Verifica e-mail"
-
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">Un'e-mail di verifica è stata spedita a "
@@ -4167,18 +7105,12 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "strong>, puoi <a href='%(change_email_url)s'><strong>cambiarlo di nuovo</"
#~ "strong></a>."
-#~ msgid "Email not changed"
-#~ msgstr "E-mail non modificata"
-
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">Il tuo indirizzo e-mail %(email)s non è stato "
#~ "modificato.</span> Se decidi di cambiarlo, puoi farlo dal tuo profilo "
-#~ "utente o utilizzare di nuovo <a href='%(change_email_url)"
-#~ "s'><strong>questa pagina</strong></a>."
-
-#~ msgid "Email changed"
-#~ msgstr "E-mail modificata"
+#~ "utente o utilizzare di nuovo <a "
+#~ "href='%(change_email_url)s'><strong>questa pagina</strong></a>."
#~ msgid "your current %(email)s can be used for this"
#~ msgstr ""
@@ -4187,9 +7119,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "indirizzo. Le e-mail di notifica vengono spedite solo in caso di "
#~ "aggiornamenti, al massimo una volta al giorno."
-#~ msgid "Email verified"
-#~ msgstr "E-mail verificata"
-
#~ msgid "thanks for verifying email"
#~ msgstr ""
#~ "<span class=\"big strong\">Grazie per aver verificato il tuo indirizzo e-"
@@ -4209,10 +7138,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "puoi <a href='%(change_link)s'>cambiare</a> l'indirizzo usato per le "
#~ "notifiche."
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Registrati"
-
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "<p><span class=\"big strong\">&Egrave; la prima volta che accedi con il "
@@ -4220,8 +7145,8 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "visualizzato</strong> e il tuo <strong>indirizzo e-mail</strong>. Con "
#~ "esso puoi <strong>ricevere aggiornamenti</strong> sulle domande che più "
#~ "ti interessano; verrà inoltre usato per creare un'immagine unica "
-#~ "associata al tuo account, detta <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a>.</p>"
+#~ "associata al tuo account, detta <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
#~ msgid ""
#~ "%(username)s already exists, choose another name for \n"
@@ -4280,9 +7205,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "mail a settimana</strong> con un riassunto delle novità (se ce ne sono)"
#~ "<br/> Se lo desideri, modifica queste impostazioni."
-#~ msgid "please select one of the options above"
-#~ msgstr "scegli una delle opzioni qui sopra"
-
#~ msgid "Tag filter tool will be your right panel, once you log in."
#~ msgstr ""
#~ "Quando accederai al sito, sulla destra troverai il pannello con i filtri "
@@ -4291,96 +7213,17 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "create account"
#~ msgstr "registrati"
-#~ msgid "Logout"
-#~ msgstr "Logout"
-
-#~ msgid "User login"
-#~ msgstr "Accesso utente"
-
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">La tua risposta alla domanda </span> <i>"
-#~ "\"<strong>%(title)s</strong> %(summary)s...\"</i> <span class=\"strong big"
-#~ "\">è stata memorizzata e verrà pubblicata non appena ti registrerai.</"
-#~ "span>"
-
#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
#~ msgstr ""
-#~ "<span class=\"strong big\">La tua domanda</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">è stata "
-#~ "memorizzata e verrà pubblicata non appena ti registrerai.</span>"
-
-#, fuzzy
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr "Per favore inserisci la tua password"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Per favore inserisci username e password"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "mai"
-
-#~ msgid "Password"
-#~ msgstr "Password"
+#~ "Se hai ricevuto questo messaggio per errore, basta che tu ignori questa e-"
+#~ "mail. Ci scusiamo per il problema."
#~ msgid "Login"
#~ msgstr "Accedi"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "New password created"
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "per favore, digita di nuovo la password"
-
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "Utente approvato"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "ultimo accesso"
-
-#~ msgid "delete"
-#~ msgstr "cancella"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Account eliminato."
-
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Hai altre domande?"
-
-#, fuzzy
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "Per favore inserisci la tua password"
-
-#, fuzzy
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "Per favore inserisci la tua password"
-
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Scegli una nuova password"
-
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Scegli una nuova password"
-
#~ msgid "Why use OpenID?"
#~ msgstr "Perché usare OpenID?"
@@ -4410,20 +7253,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Get OpenID"
#~ msgstr "Ottieni un OpenID"
-#~ msgid "Signup"
-#~ msgstr "Accedi"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "scegli una delle opzioni qui sopra"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Scegli nome utente e password"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Scegli nome utente e password"
-
#~ msgid "Traditional signup info"
#~ msgstr ""
#~ "<span class='strong big'>Se preferisci, puoi scegliere un nome utente e "
@@ -4433,251 +7262,28 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "maggiori siti (per esempio Gmail o AOL), senza dover rivelare a noi né a "
#~ "nessuno la tua password e senza doverne scegliere una nuova."
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "Riscrivi le due parole che leggi qui sotto. Questo serve a impedire la "
-#~ "creazione automatizzata di nuovi account."
-
#~ msgid "Create Account"
#~ msgstr "Crea account"
-#~ msgid "or"
-#~ msgstr "oppure"
-
-#~ msgid "return to OpenID login"
-#~ msgstr "torna al login OpenID"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr ""
-#~ "Come cambio la mia immagine personale (gravatar)? Che cos'è il gravatar?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Cambia tag"
-
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Il tuo account è:"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "i cambiamenti sono stati salvati"
-
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "ha cancellato una risposta"
-
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "ha cancellato una risposta"
-
#~ msgid "answer permanent link"
#~ msgstr "link permanente alla risposta"
-#~ msgid "permanent link"
-#~ msgstr "link permanente"
-
-#~ msgid "edit"
-#~ msgstr "modifica"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "segnala questo messaggio come offensivo (spam, pubblicità, insulti...)"
-
-#~ msgid "flag offensive"
-#~ msgstr "segnala come offensivo"
-
-#~ msgid "undelete"
-#~ msgstr "riattiva domanda"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Rispondi alla domanda"
-
#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr ""
-#~ "segna questa risposta tra le preferite (clicca una seconda volta per "
-#~ "annullare)"
+#~ msgid "remove all flags"
+#~ msgstr "vedi tutti i tag"
#~ msgid "%(question_author)s has selected this answer as correct"
#~ msgstr "%(question_author)s ha scelto questa come risposta migliore"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr ""
-#~ "Questa domanda è stata chiusa per il seguente motivo: \"%(close_reason)s"
-#~ "\" da"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "data di chiusura %(closed_at)s"
-
-#~ msgid "retag"
-#~ msgstr "modifica i tag"
-
-#~ msgid "reopen"
-#~ msgstr "riapri"
-
-#~ msgid "close"
-#~ msgstr "chiudi"
-
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "campo obbligatorio"
-
-#~ msgid "(required)"
-#~ msgstr "(campo obbligatorio)"
-
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "attiva/disattiva l'anteprima del codice Markdown"
-
-#~ msgid "hide preview"
-#~ msgstr "nascondi anteprima"
-
#~ msgid "Related tags"
#~ msgstr "Tag"
-#~ msgid "Interesting tags"
-#~ msgstr "Tag preferiti"
-
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Aggiungi"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Tag ignorati"
-
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "Scegli il tag filtro per l'email"
-
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Pagina non trovata"
-
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Possibili motivi:"
-
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "questa domanda o risposta è stata cancellata;"
-
-#~ msgid "url has error - please check it;"
-#~ msgstr "l'indirizzo è errato &mdash; controllalo;"
-
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "la pagina che stai cercando di visitare è protetta oppure non hai "
-#~ "sufficienti punti reputazione, vedi"
-
-#~ msgid "faq"
-#~ msgstr "domande frequenti"
-
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "se credi che questo messaggio di errore 404 sia inappropriato,"
-
-#~ msgid "report this problem"
-#~ msgstr "per favore segnala questo problema"
-
-#~ msgid "back to previous page"
-#~ msgstr "torna alla pagina precedente"
-
-#~ msgid "see all questions"
-#~ msgstr "vedi tutte le domande"
-
-#~ msgid "see all tags"
-#~ msgstr "vedi tutti i tag"
-
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "questo errore è stato registrato, sarà risolto al più presto possibile"
-
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "puoi segnalare tu stesso questo errore agli amministratori del sito"
-
-#~ msgid "see latest questions"
-#~ msgstr "vedi le domande recenti"
-
-#~ msgid "see tags"
-#~ msgstr "vedi i tag"
-
-#~ msgid "Edit answer"
-#~ msgstr "Modifica risposta"
-
-#~ msgid "back"
-#~ msgstr "indietro"
-
-#~ msgid "revision"
-#~ msgstr "revisione"
-
-#~ msgid "select revision"
-#~ msgstr "scegli revisione"
-
-#~ msgid "Save edit"
-#~ msgstr "Salva modifica"
-
-#~ msgid "show preview"
-#~ msgstr "mostra anteprima"
-
#~ msgid "Ask a question"
#~ msgstr "Chiedi"
-#, fuzzy
-#~ msgid "%(name)s"
-#~ msgstr "il %(date)s"
-
-#~ msgid "Badge"
-#~ msgstr "Medaglia"
-
-#, fuzzy
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "il %(date)s"
-
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "notifiche"
-
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "utente ha guadagnato questa medaglia:"
-#~ msgstr[1] "utenti hanno guadagnato questa medaglia:"
-
#~ msgid "Badges summary"
#~ msgstr "Elenco medaglie"
-#~ msgid "Badges"
-#~ msgstr "Medaglie"
-
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "Il tuo contributo a questa comunità, attraverso domande, risposte e voti, "
-#~ "viene premiato con delle medaglie."
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Qui sotto trovi una lista delle medaglie disponibili, con indicato il "
-#~ "numero di persone che le hanno ottenute. Hai qualche idea per delle nuove "
-#~ "medaglie? <a href='%(feedback_faq_url)s'>Proponila</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Tipi di medaglie "
-
#~ msgid "gold badge description"
#~ msgstr ""
#~ "Le medaglie d'oro sono le più pregiate. Per ottenerle, non basta "
@@ -4688,59 +7294,11 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "Per ottenere le medaglie d'argento ci vuole del tempo. Se ne hai ottenuta "
#~ "una, vuol dire che hai dato un grande contributo alla comunità."
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "Medaglie di bronzo: date anche come riconoscimento speciale"
-
#~ msgid "bronze badge description"
#~ msgstr ""
#~ "Se partecipi regolarmente a questa comunità, verrai sicuramente premiato "
#~ "con delle medaglie di bronzo."
-#~ msgid "Close question"
-#~ msgstr "Chiudi domanda"
-
-#~ msgid "Close the question"
-#~ msgstr "Chiudi la domanda"
-
-#~ msgid "Reasons"
-#~ msgstr "Motivo:"
-
-#~ msgid "OK to close"
-#~ msgstr "Chiudi"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Domande frequenti"
-
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Che tipo di domande posso porre qui?"
-
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "La cosa più importante &mdash; le domande devono essere "
-#~ "<strong>interessanti</strong> per gli altri"
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Prima di porre una domanda, usa la funzione di ricerca per assicurarti "
-#~ "che non sia già stata posta"
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Che domande devo evitare?"
-
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Evita domande che sono troppo vaghe, polemiche o poco interessanti per "
-#~ "gli altri"
-
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Cosa devo evitare nelle risposte?"
-
#~ 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 "
@@ -4750,25 +7308,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "discussioni</strong>. Evita di intavolare discussioni nelle tue risposte. "
#~ "Per brevi scambi di opinioni, utilizza i commenti."
-#~ msgid "Who moderates this community?"
-#~ msgstr "Chi sono i moderatori?"
-
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "In breve: <strong>tu</strong>."
-
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Questo sito è moderato dai suoi utenti."
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Il sistema dei punti reputazione consente agli utenti di guadagnare il "
-#~ "diritto di effettuare le varie operazioni di moderazione."
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "Come funzionano i punti reputazione?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "Quando qualcuno vota a favore di una tua domanda o risposta, guadagni "
@@ -4777,61 +7316,9 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "Ti verranno assegnati gradualmente poteri di moderazione sul sito in base "
#~ "alla tua reputazione."
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Per esempio, se poni una domanda interessante o dai una risposta utile, "
-#~ "gli utenti ti daranno dei voti positivi. D'altro canto, se la risposta è "
-#~ "sbagliata, gli utenti ti daranno dei voti negativi. Ogni voto a tuo "
-#~ "favore ti procura <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> "
-#~ "punti reputazione; ogni voto contro di te ti fa perdere <strong>"
-#~ "%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> punti reputazione. Puoi "
-#~ "guadagnare un massimo di <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</"
-#~ "strong> punti al giorno per ogni tua domanda o risposta. Nella tabella "
-#~ "qui sotto trovi quanti punti reputazione sono necessari per ogni tipo di "
-#~ "potere di moderazione."
-
-#~ msgid "upvote"
-#~ msgstr "votare a favore"
-
#~ msgid "use tags"
#~ msgstr "usare i tag"
-#~ msgid "add comments"
-#~ msgstr "aggiungere commenti"
-
-#~ msgid "downvote"
-#~ msgstr "votare contro"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Prima risposta accettata a una tua domanda"
-
-#~ msgid "open and close own questions"
-#~ msgstr "aprire e chiudere le proprie domande"
-
-#~ msgid "retag other's questions"
-#~ msgstr "modificare i tag delle domande altrui"
-
-#~ msgid "edit community wiki questions"
-#~ msgstr "modificare le 'domande comunitarie'"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "modificare ogni risposta"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "cancellare commenti altrui"
-
#~ msgid "what is gravatar"
#~ msgstr ""
#~ "Come cambio la mia immagine personale (gravatar)? Che cos'è il gravatar?"
@@ -4854,170 +7341,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "L'immagine predefinita è generata automaticamente e contiene un motivo "
#~ "geometrico che ricorda un po' una piastrella.</p>"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Devo scegliere una password per registrarmi?"
-
-#, fuzzy
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "No, non è necessario. Puoi accedere attraverso il tuo account su un "
-#~ "qualunque sito che supporta OpenID, come Google, Yahoo, AOL, eccetera."
-
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Accedi ora!"
-
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "Perché le altre persone possono modificare quello che scrivo?"
-
-#~ msgid "Goal of this site is..."
-#~ msgstr ""
-#~ "Lo scopo di questo sito è di creare una comunità dedita allo scambio di "
-#~ "idee e alla creazione di contenuti il più possibile utili alla comunità "
-#~ "stessa."
-
-#~ 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 ""
-#~ "Perciò domande e risposte possono essere modificate come pagine di uno "
-#~ "wiki dagli utenti più esperti; questo contribuisce a migliorare la "
-#~ "qualità totale dei contenuti in questo sito."
-
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "Se questo approccio non fa per te, rispettiamo la tua scelta."
-
-#~ msgid "Still have questions?"
-#~ msgstr "Hai altre domande?"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "<a href='%(ask_question_url)s'>Ponile</a> tu stesso, e contribuisci a "
-#~ "migliorare questo sito!"
-
-#~ msgid "Feedback"
-#~ msgstr "Contatti"
-
-#~ msgid "Give us your feedback!"
-#~ msgstr "Dicci cosa pensi di questo sito!"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Caro %(user_name)s</span>, ci interessa "
-#~ "moltissimo sentire la tua opinione. Scrivi i tuoi commenti qui sotto."
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Caro visitatore</span>, ci interessa moltissimo "
-#~ "la tua opinione. Scrivi i tuoi commenti qui sotto."
-
-#~ msgid "(this field is required)"
-#~ msgstr "(campo obbligatorio)"
-
-#~ msgid "Send Feedback"
-#~ msgstr "Invia"
-
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>Caro %(receiving_user_name)s,</p>"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha lasciato un <a href=\"%%(post_url)s\">nuovo "
-#~ "commento</a>\n"
-#~ "alla domanda \"%(origin_post_title)s\"</p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha lasciato un <a href=\"%%(post_url)s\">nuovo "
-#~ "commento</a>\n"
-#~ "alla domanda \"%(origin_post_title)s\"</p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha risposto alla domanda\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha posto una nuova domanda <a href=\"%(post_url)"
-#~ "s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha modificato una risposta alla domanda <a href="
-#~ "\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ha modificato la domanda\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>Puoi <a href=\"%(user_subscriptions_url)s\">configurare</a> la "
-#~ "frequenza con cui ti vengono inviati questi aggiornamenti o eliminarli. "
-#~ "Grazie per la tua partecipazione a questo forum!</p>\n"
-
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "<p>Cordialmente,<br/>l'amministratore</p>"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Riapri questa domanda"
-
#, fuzzy
#~ msgid "i like this question (click again to cancel)"
#~ msgstr "Mi piace questo messaggio (clicca una seconda volta per annullare)"
@@ -5025,9 +7348,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "i like this answer (click again to cancel)"
#~ msgstr "Mi piace questa risposta (clicca una seconda volta per annullare)"
-#~ msgid "current number of votes"
-#~ msgstr "numero attuale di voti"
-
#, fuzzy
#~ msgid "i dont like this question (click again to cancel)"
#~ msgstr ""
@@ -5038,36 +7358,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "Non mi piace questa risposta (clicca una seconda volta per annullare)"
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "utente non registrato"
-
-#~ msgid "asked"
-#~ msgstr "chiesto il"
-
-#~ msgid "answered"
-#~ msgstr "risposto il"
-
-#~ msgid "posted"
-#~ msgstr "scritto il"
-
-#~ msgid "updated"
-#~ msgstr "modificato"
-
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "vedi domande con i tag '%(tag)s'"
-
-#~ msgid "delete this comment"
-#~ msgstr "cancella questo commento"
-
-#~ msgid "add comment"
-#~ msgstr "aggiungi commento"
-
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "visualizza <strong>%(counter)s</strong> commento aggiuntivo"
-#~ msgstr[1] "visualizza <strong>%(counter)s</strong> commenti aggiuntivi"
-
-#, fuzzy
#~ msgid "see <strong>%(counter)s</strong> more comment"
#~ msgid_plural ""
#~ "see <strong>%(counter)s</strong> more comments\n"
@@ -5075,292 +7365,24 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr[0] "visualizza <strong>%(counter)s</strong> commento aggiuntivo"
#~ msgstr[1] "visualizza <strong>%(counter)s</strong> commenti aggiuntivi"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
-
-#~ msgid "previous"
-#~ msgstr "precedente"
-
-#~ msgid "current page"
-#~ msgstr "pagina corrente"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "pagina %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "pagina successiva"
-
#~ msgid "posts per page"
#~ msgstr "post per pagina"
-#~ msgid "responses for %(username)s"
-#~ msgstr "risposte per %(username)s"
-
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "hai una nuova risposta"
-#~ msgstr[1] "hai %(response_count)s nuove risposte"
-
-#~ msgid "no new responses yet"
-#~ msgstr "nessuna nuova risposta"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "Ha segnalato un post come inappropriato"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Ha segnalato un post come inappropriato"
-
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Ha segnalato un post come inappropriato"
-
-#~ msgid "Questions"
-#~ msgstr "Domande"
-
-#~ msgid "Privacy policy"
-#~ msgstr "Regole per la privacy"
-
-#~ msgid "Edit question"
-#~ msgstr "Modifica domanda"
-
#~ msgid "Change tags"
#~ msgstr "Cambia tag"
-#~ msgid "Retag"
-#~ msgstr "Modifica tag"
-
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Perché usare e modificare i tag?"
-
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "sarai premiato con delle medaglie per il buon uso dei tag"
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "fino a 5 tag, ognuno lungo al massimo 20 caratteri"
-
-#~ msgid "Reopen question"
-#~ msgstr "Riapri domanda"
-
-#~ msgid "Title"
-#~ msgstr "Titolo"
-
-#, fuzzy
-#~ msgid ""
-#~ "This question has been closed by \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgstr ""
-#~ "Questa domanda è stata chiusa da\n"
-#~ "<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>"
-
-#~ msgid "Close reason:"
-#~ msgstr "Motivo della chiusura:"
-
-#~ msgid "When:"
-#~ msgstr "Quando:"
-
-#~ msgid "Reopen this question?"
-#~ msgstr "Riapri questa domanda?"
-
-#~ msgid "Reopen this question"
-#~ msgstr "Riapri questa domanda"
-
-#~ msgid "Revision history"
-#~ msgstr "Storia delle modifiche"
-
-#~ msgid "click to hide/show revision"
-#~ msgstr "clicca per mostrare/nascondere le modifiche"
-
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "Numero di revisione dei media della skin"
-
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "usare i tag"
-
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Accedi per sottoscrivere i tag: %(tags)s"
-
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "usare i tag"
-
-#~ msgid "Tag list"
-#~ msgstr "Lista dei tag"
-
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Ordina per:"
-
-#~ msgid "sorted alphabetically"
-#~ msgstr "ordina i tag alfabeticamente"
-
-#~ msgid "by name"
-#~ msgstr "per nome"
-
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "ordina i tag per frequenza d'uso"
-
-#~ msgid "by popularity"
-#~ msgstr "per numero di voti"
-
-#~ msgid "Nothing found"
-#~ msgstr "Nessun risultato"
-
-#~ msgid "Users"
-#~ msgstr "Utenti"
-
#~ msgid "reputation"
#~ msgstr "punti reputazione"
-#~ msgid "recent"
-#~ msgstr "più recenti"
-
-#~ msgid "by username"
-#~ msgstr "per nome"
-
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "utenti contenenti %(suser)s:"
-
-#~ msgid "Nothing found."
-#~ msgstr "Nessun utente trovato"
-
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "contenenti messaggi di %(author_name)s"
-
-#~ msgid "Search tips:"
-#~ msgstr "Consigli per la ricerca:"
-
-#~ msgid "reset author"
-#~ msgstr "azzera autore"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "oppure"
-
-#~ msgid "reset tags"
-#~ msgstr "azzera i tag"
-
-#~ msgid "start over"
-#~ msgstr "ricomincia da capo"
-
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr ""
-#~ "- per espandere, o raffinare la tua ricerca aggiungendo altri tag o "
-#~ "modificando le parole chiave"
-
-#~ msgid "Search tip:"
-#~ msgstr "Suggerimenti per la ricerca:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "aggiungi tag e parole chiave per restringere il campo"
-
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Non ci sono domande senza risposte"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Non ci sono domande preferite"
-
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr "Aggiungi qualche domanda alla tua lista di domande preferite"
-
-#~ msgid "You can expand your search by "
-#~ msgstr "puoi espandere la tua ricerca"
-
-#~ msgid "resetting author"
-#~ msgstr "azzerando l'autore"
-
-#~ msgid "resetting tags"
-#~ msgstr "azzerando i tag"
-
-#~ msgid "starting over"
-#~ msgstr "ricominciando da capo"
-
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Ricorda, puoi sempre porre tu stesso una domanda!"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Non hai trovato quello che cercavi?"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "Poni tu stesso la domanda!"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "sottoscrivi al feed delle domande"
-
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "ogni tag deve essere più corto di %(max_chars)d carattere"
-#~ msgstr[1] "ogni tag deve essere più corto di %(max_chars)d caratteri"
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "per favore usa un numero uguale o inferiore a %(tag_count)d tag"
-#~ msgstr[1] "per favore usa un numero uguale o inferiore a %(tag_count)d tags"
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "fino a 5 tag, ognuno lungo al massimo 20 caratteri"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "%(counter)s Risposta:"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "%(counter)s Risposte:"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "mostra prima le risposte più vecchie"
-
#~ msgid "oldest answers"
#~ msgstr "più vecchie"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "mostra prima le risposte più nuove"
-
#~ msgid "newest answers"
#~ msgstr "più nuove"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "mostra prima le risposte più votate"
-
#~ msgid "popular answers"
#~ msgstr "più votate"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Rispondi alla tua domanda"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Accedi/registrati per scrivere la tua risposta"
-
-#~ msgid "Your answer"
-#~ msgstr "La tua risposta"
-
-#, fuzzy
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Per favore accetta la migliore risposta per questa domanda:"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Comincia pure a rispondere </span> - la tua "
@@ -5392,62 +7414,17 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Answer the question"
#~ msgstr "Rispondi alla domanda"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "oppure"
-
-#~ msgid "email"
-#~ msgstr "e-mail:"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tag"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "clicca qui per vedere le domande con più risposte"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "clicca qui per vedere le domande con più risposte"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "notifiche via e-mail cancellate"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "sottoscrivi al feed delle domande"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "sottoscrivi al feed delle domande"
-
#~ msgid "question asked"
#~ msgstr "Chiesta il"
#~ msgid "question was seen"
#~ msgstr "domanda consultata"
-#~ msgid "times"
-#~ msgstr "volte"
-
-#~ msgid "last updated"
-#~ msgstr "Aggiornata l'ultima voltail"
-
-#~ msgid "Related questions"
-#~ msgstr "Domande simili"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
#~ "giorno"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Segnalami</strong> nuove risposte o aggiornamenti via e-mail ogni "
-#~ "settimana"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
@@ -5461,38 +7438,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "sort=email_subscriptions'>modificare</a></strong> la frequenza con cui "
#~ "ricevi gli aggiornamenti)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "Se ti registri, potrai scegliere di ricevere periodicamente aggiornamenti "
-#~ "via e-mail sullo stato di questa domanda."
-
-#~ msgid "%(username)s's profile"
-#~ msgstr "profilo dell'utente %(username)s"
-
-#~ msgid "Edit user profile"
-#~ msgstr "Modifica profilo"
-
-#~ msgid "edit profile"
-#~ msgstr "modifica profilo"
-
-#~ msgid "change picture"
-#~ msgstr "cambia immagine"
-
-#~ msgid "Registered user"
-#~ msgstr "Utente registrato"
-
-#~ msgid "Screen Name"
-#~ msgstr "Nome visualizzato"
-
-#~ msgid "Update"
-#~ msgstr "Conferma"
-
-#~ msgid "subscriptions"
-#~ msgstr "notifiche"
-
-#~ msgid "Email subscription settings"
-#~ msgstr "E-mail di notifica"
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Modifica la frequenza delle e-mail di notifica</"
@@ -5504,275 +7449,32 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Stop sending email"
#~ msgstr "Non spedire più nessuna e-mail"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Chiudi domanda"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "domande"
-
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "per favore usa un numero uguale o inferiore a %(tag_count)d tag"
-
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "cancella"
-
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "ultimo accesso"
-
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "più recenti"
-
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "bronzo"
-
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "ultimo accesso"
-
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "ha accettato una risposta"
-
-#~ msgid "update profile"
-#~ msgstr "aggiorna profilo"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "Accedi o registrati per inserire domande"
-
-#~ msgid "real name"
-#~ msgstr "nome vero"
-
-#~ msgid "member for"
-#~ msgstr "membro dal"
-
-#~ msgid "last seen"
-#~ msgstr "ultimo accesso"
-
#~ msgid "user website"
#~ msgstr "sito personale"
-#~ msgid "location"
-#~ msgstr "residenza"
-
-#~ msgid "age"
-#~ msgstr "età"
-
-#~ msgid "age unit"
-#~ msgstr "anni"
-
-#~ msgid "todays unused votes"
-#~ msgstr "voti rimanenti per oggi"
-
-#~ msgid "votes left"
-#~ msgstr "voti rimanenti"
-
-#~ msgid "moderation"
-#~ msgstr "modera"
-
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "lo stato dell'utente %(username)s è \"%(status)s\""
-
-#~ msgid "User status changed"
-#~ msgstr "Lo stato dell'utente è stato modificato"
-
-#~ msgid "Save"
-#~ msgstr "Salva"
-
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "Hai %(reputation)s punti reputazione"
-
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "Questo utente ha %(reputation)s punti reputazione"
-
-#~ msgid "User reputation changed"
-#~ msgstr "La reputazione dell'utente è stata modificata"
-
-#~ msgid "Subtract"
-#~ msgstr "Sottrai"
-
-#~ msgid "Add"
-#~ msgstr "Aggiungi"
-
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Spedisci messaggio a %(username)s"
-
-#~ msgid ""
-#~ "An email will be sent to the user with 'reply-to' field set to your email "
-#~ "address. Please make sure that your address is entered correctly."
-#~ msgstr ""
-#~ "Verrà spedita all'utente un'e-mail utilizzando il tuo indirizzo come "
-#~ "campo 'reply-to'. Assicurati che il tuo indirizzo sia inserito "
-#~ "correttamente."
-
-#~ msgid "Message sent"
-#~ msgstr "Messaggio spedito"
-
-#~ msgid "Send message"
-#~ msgstr "Spedisci messaggio"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Non puoi segnalare questo messaggio come inappropriato perché il tuo "
-#~ "account è sospeso."
-
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "profilo dell'utente %(username)s"
-
-#~ msgid "activity"
-#~ msgstr "attività"
-
-#~ msgid "Your karma change log."
-#~ msgstr "Registro dei tuoi punti reputazione"
-
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "Registro dei punti reputazione di %(user_name)s"
-
-#~ msgid "overview"
-#~ msgstr "dettagli"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Domanda"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Domande"
-
#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Risposta"
#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Risposte"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "questa risposta ha ricevuto %(answer_score)s voti"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "questa risposta è stata accettata dall'autore"
-
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "(%(comment_count)s commento)"
-#~ msgstr[1] "(%(comment_count)s commenti)"
-
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> Voto"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> Voti"
-
-#~ msgid "thumb up"
-#~ msgstr "pollice su"
-
-#~ msgid "user has voted up this many times"
-#~ msgstr "l'utente ha dato questo numero di voti a favore"
-
-#~ msgid "thumb down"
-#~ msgstr "pollice in giù"
-
-#~ msgid "user voted down this many times"
-#~ msgstr "l'utente ha dato questo numero di voti contro"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Tag"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Medaglia"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Medaglie"
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "consigli per le risposte"
-
-#, fuzzy
-#~ msgid "User profile"
-#~ msgstr "profilo utente"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "registro dei punti reputazione"
-
#~ msgid "reputation history"
#~ msgstr "reputazione"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "domande preferite da questo utente"
-
#~ msgid "recent activity"
#~ msgstr "attività recente"
#~ msgid "casted votes"
#~ msgstr "voti"
-#~ msgid "votes"
-#~ msgstr "voti"
-
#~ msgid "answer tips"
#~ msgstr "consigli per le risposte"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "fai in modo che la tua risposta sia interessante per la comunità"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "cerca di dare una risposta, non di iniziare una discussione"
-
#~ msgid "please try to provide details"
#~ msgstr "includi tutti i dettagli necessari"
-#~ msgid "be clear and concise"
-#~ msgstr "sii chiaro e conciso"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "vedi le domande frequenti"
-
-#~ msgid "Markdown tips"
-#~ msgstr "sintassi Markdown"
-
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*corsivo* o _corsivo_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**grassetto** o __grassetto__"
-
-#~ msgid "link"
-#~ msgstr "collegamento"
-
-#~ msgid "text"
-#~ msgstr "testo"
-
-#~ msgid "image"
-#~ msgstr "immagine"
-
-#~ msgid "numbered list:"
-#~ msgstr "lista numerata:"
-
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "sono supportati anche alcuni semplici tag HTML"
-
-#~ msgid "learn more about Markdown"
-#~ msgstr "informazioni su Markdown"
-
#~ msgid "ask a question"
#~ msgstr "chiedi"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Puoi cominciare ora a scrivere la tua domanda "
-#~ "come utente non registrato</span>. Quando avrai finito, sarai "
-#~ "reindirizzato alla pagina di accesso/registrazione. La tua domanda sarà "
-#~ "salvata e pubblicata non appena ti sarai registrato. Accedere al proprio "
-#~ "account richiede circa 30 secondi, registrarne uno nuovo meno di un "
-#~ "minuto."
-
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
#~ " see %(email_validation_faq_url)s\n"
@@ -5780,85 +7482,54 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgstr ""
#~ "<span class='strong big'>Il tuo indirizzo e-mail %(email)s non è stato "
#~ "ancora verificato</span> Prima di pubblicare messaggi devi verificare il "
-#~ "tuo indirizzo; maggiori dettagli <a href='%(email_validation_faq_url)"
-#~ "s'>qui</a>.<br>Puoi porre la tua domanda ora e verificare la tua e-mail "
-#~ "in un secondo momento; la tua domanda nel frattempo rimarrà in attesa."
+#~ "tuo indirizzo; maggiori dettagli <a "
+#~ "href='%(email_validation_faq_url)s'>qui</a>.<br>Puoi porre la tua domanda "
+#~ "ora e verificare la tua e-mail in un secondo momento; la tua domanda nel "
+#~ "frattempo rimarrà in attesa."
#~ msgid "Login/signup to post your question"
#~ msgstr "Accedi/Registrati per porre una domanda"
-#~ msgid "Ask your question"
-#~ msgstr "Chiedi"
-
-#~ msgid "Contributors"
-#~ msgstr "Utenti attivi"
-
-#~ msgid "about"
-#~ msgstr "informazioni su Askbot"
-
-#~ msgid "privacy policy"
-#~ msgstr "privacy"
-
-#~ msgid "give feedback"
-#~ msgstr "contatti"
-
-#~ msgid "back to home page"
-#~ msgstr "torna alla home page"
-
-#, fuzzy
-#~ msgid "%(site)s logo"
-#~ msgstr "Logo del forum Q&A"
-
-#~ msgid "users"
-#~ msgstr "utenti"
-
-#~ msgid "badges"
-#~ msgstr "medaglie"
-
#~ msgid "question tips"
#~ msgstr "Suggerimenti"
#~ msgid "please ask a relevant question"
#~ msgstr "poni una domanda interessante per gli altri"
-#~ msgid "please try provide enough details"
-#~ msgstr "sii sufficientemente dettagliato"
+#~ msgid "logout"
+#~ msgstr "logout"
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "consultazione"
-#~ msgstr[1] "consultazioni"
+#~ msgid "login"
+#~ msgstr "login"
-#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "risposta"
-#~ msgstr[1] "risposta"
+#~ msgid "no items in counter"
+#~ msgstr "no"
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "voto"
-#~ msgstr[1] "voti"
+#~ msgid "your email address"
+#~ msgstr "la tua e-mail <i>(resterà privata)</i>"
-#~ msgid "see unanswered questions"
-#~ msgstr "vedi domande senza risposta"
+#~ msgid "choose password"
+#~ msgstr "Password"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "vedi le tue domande preferite"
+#~ msgid "retype password"
+#~ msgstr "Password <i>(per conferma)</i>"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "medaglie:"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d%(badge_level)s medaglia"
+#~ msgstr[1] "%(badge_count)d%(badge_level)s medaglie"
-#~ msgid "logout"
-#~ msgstr "logout"
+#~ msgid "user reputation in the community"
+#~ msgstr "punti reputazione"
-#~ msgid "login"
-#~ msgstr "login"
+#~ msgid "Please log in to ask questions"
+#~ msgstr "Accedi per fare una domanda"
-#~ msgid "settings"
-#~ msgstr "impostazioni"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "la domanda deve contenere più di 10 caratteri"
+
+#~ msgid "Question: \"%(title)s\""
+#~ msgstr "Domanda: \"%(title)s\""
#, fuzzy
#~ msgid "(please enter a valid email)"
@@ -5903,9 +7574,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "Question tags"
#~ msgstr "Domande"
-#~ msgid "questions"
-#~ msgstr "domande"
-
#~ msgid "search"
#~ msgstr "cerca"
@@ -5919,13 +7587,6 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ msgid "In:"
#~ msgstr "In:"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Chiudi domanda"
-
-#~ msgid "Sort by:"
-#~ msgstr "Ordina per:"
-
#~ msgid "Email (not shared with anyone):"
#~ msgstr "Email (non condivisa con altri):"
@@ -6306,18 +7967,12 @@ msgstr "Mi spiace, ci sono dei problemi tecnici"
#~ "\n"
#~ "%(q_num)s domande trovate"
-#~ msgid "tagged"
-#~ msgstr "con i tag"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr "rimuovi '%(tag_name)s' dalla tua lista di tag preferiti"
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "rimuovi '%(tag_name)s' dalla tua lista di tag ignorati"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "nascondi le domande ignorate"
-
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
diff --git a/askbot/locale/it/LC_MESSAGES/djangojs.mo b/askbot/locale/it/LC_MESSAGES/djangojs.mo
index 6cc48b71..80efea00 100644
--- a/askbot/locale/it/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/it/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/it/LC_MESSAGES/djangojs.po b/askbot/locale/it/LC_MESSAGES/djangojs.po
index 9f1671f6..19f55c3a 100644
--- a/askbot/locale/it/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/it/LC_MESSAGES/djangojs.po
@@ -2,23 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
+"POT-Creation-Date: 2012-04-18 18:52-0500\n"
"PO-Revision-Date: 2011-11-19 06:41+0100\n"
"Last-Translator: Luca Ferroni <luca@befair.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,150 +75,83 @@ msgstr ""
msgid "loading..."
msgstr "Caricamento..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "Il campo Tags non può essere vuoto"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "il contenuto non può essere vuoto"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "per favore inserisci più di %s caratteri"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "Per favore inserisci il titolo"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "per favore inserisci almeno %s caratteri"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "privilegi non sufficienti"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr ""
"non è possibile assegnare come miglior risposta ad una propria domanda una "
"propria risposta"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "Per favore effettua il login"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "Gli utenti anonimi non possono votare "
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
"sei certo che questo post sia offensivo, contenga spam, pubblicità, "
"osservazioni poco idonee, ecc.?"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr ""
+"sei certo che questo post sia offensivo, contenga spam, pubblicità, "
+"osservazioni poco idonee, ecc.?"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "Gli utenti anonimi non possono flaggare come offensivo questo post"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "conferma la cancellazione"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "Gli utenti anonimi non possono cancellare/annullare la cancellazione"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "Post recuperato"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "Post eliminato"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr "Segui"
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] "seguito da %s persona"
-msgstr[1] "seguito da %s persone"
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr "<div>Segui</div><div class=\"unfollow\">Non seguire</div>"
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "elimina"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "elimina"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "OK"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "%s caratteri rimanenti"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "%s caratteri rimanenti"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "Elimina questo commento"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "Vuoi davvero cancellare il commento?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr "Per piacere inserisce un titolo per la tua domanda (>10 caratteri)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr "Il tag \"<span></span>\" corrisponde a:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr "e altre %s non mostrate..."
@@ -232,116 +165,152 @@ msgid_plural "Delete these notifications?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "Elimina questo commento"
+msgstr[1] "Elimina questo commento"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "Elimina questo commento"
+msgstr[1] "Elimina questo commento"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr "<a href=\"%(signin_url)s\">Entra</a> per seguire %(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr "non seguire %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr "stai seguendo %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr "segui %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "grassetto"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "corsivo"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "Link"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "cita"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "Testo preformattato"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "Immagine"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "Lista numerata"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "Lista"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "Titolo"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "barra orizzontale"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "annulla"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "Esegui nuovamente"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"inserisci l'URL dell'immagine, es. http://www.example.com/immagine.jpg "
"\"titolo immagine\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr "inserisci l'indirizzo web, e.g. <br />http://www.askbot.org/ </p>"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "Il campo Tags non può essere vuoto"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "il contenuto non può essere vuoto"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "per favore inserisci più di %s caratteri"
+
+#~ msgid "please enter title"
+#~ msgstr "Per favore inserisci il titolo"
+
+#~ msgid "%s title minchars"
+#~ msgstr "per favore inserisci almeno %s caratteri"
+
+#~ msgid "Follow"
+#~ msgstr "Segui"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "seguito da %s persona"
+#~ msgstr[1] "seguito da %s persone"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Segui</div><div class=\"unfollow\">Non seguire</div>"
+
+#~ msgid "undelete"
+#~ msgstr "elimina"
+
+#~ msgid "delete"
+#~ msgstr "elimina"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "%s caratteri rimanenti"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s caratteri rimanenti"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "Vuoi davvero cancellare il commento?"
diff --git a/askbot/locale/ja/LC_MESSAGES/django.mo b/askbot/locale/ja/LC_MESSAGES/django.mo
index 11bf5ff6..eb8ff80d 100644
--- a/askbot/locale/ja/LC_MESSAGES/django.mo
+++ b/askbot/locale/ja/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/ja/LC_MESSAGES/django.po b/askbot/locale/ja/LC_MESSAGES/django.po
index 0bf0acb7..37b98fa3 100644
--- a/askbot/locale/ja/LC_MESSAGES/django.po
+++ b/askbot/locale/ja/LC_MESSAGES/django.po
@@ -1,54 +1,56 @@
-# 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.
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
#
+# Translators:
+# Tomoyuki KATO <tomo@dream.daynight.jp>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:34-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:49-0500\n"
+"PO-Revision-Date: 2012-04-03 05:10+0000\n"
+"Last-Translator: Tomoyuki KATO <tomo@dream.daynight.jp>\n"
+"Language-Team: Japanese (http://www.transifex.net/projects/p/askbot/language/"
+"ja/)\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=1; plural=0\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
-msgstr ""
+msgstr "申ã—訳ã”ã–ã„ã¾ã›ã‚“ãŒã€åŒ¿åã®è¨ªå•è€…ã¯ã“ã®æ©Ÿèƒ½ã‚’利用ã§ãã¾ã›ã‚“"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr " - "
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "個人的ã«é¸æŠžã—ãŸè³ªå•"
+msgstr ""
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "最近ã®è³ªå•"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "アカウントを消去ã™ã‚‹"
+msgstr "国をé¸æŠžã—ã¦ãã ã•ã„"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "国"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
+msgstr "国フィールドãŒå¿…è¦ã§ã™"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "タイトル"
@@ -56,59 +58,71 @@ msgstr "タイトル"
msgid "please enter a descriptive title for your question"
msgstr "質å•ã®è¨˜è¿°çš„ãªã‚¿ã‚¤ãƒˆãƒ«ã‚’入力ã—ã¦ãã ã•ã„"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "タイトルã¯ï¼‘ï¼æ–‡å­—以上必è¦ã§ã™"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "内容"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "質å•ã®å†…容ã¯ï¼‘ï¼æ–‡å­—以上必è¦ã§ã™"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "ã‚¿ã‚°"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"ã‚¿ã‚°ã¯çŸ­ã„キーワードã§ç©ºç™½æ–‡å­—(スペース)ã¯å«ã‚ã¾ã›ã‚“。5ã¤ã¾ã§ã®ã‚¿ã‚°ãŒä½¿ç”¨"
-"ã§ãã¾ã™ã€‚"
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "ã‚¿ã‚°ãŒå¿…é ˆã§ã™"
-#: forms.py:173
-#, fuzzy, python-format
+#: forms.py:232
+#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
-msgstr[0] "%(tag_count)dã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
+msgstr[0] "%(tag_count)d 個未満ã®ã‚¿ã‚°ã‚’使用ã—ã¦ãã ã•ã„"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
-#, fuzzy, python-format
+#: forms.py:249
+#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
-msgstr[0] "ã‚¿ã‚°ã¯%(max_chars)d文字以内ã®é•·ã•ã§ã™"
+msgstr[0] "å„タグ㯠%(max_chars)d 文字未満ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -116,11 +130,11 @@ msgstr ""
"コミュニティー wikiオプションをé¸æŠžã—ãŸå ´åˆã€è³ªå•ã¨å›žç­”ã¯ãƒã‚¤ãƒ³ãƒˆã‚’生æˆã›ãšã€"
"作者åã¯è¡¨ç¤ºã•ã‚Œãªã„"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "サマリーを更新:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -128,250 +142,263 @@ msgstr ""
"ã‚ãªãŸã®ãƒªãƒ“ジョンã®è¦ç´„サマリ(ãŸã¨ãˆã°ã€ã‚¹ãƒšãƒ«ä¿®æ­£ã€æ–‡æ³•ä¿®æ­£ã€ã‚¹ã‚¿ã‚¤ãƒ«æ”¹å–„"
"ãªã©ã€‚ã“ã“オプションã§ã™ã€‚)を入力ã—ã¦ãã ã•ã„"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:252
-#, fuzzy
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr "æ›´æ–°æ—¥"
+msgstr ""
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr ""
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
-msgstr ""
-"よã‚ã—ããŠã­ãŒã„ã—ã¾ã™ã€‚\n"
-"--\n"
-"Q&A フォーラム管ç†"
+msgstr "管ç†è€…"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
-msgstr ""
+msgstr "調åœè€…"
-#: forms.py:367
-#, fuzzy
+#: forms.py:426
msgid "Change status to"
-msgstr "タグを変更ã™ã‚‹"
+msgstr ""
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr ""
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr ""
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr ""
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "タグを変更ã™ã‚‹"
+msgstr ""
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr ""
-#: forms.py:456
-#, fuzzy
+#: forms.py:515
msgid "Message text"
-msgstr "メッセージ本文:"
+msgstr "メッセージ文"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "åå‰ï¼š"
+msgstr ""
-#: forms.py:543
-#, fuzzy
+#: forms.py:531
msgid "Email:"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã§ï¼š"
+msgstr ""
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "メッセージ:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
-#, fuzzy
+#: forms.py:599
msgid "ask anonymously"
-msgstr "匿å"
+msgstr "匿åã§è³ªå•ã™ã‚‹"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯gravatorã«ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "実å"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "ウェブサイト"
-#: forms.py:907
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "都市"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "国ã®è¡¨ç¤º"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "生年月日"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "表示ã•ã‚Œã¾ã›ã‚“ã€å¹´é½¢ã®è¨ˆç®—ã«åˆ©ç”¨ã—ã¾ã™ã€åž‹å¼ï¼šYYYY-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "プロファイル"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "スクリーンå"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç™»éŒ²æ¸ˆã¿ã§ã™ã€ã»ã‹ã®ã‚‚ã®ã‚’使ã£ã¦ä¸‹ã•ã„"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¿ã‚°ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "自分ã‹ã‚‰ã®è³ªå•"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "自分ã‹ã‚‰ã®å›žç­”"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "個人的ã«é¸æŠžã•ã‚ŒãŸ"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "フォーラム全体(タグã§ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã•ã‚ŒãŸï¼‰"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr ""
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "上記ã‹ã‚‰ä¸€ã¤é¸æŠžã—ã¦ãã ã•ã„"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "よã—ã€ã¯ã˜ã‚よã†ï¼"
-#: forms.py:1116
-#, fuzzy
-msgid "no community email please, thanks"
-msgstr "OSAQコミュニティ電å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—ã§"
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr ""
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "上記ã‹ã‚‰ä¸€ã¤é¸æŠžã—ã¦ãã ã•ã„"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr ""
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr ""
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr ""
-#: urls.py:61 urls.py:66
-msgid "answers/"
+#: urls.py:44
+msgid "help/"
msgstr ""
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:51
+msgid "answers/"
+msgstr "回答/"
+
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
-msgstr ""
+msgstr "編集/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
+msgstr "版数/"
+
+#: urls.py:61
+msgid "questions"
msgstr ""
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
-msgstr ""
+msgstr "質å•/"
#: urls.py:82
msgid "ask/"
msgstr ""
#: urls.py:92
-#, fuzzy
msgid "retag/"
-msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
+msgstr ""
#: urls.py:97
msgid "close/"
@@ -383,74 +410,76 @@ msgstr ""
#: urls.py:107
msgid "answer/"
-msgstr ""
+msgstr "回答/"
#: urls.py:112
msgid "vote/"
+msgstr "投票/"
+
+#: urls.py:123
+msgid "widgets/"
msgstr ""
-#: urls.py:153
+#: urls.py:158
msgid "tags/"
-msgstr ""
+msgstr "ã‚¿ã‚°/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
-msgstr ""
+msgstr "ユーザ"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "メール登録設定"
+msgstr ""
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
-msgstr ""
+msgstr "メッセージ/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr ""
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
-msgstr ""
+msgstr "アップロード/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
-msgstr ""
+msgstr "フィードãƒãƒƒã‚¯/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
-msgstr ""
+msgstr "質å•/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
-msgstr ""
+msgstr "アカウント/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "設定"
+msgstr "ユーザーログイン"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
msgstr ""
#: conf/badges.py:13
-#, fuzzy
msgid "Badge settings"
-msgstr "設定"
+msgstr ""
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
@@ -462,53 +491,47 @@ msgstr ""
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "教師: 回答ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "素晴らã—ã„回答: 回答ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "良ã„回答: 回答ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "優秀ãªå›žç­”: 回答ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:77
-#, fuzzy
msgid "Nice Question: minimum upvotes for the question"
-msgstr "Tags"
+msgstr "素晴らã—ã„質å•: 質å•ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:86
-#, fuzzy
msgid "Good Question: minimum upvotes for the question"
-msgstr "Tags"
+msgstr "良ã„質å•: 質å•ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:95
-#, fuzzy
msgid "Great Question: minimum upvotes for the question"
-msgstr "Tags"
+msgstr "優秀ãªè³ªå•: 質å•ã«å¯¾ã™ã‚‹æœ€å°‘上ã’投票"
#: conf/badges.py:104
-#, fuzzy
msgid "Popular Question: minimum views"
-msgstr "人気ã®è³ªå•"
+msgstr "一般的ãªè³ªå•: 最少質å•"
#: conf/badges.py:113
-#, fuzzy
msgid "Notable Question: minimum views"
-msgstr "å“越ã—ãŸè³ªå•"
+msgstr "é‡è¦ãªè³ªå•: 最少表示"
#: conf/badges.py:122
-#, fuzzy
msgid "Famous Question: minimum views"
-msgstr "è‘—åãªè³ªå•"
+msgstr "有åãªè³ªå•: 最少表示"
#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "自己学習者: 最少回答上ã’投票"
#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
@@ -535,14 +558,12 @@ msgid "Associate Editor: minimum number of edits"
msgstr ""
#: conf/badges.py:194
-#, fuzzy
msgid "Favorite Question: minimum stars"
-msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+msgstr ""
#: conf/badges.py:203
-#, fuzzy
msgid "Stellar Question: minimum stars"
-msgstr "スター質å•"
+msgstr ""
#: conf/badges.py:212
msgid "Commentator: minimum comments"
@@ -557,14 +578,12 @@ msgid "Enthusiast: minimum days"
msgstr ""
#: conf/email.py:15
-#, fuzzy
msgid "Email and email alert settings"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
+msgstr ""
#: conf/email.py:24
-#, fuzzy
msgid "Prefix for the email subject line"
-msgstr "Welcome to the Q&A forum"
+msgstr ""
#: conf/email.py:26
msgid ""
@@ -573,171 +592,176 @@ msgid ""
msgstr ""
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:48
-#, fuzzy
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
+msgstr ""
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
+msgstr ""
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥è¨­å®š"
+msgstr ""
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
-#, fuzzy
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-"<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
-"accepted answers</strong>"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
-#, fuzzy
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-"<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
-"accepted answers</strong>"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
-#, fuzzy
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr ""
-"<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
-"accepted answers</strong>"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
-#, fuzzy
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-"<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
-"accepted answers</strong>"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
-#, fuzzy
+#: conf/email.py:237
msgid "Allow only one account per email address"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
+msgstr ""
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
-#, fuzzy
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+msgstr ""
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr ""
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
-msgstr ""
+msgstr "外部サービスã®ã‚­ãƒ¼"
#: conf/external_keys.py:19
msgid "Google site verification key"
@@ -765,15 +789,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -781,11 +805,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -793,70 +817,53 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
-msgstr ""
+msgstr "Facebook 秘密éµ"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Twitter 消費者キー"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Twitter 消費者シークレット"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "LinkedIn 消費者キー"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "LinkedIn 消費者シークレット"
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "ident.ca 消費者キー"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr ""
-
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "パスワードを変更ã™ã‚‹"
+msgstr "ident.ca 消費者シークレット"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
@@ -896,11 +903,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -930,9 +939,8 @@ msgid ""
msgstr ""
#: conf/forum_data_rules.py:73
-#, fuzzy
msgid "Allow swapping answer with question"
-msgstr "質å•ã¸ã®å›žç­”ã«ãªã£ã¦ã„ã¾ã›ã‚“"
+msgstr "回答を投稿ã™ã‚‹"
#: conf/forum_data_rules.py:75
msgid ""
@@ -944,112 +952,178 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
#, fuzzy
+msgid "Are tags required?"
+msgstr "ã‚¿ã‚°ãŒå¿…é ˆã§ã™"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "æ›´æ–°ã•ã‚ŒãŸã‚¿ã‚°"
+msgstr ""
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
-#, fuzzy
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
msgstr "ã‚¿ã‚°"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
-#, fuzzy
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr "%s 回コメントã—ãŸ"
+msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
-#, fuzzy
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
-msgstr "unanswered questions"
+msgstr ""
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "パスワードログイン㫠LDAP èªè¨¼ã‚’使用ã™ã‚‹"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "LDAP サービスã®ãƒ—ロãƒã‚¤ãƒ€ãƒ¼å"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "LDAP サービスã®ãƒ—ロãƒã‚¤ãƒ€ãƒ¼å"
+
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1062,7 +1136,7 @@ msgstr ""
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "ライセンスã®å®Œå…¨å"
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
@@ -1073,9 +1147,8 @@ msgid "Add link to the license page"
msgstr ""
#: conf/license.py:57
-#, fuzzy
msgid "License homepage"
-msgstr "ホームã«æˆ»ã‚‹"
+msgstr ""
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
@@ -1124,16 +1197,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "アイコンã®ã‚¢ãƒƒãƒ—ロード"
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1220,81 +1293,68 @@ msgid "Karma thresholds"
msgstr ""
#: conf/minimum_reputation.py:22
-#, fuzzy
msgid "Upvote"
-msgstr "投票"
+msgstr "上ã’投票"
#: conf/minimum_reputation.py:31
-#, fuzzy
msgid "Downvote"
-msgstr "下ã’"
+msgstr "下ã’投票"
#: conf/minimum_reputation.py:40
-#, fuzzy
msgid "Answer own question immediately"
-msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:49
-#, fuzzy
msgid "Accept own answer"
-msgstr "ã‚らゆる回答を編集ã™ã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:58
-#, fuzzy
msgid "Flag offensive"
-msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
+msgstr "攻撃的ã®ãƒ•ãƒ©ã‚°ã‚’ç«‹ã¦ã‚‹"
#: conf/minimum_reputation.py:67
-#, fuzzy
msgid "Leave comments"
-msgstr "コメントを加ãˆã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:76
-#, fuzzy
msgid "Delete comments posted by others"
-msgstr "コメントãŒæŠ•ç¨¿ã•ã‚ŒãŸã¨ã"
+msgstr ""
#: conf/minimum_reputation.py:85
-#, fuzzy
msgid "Delete questions and answers posted by others"
-msgstr "ã‚らゆる質å•ã¨å›žç­”を削除ã—ã€ã»ã‹ã®ãƒ¢ãƒ‡ãƒ¬ãƒ¼ãƒˆä½œæ¥­ã‚’実行ã™ã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:94
msgid "Upload files"
-msgstr ""
+msgstr "ファイルをアップロードã™ã‚‹"
#: conf/minimum_reputation.py:103
-#, fuzzy
msgid "Close own questions"
-msgstr "質å•ã‚’閉鎖ã™ã‚‹"
+msgstr "質å•ã‚’é–‰ã˜ã‚‹"
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
msgstr ""
#: conf/minimum_reputation.py:121
-#, fuzzy
msgid "Reopen own questions"
-msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
+msgstr ""
#: conf/minimum_reputation.py:130
-#, fuzzy
msgid "Edit community wiki posts"
-msgstr "コミュニティー wiki 質å•ã‚’編集ã™ã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
msgstr ""
#: conf/minimum_reputation.py:148
-#, fuzzy
msgid "View offensive flags"
-msgstr "ä¸å¿«å°"
+msgstr ""
#: conf/minimum_reputation.py:157
-#, fuzzy
msgid "Close questions asked by others"
-msgstr "タグ付ã‘ã•ã‚ŒãŸè³ªå•ã‚’ã¿ã‚‹"
+msgstr ""
#: conf/minimum_reputation.py:166
msgid "Lock posts"
@@ -1310,6 +1370,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1323,14 +1387,12 @@ msgid "Gain for receiving an upvote"
msgstr ""
#: conf/reputation_changes.py:41
-#, fuzzy
msgid "Gain for the author of accepted answer"
-msgstr "個ã®è³ªå•ãŒå›žç­”募集中"
+msgstr ""
#: conf/reputation_changes.py:50
-#, fuzzy
msgid "Gain for accepting best answer"
-msgstr "ベストアンサーå°"
+msgstr ""
#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
@@ -1436,12 +1498,10 @@ msgid ""
msgstr ""
#: conf/sidebar_profile.py:12
-#, fuzzy
msgid "User profile sidebar"
-msgstr "ユーザープロファイル"
+msgstr ""
#: conf/sidebar_question.py:11
-#, fuzzy
msgid "Question page sidebar"
msgstr "ã‚¿ã‚°"
@@ -1464,9 +1524,8 @@ msgid ""
msgstr ""
#: conf/sidebar_question.py:62
-#, fuzzy
msgid "Show related questions in sidebar"
-msgstr "関係ã—ãŸè³ªå•"
+msgstr ""
#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
@@ -1493,9 +1552,8 @@ msgid "URLS, keywords & greetings"
msgstr ""
#: conf/site_settings.py:21
-#, fuzzy
msgid "Site title for the Q&A forum"
-msgstr "Q&amp;Aフォーマルã‹ã‚‰ã®ãŠã—らã›ã§ã™"
+msgstr ""
#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
@@ -1513,28 +1571,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
-#, fuzzy
+#: conf/site_settings.py:102
msgid "Feedback site URL"
-msgstr "フィードãƒãƒƒã‚¯"
+msgstr "フィードãƒãƒƒã‚¯ã‚µã‚¤ãƒˆ URL"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1548,7 +1605,7 @@ msgstr ""
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr ""
+msgstr "投票 = 0 ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
@@ -1561,27 +1618,27 @@ msgstr ""
#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
-msgstr ""
+msgstr "HTML カラーåã¾ãŸã¯16進値"
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
-msgstr ""
+msgstr "投票 = 0 ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:51
msgid "Background color for votes"
-msgstr ""
+msgstr "投票ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:61
msgid "Foreground color for votes"
-msgstr ""
+msgstr "投票ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:71
msgid "Background color for votes = MAX"
-msgstr ""
+msgstr "投票 = MAX ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:84
msgid "Foreground color for votes = MAX"
-msgstr ""
+msgstr "投票 = MAX ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:95
msgid "View counter value to give \"full color\""
@@ -1589,27 +1646,27 @@ msgstr ""
#: conf/skin_counter_settings.py:105
msgid "Background color for views = 0"
-msgstr ""
+msgstr "表示数 = 0 ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:116
msgid "Foreground color for views = 0"
-msgstr ""
+msgstr "表示数 = 0 ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:127
msgid "Background color for views"
-msgstr ""
+msgstr "表示数ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:137
msgid "Foreground color for views"
-msgstr ""
+msgstr "表示数ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:147
msgid "Background color for views = MAX"
-msgstr ""
+msgstr "表示数 = MAX ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:162
msgid "Foreground color for views = MAX"
-msgstr ""
+msgstr "表示数 = MAX ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:173
msgid "Answer counter value to give \"full color\""
@@ -1617,27 +1674,27 @@ msgstr ""
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr ""
+msgstr "回答 = 0 ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
-msgstr ""
+msgstr "回答 = 0 ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:205
msgid "Background color for answers"
-msgstr ""
+msgstr "回答ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:215
msgid "Foreground color for answers"
-msgstr ""
+msgstr "回答ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:227
msgid "Background color for answers = MAX"
-msgstr ""
+msgstr "回答 = MAX ã®èƒŒæ™¯è‰²"
#: conf/skin_counter_settings.py:238
msgid "Foreground color for answers = MAX"
-msgstr ""
+msgstr "回答 = MAX ã®æ–‡å­—色"
#: conf/skin_counter_settings.py:251
msgid "Background color for accepted"
@@ -1653,27 +1710,27 @@ msgstr ""
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
-msgstr ""
+msgstr "Q&A サイトロゴ"
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1681,41 +1738,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
-#, fuzzy
+#: conf/skin_general_settings.py:101
msgid "Select skin"
-msgstr "改訂をé¸æŠžã™ã‚‹"
+msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1727,11 +1783,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1740,21 +1796,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1763,21 +1819,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1786,19 +1842,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1809,19 +1865,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1830,14 +1886,12 @@ msgid "Sharing content on social networks"
msgstr ""
#: conf/social_sharing.py:20
-#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
-msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
+msgstr ""
#: conf/social_sharing.py:29
-#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
-msgstr "<strong>最新ã®</strong>質å•ã‹ã‚‰è¡¨ç¤ºã—ã¦ã¾ã™ã€‚"
+msgstr ""
#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
@@ -1880,55 +1934,72 @@ msgstr ""
msgid "Data rules & Formatting"
msgstr ""
-# "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€ãƒ—ロファイルã¨ã—ã¦å€‹äººã‚’åŒå®šã—ã†ã‚‹æƒ…報を表示ã™ã‚‹ã“ã¨ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
-# "フォーラムã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒç„¡ã„ã‹ãŽã‚Šãã®ã‚ˆã†ãªæƒ…報を表示ã™ã‚‹äº‹ã¯ã‚ã‚Šã¾ã›ã‚“。"
-# "Members of this community may choose to display personally identifiable "
-# "information in their profiles. Forum will never display such information "
-# "without a request from the user."
#: conf/super_groups.py:8
-#, fuzzy
msgid "External Services"
-msgstr " "
+msgstr ""
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
msgstr ""
-# "クッキー"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr " "
+msgstr "ユーザーログイン"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
-#, fuzzy
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr ""
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
+msgstr ""
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1970,6 +2041,35 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr ""
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr ""
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "é‡è¤‡ã—ãŸè³ªå•"
@@ -1983,23 +2083,20 @@ msgid "too subjective and argumentative"
msgstr "主観的ã§è«–争的ã™ãŽã¾ã™"
#: const/__init__.py:13
-#, fuzzy
msgid "not a real question"
-msgstr "質å•ã™ã‚‹"
+msgstr ""
#: const/__init__.py:14
msgid "the question is answered, right answer was accepted"
msgstr "質å•ã¯å›žç­”ã•ã‚Œã€æ­£å½“ãªå›žç­”ãŒå—ã‘入れられã¾ã—ãŸ"
#: const/__init__.py:15
-#, fuzzy
msgid "question is not relevant or outdated"
-msgstr "å•é¡Œã¯å†ç¾ã—ãªã„ã‹ç„¡åŠ¹ã§ã™"
+msgstr ""
#: const/__init__.py:16
-#, fuzzy
msgid "question contains offensive or malicious remarks"
-msgstr "質å•ã¯ä¾®è¾±çš„ã§ä¸é©åˆ‡ã‚‚ã—ãã¯æ‚ªæ„ã®ã‚ã‚‹æ„見をå«ã‚“ã§ã„ã¾ã™"
+msgstr ""
#: const/__init__.py:17
msgid "spam or advertising"
@@ -2009,379 +2106,358 @@ msgstr "スパムもã—ãã¯åºƒå‘Š"
msgid "too localized"
msgstr ""
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "最新"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "登録順"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr ""
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr ""
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "ホット"
-#: const/__init__.py:46
-#, fuzzy
+#: const/__init__.py:48
msgid "coldest"
-msgstr "登録順"
+msgstr ""
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "注目ã®è³ªå•"
-#: const/__init__.py:48
-#, fuzzy
+#: const/__init__.py:50
msgid "least voted"
-msgstr "注目ã®è³ªå•"
+msgstr ""
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "関連"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
-msgstr ""
+msgstr "ã™ã¹ã¦"
-#
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "未回答"
-#: const/__init__.py:59
-#, fuzzy
+#: const/__init__.py:65
msgid "favorite"
msgstr "ãŠæ°—ã«å…¥ã‚Š"
-#: const/__init__.py:64
-#, fuzzy
+#: const/__init__.py:70
msgid "list"
-msgstr "タグリスト"
+msgstr "ã‚¿ã‚°"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "クラウド"
-#: const/__init__.py:78
-#, fuzzy
+#: const/__init__.py:79
msgid "Question has no answers"
-msgstr "質å•ã«å›žç­”ã—ãŸã¨ã"
+msgstr ""
-#: const/__init__.py:79
-#, fuzzy
+#: const/__init__.py:80
msgid "Question has no accepted answers"
-msgstr "個ã®è³ªå•ãŒå›žç­”募集中"
+msgstr ""
-#: const/__init__.py:122
-#, fuzzy
+#: const/__init__.py:125
msgid "asked a question"
-msgstr "質å•ã™ã‚‹"
+msgstr ""
-#: const/__init__.py:123
-#, fuzzy
+#: const/__init__.py:126
msgid "answered a question"
-msgstr "未回答"
+msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "コメント付ã質å•"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "コメント付ã回答"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "編集ã•ã‚ŒãŸè³ªå•"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "編集ã•ã‚ŒãŸå›žç­”"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "得られãŸãƒãƒƒã‚¸"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "ベストアンサーå°"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "上ã’"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "下ã’"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "削除ã•ã‚ŒãŸè³ªå•"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "削除ã•ã‚ŒãŸå›žç­”"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "ä¸å¿«å°"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "æ›´æ–°ã•ã‚ŒãŸã‚¿ã‚°"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "é¸æŠžã•ã‚ŒãŸãŠæ°—ã«å…¥ã‚Š"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "完全ãªãƒ¦ãƒ¼ã‚¶ãƒ—ロファイル"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒƒãƒ—デートをユーザã«é€ä¿¡"
-#: const/__init__.py:142
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "未回答"
+msgstr ""
-#: const/__init__.py:146
-#, fuzzy
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr "ベストアンサーå°"
+msgstr ""
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "回答"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "質å•ã‚³ãƒ¡ãƒ³ãƒˆ"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "回答コメント"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "ç´å¾—ã•ã‚ŒãŸå›žç­”"
+#, fuzzy
+msgid "answered question"
+msgstr "Post Your Answer"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "編集ã•ã‚ŒãŸå›žç­”"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[閉鎖ã•ã‚Œã¾ã—ãŸ]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[削除ã•ã‚Œã¾ã—ãŸ]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "最åˆã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "オフ"
-#: const/__init__.py:218
-#, fuzzy
+#: const/__init__.py:221
msgid "exclude ignored"
-msgstr "排除ã€ç„¡è¦–ã™ã‚‹ã‚¿ã‚°"
+msgstr ""
-#: const/__init__.py:219
-#, fuzzy
+#: const/__init__.py:222
msgid "only selected"
-msgstr "個人的ã«é¸æŠžã•ã‚ŒãŸ"
+msgstr ""
-#: const/__init__.py:223
-#, fuzzy
+#: const/__init__.py:226
msgid "instantly"
-msgstr "ã™ãã«"
+msgstr ""
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "デイリー"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "ウイークリー"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "昨日"
+msgstr ""
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "What is gravatar?"
+msgstr ""
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "金賞"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "銀賞"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "銅賞"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr ""
+msgstr "グラãƒã‚¿ãƒ¼"
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "アップロードã•ã‚ŒãŸã‚¢ãƒã‚¿ãƒ¼"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr "投票ã®å¤šã„質å•"
+msgstr ""
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "CNPROG コミュニティーã«é©ã—ãŸè³ªå•ã‚’ã—ã¾ã—ょã†ã€‚"
+msgstr ""
-#: const/message_keys.py:17
-#, fuzzy
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr "関連"
+msgstr ""
-#: const/message_keys.py:18
-#, fuzzy
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
-msgstr "最新ã®è³ªå•ã‚’ã¿ã‚‹"
+msgstr ""
-#: const/message_keys.py:19
-#, fuzzy
+#: const/message_keys.py:25
msgid "by date"
-msgstr "æ›´æ–°ã™ã‚‹"
+msgstr "日付"
-#: const/message_keys.py:20
-#, fuzzy
+#: const/message_keys.py:26
msgid "click to see the newest questions"
-msgstr "最新ã®è³ªå•ã‚’ã¿ã‚‹"
+msgstr ""
-#: const/message_keys.py:21
-#, fuzzy
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
-msgstr "最近更新ã•ã‚ŒãŸè³ªå•"
+msgstr ""
-#: const/message_keys.py:22
-#, fuzzy
+#: const/message_keys.py:28
msgid "by activity"
-msgstr "最近ã®æ´»å‹•"
+msgstr "活動"
-#: const/message_keys.py:23
-#, fuzzy
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
-msgstr "最近更新ã•ã‚ŒãŸè³ªå•"
+msgstr ""
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "未回答"
+msgstr ""
-#: const/message_keys.py:25
-#, fuzzy
+#: const/message_keys.py:31
msgid "by answers"
msgstr "回答"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "未回答"
+msgstr ""
-#: const/message_keys.py:27
-#, fuzzy
+#: const/message_keys.py:33
msgid "click to see least voted questions"
-msgstr "投票ã®å¤šã„質å•"
+msgstr ""
-#: const/message_keys.py:28
-#, fuzzy
+#: const/message_keys.py:34
msgid "by votes"
-msgstr "投票"
+msgstr ""
-#: const/message_keys.py:29
-#, fuzzy
+#: const/message_keys.py:35
msgid "click to see most voted questions"
-msgstr "投票ã®å¤šã„質å•"
+msgstr ""
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
-#, fuzzy
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
-msgstr "基本HTMLタグもサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™"
+msgstr ""
#: deps/django_authopenid/forms.py:233
-#, fuzzy, python-format
+#, python-format
msgid "Please enter your %(username_token)s"
-msgstr "ユーザåを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/forms.py:259
-#, fuzzy
msgid "Please, enter your user name"
-msgstr "ユーザåを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/forms.py:263
-#, fuzzy
msgid "Please, enter your password"
-msgstr "パスワードを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
-#, fuzzy
msgid "Please, enter your new password"
-msgstr "パスワードを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
@@ -2407,26 +2483,25 @@ msgid "Sorry, we don't have this email address in the database"
msgstr ""
#: deps/django_authopenid/forms.py:435
-#, fuzzy
msgid "Your user name (<i>required</i>)"
-msgstr "ユーザåã¯å¿…é ˆã§ã™"
+msgstr ""
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "sorry, there is no such user name"
+msgid "sorry, there is no such user name"
+msgstr ""
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
-msgstr ""
+msgstr "サインイン/"
#: deps/django_authopenid/urls.py:10
msgid "signout/"
-msgstr ""
+msgstr "サインアウト/"
#: deps/django_authopenid/urls.py:12
msgid "complete/"
-msgstr ""
+msgstr "完了/"
#: deps/django_authopenid/urls.py:15
msgid "complete-oauth/"
@@ -2434,33 +2509,31 @@ msgstr ""
#: deps/django_authopenid/urls.py:19
msgid "register/"
-msgstr ""
+msgstr "登録/"
#: deps/django_authopenid/urls.py:21
-#, fuzzy
msgid "signup/"
-msgstr "サインアップã™ã‚‹"
+msgstr "サインアップ/"
#: deps/django_authopenid/urls.py:25
msgid "logout/"
-msgstr ""
+msgstr "ログアウト/"
#: deps/django_authopenid/urls.py:30
-#, fuzzy
msgid "recover/"
-msgstr "å–り除ã"
+msgstr ""
#: deps/django_authopenid/util.py:378
-#, fuzzy, python-format
+#, python-format
msgid "%(site)s user name and password"
-msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
#: deps/django_authopenid/util.py:385
-#, fuzzy
msgid "Change your password"
msgstr "パスワードを変更ã™ã‚‹"
@@ -2469,56 +2542,49 @@ msgid "Sign in with Yahoo"
msgstr ""
#: deps/django_authopenid/util.py:480
-#, fuzzy
msgid "AOL screen name"
-msgstr "スクリーンå"
+msgstr "AOL ç”»é¢å"
#: deps/django_authopenid/util.py:488
-#, fuzzy
msgid "OpenID url"
-msgstr "OpenID URL:"
+msgstr "OpenID URL"
#: deps/django_authopenid/util.py:517
-#, fuzzy
msgid "Flickr user name"
-msgstr "ユーザーå"
+msgstr "Flickr ユーザーå"
#: deps/django_authopenid/util.py:525
-#, fuzzy
msgid "Technorati user name"
-msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
+msgstr "Technorati ユーザーå"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "WordPress ブログå"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "Blogger ブログå"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "LiveJournal ブログå"
#: deps/django_authopenid/util.py:557
-#, fuzzy
msgid "ClaimID user name"
-msgstr "ユーザーå"
+msgstr "ClaimID ユーザーå"
#: deps/django_authopenid/util.py:565
-#, fuzzy
msgid "Vidoop user name"
-msgstr "ユーザーå"
+msgstr "Vidoop ユーザーå"
#: deps/django_authopenid/util.py:573
-#, fuzzy
msgid "Verisign user name"
-msgstr "ユーザーå"
+msgstr "Verisign ユーザーå"
#: deps/django_authopenid/util.py:608
-#, fuzzy, python-format
+#, python-format
msgid "Change your %(provider)s password"
-msgstr "パスワードを変更ã™ã‚‹"
+msgstr "%(provider)s ã®ãƒ‘スワードを変更ã™ã‚‹"
#: deps/django_authopenid/util.py:612
#, python-format
@@ -2528,338 +2594,320 @@ msgstr ""
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "%(provider)s ã®ãƒ‘スワードを作æˆã™ã‚‹"
#: deps/django_authopenid/util.py:625
-#, fuzzy, python-format
+#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—"
+msgstr ""
#: deps/django_authopenid/util.py:634
-#, fuzzy, python-format
+#, python-format
msgid "Signin with %(provider)s user name and password"
-msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+msgstr ""
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
-msgstr ""
+msgstr "OpenID %(openid_url)s ãŒç„¡åŠ¹ã§ã™"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
-#, fuzzy
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
-msgstr "パスワードã®å¾©æ—§"
+msgstr "æ–°ã—ã„パスワードãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
-#, fuzzy
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-"申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€å…¥åŠ›ã—ãŸãƒ‘スワードã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚å†åº¦å…¥åŠ›ã—ã¦ãã "
-"ã•ã„。"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1098
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1083
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+msgstr ""
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
-#, fuzzy
msgid "Site"
-msgstr "タイトル"
+msgstr "サイト"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "メイン"
-#: deps/livesettings/values.py:127
-#, fuzzy
+#: deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr "設定"
+msgstr "基本設定"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "åˆæœŸå€¤: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "åˆæœŸå€¤: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "åˆæœŸå€¤: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr ""
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "サイト"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "ドキュメント"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "パスワードを変更ã™ã‚‹"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "ログアウト"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "ホーム"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "グループ設定を編集ã™ã‚‹"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
msgstr ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
msgstr ""
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "サイト設定を編集ã™ã‚‹"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
msgstr ""
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
+msgid "Group settings: %(name)s"
+msgstr "グループ設定: %(name)s"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
msgstr ""
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr "ã“ã®è³ªå•ã®æœ€åˆã®å›žç­”ã«ãªã‚Œã¾ã™ï¼"
+msgstr ""
-#: management/commands/send_accept_answer_reminders.py:64
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr "未回答"
+msgstr ""
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
-#: management/commands/send_email_alerts.py:421
-#, fuzzy, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"<p>Dear %(name)s,</p></p>The following question has been updated on the Q&A "
-"forum:</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "ã‚ãŸã‚‰ã—ã„質å•"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
-"frequency of the email updates or turn them off entirely.<br/>If you believe "
-"that this message was sent in an error, please email about it the forum "
-"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
-"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
-#: middleware/forum_mode.py:31
-#, fuzzy, python-format
+#: middleware/forum_mode.py:53
+#, python-format
msgid "Please log in to use %s"
-msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+msgstr ""
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
-#, fuzzy, python-format
+#: models/__init__.py:337
+#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
-msgstr "自身ã®è³ªå•ã®æœ€åˆã®ç´å¾—回答"
+msgstr ""
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
msgstr ""
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:429
-msgid "Sorry, suspended users cannot upload files"
-msgstr ""
-
#: models/__init__.py:431
-#, fuzzy, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "sorry, file uploading requires karma >60"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
+msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2869,56 +2917,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2927,267 +2975,278 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
msgstr ""
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
msgstr ""
-#: models/__init__.py:784
+#: models/__init__.py:843
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:864
-#, fuzzy
-msgid "cannot revoke old vote"
-msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
-#, fuzzy, python-format
+#: models/__init__.py:1475
+#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] "%(hr)d 時間å‰"
+msgstr[0] ""
-#: models/__init__.py:1347
-#, fuzzy, python-format
+#: models/__init__.py:1477
+#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] "%(min)d 分å‰"
+msgstr[0] ""
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
-#, fuzzy
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr "匿å"
+msgstr ""
-#: models/__init__.py:1612 views/users.py:371
-#, fuzzy
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr ""
-"よã‚ã—ããŠã­ãŒã„ã—ã¾ã™ã€‚\n"
-"--\n"
-"Q&A フォーラム管ç†"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1616 views/users.py:375
-#, fuzzy
+#: models/__init__.py:1753
msgid "Suspended User"
-msgstr "é€ä¿¡è€…ã¯"
+msgstr ""
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1620 views/users.py:379
-#, fuzzy
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "登録ユーザー"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1750
-#, fuzzy, python-format
+#: models/__init__.py:1887
+#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
-"銀ãƒãƒƒã‚¸ã‚’å¾—ã‚‹ã«ã¯ã€è‘—ã—ã„勤勉ã•ãŒå¿…è¦ã§ã™ã€‚得る事ãŒã§ããŸãªã‚‰ã€ãã‚Œã¯ã“ã®ã‚³"
-"ミュニティーã¸ã®å‰å¤§ãªè²¢çŒ®ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚"
-#: models/__init__.py:1757
-#, fuzzy, python-format
+#: models/__init__.py:1894
+#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
-"ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æ´»å‹•çš„ãªå‚加者ã§ã‚ã‚‹ãªã‚‰ã€ã“ã®ãƒãƒƒã‚¸ã§èªå®šã•ã‚Œã¾ã™ã€‚"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
-#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
-msgstr "ã‚¿ã‚°"
+msgid "\"%(title)s\""
+msgstr "\"%(title)s\""
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
#: models/badges.py:129
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr "スコアãŒ3以下ã®è‡ªèº«ã®ãƒã‚¹ãƒˆã‚’消ã—ãŸ"
+msgstr ""
#: models/badges.py:133
msgid "Disciplined"
msgstr "è¦å¾‹çš„"
#: models/badges.py:151
-#, fuzzy, python-format
+#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr "スコアãŒ3以下ã®è‡ªèº«ã®ãƒã‚¹ãƒˆã‚’消ã—ãŸ"
+msgstr ""
#: models/badges.py:155
msgid "Peer Pressure"
@@ -3207,54 +3266,43 @@ msgid "Supporter"
msgstr "サãƒãƒ¼ã‚¿ãƒ¼"
#: models/badges.py:219
-#, fuzzy
msgid "First upvote"
-msgstr "最åˆã«ä¸Šã’投票ã—ãŸ"
+msgstr "最åˆã®ä¸Šã’投票"
#: models/badges.py:227
msgid "Critic"
msgstr "批評家"
#: models/badges.py:228
-#, fuzzy
msgid "First downvote"
msgstr "最åˆã®ä¸‹ã’投票"
#: models/badges.py:237
-#, fuzzy
msgid "Civic Duty"
msgstr "市民ã®ç¾©å‹™"
#: models/badges.py:238
-#, fuzzy, python-format
+#, python-format
msgid "Voted %(num)s times"
-msgstr "%s回投票ã—ãŸ"
+msgstr "%(num)s 回投票ã—ã¾ã—ãŸ"
#: models/badges.py:252
-#, fuzzy, python-format
+#, python-format
msgid "Answered own question with at least %(num)s up votes"
msgstr ""
-"<span class='big strong'>You are welcome to answer your own question</span>, "
-"but please make sure to give an <strong>answer</strong>. Remember that you "
-"can always <strong>revise your original question</strong>. Please "
-"<strong>use comments for discussions</strong> and <strong>please don't "
-"forget to vote :)</strong> for the answers that you liked (or perhaps did "
-"not like)! "
#: models/badges.py:256
-#, fuzzy
msgid "Self-Learner"
-msgstr "自習者"
+msgstr "自己学習者"
#: models/badges.py:304
-#, fuzzy
msgid "Nice Answer"
-msgstr "ナイス回答"
+msgstr "素晴らã—ã„回答"
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
-#, fuzzy, python-format
+#, python-format
msgid "Answer voted up %(num)s times"
-msgstr "Post Your Answer"
+msgstr ""
#: models/badges.py:316
msgid "Good Answer"
@@ -3269,9 +3317,9 @@ msgid "Nice Question"
msgstr "ナイス質å•"
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
-#, fuzzy, python-format
+#, python-format
msgid "Question voted up %(num)s times"
-msgstr "質å•ãŒ %s 回上ã’投票ã•ã‚ŒãŸ"
+msgstr ""
#: models/badges.py:352
msgid "Good Question"
@@ -3294,23 +3342,21 @@ msgid "Popular Question"
msgstr "人気ã®è³ªå•"
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
-#, fuzzy, python-format
+#, python-format
msgid "Asked a question with %(views)s views"
-msgstr "%s 回読ã¾ã‚ŒãŸè³ªå•ã‚’ã—ãŸ"
+msgstr ""
#: models/badges.py:425
msgid "Notable Question"
msgstr "å“越ã—ãŸè³ªå•"
#: models/badges.py:436
-#, fuzzy
msgid "Famous Question"
-msgstr "è‘—åãªè³ªå•"
+msgstr ""
#: models/badges.py:450
-#, fuzzy
msgid "Asked a question and accepted an answer"
-msgstr "個ã®è³ªå•ãŒå›žç­”募集中"
+msgstr ""
#: models/badges.py:453
msgid "Scholar"
@@ -3321,38 +3367,31 @@ msgid "Enlightened"
msgstr "よãã‚ã‹ã£ã¦ã„らã£ã—ゃる"
#: models/badges.py:499
-#, fuzzy, python-format
+#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr "最åˆã®å›žç­”ãŒç´å¾—ã•ã‚Œã€å°‘ãªãã¨ã‚‚ %s 上ã’投票ãŒã‚ã£ãŸã€‚"
+msgstr ""
#: models/badges.py:507
msgid "Guru"
msgstr "導師"
#: models/badges.py:510
-#, fuzzy, python-format
+#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr "最åˆã®å›žç­”ãŒç´å¾—ã•ã‚Œã€å°‘ãªãã¨ã‚‚ %s 上ã’投票ãŒã‚ã£ãŸã€‚"
+msgstr ""
#: models/badges.py:518
-#, fuzzy, python-format
+#, python-format
msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
msgstr ""
-"<span class='big strong'>You are welcome to answer your own question</span>, "
-"but please make sure to give an <strong>answer</strong>. Remember that you "
-"can always <strong>revise your original question</strong>. Please "
-"<strong>use comments for discussions</strong> and <strong>please don't "
-"forget to vote :)</strong> for the answers that you liked (or perhaps did "
-"not like)! "
#: models/badges.py:525
msgid "Necromancer"
msgstr "ãƒã‚¯ãƒ­ãƒžãƒ³ã‚µãƒ¼"
#: models/badges.py:548
-#, fuzzy
msgid "Citizen Patrol"
msgstr "市民パトロール"
@@ -3373,9 +3412,8 @@ msgid "Pundit"
msgstr "評論家"
#: models/badges.py:580
-#, fuzzy
msgid "Left 10 comments with score of 10 or more"
-msgstr "スコアãŒ3以下ã®è‡ªèº«ã®ãƒã‚¹ãƒˆã‚’消ã—ãŸ"
+msgstr ""
#: models/badges.py:612
msgid "Editor"
@@ -3387,12 +3425,12 @@ msgstr "最åˆã®ç·¨é›†"
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "見習ã„編集者"
#: models/badges.py:627
-#, fuzzy, python-format
+#, python-format
msgid "Edited %(num)s entries"
-msgstr "%s 個ã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã—ãŸ"
+msgstr "%(num)s 個ã®é …目を編集ã—ã¾ã—ãŸ"
#: models/badges.py:634
msgid "Organizer"
@@ -3411,9 +3449,9 @@ msgid "Completed all user profile fields"
msgstr "ユーザープロファイルをã™ã¹ã¦å…¥åŠ›ã—ãŸ"
#: models/badges.py:663
-#, fuzzy, python-format
+#, python-format
msgid "Question favorited by %(num)s users"
-msgstr "質å•ãŒ %s ユーザã®ãŠæ°—ã«å…¥ã‚Šã«ãªã£ãŸ"
+msgstr "%(num)s 人ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã‚Šæ°—ã«å…¥ã‚‰ã‚Œã¦ã„る質å•"
#: models/badges.py:689
msgid "Stellar Question"
@@ -3425,7 +3463,7 @@ msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "熱心ãªäºº"
#: models/badges.py:714
#, python-format
@@ -3433,3147 +3471,3402 @@ msgid "Visited site every day for %(num)s days in a row"
msgstr ""
#: models/badges.py:732
-#, fuzzy
msgid "Commentator"
-msgstr "場所"
+msgstr "解説者"
#: models/badges.py:736
#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr ""
+msgstr "%(num_comments)s 個ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’投稿ã—ã¾ã—ãŸ"
#: models/badges.py:752
msgid "Taxonomist"
msgstr "体系学者"
#: models/badges.py:756
-#, fuzzy, python-format
+#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr "%s 個ã®è³ªå•ã§ã¤ã‹ã‚れるタグをã¤ãã£ãŸ"
+msgstr "%(num)s 個ã®è³ªå•ã«ã‚ˆã‚Šä½¿ç”¨ã•ã‚Œã¦ã„るタグを作æˆã—ã¾ã—ãŸ"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
-msgstr ""
+msgstr "熟練者"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr ""
-#: models/content.py:549
-#, fuzzy
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
+msgstr ""
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
-#, fuzzy
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
+msgstr ""
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
-#, fuzzy
+#: models/question.py:57
msgid "\" and more"
-msgstr "より詳ã—ã知るã«ã¯"
-
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s ãŒæ”¹å¤‰ã—ãŸè³ªå•"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
msgstr ""
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr ""
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’有効ã«ã™ã‚‹"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "興味深ã„"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "無視"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "フォーラムã«å…¥ã‚‹"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "å°‹ã­ãŸè³ªå•"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "回答ã—ãŸè³ªå•"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "個人的ã«é¸æŠžã—ãŸè³ªå•"
-#: models/user.py:268
-#, fuzzy
+#: models/user.py:270
msgid "Mentions and comment responses"
-msgstr "質å•ã«ã‚³ãƒ¡ãƒ³ãƒˆã—ãŸã¨ã"
+msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "ã™ãã«"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "デイリー"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "ウイークリー"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "メール無ã—"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "サインイン"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã™ã‚‹"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’ä¿å­˜ã™ã‚‹"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’有効ã«ã™ã‚‹"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯ç¢ºè¨¼ã•ã‚Œã¾ã—ãŸ"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’有効ã«ã™ã‚‹"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "登録"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "登録"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "上ã®ã‚ªãƒ—ションã®ã©ã‚Œã‹ã‚’é¸æŠžã—ã¦ãã ã•ã„"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "サインアップã™ã‚‹"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "Q&amp;Aフォーラムã«ç™»éŒ²ã„ãŸã ãã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "アカウントã®è©³ç´°ï¼š"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "ユーザå:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "パスワード:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"よã‚ã—ããŠã­ãŒã„ã—ã¾ã™ã€‚\n"
"--\n"
"Q&A フォーラム管ç†"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Q&amp;Aフォーマルã‹ã‚‰ã®ãŠã—らã›ã§ã™"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, python-format
-msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "ログアウト"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
msgstr ""
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/common/templates/authopenid/logout.html:7
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "ユーザーログイン"
-#: templatetags/extra_tags.py:43
+#: skins/common/templates/authopenid/signin.html:14
#, python-format
-msgid "%(username)s gravatar image"
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
-#: utils/decorators.py:109
-msgid "Please login to post"
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
msgstr ""
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
msgstr ""
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
-
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
-
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "ユーザåã¯å¿…é ˆã§ã™"
-
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
msgstr ""
-"申ã—訳ã”ã–ã„ã¾ã›ã‚“ã€ã“ã®åå‰ã¯ã™ã§ã«å–られã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’ãŠé¸ã³ãã ã•ã„"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "申ã—訳ã”ã–ã„ã¾ã›ã‚“ã€ã“ã®åå‰ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。他ã®ã‚’ãŠé¸ã³ãã ã•ã„"
-
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
msgstr ""
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
msgstr ""
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯å¿…é ˆã§ã™"
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„"
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
-msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯ã™ã§ã«èª°ã‹åˆ¥äººã«ã¤ã‹ã‚ã‚Œã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’ãŠé¸ã³ãã ã•ã„。"
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
-#: utils/forms.py:149
-msgid "choose password"
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
msgstr "パスワード"
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "パスワードã¯å¿…é ˆã§ã™"
-
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "パスワード <i>(確èªç”¨)</i>"
-
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "確èªç”¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
-
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
msgstr ""
-"申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€å…¥åŠ›ã—ãŸãƒ‘スワードã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚å†åº¦å…¥åŠ›ã—ã¦ãã "
-"ã•ã„。"
-
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "二日å‰"
-
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "昨日"
-
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] "%(hr)d 時間å‰"
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] "%(min)d 分å‰"
-
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
msgstr ""
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
msgstr ""
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
msgstr ""
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
msgstr ""
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "削除ã™ã‚‹"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
msgstr ""
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
msgstr ""
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
msgstr ""
-"Your subscription is saved, but email address %(email)s needs to be "
-"validated, please see <a href='%(details_url)s'>more details here</a>"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "メール更新頻度ãŒæ—¥åˆŠã«è¨­å®šã•ã‚Œã¾ã—ãŸã€‚"
-
-#: views/commands.py:400
-#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
msgstr ""
-#: views/commands.py:409
-#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
msgstr ""
-#: views/commands.py:542
-#, fuzzy
-msgid "Please sign in to vote"
-msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "QAフォーラムフィードãƒãƒƒã‚¯"
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "ã”æ„見ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼"
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
msgstr ""
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "ã‚ãŸã‚‰ã—ã„質å•"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
-#: views/readers.py:159
-#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "ã‚ãŸã‚‰ã—ã„質å•"
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#: views/readers.py:415
-#, fuzzy
+#: skins/common/templates/authopenid/signup_with_password.html:50
msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦é¸ã°ã‚Œã¾ã—ãŸ"
-
-#: views/users.py:211
-#, fuzzy
-msgid "moderate this user"
-msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’モデレートã™ã‚‹"
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
-#: views/users.py:212
-#, fuzzy
-msgid "moderate user"
-msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’モデレートã™ã‚‹"
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "ã‚‚ã—ãã¯"
-#: views/users.py:386
-msgid "user profile"
-msgstr "ユーザプロファイル"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "OpenID ログインã«æˆ»ã‚‹"
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "ユーザプロファイル概略"
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "ã‚¢ãƒã‚¿ãƒ¼ã‚’追加ã™ã‚‹"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "最近ã®ãƒ¦ãƒ¼ã‚¶ã®æ´»å‹•"
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "ã‚¢ãƒã‚¿ãƒ¼ã‚’変更ã™ã‚‹"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "プロファイル:最近ã®æ´»å‹•"
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "ç¾åœ¨ã®ã‚¢ãƒã‚¿ãƒ¼: "
-#: views/users.py:785
-msgid "comments and answers to others questions"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
msgstr ""
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "プロファイル:応答"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "æ–°ã—ã„ç”»åƒã‚’アップロードã™ã‚‹"
-#: views/users.py:860
-msgid "user vote record"
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
msgstr ""
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "プロファイル:投票"
-
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "å¾³"
-
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "プロファイル:徳"
-
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "ユーザã®ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "プロファイル:ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "アップロード"
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "ã‚¢ãƒã‚¿ãƒ¼ã‚’削除ã™ã‚‹"
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "メール更新ãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸ"
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
-#: views/users.py:973
-msgid "email subscription settings"
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
msgstr ""
-#: views/users.py:974
-msgid "profile - email subscriptions"
-msgstr "プロファイル:メール登録ãªã©"
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr "ã“れらを削除ã™ã‚‹"
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
msgstr ""
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr ""
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "リンク"
-#: views/writers.py:91
-#, fuzzy, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "最大アップロードファイルサイズ㯠%sK ã§ã™ã€‚"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "リンク"
-#: views/writers.py:99
-#, fuzzy
-msgid "Error uploading file. Please contact the site administrator. Thank you."
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
msgstr ""
-"ファイルアップロードエラー:サイト管ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。ã”å”力ã‚ã‚ŠãŒã¨ã†"
-"ã”ã–ã„ã¾ã™ã€‚"
-#: views/writers.py:191
+#: skins/common/templates/question/answer_controls.html:19
#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+msgid "remove offensive flag"
+msgstr "フラグを削除ã™ã‚‹"
-#: views/writers.py:492
-#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "未回答"
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "フラグを削除ã™ã‚‹"
-#: views/writers.py:598
-#, python-format
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
msgstr ""
+"侮辱的ã¨ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ (例:SPAMãŒå«ã¾ã‚Œã‚‹ã€åºƒå‘Šçš„ã€æ‚ªæ„ã®ã‚るテキストã€ãªã©ãª"
+"ã©ï¼‰"
-#: views/writers.py:646
-msgid "Sorry, anonymous users cannot edit comments"
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "編集ã™ã‚‹"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "ã“ã®å›žç­”ãŒå¦¥å½“ã§ã‚ã‚‹ã¨é¸ã°ã‚Œã¾ã—ãŸ"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
msgstr ""
-#: views/writers.py:654
+#: skins/common/templates/question/closed_question_info.html:2
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
msgstr ""
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
msgstr ""
-#, fuzzy
-#~ msgid "Sites"
-#~ msgstr "サイトã®çŠ¶æ…‹"
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "å†åº¦é–‹ã"
-#, fuzzy
-#~ msgid "Documentation"
-#~ msgstr "場所"
-
-#~ msgid "Change password"
-#~ msgstr "パスワードを変更ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "Log out"
-#~ msgstr "ログアウト"
-
-#~ msgid "Home"
-#~ msgstr "ホーム"
-
-#, fuzzy
-#~ msgid "Edit Group Settings"
-#~ msgstr "質å•ã‚’編集ã™ã‚‹"
-
-#, fuzzy
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "次ã®ã‚¨ãƒ©ãƒ¼ã‚’æ­£ã—ã¦ãã ã•ã„:"
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "閉鎖ã™ã‚‹"
-#, fuzzy
-#~ msgid "Edit Site Settings"
-#~ msgstr "設定"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+#: skins/common/templates/widgets/edit_post.html:22
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "サインアップã™ã‚‹"
-
-#~ msgid "Change email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’変更ã™ã‚‹"
-
-#~ msgid "Save your email address"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
-
-#~ msgid "change %(email)s info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Enter your new email into the box below</span> "
-#~ "if you'd like to use another email for <strong>update subscriptions</"
-#~ "strong>.<br>Currently you are using <strong>%(email)s</strong>"
-
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<span class='strong big'>Please enter your email address in the box below."
-#~ "</span> Valid email address is required on this Q&amp;A forum. If you "
-#~ "like, you can <strong>receive updates</strong> on interesting questions "
-#~ "or entire forum via email. Also, your email is used to create a unique <a "
-#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
-#~ "account. Email addresses are never shown or otherwise shared with anybody "
-#~ "else."
-
-#~ msgid "Your new Email"
-#~ msgstr ""
-#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
-#~ "anyone, must be valid)"
-
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+msgid ", one of these is required"
+msgstr "国フィールドãŒå¿…è¦ã§ã™"
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "メールアドレス"
-
-#~ msgid "Cancel"
-#~ msgstr "キャンセル"
-
-#~ msgid "Validate email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’有効ã«ã™ã‚‹"
-
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr ""
-#~ "<span class=\"strong big\">An email with a validation link has been sent "
-#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
-#~ "your web browser. Email validation is necessary to help insure the proper "
-#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>."
-
-#~ msgid "Email not changed"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
-
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your email address %(email)s has not been "
-#~ "changed.</span> If you decide to change it later - you can always do it "
-#~ "by editing it in your user profile or by using the <a "
-#~ "href='%(change_email_url)s'><strong>previous form</strong></a> again."
+msgid "tags:"
+msgstr "ã‚¿ã‚°"
-#~ msgid "Email changed"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(必須)"
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr ""
-#~ "<span class='big strong'>Your email address is now set to %(email)s.</"
-#~ "span> Updates on the questions that you like most will be sent to this "
-#~ "address. Email notifications are sent once a day or less frequently - "
-#~ "only when there are any news."
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "リアルタイムMarkdown編集プレビューをトグルã™ã‚‹"
-#~ msgid "Email verified"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯ç¢ºè¨¼ã•ã‚Œã¾ã—ãŸ"
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "プレビューを隠ã™"
-#~ msgid "thanks for verifying email"
-#~ msgstr ""
-#~ "<span class=\"big strong\">Thank you for verifying your email!</span> Now "
-#~ "you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
-#~ "if you find a very interesting question you can <strong>subscribe for the "
-#~ "updates</strong> - then will be notified about changes <strong>once a "
-#~ "day</strong> or less frequently."
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
-#~ msgid "email key not sent"
-#~ msgstr "Validation email not sent"
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "<span class='big strong'>Your current email address %(email)s has been "
-#~ "validated before</span> so the new key was not sent. You can <a "
-#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
-#~ "necessary."
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "登録"
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "表示ã—ãªã„ã‚¿ã‚°"
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "%(provider)s login.</span> Please create your <strong>screen name</"
-#~ "strong> and save your <strong>email</strong> address. Saved email address "
-#~ "will let you <strong>subscribe for the updates</strong> on the most "
-#~ "interesting questions and will be used to create and retrieve your unique "
-#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
-#~ "a>.</p>"
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "<p><span class='strong big'>Oops... looks like screen name %(username)s "
-#~ "is already used in another account.</span></p><p>Please choose another "
-#~ "screen name to use with your %(provider)s login. Also, a valid email "
-#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>"
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "%(provider)s login.</span></p><p>You can either keep your <strong>screen "
-#~ "name</strong> the same as your %(provider)s login name or choose some "
-#~ "other nickname.</p><p>Also, please save a valid <strong>email</strong> "
-#~ "address. With the email you can <strong>subscribe for the updates</"
-#~ "strong> on the most interesting questions. Email address is also used to "
-#~ "create and retrieve your unique avatar image - <a "
-#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "残念ãªãŒã‚‰ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<p><span class=\"big strong\">You are here for the first time with your "
-#~ "Facebook login.</span> Please create your <strong>screen name</strong> "
-#~ "and save your <strong>email</strong> address. Saved email address will "
-#~ "let you <strong>subscribe for the updates</strong> on the most "
-#~ "interesting questions and will be used to create and retrieve your unique "
-#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
-#~ "a>.</p>"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "ã“ã‚Œã¯ã‚‚ã—ã‹ã—ãŸã‚‰ã¤ãŽã®ã‚ˆã†ãªç†ç”±ã§ãŠã“ã£ãŸã‹ã‚‚ã—ã‚Œãªã„:"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’使ã£ã¦ãã ã•ã„。"
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "ã“ã®è³ªå•ã‚‚ã—ãã¯å›žç­”ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸï¼›"
-#~ msgid "Screen name label"
-#~ msgstr "<strong>スクリーンå</strong> (<i>ä»–ã®ã²ã¨ã«è¡¨ç¤ºã•ã‚Œã¾ã™</i>)"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "URLãŒã‚¨ãƒ©ãƒ¼ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚。確èªã—ã¦ä¸‹ã•ã„ï¼›"
-#~ msgid "Email address label"
-#~ msgstr ""
-#~ "<strong>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹</strong> (<i>will <strong>not</strong> be "
-#~ "shared with anyone, must be valid</i>)"
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr "é–‹ã“ã†ã¨ã—ãŸãƒšãƒ¼ã‚¸ã¯ä¿è­·ã•ã‚Œã¦ã„ã‚‹ã‹ã€å分ãªãƒã‚¤ãƒ³ãƒˆã‚’ã‚‚ã£ã¦ã„ã¾ã›ã‚“ã€"
-#~ msgid "receive updates motivational blurb"
-#~ msgstr ""
-#~ "<strong>Receive forum updates by email</strong> - this will help our "
-#~ "community grow and become more useful.<br/>By default <span "
-#~ "class='orange'>Q&amp;A</span> forum sends up to <strong>one email digest "
-#~ "per week</strong> - only when there is anything new.<br/>If you like, "
-#~ "please adjust this now or any time later from your user account."
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "よãã‚る質å•"
-#, fuzzy
-#~ msgid "please select one of the options above"
-#~ msgstr "上記ã‹ã‚‰ä¸€ã¤é¸æŠžã—ã¦ãã ã•ã„"
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "ã“ã®ã‚¨ãƒ©ãƒ¼404ãŒãŠã“らãªã„ã¨ã‚’ä¿¡ã˜ã‚‹ãªã‚‰ã€"
-#~ msgid "create account"
-#~ msgstr "サインアップ"
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "ã“ã®å•é¡Œã‚’レãƒãƒ¼ãƒˆã™ã‚‹"
-#~ msgid "Logout"
-#~ msgstr "ログアウト"
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "以å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹"
-#~ msgid "User login"
-#~ msgstr "ユーザーログイン"
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "ã™ã¹ã¦ã®è³ªå•ã‚’ã¿ã‚‹"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "ã™ã¹ã¦ã®ã‚¿ã‚°ã‚’ã¿ã‚‹"
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "ユーザåã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"システムエラーログãŒè¨˜éŒ²ã•ã‚Œã¾ã—ãŸã€ã‚¨ãƒ©ãƒ¼ã¯ã§ãã‚‹é™ã‚Šé€Ÿã‚„ã‹ã«ä¿®æ­£ã•ã‚Œã‚‹ã§"
+"ã—ょã†"
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ç„¡ã—"
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
-#~ msgid "Password"
-#~ msgstr "パスワード"
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "最新ã®è³ªå•ã‚’ã¿ã‚‹"
-#~ msgid "Login"
-#~ msgstr "ログイン"
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "ã‚¿ã‚°ã‚’ã¿ã‚‹"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "回答を編集ã™ã‚‹"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "ã‚‚ã©ã‚‹"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "改訂"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "改訂をé¸æŠžã™ã‚‹"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "パスワード"
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "編集をä¿å­˜ã™ã‚‹"
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "確èªç”¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "プレビューを表示ã™ã‚‹"
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
#, fuzzy
-#~ msgid "provider"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„プロãƒã‚¤ãƒ€ãƒ¼ã‚’追加ã™ã‚‹"
+msgid "Ask Your Question"
+msgstr "質å•ã‚’投稿ã™ã‚‹"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "最終活動"
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
-#~ msgid "delete"
-#~ msgstr "削除ã™ã‚‹"
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "ãƒãƒƒã‚¸"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "キャンセルã•ã‚ŒãŸæŠ•ç¥¨"
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr ""
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„パスワードを設定ã™ã‚‹"
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
-#~ msgid "Why use OpenID?"
-#~ msgstr "ãªãœOpenIDã‚’ã¤ã‹ã†ã®ã‹ï¼Ÿ"
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "ãƒãƒƒã‚¸"
-#~ msgid "with openid it is easier"
-#~ msgstr ""
-#~ "OpenIDã‚’ã¤ã‹ã†ã¨ã€ã‚らãŸã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを作る必è¦ãŒã‚ã‚Šã¾ã›ã‚“。"
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"質å•ã¨å›žç­”ãŒé«˜ã投票ã•ã‚Œã‚‹ã¨ã€Q&amp;Aコミュニティーã¸ã®è²¢çŒ®ãŒã•ã¾ã–ã¾ãªãƒãƒƒã‚¸"
+"ã§èªå®šã•ã‚Œã¾ã™ã€‚"
-#~ msgid "reuse openid"
-#~ msgstr ""
-#~ "ã™ã¹ã¦ã®OpenID対応ウェブサイトã§ãŠãªã˜ãƒ­ã‚°ã‚¤ãƒ³ã‚’安全ã«å†åˆ©ç”¨ã§ãã¾ã™ã€‚"
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
-#~ msgid "openid is widely adopted"
-#~ msgstr "ã™ã§ã«å¤šæ•°ã®ã‚¦ã‚§ãƒ–サイトã§OpenIDアカウントãŒåˆ©ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "ãƒãƒƒã‚¸ãƒ¬ãƒ™ãƒ«"
-#~ msgid "openid is supported open standard"
-#~ msgstr ""
-#~ "OpenIDã¯ã€å¤šãã®çµ„ç¹”ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„るオープンスタンダードã«åŸºã¥ã„ã¦ã„ã¾"
-#~ "ã™ã€‚"
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
-#~ msgid "Find out more"
-#~ msgstr "より詳ã—ã知るã«ã¯"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#~ msgid "Get OpenID"
-#~ msgstr "OpenIDã‚’å–å¾—ã™ã‚‹"
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
-#~ msgid "Signup"
-#~ msgstr "サインアップã™ã‚‹"
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
-#~ msgid "Create login name and password"
-#~ msgstr "ログインåã¨ãƒ‘スワードを作æˆã™ã‚‹"
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "質å•ã‚’閉鎖ã™ã‚‹"
-#~ msgid "Traditional signup info"
-#~ msgstr ""
-#~ "<span class='strong big'>If you prefer, create your forum login name and "
-#~ "password here. However</span>, please keep in mind that we also support "
-#~ "<strong>OpenID</strong> login method. With <strong>OpenID</strong> you "
-#~ "can simply reuse your external login (e.g. Gmail or AOL) without ever "
-#~ "sharing your login details with anyone and having to remember yet another "
-#~ "password."
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "質å•ã‚’閉鎖ã™ã‚‹"
-#~ msgid "Create Account"
-#~ msgstr "アカウントを作æˆã™ã‚‹"
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "ç†ç”±"
-#~ msgid "or"
-#~ msgstr "ã‚‚ã—ãã¯"
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "閉鎖を確定ã™ã‚‹"
-#~ msgid "return to OpenID login"
-#~ msgstr "OpenID ログインã«æˆ»ã‚‹"
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "よãã‚る質å•ï¼ˆFAQ)"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "What is gravatar?"
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "よãã‚る質å•"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "タグを変更ã™ã‚‹"
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "ã“ã“ã§ã©ã‚“ãªè³ªå•ã‚’ã—ã¦ã‚ˆã„ã®ã‹ï¼Ÿ"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "アカウントã®è©³ç´°ï¼š"
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+#: skins/default/templates/faq_static.html:8
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+#: skins/default/templates/faq_static.html:10
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+msgid "What kinds of questions should be avoided?"
+msgstr "What kinds of questions should be avoided?"
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "削除ã•ã‚ŒãŸå›žç­”"
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
-#~ msgid "answer permanent link"
-#~ msgstr "回答ã®ãƒªãƒ³ã‚¯"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr ""
-#~ msgid "permanent link"
-#~ msgstr "リンク"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#~ msgid "edit"
-#~ msgstr "編集ã™ã‚‹"
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚’ã ã‚ŒãŒãƒ¢ãƒ‡ãƒ¬ãƒ¼ãƒˆã—ã¦ã„ã‚‹ã®ã‹ï¼Ÿ"
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "侮辱的ã¨ãƒ¬ãƒãƒ¼ãƒˆã™ã‚‹ (例:SPAMãŒå«ã¾ã‚Œã‚‹ã€åºƒå‘Šçš„ã€æ‚ªæ„ã®ã‚るテキストã€ãª"
-#~ "ã©ãªã©ï¼‰"
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
-#~ msgid "flag offensive"
-#~ msgstr "侮辱的ã¨å°ã‚’付ã‘ã‚‹"
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+#: skins/default/templates/faq_static.html:18
#, fuzzy
-#~ msgid "undelete"
-#~ msgstr "削除ã™ã‚‹"
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+#: skins/default/templates/faq_static.html:20
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
+msgid "How does karma system work?"
+msgstr "How does karma system work?"
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã™ã‚‹ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã«é¸ã°ã‚Œã¾ã—ãŸ"
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
-#, fuzzy
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "閉鎖ã—ãŸæ—¥æ™‚"
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr ""
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "コメントを加ãˆã‚‹"
-#~ msgid "reopen"
-#~ msgstr "å†åº¦é–‹ã"
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr ""
-#~ msgid "close"
-#~ msgstr "閉鎖ã™ã‚‹"
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr ""
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
-#~ msgid "(required)"
-#~ msgstr "(必須)"
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr ""
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "リアルタイムMarkdown編集プレビューをトグルã™ã‚‹"
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "コミュニティー wiki 質å•ã‚’編集ã™ã‚‹"
-#~ msgid "hide preview"
-#~ msgstr "プレビューを隠ã™"
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr ""
-#~ msgid "Related tags"
-#~ msgstr "ã‚¿ã‚°"
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr ""
-#~ msgid "Interesting tags"
-#~ msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "追加ã™ã‚‹"
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
-#~ msgid "Ignored tags"
-#~ msgstr "表示ã—ãªã„ã‚¿ã‚°"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "\"ã„ã¾ã™ãログインï¼\""
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¿ã‚°ãƒ•ã‚£ãƒ«ã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "ãªãœä»–ã®ã²ã¨ãŒç§ã®è³ªå•ã‚„回答を編集ã§ãã‚‹ã®ã§ã™ã‹ï¼Ÿ"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "残念ãªãŒã‚‰ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "ã“ã®ã‚µã‚¤ãƒˆã®ã‚´ãƒ¼ãƒ«ã¯..."
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "ã“ã‚Œã¯ã‚‚ã—ã‹ã—ãŸã‚‰ã¤ãŽã®ã‚ˆã†ãªç†ç”±ã§ãŠã“ã£ãŸã‹ã‚‚ã—ã‚Œãªã„:"
+#: skins/default/templates/faq_static.html:76
+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 ""
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "ã“ã®è³ªå•ã‚‚ã—ãã¯å›žç­”ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸï¼›"
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
-#~ msgid "url has error - please check it;"
-#~ msgstr "URLãŒã‚¨ãƒ©ãƒ¼ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚。確èªã—ã¦ä¸‹ã•ã„ï¼›"
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr ""
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "é–‹ã“ã†ã¨ã—ãŸãƒšãƒ¼ã‚¸ã¯ä¿è­·ã•ã‚Œã¦ã„ã‚‹ã‹ã€å分ãªãƒã‚¤ãƒ³ãƒˆã‚’ã‚‚ã£ã¦ã„ã¾ã›ã‚“ã€"
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
-#~ msgid "faq"
-#~ msgstr "よãã‚る質å•"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "フィードãƒãƒƒã‚¯"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "ã“ã®ã‚¨ãƒ©ãƒ¼404ãŒãŠã“らãªã„ã¨ã‚’ä¿¡ã˜ã‚‹ãªã‚‰ã€"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "ã‚ãªãŸã®ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã‚’ãã ã•ã„ï¼"
-#~ msgid "report this problem"
-#~ msgstr "ã“ã®å•é¡Œã‚’レãƒãƒ¼ãƒˆã™ã‚‹"
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
-#~ msgid "back to previous page"
-#~ msgstr "以å‰ã®ãƒšãƒ¼ã‚¸ã«æˆ»ã‚‹"
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
-#~ msgid "see all questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•ã‚’ã¿ã‚‹"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
-#~ msgid "see all tags"
-#~ msgstr "ã™ã¹ã¦ã®ã‚¿ã‚°ã‚’ã¿ã‚‹"
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…須)"
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "システムエラーログãŒè¨˜éŒ²ã•ã‚Œã¾ã—ãŸã€ã‚¨ãƒ©ãƒ¼ã¯ã§ãã‚‹é™ã‚Šé€Ÿã‚„ã‹ã«ä¿®æ­£ã•ã‚Œã‚‹ã§"
-#~ "ã—ょã†"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
-#~ msgid "see latest questions"
-#~ msgstr "最新ã®è³ªå•ã‚’ã¿ã‚‹"
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "フィードãƒãƒƒã‚¯ã‚’é€ã‚‹"
-#~ msgid "see tags"
-#~ msgstr "ã‚¿ã‚°ã‚’ã¿ã‚‹"
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
-#~ msgid "Edit answer"
-#~ msgstr "回答を編集ã™ã‚‹"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr "ヘルプ"
-#~ msgid "back"
-#~ msgstr "ã‚‚ã©ã‚‹"
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "よã†ã“ã %(username)sã€"
-#~ msgid "revision"
-#~ msgstr "改訂"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "よã†ã“ãã€"
-#~ msgid "select revision"
-#~ msgstr "改訂をé¸æŠžã™ã‚‹"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
-#~ msgid "Save edit"
-#~ msgstr "編集をä¿å­˜ã™ã‚‹"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
-#~ msgid "show preview"
-#~ msgstr "プレビューを表示ã™ã‚‹"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
-#~ msgid "Ask a question"
-#~ msgstr "質å•ã™ã‚‹"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
-#~ msgid "Badge"
-#~ msgstr "ãƒãƒƒã‚¸"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "メール登録設定"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
-#~ msgid "Badges summary"
-#~ msgstr "ãƒãƒƒã‚¸ã‚µãƒžãƒªãƒ¼"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
-#~ msgid "Badges"
-#~ msgstr "ãƒãƒƒã‚¸"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "質å•ã¨å›žç­”ãŒé«˜ã投票ã•ã‚Œã‚‹ã¨ã€Q&amp;Aコミュニティーã¸ã®è²¢çŒ®ãŒã•ã¾ã–ã¾ãª"
-#~ "ãƒãƒƒã‚¸ã§èªå®šã•ã‚Œã¾ã™ã€‚"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Currently badges differ only by their level: <strong>gold</strong>, "
-#~ "<strong>silver</strong> and <strong>bronze</strong> (their meanings are "
-#~ "described on the right). In the future there will be many types of badges "
-#~ "at each level. <strong>Please give us your <a href='%(feedback_faq_url)"
-#~ "s'>feedback</a></strong> - what kinds of badges would you like to see and "
-#~ "suggest the activity for which those badges might be awarded."
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
-#~ msgid "Community badges"
-#~ msgstr "ãƒãƒƒã‚¸ãƒ¬ãƒ™ãƒ«"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
-#~ msgid "gold badge description"
-#~ msgstr ""
-#~ "金ãƒãƒƒã‚¸ã¯ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æœ€é«˜ã®æ „誉ã§ã™ã€‚活発ãªå‚加ã«ãã‚ãˆã¦ã€æ·±ã„æ´ž"
-#~ "察ã¨çŸ¥è­˜ã€å®Ÿè¡ŒåŠ›ã‚’示ã—ãŸã“ã¨ã«ã‚ˆã£ã¦ãã‚Œã¯å¾—られã¾ã™ã€‚"
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
-#~ msgid "silver badge description"
-#~ msgstr ""
-#~ "銀ãƒãƒƒã‚¸ã‚’å¾—ã‚‹ã«ã¯ã€è‘—ã—ã„勤勉ã•ãŒå¿…è¦ã§ã™ã€‚得る事ãŒã§ããŸãªã‚‰ã€ãã‚Œã¯ã“ã®"
-#~ "コミュニティーã¸ã®å‰å¤§ãªè²¢çŒ®ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚"
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
-#~ msgid "bronze badge description"
-#~ msgstr ""
-#~ "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æ´»å‹•çš„ãªå‚加者ã§ã‚ã‚‹ãªã‚‰ã€ã“ã®ãƒãƒƒã‚¸ã§èªå®šã•ã‚Œã¾ã™ã€‚"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
-#~ msgid "Close question"
-#~ msgstr "質å•ã‚’閉鎖ã™ã‚‹"
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
-#~ msgid "Close the question"
-#~ msgstr "質å•ã‚’閉鎖ã™ã‚‹"
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
-#~ msgid "Reasons"
-#~ msgstr "ç†ç”±"
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#~ msgid "OK to close"
-#~ msgstr "閉鎖を確定ã™ã‚‹"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "よãã‚る質å•"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "ã“ã“ã§ã©ã‚“ãªè³ªå•ã‚’ã—ã¦ã‚ˆã„ã®ã‹ï¼Ÿ"
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Before you ask - please make sure to search for a similar question. You "
-#~ "can search questions by their title or tags."
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "What kinds of questions should be avoided?"
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
-#, fuzzy
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "What kinds of questions should be avoided?"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ 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 ""
-#~ "is a <strong>question and answer</strong> site - <strong>it is not a "
-#~ "discussion group</strong>. Please avoid holding debates in your answers "
-#~ "as they tend to dilute the essense of questions and answers. For the "
-#~ "brief discussions please use commenting facility."
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "Who moderates this community?"
-#~ msgstr "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã‚’ã ã‚ŒãŒãƒ¢ãƒ‡ãƒ¬ãƒ¼ãƒˆã—ã¦ã„ã‚‹ã®ã‹ï¼Ÿ"
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Karma system allows users to earn rights to perform a variety of "
-#~ "moderation tasks"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
-#~ msgid "How does reputation system work?"
-#~ msgstr "How does karma system work?"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
-#~ msgid "Rep system summary"
-#~ msgstr ""
-#~ "When a question or answer is upvoted, the user who posted them will gain "
-#~ "some points, which are called \"karma points\". These points serve as a "
-#~ "rough measure of the community trust to him/her. Various moderation tasks "
-#~ "are gradually assigned to the users based on those points."
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
-#, fuzzy
-#~ msgid "upvote"
-#~ msgstr "上ã’"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "ç¾åœ¨ã®æŠ•ç¥¨æ•°"
-#~ msgid "use tags"
-#~ msgstr "タグを利用ã™ã‚‹"
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr ""
-#~ msgid "add comments"
-#~ msgstr "コメントを加ãˆã‚‹"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
-#, fuzzy
-#~ msgid "downvote"
-#~ msgstr "下ã’"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "自身ã®è³ªå•ã®æœ€åˆã®ç´å¾—回答"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "質å•æ—¥"
-#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "ã‚らゆる閉鎖ã—ãŸè³ªå•ã‚’é–‹ã"
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "回答日"
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "質å•ã«ã‚¿ã‚°ã‚’å†ã³ã¤ã‘ã‚‹"
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "投稿日"
-#~ msgid "edit community wiki questions"
-#~ msgstr "コミュニティー wiki 質å•ã‚’編集ã™ã‚‹"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "æ›´æ–°æ—¥"
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "ã‚らゆる回答を編集ã™ã‚‹"
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr ""
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "ã‚らゆるコメントを削除ã™ã‚‹"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã™ã‚‹"
-#~ msgid "what is gravatar"
-#~ msgstr "What is gravatar?"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr ""
-#~ msgid "gravatar faq info"
-#~ msgstr ""
-#~ "<strong>Gravatar</strong> means <strong>g</strong>lobally <strong>r</"
-#~ "strong>ecognized <strong>avatar</strong> - your unique avatar image "
-#~ "associated with your email address. It's simply a picture that shows next "
-#~ "to your posts on the websites that support gravatar protocol. By default "
-#~ "gravar appears as a square filled with a snowflake-like figure. You can "
-#~ "<strong>set your image</strong> at <a href='http://gravatar."
-#~ "com'><strong>gravatar.com</strong></a>"
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "%(username)s ã®ã‚¦ã‚§ãƒ–サイト㯠%(url)s ã§ã™"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "以å‰ã®"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "ç¾åœ¨ã®ãƒšãƒ¼ã‚¸"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "ページ %(num)s"
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "ログインã§ãã¾ã™ï¼"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "次ã®ãƒšãƒ¼ã‚¸"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "ãªãœä»–ã®ã²ã¨ãŒç§ã®è³ªå•ã‚„回答を編集ã§ãã‚‹ã®ã§ã™ã‹ï¼Ÿ"
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr ""
-#~ msgid "Goal of this site is..."
-#~ msgstr "ã“ã®ã‚µã‚¤ãƒˆã®ã‚´ãƒ¼ãƒ«ã¯..."
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
-#, fuzzy
-#~ msgid "Still have questions?"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
-#~ "our community better!"
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
-#~ msgid "Feedback"
-#~ msgstr "フィードãƒãƒƒã‚¯"
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
-#~ msgid "Give us your feedback!"
-#~ msgstr "ã‚ãªãŸã®ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã‚’ãã ã•ã„ï¼"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
-#~ msgid "(this field is required)"
-#~ msgstr "(ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…須)"
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "質å•"
-#~ msgid "Send Feedback"
-#~ msgstr "フィードãƒãƒƒã‚¯ã‚’é€ã‚‹"
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "よã‚ã—ããŠã­ãŒã„ã—ã¾ã™ã€‚\n"
-#~ "--\n"
-#~ "Q&A フォーラム管ç†"
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
+msgid "post a comment"
+msgstr "post a comment"
-# "ã“れらã®ãƒãƒªã‚·ãƒ¼ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å€‹äººæƒ…å ±ä¿è­·ã®æ”¹å–„ã®ç‚ºã«ä¿®æ­£ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ãã®ã‚ˆã†ãªå¤‰æ›´ãŒã‚ã‚‹ãŸã³ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å†…部通知システムを経由ã—ã¦é€šçŸ¥ã‚’å—ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚"
-# "These policies may be adjusted to improve protection of user's privacy. "
-# "Whenever such changes occur, users will be notified via the internal "
-# "messaging system. "
-#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
-# "ã“れらã®ãƒãƒªã‚·ãƒ¼ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å€‹äººæƒ…å ±ä¿è­·ã®æ”¹å–„ã®ç‚ºã«ä¿®æ­£ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ãã®ã‚ˆã†ãªå¤‰æ›´ãŒã‚ã‚‹ãŸã³ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å†…部通知システムを経由ã—ã¦é€šçŸ¥ã‚’å—ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚"
-# "These policies may be adjusted to improve protection of user's privacy. "
-# "Whenever such changes occur, users will be notified via the internal "
-# "messaging system. "
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
-
-#~ msgid "current number of votes"
-#~ msgstr "ç¾åœ¨ã®æŠ•ç¥¨æ•°"
+msgid "Post Your Answer"
+msgstr "良ã„回答"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+msgid "Login/Signup to Post"
+msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
-#, fuzzy
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "質å•ã‚’編集ã™ã‚‹"
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "匿å"
-
-#~ msgid "asked"
-#~ msgstr "質å•æ—¥"
-
-#~ msgid "answered"
-#~ msgstr "回答日"
-
-#~ msgid "posted"
-#~ msgstr "投稿日"
-
-#~ msgid "updated"
-#~ msgstr "æ›´æ–°æ—¥"
+msgid "Retag question"
+msgstr "関係ã—ãŸè³ªå•"
-#, fuzzy
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "'%(tagname)s'ã‚¿ã‚°ã®ã¤ã„ãŸè³ªå•ã‚’ã¿ã‚‹"
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
-#~ msgid "delete this comment"
-#~ msgstr "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã™ã‚‹"
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "ãªãœã‚¿ã‚°ã‚’ã¤ã‹ã£ãŸã‚Šã€ä¿®æ­£ã™ã‚‹ã®ã§ã™ã‹ï¼Ÿ"
-#~ msgid "add comment"
-#~ msgstr "post a comment"
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
-#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "ã‚‚ã£ã¨ã‚‚<strong>投票ã•ã‚ŒãŸ</strong>質å•"
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
-#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] "ã‚‚ã£ã¨ã‚‚<strong>投票ã•ã‚ŒãŸ</strong>質å•"
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "5タグã¾ã§ã€ï¼’ï¼æ–‡å­—未満"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "ユーザプロファイル"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
-#~ msgid "previous"
-#~ msgstr "以å‰ã®"
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "表題"
-#~ msgid "current page"
-#~ msgstr "ç¾åœ¨ã®ãƒšãƒ¼ã‚¸"
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
-#, fuzzy
-#~ msgid "page number %(num)s"
-#~ msgstr "ページ数"
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "クローズç†ç”±:"
-#~ msgid "next page"
-#~ msgstr "次ã®ãƒšãƒ¼ã‚¸"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "時間:"
-#~ msgid "posts per page"
-#~ msgstr "ページã‚ãŸã‚Šã®æŠ•ç¨¿æ•°"
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "ã“ã®è³ªå•ã‚’å†ã³é–‹ãã¾ã™ã‹ï¼Ÿ"
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "åå¿œ"
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "åå¿œ"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "更新履歴"
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "フラグを最åˆã«ãƒã‚¹ãƒˆã—ãŸ"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr ""
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "フラグを最åˆã«ãƒã‚¹ãƒˆã—ãŸ"
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "版数 %(number)s"
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "フラグを最åˆã«ãƒã‚¹ãƒˆã—ãŸ"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr ""
-#~ msgid "Questions"
-#~ msgstr "質å•"
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
-#~ msgid "Privacy policy"
-#~ msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr ""
-#~ msgid "Edit question"
-#~ msgstr "質å•ã‚’編集ã™ã‚‹"
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
-#~ msgid "Change tags"
-#~ msgstr "タグを変更ã™ã‚‹"
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "タグリスト"
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "ã‚¿ã‚°"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "&raquo; ã«ã‚ˆã‚Šä¸¦ã³æ›¿ãˆã‚‹"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "ãªãœã‚¿ã‚°ã‚’ã¤ã‹ã£ãŸã‚Šã€ä¿®æ­£ã™ã‚‹ã®ã§ã™ã‹ï¼Ÿ"
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "5タグã¾ã§ã€ï¼’ï¼æ–‡å­—未満"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "åå‰é †"
-#~ msgid "Reopen question"
-#~ msgstr "å†é–‹ã•ã‚ŒãŸè³ªå•"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "タイトル"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "人気順"
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "質å•ã‚’閉鎖ã™ã‚‹"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "何もã¿ã¤ã‹ã‚‰ãªã„"
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "ユーザー"
-#~ msgid "Reopen this question"
-#~ msgstr "ã“ã®è³ªå•ã‚’å†é–‹ã™ã‚‹"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
-#~ msgid "Revision history"
-#~ msgstr "更新履歴"
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "カルマ"
-#, fuzzy
-#~ msgid "click to hide/show revision"
-#~ msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "タグを利用ã™ã‚‹"
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "æ–°è¦ç™»éŒ²é †"
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "タグを利用ã™ã‚‹"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
-#~ msgid "Tag list"
-#~ msgstr "タグリスト"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
-#~ msgid "by name"
-#~ msgstr "åå‰é †"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "ユーザーåé †"
-#~ msgid "by popularity"
-#~ msgstr "人気順"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
-#~ msgid "Nothing found"
-#~ msgstr "何もã¿ã¤ã‹ã‚‰ãªã„"
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "何も見付ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-#~ msgid "Users"
-#~ msgstr "ユーザー"
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
-#~ msgid "reputation"
-#~ msgstr "信用度"
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
-#~ msgid "recent"
-#~ msgstr "æ–°è¦ç™»éŒ²é †"
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
-#~ msgid "by username"
-#~ msgstr "ユーザーåé †"
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr ""
-#~ msgid "Nothing found."
-#~ msgstr "何も見付ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr ""
-#, fuzzy
-#~ msgid "Search tips:"
-#~ msgstr "検索çµæžœ"
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr " ã¾ãŸã¯ "
-#, fuzzy
-#~ msgid "reset author"
-#~ msgstr "作者ã«ãŸãšã­ã‚‹"
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr ""
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "ã‚‚ã—ãã¯"
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
-#, fuzzy
-#~ msgid "reset tags"
-#~ msgstr "ã‚¿ã‚°ã‚’ã¿ã‚‹"
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
-#, fuzzy
-#~ msgid "Search tip:"
-#~ msgstr "検索çµæžœ"
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr ""
-#~ "<div class=\"questions-count\">%(num_q)s</div>questions <strong>without "
-#~ "accepted answers</strong>"
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "ã“ã“ã«æœªå›žç­”ã®è³ªå•ãŒã‚ã‚Šã¾ã›ã‚“。"
-#, fuzzy
-#~ msgid "resetting author"
-#~ msgstr "作者ã«ãŸãšã­ã‚‹"
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr "ã“ã“ã«è³ªå•ãŒã‚ã‚Šã¾ã›ã‚“。"
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "興味ã‚ã‚‹ã‚¿ã‚°"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
-#, fuzzy
-#~ msgid "starting over"
-#~ msgstr "作者ã«ãŸãšã­ã‚‹"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr ""
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "探ã—ã¦ã„ãŸç‰©ã¯è¦‹ä»˜ã‹ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ"
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr ""
-#~ msgid "Please, post your question!"
-#~ msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr ""
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr ""
-#, fuzzy
-#~ msgid "RSS"
-#~ msgstr "RSSã§ï¼š"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "探ã—ã¦ã„ãŸç‰©ã¯è¦‹ä»˜ã‹ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ"
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "ã‚¿ã‚°ã¯%(max_chars)s文字以内ã®é•·ã•ã§ã™"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "ãœã²ã€è³ªå•ã‚’投稿ã—ã¾ã—ょã†ï¼"
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "%(tag_count)sã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "%(tag_count)sã‚¿ã‚°ã¾ã§ã€%(max_chars)s文字未満"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)個ã®å›žç­”:\n"
-#~ " "
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "最å¤ã®å›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
-#~ msgid "oldest answers"
-#~ msgstr "回答順"
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
-#~ msgid "newest answers will be shown first"
-#~ msgstr "最新ã®å›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
-#~ msgid "newest answers"
-#~ msgstr "最新"
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "ã‚‚ã£ã¨ã‚‚投票ã•ã‚ŒãŸå›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s 個ã®å›žç­”\n"
+" "
-#~ msgid "popular answers"
-#~ msgstr "支æŒã•ã‚Œã¦ã„ã‚‹é †"
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
-#~ msgid "Answer Your Own Question"
-#~ msgstr "ã‚ãªãŸè‡ªèº«ã®è³ªå•ã«å›žç­”ã™ã‚‹"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "最å¤ã®å›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "最新ã®å›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
-#, fuzzy
-#~ msgid "Your answer"
-#~ msgstr "支æŒã•ã‚Œã¦ã„ã‚‹é †"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "ã‚‚ã£ã¨ã‚‚投票ã•ã‚ŒãŸå›žç­”ãŒæœ€åˆã«è¡¨ç¤ºã•ã‚Œã¾ã™"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "ã“ã®è³ªå•ã®æœ€åˆã®å›žç­”ã«ãªã‚Œã¾ã™ï¼"
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr ""
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr ""
-#~ "<span class='strong big'>Please start posting your answer anonymously</"
-#~ "span> - your answer will be saved within the current session and "
-#~ "published after you log in or create a new account. Please try to give a "
-#~ "<strong>substantial answer</strong>, for discussions, <strong>please use "
-#~ "comments</strong> and <strong>please do remember to vote</strong> (after "
-#~ "you log in)!"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr ""
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "<span class='big strong'>よã†ã“ãï¼</span>"
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "ã“ã®è³ªå•ã®æœ€åˆã®å›žç­”ã«ãªã‚Œã¾ã™ï¼"
-# "<span class='big strong'>You are welcome to answer your own question</span>, "
-# "but please make sure to give an <strong>answer</strong>. Remember that you "
-# "can always <strong>revise your original question</strong>. Please "
-# "<strong>use comments for discussions</strong> and <strong>please don't "
-# "forget to vote :)</strong> for the answers that you liked (or perhaps did "
-# "not like)! "
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#, fuzzy
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "Answer the question"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "ã‚‚ã—ãã¯"
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
-#~ msgid "email"
-#~ msgstr "メールアドレス"
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "ã‚¿ã‚°"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "メールアドレス"
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr ""
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "メール更新ãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸ"
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "質å•ãƒ•ã‚£ãƒ¼ãƒ‰ã‚’購読ã™ã‚‹"
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr ""
-#~ msgid "question asked"
-#~ msgstr "質å•æ—¥"
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
-#~ msgid "question was seen"
-#~ msgstr "閲覧数"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
-#~ msgid "times"
-#~ msgstr "回"
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
-#~ msgid "last updated"
-#~ msgstr "最終更新日"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
-#~ msgid "Related questions"
-#~ msgstr "関係ã—ãŸè³ªå•"
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr ""
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> once a day by email when there are any new "
-#~ "answers or updates"
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr ""
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+#: skins/default/templates/question/sidebar.html:48
#, fuzzy
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
+msgid "Asked"
+msgstr "質å•æ—¥"
-#, fuzzy
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "\n"
-#~ "(note: you can always <a href='%(profile_url)s?"
-#~ "sort=email_subscriptions'>adjust frequency</a> of email updates)"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "回"
+#: skins/default/templates/question/sidebar.html:54
#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "ユーザプロファイル"
+msgid "Last updated"
+msgstr "最終更新日"
-#~ msgid "Edit user profile"
-#~ msgstr "ユーザープロファイルを編集ã™ã‚‹"
-
-#~ msgid "edit profile"
-#~ msgstr "プロファイルを編集ã™ã‚‹"
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "関係ã—ãŸè³ªå•"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
#, fuzzy
-#~ msgid "change picture"
-#~ msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
-
-#~ msgid "Registered user"
-#~ msgstr "登録ユーザー"
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Notify me</strong> weekly when there are any new answers or updates"
-#~ msgid "Screen Name"
-#~ msgstr "スクリーンå"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
-#~ msgid "Update"
-#~ msgstr "æ›´æ–°ã™ã‚‹"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "メール登録設定"
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
-#~ msgid "Email subscription settings"
-#~ msgstr "メール登録設定"
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "ユーザープロファイルを編集ã™ã‚‹"
-#~ msgid "email subscription settings info"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "プロファイルを編集ã™ã‚‹"
-#~ msgid "Stop sending email"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’åœæ­¢ã™ã‚‹"
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "写真を変更ã™ã‚‹"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "削除ã™ã‚‹"
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "設定"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "登録ユーザー"
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "%(tag_count)sã¤ä»¥å†…ã®ã‚¿ã‚°ã‚’使ã„ã¾ã—ょã†"
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "スクリーンå"
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "削除ã™ã‚‹"
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(変更ã§ãã¾ã›ã‚“)"
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "最終活動"
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "æ›´æ–°ã™ã‚‹"
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "最新"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "購読"
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "銅賞"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "メール登録設定"
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "最終活動"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "ベストアンサーå°"
-
-#~ msgid "update profile"
-#~ msgstr "プロファイルを更新ã™ã‚‹"
-
-#~ msgid "real name"
-#~ msgstr "実å"
-
-#~ msgid "member for"
-#~ msgstr "登録日"
-
-#~ msgid "last seen"
-#~ msgstr "最終活動"
-
-#~ msgid "user website"
-#~ msgstr "ユーザーã®ã‚¦ã‚§ãƒ–サイト"
-
-#~ msgid "location"
-#~ msgstr "場所"
-
-#~ msgid "age"
-#~ msgstr "å¹´é½¢"
-
-#~ msgid "age unit"
-#~ msgstr "æ­³"
+msgid "Stop Email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#~ msgid "todays unused votes"
-#~ msgstr "今日ã®ä½¿ã‚ã‚Œã¦ãªã„投票"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
-#~ msgid "votes left"
-#~ msgstr "消ãˆåŽ»ã£ãŸæŠ•ç¥¨"
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "å—ä¿¡ç®±"
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "場所"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr ""
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "ユーザプロファイル"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "å¾³"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "編集をä¿å­˜ã™ã‚‹"
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "å¾³"
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "既読"
-#~ msgid "Add"
-#~ msgstr "追加ã™ã‚‹"
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "æ–°è¦"
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "ãªã—"
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "メッセージ本文:"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "既読ã«ã™ã‚‹"
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "メッセージ:"
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "æ–°è¦ã«ã™ã‚‹"
-#, fuzzy
-#~ msgid "Followed by %(count)s person"
-#~ msgid_plural "Followed by %(count)s people"
-#~ msgstr[0] "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
-#, fuzzy
-#~ msgid "Following %(count)s person"
-#~ msgid_plural "Following %(count)s people"
-#~ msgstr[0] "ã“ã®è³ªå•ã‚’フォローã™ã‚‹"
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr "フラグを削除ã™ã‚‹"
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "ユーザプロファイル"
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr "コメントを投稿ã™ã‚‹"
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "最近ã®æ´»å‹•"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "プロファイルを更新ã™ã‚‹"
-#, fuzzy
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "ユーザプロファイル"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "ログイン方法を管ç†ã™ã‚‹"
-#~ msgid "overview"
-#~ msgstr "概略"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "実å"
+#: skins/default/templates/user_profile/user_info.html:58
#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<span class=\"count\">%(counter)s</span>個ã®è³ªå•\n"
-#~ " "
+msgid "member since"
+msgstr "登録日"
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] ""
-#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span>ãƒãƒƒã‚¸\n"
-#~ " "
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "最終活動"
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "回答㯠%(vote_count)s 回投票ã•ã‚Œã¾ã—ãŸ"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "ã“ã®å›žç­”ãŒå¦¥å½“ã§ã‚ã‚‹ã¨é¸ã°ã‚Œã¾ã—ãŸ"
+msgid "website"
+msgstr "ウェブサイト"
-#, fuzzy
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span>ãƒãƒƒã‚¸\n"
-#~ " "
-
-# msgid "<span class=\"count\">{{cnt}}</span> Vote"
-# msgid_plural "<span class=\"count\">{{cnt}}</span> Votes"
-# msgstr[0] "<span class=\"count\">{{cnt}}</span>個ã®æŠ•ç¥¨"
-#~ msgid "thumb up"
-#~ msgstr "イイãƒ"
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "場所"
-#, fuzzy
-#~ msgid "user has voted up this many times"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "å¹´é½¢"
-#~ msgid "thumb down"
-#~ msgstr "( ´ _ã‚`)"
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "æ­³"
-#, fuzzy
-#~ msgid "user voted down this many times"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "今日ã®ä½¿ã‚ã‚Œã¦ãªã„投票"
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] ""
-#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span>ãƒãƒƒã‚¸\n"
-#~ " "
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "消ãˆåŽ»ã£ãŸæŠ•ç¥¨"
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] ""
-#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span>ãƒãƒƒã‚¸\n"
-#~ " "
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr ""
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "回答"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
-#~ msgid "User profile"
-#~ msgstr "ユーザープロファイル"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "ユーザーã®çŠ¶æ…‹ãŒå¤‰ã‚ã‚Šã¾ã—ãŸ"
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "ä¿å­˜"
-#~ msgid "reputation history"
-#~ msgstr "信用度履歴"
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "マッãƒã—ãŸè³ªå•ï¼š"
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
-#~ msgid "recent activity"
-#~ msgstr "最近ã®æ´»å‹•"
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "ユーザーã®è©•åˆ¤ã‚’変更ã—ã¾ã—ãŸ"
-#~ msgid "casted votes"
-#~ msgstr "votes"
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
-#~ msgid "votes"
-#~ msgstr "投票"
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "追加ã™ã‚‹"
-#~ msgid "answer tips"
-#~ msgstr "コツ"
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr ""
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã«å³ã—ãŸå›žç­”ã‚’ã—ã¦ãã ã‚ã—"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "è­°è«–ã«ã‹ã¿åˆã†ã‚ˆã‚Šã‚€ã—ã‚ã€å›žç­”ã‚’ã‚ãŸãˆã‚‹ã‚ˆã†ã«ã—ã¦ã¿ã¾ã—ょã†"
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "メッセージãŒé€ä¿¡ã•ã‚Œã¾ã—ãŸ"
-#~ msgid "please try to provide details"
-#~ msgstr "詳細をæä¾›ã—ã¦ã¿ã¾ã—ょã†"
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "メッセージã®é€ä¿¡"
-#~ msgid "be clear and concise"
-#~ msgstr "明確ã§æ­£ç¢ºãªè³ªå•ã‚’"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
-#~ msgid "see frequently asked questions"
-#~ msgstr "良ãã‚る質å•ã‚’ã¿ã¾ã—ょã†"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown 記法ã®åŸºæœ¬"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*斜体* ã‚‚ã—ã㯠__斜体__"
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**太文字** ã‚‚ã—ã㯠__太文字__"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
-#~ msgid "link"
-#~ msgstr "リンク"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
-#~ msgid "text"
-#~ msgstr "テキスト"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "%(count)s 人ã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã¾ã™"
-#~ msgid "image"
-#~ msgstr "ç”»åƒ"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "%(count)s 人をフォローã—ã¦ã„ã¾ã™"
-#~ msgid "numbered list:"
-#~ msgstr "数字付ãリスト"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "基本HTMLタグもサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™"
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
-#~ msgid "learn more about Markdown"
-#~ msgstr "Markdown記法ã«ã¤ã„ã¦ã•ã‚‰ã«å­¦ã¶"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
-#~ msgid "ask a question"
-#~ msgstr "質å•ã™ã‚‹"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "ã‚ãªãŸã®ã‚«ãƒ«ãƒžã®å¤‰æ›´ãƒ­ã‚°"
-#, fuzzy
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class='strong big'>Looks like your email address, %(email)s has not "
-#~ "yet been validated.</span> To post messages you must verify your email, "
-#~ "please see <a href='%(email_validation_faq_url)s'>more details here</a>."
-#~ "<br>You can submit your question now and validate email after that. Your "
-#~ "question will saved as pending meanwhile. "
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "%(user_name)s ã®ã‚«ãƒ«ãƒžã®å¤‰æ›´ãƒ­ã‚°"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "投稿ã™ã‚‹ãŸã‚ã«ãƒ­ã‚°ã‚¤ãƒ³ï¼ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—ã™ã‚‹"
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "概略"
-#~ msgid "Ask your question"
-#~ msgstr "質å•ã‚’投稿ã™ã‚‹"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> 個ã®è³ªå•"
-#~ msgid "about"
-#~ msgstr "概è¦"
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "回答"
-#~ msgid "privacy policy"
-#~ msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
-#~ msgid "give feedback"
-#~ msgstr "フィードãƒãƒƒã‚¯ã™ã‚‹"
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
-#~ msgid "back to home page"
-#~ msgstr "ホームã«æˆ»ã‚‹"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
-#~ msgid "users"
-#~ msgstr "ユーザー"
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "イイãƒ"
-#~ msgid "badges"
-#~ msgstr "ãƒãƒƒã‚¸"
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
-#~ msgid "question tips"
-#~ msgstr "コツ"
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "( ´ _ã‚`)"
-#~ msgid "please ask a relevant question"
-#~ msgstr "CNPROG コミュニティーã«é©ã—ãŸè³ªå•ã‚’ã—ã¾ã—ょã†ã€‚"
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
-#~ msgid "please try provide enough details"
-#~ msgstr "å¿…è¦å分ã«è©³ã—ã質å•ã—ã¾ã—ょã†ã€‚"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> 個ã®ã‚¿ã‚°"
-#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "閲覧"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> 個ã®ãƒãƒƒã‚¸"
-#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "回答"
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr ""
-#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "投票"
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "ユーザープロファイル"
-#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "未回答"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "ユーザã®ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "ãƒãƒƒã‚¸"
+msgid "Graph of user karma"
+msgstr "Graph of user karma"
-#~ msgid "logout"
-#~ msgstr "ログアウト"
-
-#~ msgid "login"
-#~ msgstr "ログイン"
-
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "設定"
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
-#, fuzzy
-#~ msgid "(please enter a valid email)"
-#~ msgstr "有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„"
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
-# "ã“れらã®ãƒãƒªã‚·ãƒ¼ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å€‹äººæƒ…å ±ä¿è­·ã®æ”¹å–„ã®ç‚ºã«ä¿®æ­£ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ãã®ã‚ˆã†ãªå¤‰æ›´ãŒã‚ã‚‹ãŸã³ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å†…部通知システムを経由ã—ã¦é€šçŸ¥ã‚’å—ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚"
-# "These policies may be adjusted to improve protection of user's privacy. "
-# "Whenever such changes occur, users will be notified via the internal "
-# "messaging system. "
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¨¿ã¯è‰¯ã„ã¨æ€ã†ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "投票"
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "ã“ã®æŠ•ç¥¨ã¯è‰¯ããªã„(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr "ã“ã‚Œã¯ã‚‚ã—ã‹ã—ãŸã‚‰ã¤ãŽã®ã‚ˆã†ãªç†ç”±ã§ãŠã“ã£ãŸã‹ã‚‚ã—ã‚Œãªã„:"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)個ã®å›žç­”:\n"
-#~ " "
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:6
#, fuzzy
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã«ç™»éŒ²ã™ã‚‹ï¼ˆå†åº¦ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼‰"
-
-#~ msgid "Question tags"
-#~ msgstr "ã‚¿ã‚°"
+msgid "give an answer interesting to this community"
+msgstr "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã«å³ã—ãŸå›žç­”ã‚’ã—ã¦ãã ã‚ã—"
-#~ msgid "questions"
-#~ msgstr "質å•"
-
-#~ msgid "search"
-#~ msgstr "検索ã™ã‚‹"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "è­°è«–ã«ã‹ã¿åˆã†ã‚ˆã‚Šã‚€ã—ã‚ã€å›žç­”ã‚’ã‚ãŸãˆã‚‹ã‚ˆã†ã«ã—ã¦ã¿ã¾ã—ょã†"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
#, fuzzy
-#~ msgid "followed"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+msgid "provide enough details"
+msgstr "å¿…è¦å分ã«è©³ã—ã質å•ã—ã¾ã—ょã†ã€‚"
-#~ msgid "Email (not shared with anyone):"
-#~ msgstr "メールアドレス(ã»ã‹ã®ã²ã¨ã«ã¯éžå…¬é–‹ï¼‰ï¼š"
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "明確ã§æ­£ç¢ºãªè³ªå•ã‚’"
-#, fuzzy
-#~ msgid "Site modes"
-#~ msgstr "サイトã®çŠ¶æ…‹"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "良ãã‚る質å•ã‚’ã¿ã¾ã—ょã†"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
#, fuzzy
-#~ msgid "Setting groups"
-#~ msgstr "設定"
+msgid "Markdown basics"
+msgstr "Markdown 記法ã®åŸºæœ¬"
-#~ msgid "community wiki"
-#~ msgstr "コミュニティー wiki"
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*斜体*"
-#~ msgid "Location"
-#~ msgstr "場所"
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**太字**"
-#, fuzzy
-#~ msgid "Askbot"
-#~ msgstr "QAã¨ã¯"
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*斜体* ã¾ãŸã¯ _斜体_"
-#~ msgid "allow only selected tags"
-#~ msgstr "é¸æŠžã•ã‚ŒãŸã‚¿ã‚°ã®ã¿"
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**太文字** ã‚‚ã—ã㯠__太文字__"
-#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
-#~ msgstr "ã“ã“ã¯ã¯ã˜ã‚ã¦ã§ã™ã‹ï¼Ÿ <a href=\"%s\">FAQ</a>ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã—ょã†ã€‚"
-
-#, fuzzy
-#~ msgid "newquestion/"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„質å•"
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "テキスト"
-#, fuzzy
-#~ msgid "newanswer/"
-#~ msgstr "回答"
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "ç”»åƒ"
-#, fuzzy
-#~ msgid "MyOpenid user name"
-#~ msgstr "ユーザーåé †"
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "数字付ãリスト"
-#~ msgid "Email verification subject line"
-#~ msgstr "Verification Email from Q&A forum"
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "基本HTMLタグもサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™"
-#, fuzzy
-#~ msgid "disciplined"
-#~ msgstr "è¦å¾‹çš„"
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "Markdown記法ã«ã¤ã„ã¦ã•ã‚‰ã«å­¦ã¶"
-#, fuzzy
-#~ msgid "Deleted own post with score of 3 or higher"
-#~ msgstr "%s 以上ã®ã‚¹ã‚³ã‚¢ã®è‡ªèº«ã®ãƒã‚¹ãƒˆã‚’削除ã—ãŸ"
-
-#, fuzzy
-#~ msgid "peer-pressure"
-#~ msgstr "åŒåƒšã‹ã‚‰ã®ãƒ—レッシャー"
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
-#, fuzzy
-#~ msgid "nice-answer"
-#~ msgstr "ナイス回答"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#, fuzzy
-#~ msgid "nice-question"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„質å•"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#, fuzzy
-#~ msgid "pundit"
-#~ msgstr "評論家"
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "貢献者"
-#, fuzzy
-#~ msgid "popular-question"
-#~ msgstr "人気ã®è³ªå•"
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
-#, fuzzy
-#~ msgid "citizen-patrol"
-#~ msgstr "市民パトロール"
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "概è¦"
-#, fuzzy
-#~ msgid "cleanup"
-#~ msgstr "クリーンアップ"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "ヘルプ"
-#, fuzzy
-#~ msgid "critic"
-#~ msgstr "批評家"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
-#, fuzzy
-#~ msgid "editor"
-#~ msgstr "編集者"
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "フィードãƒãƒƒã‚¯ã™ã‚‹"
-#, fuzzy
-#~ msgid "organizer"
-#~ msgstr "オーガナイザー"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "ホームã«æˆ»ã‚‹"
-#, fuzzy
-#~ msgid "scholar"
-#~ msgstr "学者"
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "%(site)s ã®ãƒ­ã‚´"
-#, fuzzy
-#~ msgid "student"
-#~ msgstr "生徒"
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "ユーザー"
-#, fuzzy
-#~ msgid "supporter"
-#~ msgstr "サãƒãƒ¼ã‚¿ãƒ¼"
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "ãƒãƒƒã‚¸"
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "teacher"
-#~ msgstr "教師"
+msgid "ask a question interesting to this community"
+msgstr "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã«å³ã—ãŸå›žç­”ã‚’ã—ã¦ãã ã‚ã—"
-#~ msgid "Answered first question with at least one up vote"
-#~ msgstr "質å•ã«æœ€åˆã«å›žç­”ã—ã¤ã¤å°‘ãªãã¨ã‚‚一ã¤ã®ä¸Šã’投票ã—ãŸ"
-
-#, fuzzy
-#~ msgid "autobiographer"
-#~ msgstr "自ä¼ä½œå®¶"
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "表示"
-#, fuzzy
-#~ msgid "self-learner"
-#~ msgstr "自習者"
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "回答"
-#, fuzzy
-#~ msgid "great-answer"
-#~ msgstr "å‰å¤§ãªå›žç­”"
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "投票"
-#, fuzzy
-#~ msgid "Answer voted up 100 times"
-#~ msgstr "Post Your Answer"
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "ã™ã¹ã¦"
-#, fuzzy
-#~ msgid "great-question"
-#~ msgstr "å‰å¤§ãªè³ªå•"
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr ""
-#, fuzzy
-#~ msgid "Question voted up 100 times"
-#~ msgstr "質å•ãŒ %s 回上ã’投票ã•ã‚ŒãŸ"
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
-#, fuzzy
-#~ msgid "stellar-question"
-#~ msgstr "スター質å•"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr ""
-#, fuzzy
-#~ msgid "Question favorited by 100 users"
-#~ msgstr "質å•ãŒ %s ユーザã®ãŠæ°—ã«å…¥ã‚Šã«ãªã£ãŸ"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
-#, fuzzy
-#~ msgid "famous-question"
-#~ msgstr "è‘—åãªè³ªå•"
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr ""
-#, fuzzy
-#~ msgid "Asked a question with 10,000 views"
-#~ msgstr "%s 回読ã¾ã‚ŒãŸè³ªå•ã‚’ã—ãŸ"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "カルマ:"
-#, fuzzy
-#~ msgid "good-answer"
-#~ msgstr "良ã„回答"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "ãƒãƒƒã‚¸:"
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "good-question"
-#~ msgstr "良ã„質å•"
+msgid "sign out"
+msgstr "サインアウト/"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "Question voted up 25 times"
-#~ msgstr "質å•ãŒ %s 回上ã’投票ã•ã‚ŒãŸ"
+msgid "Hi, there! Please sign in"
+msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
-#, fuzzy
-#~ msgid "favorite-question"
-#~ msgstr "ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "設定"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "civic-duty"
-#~ msgstr "市民ã®ç¾©å‹™"
+msgid "no"
+msgstr "ãªã—"
-#~ msgid "Strunk & White"
-#~ msgstr "「木下是清ã€"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
-#, fuzzy
-#~ msgid "strunk-and-white"
-#~ msgstr "「木下是清ã€"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "投稿ã™ã‚‹ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„"
-#, fuzzy
-#~ msgid "Generalist"
-#~ msgstr "é€ä¿¡è€…ã¯"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
-#, fuzzy
-#~ msgid "generalist"
-#~ msgstr "é€ä¿¡è€…ã¯"
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯å¿…é ˆã§ã™"
+#: utils/forms.py:60
#, fuzzy
-#~ msgid "expert"
-#~ msgstr "レãƒãƒ¼ãƒˆã™ã‚‹"
+msgid "Choose a screen name"
+msgstr "スクリーンåã‚’é¸æŠžã—ã¾ã—ょã†"
-#, fuzzy
-#~ msgid "notable-question"
-#~ msgstr "å“越ã—ãŸè³ªå•"
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "ユーザåã¯å¿…é ˆã§ã™"
-#, fuzzy
-#~ msgid "Asked a question with 2,500 views"
-#~ msgstr "%s 回読ã¾ã‚ŒãŸè³ªå•ã‚’ã—ãŸ"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr ""
+"申ã—訳ã”ã–ã„ã¾ã›ã‚“ã€ã“ã®åå‰ã¯ã™ã§ã«å–られã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’ãŠé¸ã³ãã ã•ã„"
-#, fuzzy
-#~ msgid "enlightened"
-#~ msgstr "よãã‚ã‹ã£ã¦ã„らã£ã—ゃる"
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "申ã—訳ã”ã–ã„ã¾ã›ã‚“ã€ã“ã®åå‰ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。他ã®ã‚’ãŠé¸ã³ãã ã•ã„"
-#, fuzzy
-#~ msgid "guru"
-#~ msgstr "導師"
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr ""
-#, fuzzy
-#~ msgid "Accepted answer and voted up 40 times"
-#~ msgstr "回答ãŒç´å¾—ã•ã‚Œã€%s 回上ã’投票ã•ã‚ŒãŸ"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
-#, fuzzy
-#~ msgid "necromancer"
-#~ msgstr "ãƒã‚¯ãƒ­ãƒžãƒ³ã‚µãƒ¼"
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
-#, fuzzy
-#~ msgid "taxonomist"
-#~ msgstr "体系学者"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
-#~ msgid "About"
-#~ msgstr "QAã¨ã¯"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#~ msgid "how to validate email title"
-#~ msgstr "How to validate email and why?"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯å¿…é ˆã§ã™"
-#~ msgid ""
-#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
-#~ "s"
-#~ msgstr ""
-#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
-#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
-#~ "changed your email address - <strong>check your email and click the "
-#~ "included link</strong>.<br>The link contains a key generated specifically "
-#~ "for you. You can also <button style='display:inline' "
-#~ "type='submit'><strong>get a new key</strong></button> and check your "
-#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
-#~ "validation is required to make sure that <strong>only you can post "
-#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
-#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
-#~ "the most interesting questions. Also, when you sign up for the first time "
-#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
-#~ "strong></a> personal image.</p>"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„"
-#~ msgid "Sender is"
-#~ msgstr "é€ä¿¡è€…ã¯"
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã¯ã™ã§ã«èª°ã‹åˆ¥äººã«ã¤ã‹ã‚ã‚Œã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’ãŠé¸ã³ãã ã•ã„。"
-#~ msgid "Message body:"
-#~ msgstr "メッセージ本文:"
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "パスワードã¯å¿…é ˆã§ã™"
-#~ msgid ""
-#~ "As a registered user you can login with your OpenID, log out of the site "
-#~ "or permanently remove your account."
-#~ msgstr ""
-#~ "Clicking <strong>Logout</strong> will log you out from the forumbut will "
-#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
-#~ "completely - please make sure to log out from your OpenID provider as "
-#~ "well."
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#~ msgid "Logout now"
-#~ msgstr "ã„ã¾ãƒ­ã‚°ã‚¢ã‚¦ãƒˆã™ã‚‹"
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "確èªç”¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„"
-#~ msgid ""
-#~ "remove favorite mark from this question (click again to restore mark)"
-#~ msgstr "ã“ã®è³ªå•ã‚’ãŠæ°—ã«å…¥ã‚Šã‹ã‚‰ã¨ã‚Šã®ãžã(å†åº¦ã‚¯ãƒªãƒƒã‚¯ã§å†ç™»éŒ²ï¼‰"
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+"申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€å…¥åŠ›ã—ãŸãƒ‘スワードã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚å†åº¦å…¥åŠ›ã—ã¦ãã "
+"ã•ã„。"
-#~ msgid "see questions tagged '%(tag_name)s'"
-#~ msgstr "'%(tag_name)s'ã‚¿ã‚°ã¥ã‘られãŸè³ªå•ã‚’ã¿ã‚‹"
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "二日å‰"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(q_num)s question\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(q_num)s questions\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question</p>"
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "昨日"
-#, fuzzy
-#~ msgid "tagged"
-#~ msgstr "å†åº¦ã‚¿ã‚°ä»˜ã‘"
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "%(hr)d 時間å‰"
-#~ msgid "favorites"
-#~ msgstr "ãŠæ°—ã«å…¥ã‚Š"
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "%(min)d 分å‰"
-#, fuzzy
-#~ msgid "this questions was selected as favorite %(cnt)s time"
-#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
-#~ msgstr[0] "ã“ã®è³ªå•ã¯ãŠæ°—ã«å…¥ã‚Šã«é¸ã°ã‚Œã¾ã—ãŸ"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
-#~ msgid "Login name"
-#~ msgstr "ログインå"
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
-#, fuzzy
-#~ msgid "home"
-#~ msgstr "ホーム"
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
-#~ msgid "I am a Human Being"
-#~ msgstr "人間ã§ã™"
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " vote\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " votes\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "(%(comment_count)s個ã®ã‚³ãƒ¡ãƒ³ãƒˆï¼‰\n"
-#~ " "
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " answer \n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " answers \n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)個ã®å›žç­”:\n"
-#~ " "
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " view\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " views\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)個ã®å›žç­”:\n"
-#~ " "
-
-#~ msgid "views"
-#~ msgstr "閲覧"
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
-#~ msgid "reputation points"
-#~ msgstr "å¾³"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+#: views/commands.py:112
#, fuzzy
-#~ msgid "badges: "
-#~ msgstr "ãƒãƒƒã‚¸"
-
-#~ msgid "Your question and all of it's answers have been deleted"
-#~ msgstr "ã‚ãªãŸã®è³ªå•ã¨ãã®å›žç­”ã®ã™ã¹ã¦ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "申ã—訳ã”ã–ã„ã¾ã›ã‚“ãŒã€åŒ¿åã®è¨ªå•è€…ã¯ã“ã®æ©Ÿèƒ½ã‚’利用ã§ãã¾ã›ã‚“"
-#~ msgid "Your question has been deleted"
-#~ msgstr "ã‚ãªãŸã®è³ªå•ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
-#~ msgid "The question and all of it's answers have been deleted"
-#~ msgstr "質å•ã¨ãã®å›žç­”ã®ã™ã¹ã¦ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
-#~ msgid "The question has been deleted"
-#~ msgstr "質å•ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
-#~ msgid "question"
-#~ msgstr "質å•"
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
-#~ msgid "Most <strong>recently updated</strong> questions"
-#~ msgstr "<strong>最近更新ã•ã‚ŒãŸ</strong>質å•"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href='%(details_url)s'>more details here</a>"
-#~ msgid "most <strong>recently asked</strong> questions"
-#~ msgstr "<strong>最近尋ã­ã‚‰ã‚ŒãŸ</strong>質å•"
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "メール更新頻度ãŒæ—¥åˆŠã«è¨­å®šã•ã‚Œã¾ã—ãŸã€‚"
-#~ msgid "most <strong>active</strong> questions in the last 24 hours</strong>"
-#~ msgstr "最近24時間ã§ã‚‚ã£ã¨ã‚‚<strong>活発ãª</strong>質å•"
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
-#~ msgid "title must be at least 10 characters"
-#~ msgstr "タイトルã¯ï¼‘ï¼æ–‡å­—以上必è¦ã§ã™"
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
-#~ msgid "question content must be at least 10 characters"
-#~ msgstr "質å•ã®å†…容ã¯ï¼‘ï¼æ–‡å­—以上必è¦ã§ã™"
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
-#~ msgid ""
-#~ "Tags are short keywords, with no spaces within. At least %(min)s and up "
-#~ "to %(max)s tags can be used."
-#~ msgstr ""
-#~ "ã‚¿ã‚°ã¯çŸ­ã„キーワードã§ç©ºç™½æ–‡å­—(スペース)ã¯å«ã‚ã¾ã›ã‚“。少ãªãã¨ã‚‚ %(min)"
-#~ "s ã¤ã€ãã—㦠%(max)s ã¤ã¾ã§ã®ã‚¿ã‚°ãŒä½¿ç”¨ã§ãã¾ã™ã€‚"
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "ã“ã“ã«ã‚µã‚¤ãƒ³ã—ã¦ãã ã•ã„:"
-#~ msgid ""
-#~ "please use following characters in tags: letters 'a-z', numbers, and "
-#~ "characters '.-_#'"
-#~ msgstr "ã‚¿ã‚°ã¨ã—ã¦ä½¿ç”¨å¯èƒ½æ–‡å­—ã¯ã€ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã¨æ•°å­—㨠'.-_#' ã§ã™"
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "%(site)s ã«ã¤ã„ã¦"
-#~ msgid "Automatically accept user's contributions for the email updates"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«æ›´æ–°ã®ãŸã‚ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®è²¢çŒ®ã‚’自動的ã«æ‰¿è«¾ã™ã‚‹"
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "QAフォーラムフィードãƒãƒƒã‚¯"
-#~ msgid "email update message subject"
-#~ msgstr "Q&Aフォーラムã‹ã‚‰ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹"
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "ã”æ„見ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ï¼"
-#~ msgid ""
-#~ "Perhaps you could look up previously sent forum reminders in your mailbox."
-#~ msgstr ""
-#~ "ãŠãらãã€ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã®ä¸­ã«ä»¥å‰é€ã£ãŸãƒ•ã‚©ãƒ¼ãƒ©ãƒ ã®ãƒªãƒžã‚¤ãƒ³ãƒ€ãƒ¼ãŒè¦‹ä»˜ã‹ã‚‹"
-#~ "ã¯ãšã€‚"
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
-#~ msgid "sorry, system error"
-#~ msgstr "残念ãªãŒã‚‰ã€ã‚·ã‚¹ãƒ†ãƒ ã‚¨ãƒ©ãƒ¼"
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
-#~ msgid "Account functions"
-#~ msgstr "アカウント機能"
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
-#~ msgid "Change email "
-#~ msgstr "メールアドレスを変更ã™ã‚‹"
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
-#~ msgid "Add or update the email address associated with your account."
-#~ msgstr "アカウントã«ç´ã¥ã„ãŸé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’追加もã—ãã¯æ›´æ–°ã™ã‚‹"
+#: views/users.py:206
+msgid "moderate user"
+msgstr ""
-#~ msgid "Change OpenID"
-#~ msgstr "OpenIDを変更ã™ã‚‹"
+#: views/users.py:381
+msgid "user profile"
+msgstr "ユーザプロファイル"
-#~ msgid "Change openid associated to your account"
-#~ msgstr "アカウントã«ç´ã¥ã„ãŸOpenIDを変更ã™ã‚‹"
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "ユーザプロファイル概略"
-#~ msgid "Erase your username and all your data from website"
-#~ msgstr "ユーザåã¨ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’ウェブサイトã‹ã‚‰æ¶ˆåŽ»ã™ã‚‹"
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "最近ã®ãƒ¦ãƒ¼ã‚¶ã®æ´»å‹•"
-#~ msgid "toggle preview"
-#~ msgstr "プレビューをトグルã™ã‚‹"
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "プロファイル:最近ã®æ´»å‹•"
-#~ msgid "Markdown Basics"
-#~ msgstr "Markdown 記法ã®åŸºæœ¬"
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "プロファイル:応答"
-#~ msgid "What Are Tags"
-#~ msgstr "ã‚¿ã‚°ã¨ã¯ä½•ã‹"
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "プロファイル:投票"
-#~ msgid "Tags are words that will tell others what this question is about."
-#~ msgstr "ã‚¿ã‚°ã¯è¨€è‘‰ã€ã»ã‹ã®ã²ã¨ã«ã“ã®è³ªå•ã«ã¤ã„ã¦ä¼ãˆã‚‹ãŸã‚ã®ã€‚"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "カルマ"
-#~ msgid "They will help other find your question."
-#~ msgstr "ã‚¿ã‚°ã¯åŠ©ã‘ã‚‹ã€ã»ã‹ã®ã²ã¨ãŒã“ã®è³ªå•ã‚’見ã¤ã‘ã‚‹ã®ã«ã€‚"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
+msgstr "プロファイル:徳"
-#~ msgid "A question can have up to %s tags, but it must have at least %s."
-#~ msgstr "質å•ã«ã¯ %s 個ã¾ã§ã‚¿ã‚°ãŒã¤ã‘られã¾ã™ã€å°‘ãªãã¨ã‚‚ %s 個必è¦ã§ã™ã€‚"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "ユーザã®ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#~ msgid "The users have been awarded with badges:"
-#~ msgstr "ユーザーã¯ãƒãƒƒã‚¸ã‚’授与ã•ã‚Œã¦ã„ã¾ã™ï¼š"
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "プロファイル:ãŠæ°—ã«å…¥ã‚Šã®è³ªå•"
-#~ msgid ""
-#~ "Below is the list of available badges and number of times each type of "
-#~ "badge has been awarded."
-#~ msgstr "次ã®ãƒªã‚¹ãƒˆãŒå–å¾—å¯èƒ½ãªãƒãƒƒã‚¸ã¨èªå®šã•ã‚Œã‚‹ãŸã‚ã®æ•°ã§ã™ã€‚"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "変更ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ"
-#~ msgid "reading channel"
-#~ msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ã‚’読んã§ã„ã‚‹"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "メール更新ãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸ"
-#~ msgid "author blog"
-#~ msgstr "作者ブログ"
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "プロファイル:メール登録ãªã©"
-#~ msgid "number of times"
-#~ msgstr "回数"
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
-#~ msgid "using tags"
-#~ msgstr "タグを利用ã—ã¦ã„ã‚‹"
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
-#~ msgid "subscribe to book RSS feed"
-#~ msgstr "ブックRSSフィードを購読ã™ã‚‹"
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
-#~ msgid ""
-#~ "This is where you can change your password. Make sure you remember it!"
-#~ msgstr ""
-#~ "<span class='strong'>To change your password</span> please fill out and "
-#~ "submit this form"
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
-#~ msgid "privacy"
-#~ msgstr "プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "contact"
-#~ msgstr "ãŠå•ã„åˆã‚ã›"
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
-#~ msgid "books"
-#~ msgstr "ブック"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
-#~ msgid "last updated questions"
-#~ msgstr "最近更新ã•ã‚ŒãŸè³ªå•"
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
-#~ msgid "hottest questions"
-#~ msgstr "ホットãªè³ªå•"
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
-#~ msgid "welcome to website"
-#~ msgstr "よã†ã“ã Q&amp;A フォーラムã¸"
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
-#~ msgid "Recent tags"
-#~ msgstr "最新ã®ã‚¿ã‚°"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "LDAP サービス㮠URL"
-#~ msgid "popular tags"
-#~ msgstr "ã‚¿ã‚°"
+#~ msgid "question_answered"
+#~ msgstr "回答"
-#~ msgid "Recent awards"
-#~ msgstr "最近ã®ãƒãƒƒã‚¸"
+#~ msgid "question_commented"
+#~ msgstr "質å•ã‚³ãƒ¡ãƒ³ãƒˆ"
-#~ msgid "all awards"
-#~ msgstr "ã™ã¹ã¦ã®ãƒãƒƒã‚¸"
+#~ msgid "answer_commented"
+#~ msgstr "回答コメント"
-#~ msgid "subscribe to last 30 questions by RSS"
-#~ msgstr "最新ã®30質å•ã®RSSを購読ã™ã‚‹"
+#~ msgid "answer_accepted"
+#~ msgstr "ç´å¾—ã•ã‚ŒãŸå›žç­”"
-#~ msgid "complete list of questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•ã®ãƒªã‚¹ãƒˆ"
+#~ msgid "Incorrect username."
+#~ msgstr "sorry, there is no such user name"
-#~ msgid "general message about privacy"
+#~ msgid "change %(email)s info"
#~ msgstr ""
-#~ "<p>ã“ã®ã‚¦ã‚§ãƒ–サイトã¯ã€<a href='http://lifesciencedb.jp/lsdb.cgi?"
-#~ "lng=jp&gg=policy'>ライフサイエンス統åˆãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ—ロジェクトサイトãƒãƒª"
-#~ "シー</a>ã«æº–ã˜ã¦ã„ã¾ã™ã€‚</p>"
-
-# "ユーザーã®ãƒ—ライãƒã‚·ãƒ¼ã‚’å°Šé‡ã™ã‚‹äº‹ã¯ã“ã® Q&amp;A フォーラムã®é‡è¦ãªåŽŸå‰‡ã§ã™ã€‚"
-# "ã“ã®ãƒšãƒ¼ã‚¸ã®æƒ…å ±ã¯ã€ã©ã®ã‚ˆã†ã«ã“ã®ãƒ•ã‚©ãƒ¼ãƒ©ãƒ ãŒãƒ¦ãƒ¼ã‚¶ã®ãƒ—ライãƒã‚·ãƒ¼ã‚’ä¿è­·ã—ã¦ã„ã‚‹ã‹ã€"
-# "ã¾ãŸã€ã©ã®ã‚ˆã†ãªã‚¿ã‚¤ãƒ—ã®æƒ…å ±ãŒé›†ã‚られã¦ã„ã‚‹ã®ã‹ã«ã¤ã„ã¦è©³ã—ãè¿°ã¹ã¦ã„ã¾ã™ã€‚"
-# "Respecting users privacy is an important core principle of this Q&amp;A "
-# "forum. Information on this page details how this forum protects your "
-# "privacy, and what type of information is collected."
-#~ msgid "Site Visitors"
-#~ msgstr " "
-
-# "サイト訪å•è€…æ•°"
-#~ msgid "what technical information is collected about visitors"
-#~ msgstr " "
-
-# "質å•é–²è¦§ã€è³ªå•ã‚„回答ã®æ›´æ–°å±¥æ­´ã®æƒ…å ±ã‹ã‚‰ã€"
-# "正確ãªé–²è¦§æ•°ã®ç”£å‡ºã€ãƒ‡ãƒ¼ã‚¿ã®ç„¡æ¬ æ€§ã®ä¿æŒã¨é©åˆ‡ãªæ›´æ–°ã®å ±å‘Šã®ãŸã‚ã«å„ユーザã®è¡Œå‹•ã®æ™‚刻ã¨å†…容ãŒè¨˜éŒ²ã•ã‚Œã¾ã™ã€‚"
-# "Information on question views, revisions of questions and answers - both "
-# "times and content are recorded for each user in order to correctly count "
-# "number of views, maintain data integrity and report relevant updates."
-#~ msgid "Personal Information"
-#~ msgstr " "
-
-# "個人情報"
-#~ msgid "details on personal information policies"
-#~ msgstr " "
-
-# "ä»–ã®ã‚µãƒ¼ãƒ“ス"
-#~ msgid "details on sharing data with third parties"
-#~ msgstr " "
-
-# "フォーラムã«ãŠã„ã¦ã€ãƒ¦ãƒ¼ã‚¶ã®é¸æŠžã¨ã—ã¦å…¬é–‹ã—ã¦ã„ãªã„データã¯ã‚らゆる第三者ã¨å…±æœ‰ã•ã‚Œã¾ã›ã‚“。"
-# "None of the data that is not openly shown on the forum by the choice of the "
-# "user is shared with any third party."
-#~ msgid "Cookies"
-#~ msgstr " "
-
-# "フォーラムソフトウェアã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‚¯ãƒƒã‚­ãƒ¼æŠ€è¡“ã«ã‚ˆã‚Šãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’ä¿æŒã—ã¦ã„ã¾ã™ã€‚フォーラムãŒæ­£å¸¸ã«åƒããŸã‚ã«ã¯ã€ã‚¯ãƒƒã‚­ãƒ¼ã¯ã”利用ã®ãƒ–ラウザã®ä¸­ã§æœ‰åŠ¹åŒ–ã•ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-#
-# "Forum software relies on the internet cookie technology to keep track of "
-# "user sessions. Cookies must be enabled in your browser so that forum can "
-# "work for you."
-#~ msgid "Policy Changes"
-#~ msgstr " "
-
-# "ãƒãƒªã‚·ãƒ¼ã®æ›´æ–°"
-#~ msgid "how privacy policies can be changed"
-#~ msgstr " "
-
-#~ msgid "Title tips"
-#~ msgstr "タイトルã®ã‚³ãƒ„"
-
-#~ msgid "ask a question relevant to the CNPROG community"
-#~ msgstr "CNPROG コミュニティーã«é©ã—ãŸè³ªå•ã‚’ã—ã¾ã—ょã†ã€‚"
-
-#~ msgid "tags help us keep Questions organized"
-#~ msgstr "ã‚¿ã‚°ã¯è³ªå•ã‚’体系化ã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™"
-
-#~ msgid "Found by tags"
-#~ msgstr "タグ付ã‘られãŸè³ªå•"
-
-#~ msgid "Unanswered questions"
-#~ msgstr "未回答質å•"
+#~ "<span class=\"strong big\">Enter your new email into the box below</span> "
+#~ "if you'd like to use another email for <strong>update subscriptions</"
+#~ "strong>.<br>Currently you are using <strong>%(email)s</strong>"
-#~ msgid "Unanswered Questions"
-#~ msgstr "未回答質å•"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<span class='strong big'>Please enter your email address in the box below."
+#~ "</span> Valid email address is required on this Q&amp;A forum. If you "
+#~ "like, you can <strong>receive updates</strong> on interesting questions "
+#~ "or entire forum via email. Also, your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. Email addresses are never shown or otherwise shared with anybody "
+#~ "else."
-#~ msgid "All Questions"
-#~ msgstr "ã™ã¹ã¦ã®è³ªå•"
+#~ msgid "Your new Email"
+#~ msgstr ""
+#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
+#~ "anyone, must be valid)"
-#~ msgid "Questions Tagged With %(tagname)"
-#~ msgstr "%(tagname)ã‚¿ã‚°ã¤ã‘られãŸè³ªå•"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">An email with a validation link has been sent "
+#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
+#~ "your web browser. Email validation is necessary to help insure the proper "
+#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>."
-#~ msgid "most recently asked questions"
-#~ msgstr "最近尋ã­ã‚‰ã‚ŒãŸè³ªå•"
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "<span class=\"strong big\">Your email address %(email)s has not been "
+#~ "changed.</span> If you decide to change it later - you can always do it "
+#~ "by editing it in your user profile or by using the <a "
+#~ "href='%(change_email_url)s'><strong>previous form</strong></a> again."
-#~ msgid "Posted:"
-#~ msgstr "投稿日:"
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr ""
+#~ "<span class='big strong'>Your email address is now set to %(email)s.</"
+#~ "span> Updates on the questions that you like most will be sent to this "
+#~ "address. Email notifications are sent once a day or less frequently - "
+#~ "only when there are any news."
-#~ msgid "Updated:"
-#~ msgstr "更新日:"
+#~ msgid "thanks for verifying email"
+#~ msgstr ""
+#~ "<span class=\"big strong\">Thank you for verifying your email!</span> Now "
+#~ "you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+#~ "if you find a very interesting question you can <strong>subscribe for the "
+#~ "updates</strong> - then will be notified about changes <strong>once a "
+#~ "day</strong> or less frequently."
-#~ msgid "Did not find anything?"
-#~ msgstr "何も見付ã‹ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ"
+#~ msgid "email key not sent"
+#~ msgstr "Validation email not sent"
-#~ msgid ""
-#~ "\n"
-#~ " have total %(q_num)s questions tagged %(tagname)s\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " have total %(q_num)s questions tagged %(tagname)s\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question tagged</"
-#~ "p><p><span class=\"tag\">%(tagname)s</span></p>"
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "<span class='big strong'>Your current email address %(email)s has been "
+#~ "validated before</span> so the new key was not sent. You can <a "
+#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
+#~ "necessary."
-#~ msgid ""
-#~ "\n"
-#~ " have total %(q_num)s questions containing "
-#~ "%(searchtitle)s in full text\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " have total %(q_num)s questions containing "
-#~ "%(searchtitle)s in full text\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question containing "
-#~ "<strong><span class=\"darkred\">%(searchtitle)s</span></strong></p>"
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "%(provider)s login.</span> Please create your <strong>screen name</"
+#~ "strong> and save your <strong>email</strong> address. Saved email address "
+#~ "will let you <strong>subscribe for the updates</strong> on the most "
+#~ "interesting questions and will be used to create and retrieve your unique "
+#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
+#~ "a>.</p>"
#~ msgid ""
-#~ "\n"
-#~ " have total %(q_num)s questions containing "
-#~ "%(searchtitle)s\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " have total %(q_num)s questions containing "
-#~ "%(searchtitle)s\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question with title "
-#~ "containing <strong><span class=\"darkred\">%(searchtitle)s</span></"
-#~ "strong></p>"
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<p><span class='strong big'>Oops... looks like screen name %(username)s "
+#~ "is already used in another account.</span></p><p>Please choose another "
+#~ "screen name to use with your %(provider)s login. Also, a valid email "
+#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>"
#~ msgid ""
-#~ "\n"
-#~ " have total %(q_num)s unanswered questions\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " have total %(q_num)s unanswered questions\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question without an "
-#~ "accepted answer</p>"
-
-#~ msgid "Questions are sorted by the <strong>time of last update</strong>."
-#~ msgstr "<strong>最終更新時ã«</strong>質å•ã¯ã‚½ãƒ¼ãƒˆã•ã‚Œã¦ã¾ã™ã€‚"
-
-#~ msgid "Most recently answered ones are shown first."
-#~ msgstr "<strong>最近回答ã•ã‚ŒãŸ</strong>質å•ã‹ã‚‰è¡¨ç¤ºã—ã¦ã¾ã™ã€‚"
-
-#~ 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 "All tags matching query"
-#~ msgstr "クエリ:"
-
-#~ msgid "authentication settings"
-#~ msgstr "èªè¨¼è¨­å®š"
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "%(provider)s login.</span></p><p>You can either keep your <strong>screen "
+#~ "name</strong> the same as your %(provider)s login name or choose some "
+#~ "other nickname.</p><p>Also, please save a valid <strong>email</strong> "
+#~ "address. With the email you can <strong>subscribe for the updates</"
+#~ "strong> on the most interesting questions. Email address is also used to "
+#~ "create and retrieve your unique avatar image - <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "other preferences"
-#~ msgstr "ãã®ã»ã‹ã®ç’°å¢ƒè¨­å®š"
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<p><span class=\"big strong\">You are here for the first time with your "
+#~ "Facebook login.</span> Please create your <strong>screen name</strong> "
+#~ "and save your <strong>email</strong> address. Saved email address will "
+#~ "let you <strong>subscribe for the updates</strong> on the most "
+#~ "interesting questions and will be used to create and retrieve your unique "
+#~ "avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></"
+#~ "a>.</p>"
-#~ msgid "User tools"
-#~ msgstr "ユーザーツール"
+#~ msgid "This account already exists, please use another."
+#~ msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ä»–ã®ã‚’使ã£ã¦ãã ã•ã„。"
-#~ msgid "image associated with your email address"
-#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«é–¢é€£ã¥ã„ã¦ã„ã‚‹ç”»åƒ"
+#~ msgid "Screen name label"
+#~ msgstr "<strong>スクリーンå</strong> (<i>ä»–ã®ã²ã¨ã«è¡¨ç¤ºã•ã‚Œã¾ã™</i>)"
-#~ msgid "avatar, see %(gravatar_faq_url)s"
-#~ msgstr "<a href='%(gravatar_faq_url)s'>gravatar</a>"
+#~ msgid "Email address label"
+#~ msgstr ""
+#~ "<strong>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹</strong> (<i>will <strong>not</strong> be "
+#~ "shared with anyone, must be valid</i>)"
-#~ msgid "Profile Updated."
-#~ msgstr "プロファイルãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚"
+#~ msgid "receive updates motivational blurb"
+#~ msgstr ""
+#~ "<strong>Receive forum updates by email</strong> - this will help our "
+#~ "community grow and become more useful.<br/>By default <span "
+#~ "class='orange'>Q&amp;A</span> forum sends up to <strong>one email digest "
+#~ "per week</strong> - only when there is anything new.<br/>If you like, "
+#~ "please adjust this now or any time later from your user account."
-#~ msgid "user's website"
-#~ msgstr "ウェブサイト"
+#~ msgid "create account"
+#~ msgstr "サインアップ"
-#~ msgid ""
-#~ "\n"
-#~ " <span class=\"count\">1</span> Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " <span class=\"count\">%(counter)s</span> Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<span class=\"count\">1</span>個ã®å›žç­”\n"
-#~ " "
+#~ msgid "Login"
+#~ msgstr "ログイン"
-#~ msgid ""
-#~ "\n"
-#~ " <span class=\"count\">1</span> Vote\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " <span class=\"count\">%(cnt)s</span> Votes\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " <span class=\"count\">1</span>個ã®æŠ•ç¥¨\n"
-#~ " "
+#~ msgid "Why use OpenID?"
+#~ msgstr "ãªãœOpenIDã‚’ã¤ã‹ã†ã®ã‹ï¼Ÿ"
-#~ msgid "karma history"
-#~ msgstr "å¾³ã®å±¥æ­´"
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "OpenIDã‚’ã¤ã‹ã†ã¨ã€ã‚らãŸã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを作る必è¦ãŒã‚ã‚Šã¾ã›ã‚“。"
-#~ msgid "add new comment"
-#~ msgstr "コメントを追加ã™ã‚‹"
+#~ msgid "reuse openid"
+#~ msgstr ""
+#~ "ã™ã¹ã¦ã®OpenID対応ウェブサイトã§ãŠãªã˜ãƒ­ã‚°ã‚¤ãƒ³ã‚’安全ã«å†åˆ©ç”¨ã§ãã¾ã™ã€‚"
-#~ msgid "Connect your OpenID with this site"
-#~ msgstr "æ–°è¦ãƒ¦ãƒ¼ã‚¶ã‚µã‚¤ãƒ³ã‚¢ãƒƒãƒ—"
+#~ msgid "openid is widely adopted"
+#~ msgstr "ã™ã§ã«å¤šæ•°ã®ã‚¦ã‚§ãƒ–サイトã§OpenIDアカウントãŒåˆ©ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚"
-#~ msgid "Sorry, looks like we have some errors:"
-#~ msgstr "申ã—訳ã”ã–ã„ã¾ã›ã‚“ã€ã„ãã¤ã‹å•é¡ŒãŒã‚るよã†ã§ã™ï¼š"
+#~ msgid "openid is supported open standard"
+#~ msgstr ""
+#~ "OpenIDã¯ã€å¤šãã®çµ„ç¹”ãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„るオープンスタンダードã«åŸºã¥ã„ã¦ã„ã¾"
+#~ "ã™ã€‚"
-#~ msgid "Existing account"
-#~ msgstr "存在ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ"
+#~ msgid "Find out more"
+#~ msgstr "より詳ã—ã知るã«ã¯"
-#~ msgid "Forgot your password?"
-#~ msgstr "パスワードを忘れã¾ã—ãŸã‹ï¼Ÿ"
+#~ msgid "Get OpenID"
+#~ msgstr "OpenIDã‚’å–å¾—ã™ã‚‹"
-#~ msgid "Click to sign in through any of these services."
+#~ msgid "Traditional signup info"
#~ msgstr ""
-#~ "<p><span class=\"big strong\">Please select your favorite login method "
-#~ "below.</span></p><p><font color=\"gray\">External login services use <a "
-#~ "href=\"http://openid.net\"><b>OpenID</b></a> technology, where your "
-#~ "password always stays confidential between you and your login provider "
-#~ "and you don't have to remember another one. CNPROG option requires your "
-#~ "login name and password entered here.</font></p>"
-
-#~ msgid "Enter your "
-#~ msgstr "入力ã—ã¦ãã ã•ã„ã€"
-
-#~ msgid "return to login page"
-#~ msgstr "ログインページã«ã‚‚ã©ã‚‹"
+#~ "<span class='strong big'>If you prefer, create your forum login name and "
+#~ "password here. However</span>, please keep in mind that we also support "
+#~ "<strong>OpenID</strong> login method. With <strong>OpenID</strong> you "
+#~ "can simply reuse your external login (e.g. Gmail or AOL) without ever "
+#~ "sharing your login details with anyone and having to remember yet another "
+#~ "password."
-#~ msgid "Account: change OpenID URL"
-#~ msgstr "アカウント:OpenID URLを変更ã™ã‚‹"
+#~ msgid "Create Account"
+#~ msgstr "アカウントを作æˆã™ã‚‹"
-#~ msgid "Account: delete account"
-#~ msgstr "アカウント:アカウントを消去ã™ã‚‹"
+#~ msgid "answer permanent link"
+#~ msgstr "回答ã®ãƒªãƒ³ã‚¯"
-#~ msgid "Password/OpenID URL"
-#~ msgstr "パスワードï¼OpenID URL"
+#~ msgid "Related tags"
+#~ msgstr "ã‚¿ã‚°"
-#~ msgid "(required for your security)"
-#~ msgstr "(セキュリティã®ãŸã‚ã«å¿…é ˆã§ã™ï¼‰"
+#~ msgid "Ask a question"
+#~ msgstr "質å•ã™ã‚‹"
-#~ msgid "Delete account permanently"
-#~ msgstr "アカウントを永é ã«æ¶ˆåŽ»ã™ã‚‹"
+#~ msgid "Badges summary"
+#~ msgstr "ãƒãƒƒã‚¸ã‚µãƒžãƒªãƒ¼"
-#~ msgid "password recovery information"
+#~ msgid "gold badge description"
#~ msgstr ""
-#~ "<span class='big strong'>Forgot you password? No problems - just get a "
-#~ "new one!</span><br/>Please follow the following steps:<br/>&bull; submit "
-#~ "your user name below and check your email<br/>&bull; <strong>follow the "
-#~ "activation link</strong> for the new password - sent to you by email and "
-#~ "login with the suggested password<br/>&bull; at this you might want to "
-#~ "change your password to something you can remember better"
-
-#~ msgid "Reset password"
-#~ msgstr "æ–°ã—ã„パスワードを発é€ã™ã‚‹"
-
-#~ msgid "return to login"
-#~ msgstr "ログインã«æˆ»ã‚‹"
+#~ "金ãƒãƒƒã‚¸ã¯ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æœ€é«˜ã®æ „誉ã§ã™ã€‚活発ãªå‚加ã«ãã‚ãˆã¦ã€æ·±ã„æ´ž"
+#~ "察ã¨çŸ¥è­˜ã€å®Ÿè¡ŒåŠ›ã‚’示ã—ãŸã“ã¨ã«ã‚ˆã£ã¦ãã‚Œã¯å¾—られã¾ã™ã€‚"
-#~ msgid ""
-#~ "email explanation how to use new %(password)s for %(username)s\n"
-#~ "with the %(key_link)s"
+#~ msgid "silver badge description"
#~ msgstr ""
-#~ "To change your password, please follow these steps:\n"
-#~ "* visit this link: %(key_link)s\n"
-#~ "* login with user name %(username)s and password %(password)s\n"
-#~ "* go to your user profile and set the password to something you can "
-#~ "remember"
+#~ "銀ãƒãƒƒã‚¸ã‚’å¾—ã‚‹ã«ã¯ã€è‘—ã—ã„勤勉ã•ãŒå¿…è¦ã§ã™ã€‚得る事ãŒã§ããŸãªã‚‰ã€ãã‚Œã¯ã“ã®"
+#~ "コミュニティーã¸ã®å‰å¤§ãªè²¢çŒ®ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚"
-#~ msgid "Enter your <span id=\"enter_your_what\">Provider user name</span>"
+#~ msgid "bronze badge description"
#~ msgstr ""
-#~ "<span class=\"big strong\">Enter your </span><span id=\"enter_your_what\" "
-#~ "class='big strong'>Provider user name</span><br/><span class='grey'>(or "
-#~ "select another login method above)</span>"
+#~ "ã“ã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ãƒ¼ã®æ´»å‹•çš„ãªå‚加者ã§ã‚ã‚‹ãªã‚‰ã€ã“ã®ãƒãƒƒã‚¸ã§èªå®šã•ã‚Œã¾ã™ã€‚"
#~ msgid ""
-#~ "Enter your <a class=\"openid_logo\" href=\"http://openid.net\">OpenID</a> "
-#~ "web address"
+#~ "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=\"big strong\">Enter your <a class=\"openid_logo\" href="
-#~ "\"http://openid.net\">OpenID</a> web address</span><br/><span "
-#~ "class='grey'>(or choose another login method above)</span>"
+#~ "is a <strong>question and answer</strong> site - <strong>it is not a "
+#~ "discussion group</strong>. Please avoid holding debates in your answers "
+#~ "as they tend to dilute the essense of questions and answers. For the "
+#~ "brief discussions please use commenting facility."
-#~ msgid "Enter your login name and password"
+#~ msgid "Rep system summary"
#~ msgstr ""
-#~ "<span class='big strong'>Enter your CNPROG login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
-
-#~ msgid "Create account"
-#~ msgstr "アカウントを作æˆã™ã‚‹"
-
-#~ msgid "You are already logged in with that user."
-#~ msgstr "ã™ã§ã«ãƒ­ã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚"
-
-#~ msgid "karuma history"
-#~ msgstr "å¾³ã®è¶³è·¡"
-
-#~ msgid "Password changed."
-#~ msgstr "パスワードãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚"
+#~ "When a question or answer is upvoted, the user who posted them will gain "
+#~ "some points, which are called \"karma points\". These points serve as a "
+#~ "rough measure of the community trust to him/her. Various moderation tasks "
+#~ "are gradually assigned to the users based on those points."
-#~ msgid "allowed file types are 'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'"
-#~ msgstr ""
-#~ "許å¯ã•ã‚Œã¦ã„るファイルタイプ㯠"
-#~ "'jpg'ã€'jpeg'ã€'gif'ã€'bmp'ã€'png'ã¨'tiff'ã§ã™ã€‚"
+#~ msgid "what is gravatar"
+#~ msgstr "What is gravatar?"
-#~ msgid "Please enter valid username and password (both are case-sensitive)."
+#~ msgid "gravatar faq info"
#~ msgstr ""
-#~ "有効ãªãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„(ã©ã¡ã‚‰ã‚‚大文字å°æ–‡å­—ãŒãã¹ã¤"
-#~ "ã•ã‚Œã¾ã™ï¼‰ã€‚"
-
-#~ msgid "This account is inactive."
-#~ msgstr "ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ç„¡åŠ¹ã§ã™"
-
-#~ msgid "Login failed."
-#~ msgstr "ログインã«å¤±æ•—ã—ã¾ã—ãŸ"
-
-#~ msgid "Error, the oauth token is not on the server"
-#~ msgstr "エラー。OAuthトークンãŒã‚ã‚Šã¾ã›ã‚“"
-
-#~ msgid "Something went wrong! Auth tokens do not match"
-#~ msgstr "ãªã«ã‹æ‚ªã„よã†ã§ã™ã€‚èªè¨¼ãƒˆãƒ¼ã‚¯ãƒ³ãŒä¸€è‡´ã—ã¾ã›ã‚“。"
-
-#~ msgid "Sorry, but your input is not a valid OpenId"
-#~ msgstr "残念ãªãŒã‚‰ã€å…¥åŠ›ã•ã‚ŒãŸOpenIDãŒæœ‰åŠ¹ãªã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-
-#~ msgid "The OpenId authentication request was canceled"
-#~ msgstr "OpenID èªè¨¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸ"
-
-#~ msgid "The OpenId authentication failed: "
-#~ msgstr "OpenID èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸï¼š"
+#~ "<strong>Gravatar</strong> means <strong>g</strong>lobally <strong>r</"
+#~ "strong>ecognized <strong>avatar</strong> - your unique avatar image "
+#~ "associated with your email address. It's simply a picture that shows next "
+#~ "to your posts on the websites that support gravatar protocol. By default "
+#~ "gravar appears as a square filled with a snowflake-like figure. You can "
+#~ "<strong>set your image</strong> at <a href='http://gravatar."
+#~ "com'><strong>gravatar.com</strong></a>"
-#~ msgid "Setup needed"
-#~ msgstr "セットアップãŒå¿…è¦ã§ã™"
+#~ msgid "Change tags"
+#~ msgstr "タグを変更ã™ã‚‹"
-#~ msgid "Enter your OpenId Url"
-#~ msgstr "ã‚ãªãŸã®OpenID URLを入力ã—ã¦ãã ã•ã„"
+#~ msgid "reputation"
+#~ msgstr "信用度"
-#~ msgid "first time greeting with %(url)s"
-#~ msgstr "Hello and welcome to OSQA - <a href='%(url)s'>please join us</a>!"
+#~ msgid "oldest answers"
+#~ msgstr "回答順"
-#~ msgid ""
-#~ "\n"
-#~ "\t\t\t\thave total %(q_num)s questions\n"
-#~ "\t\t\t\t"
-#~ msgid_plural ""
-#~ "\n"
-#~ "\t\t\t\thave total %(q_num)s questions\n"
-#~ "\t\t\t\t"
-#~ msgstr[0] ""
-#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question</p>"
+#~ msgid "newest answers"
+#~ msgstr "最新"
-#~ msgid "OSQA administration area"
-#~ msgstr "OSQA 管ç†ã‚¨ãƒªã‚¢"
+#~ msgid "popular answers"
+#~ msgstr "支æŒã•ã‚Œã¦ã„ã‚‹é †"
-#~ msgid "Dashboard"
-#~ msgstr "ダッシュボード"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr ""
+#~ "<span class='strong big'>Please start posting your answer anonymously</"
+#~ "span> - your answer will be saved within the current session and "
+#~ "published after you log in or create a new account. Please try to give a "
+#~ "<strong>substantial answer</strong>, for discussions, <strong>please use "
+#~ "comments</strong> and <strong>please do remember to vote</strong> (after "
+#~ "you log in)!"
-#~ msgid "Welcome to the OSQA administration area."
-#~ msgstr "よã†ã“ãã€OSQA管ç†ã‚¨ãƒªã‚¢ã¸ã€‚"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "<span class='big strong'>よã†ã“ãï¼</span>"
-#~ msgid "Quick statistics"
-#~ msgstr "統計概è¦"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr ""
+#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
+#~ "If you wanted to comment on the question or answer, just <strong>use the "
+#~ "commenting tool</strong>. Please remember that you can always "
+#~ "<strong>revise your answers</strong> - no need to answer the same "
+#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
+#~ "really helps to select the best questions and answers!"
-#~ msgid "Administration menu"
-#~ msgstr "管ç†ãƒ¡ãƒ‹ãƒ¥ãƒ¼"
+#~ msgid "question asked"
+#~ msgstr "質å•æ—¥"
-#~ msgid "You were automatically subscribed to this question."
-#~ msgstr "ã‚ãªãŸã¯è‡ªå‹•çš„ã«ã“ã®è³ªå•ã‚’登録ã—ã¦ã„ã¾ã™ã€‚"
+#~ msgid "question was seen"
+#~ msgstr "閲覧数"
-#~ msgid ""
-#~ "(you can adjust your notification settings on your <a href=\"%s"
-#~ "\">profile</a>)"
+#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
-#~ "(<a href=\"%s\">プロフィール</a>設定ã§é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã®è¨­å®šå¤‰æ›´ãŒå¯èƒ½ã§"
-#~ "ã™))"
-
-#~ msgid "Answers and Comments"
-#~ msgstr "回答ã¨ã‚³ãƒ¡ãƒ³ãƒˆ"
+#~ "<strong>Notify me</strong> once a day by email when there are any new "
+#~ "answers or updates"
-#~ msgid "Notifications and subscription settings"
-#~ msgstr "通知ã¨ç™»éŒ²ã®è¨­å®š"
+#~ msgid "email subscription settings info"
+#~ msgstr ""
+#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
+#~ "Receive updates on interesting questions by email, <strong><br/>help the "
+#~ "community</strong> by answering questions of your colleagues. If you do "
+#~ "not wish to receive emails - select 'no email' on all items below.<br/"
+#~ ">Updates are only sent when there is any new activity on selected items."
-#~ msgid ""
-#~ "Here you can decide which types of notifications you wish to receive, and "
-#~ "their frequency."
-#~ msgstr "ã“ã“ã§ã¯é€šçŸ¥ã®ã‚¿ã‚¤ãƒ—ã¨é »åº¦ã‚’望ã¿é€šã‚Šã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+#~ msgid "Stop sending email"
+#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’åœæ­¢ã™ã‚‹"
-#~ msgid "Manage"
-#~ msgstr "管ç†"
+#~ msgid "user website"
+#~ msgstr "ユーザーã®ã‚¦ã‚§ãƒ–サイト"
-#~ msgid "Notify me when:"
-#~ msgstr "通知設定:"
+#~ msgid "reputation history"
+#~ msgstr "信用度履歴"
-#~ msgid "No notifications"
-#~ msgstr "通知ã—ãªã„"
+#~ msgid "recent activity"
+#~ msgstr "最近ã®æ´»å‹•"
-#~ msgid "A new member joins"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„メンãƒãƒ¼ãŒåŠ ã‚ã£ãŸ"
+#~ msgid "casted votes"
+#~ msgstr "votes"
-#~ msgid "A new question is posted"
-#~ msgstr "ã‚ãŸã‚‰ã—ã„質å•ãŒæŠ•ç¨¿ã•ã‚ŒãŸ"
+#~ msgid "answer tips"
+#~ msgstr "コツ"
-#~ msgid "A new question matching my interesting tags is posted"
-#~ msgstr "自分ã®èˆˆå‘³ã‚ã‚‹ã‚¿ã‚°ã«ãƒžãƒƒãƒã—ãŸæ–°ã—ã„質å•ãŒæŠ•ç¨¿ã•ã‚ŒãŸ"
+#~ msgid "please try to provide details"
+#~ msgstr "詳細をæä¾›ã—ã¦ã¿ã¾ã—ょã†"
-#~ msgid "There's an update on one of my subscriptions"
-#~ msgstr "登録ã®ã²ã¨ã¤ãŒæ›´æ–°ã•ã‚ŒãŸ"
+#~ msgid "ask a question"
+#~ msgstr "質å•ã™ã‚‹"
-#~ msgid "Auto subscribe me to:"
-#~ msgstr "自動登録設定:"
+#~ msgid "question tips"
+#~ msgstr "コツ"
-#~ msgid "Questions I ask"
-#~ msgstr "質å•ã—ãŸã¨ã"
+#~ msgid "please ask a relevant question"
+#~ msgstr "CNPROG コミュニティーã«é©ã—ãŸè³ªå•ã‚’ã—ã¾ã—ょã†ã€‚"
-#~ msgid "Questions I view"
-#~ msgstr "質å•ã‚’ã¿ãŸã¨ã"
+#~ msgid "logout"
+#~ msgstr "ログアウト"
-#~ msgid "All questions matching my interesting tags"
-#~ msgstr "自分ã®èˆˆå‘³ã‚ã‚‹ã‚¿ã‚°ã«ãƒžãƒƒãƒã—ãŸã™ã¹ã¦ã®è³ªå•"
+#~ msgid "login"
+#~ msgstr "ログイン"
-#~ msgid "On my subscriptions, notify me when:"
-#~ msgstr "自分ã®ç™»éŒ²ã®é€šçŸ¥è¨­å®šï¼š"
+#~ msgid "no items in counter"
+#~ msgstr "ã„ã„ãˆ"
-#~ msgid "An answer is posted"
-#~ msgstr "回答ãŒæŠ•ç¨¿ã•ã‚ŒãŸã¨ã"
+#~ msgid "your email address"
+#~ msgstr "é›»å­ãƒ¡ãƒ¼ãƒ« <i>(éžå…¬é–‹)</i>"
-#~ msgid "A comment on one of my posts is posted"
-#~ msgstr "自分ã®æŠ•ç¨¿ã«ã‚³ãƒ¡ãƒ³ãƒˆãŒã¤ã„ãŸã¨ã"
+#~ msgid "choose password"
+#~ msgstr "パスワード"
-#~ msgid "An answer is accepted"
-#~ msgstr "回答ãŒç´å¾—ã•ã‚ŒãŸã¨ã"
+#~ msgid "retype password"
+#~ msgstr "パスワード <i>(確èªç”¨)</i>"
-#~ msgid "More:"
-#~ msgstr "ã•ã‚‰ã«ï¼š"
+#~ msgid "user reputation in the community"
+#~ msgstr "å¾³"
#~ msgid ""
-#~ "Notify me when someone replies to one of my comments on any post using "
-#~ "the @username notation"
+#~ "As a registered user you can login with your OpenID, log out of the site "
+#~ "or permanently remove your account."
#~ msgstr ""
-#~ "自分ã®ã‚³ãƒ¡ãƒ³ãƒˆã«ã ã‚Œã‹ãŒ @username 記法をã¤ã‹ã£ãŸå¿œç­”を投稿ã—ãŸã¨ãã«é€šçŸ¥"
-#~ "ã™ã‚‹"
-
-#~ msgid "Send me the daily digest with information about the site activity"
-#~ msgstr "サイトã«ã¤ã„ã¦ã®æƒ…å ±ã®ã¤ã„ãŸæ—¥åˆŠãƒ€ã‚¤ã‚¸ã‚§ã‚¹ãƒˆã‚’å—ã‘å–ã‚‹"
-
-#~ msgid "Manage your current subscriptions"
-#~ msgstr "ç¾åœ¨ã®ç™»éŒ²çŠ¶æ³ã‚’管ç†ã™ã‚‹"
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
-#~ msgid "Authentication settings"
-#~ msgstr "èªè¨¼è¨­å®š"
+#~ msgid "Email verification subject line"
+#~ msgstr "Verification Email from Q&A forum"
#~ msgid ""
-#~ "These are the external authentication providers currently associated with "
-#~ "your account."
+#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
+#~ "s"
#~ msgstr ""
-#~ "ã“れらã¯ã€ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ç¾åœ¨é–¢é€£ã¥ã‘られã¦ã„る外部èªè¨¼ãƒ—ロãƒã‚¤ãƒ€ãƒ¼ã§"
-#~ "ã™ã€‚"
-
-#~ msgid "Preferences"
-#~ msgstr "環境設定"
-
-#~ msgid "Here you can set some personal preferences."
-#~ msgstr "ã“ã“ã§ã¯ã„ãã¤ã‹ã®å€‹äººçš„環境設定をセットã§ãã¾ã™ã€‚"
-
-#~ msgid "Navigation:"
-#~ msgstr "ナビゲーション"
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
-#~ msgid "Allways remember the sort order I apply to the lists I view"
-#~ msgstr "閲覧ã—ãŸã“ã¨ã®ã‚るリストã®ã‚½ãƒ¼ãƒˆé †ã‚’ã¤ã­ã«è¨˜æ†¶ã™ã‚‹"
+#~ msgid "reputation points"
+#~ msgstr "karma"
diff --git a/askbot/locale/ja/LC_MESSAGES/djangojs.mo b/askbot/locale/ja/LC_MESSAGES/djangojs.mo
index 4f02b12f..104ff5ea 100644
--- a/askbot/locale/ja/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/ja/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/ja/LC_MESSAGES/djangojs.po b/askbot/locale/ja/LC_MESSAGES/djangojs.po
index 232929f9..88cb4dd0 100644
--- a/askbot/locale/ja/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ja/LC_MESSAGES/djangojs.po
@@ -1,340 +1,340 @@
# 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.
#
+# Translators:
+# Tomoyuki KATO <tomo@dream.daynight.jp>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:49-0500\n"
+"PO-Revision-Date: 2012-02-02 13:32+0000\n"
+"Last-Translator: Tomoyuki KATO <tomo@dream.daynight.jp>\n"
+"Language-Team: Japanese (http://www.transifex.net/projects/p/askbot/language/"
+"ja/)\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "本当㫠%s ã®ãƒ­ã‚°ã‚¤ãƒ³ã‚’削除ã—ãŸã„ã§ã™ã‹ï¼Ÿ"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "1ã¤ä»¥ä¸Šã®ãƒ­ã‚°ã‚¤ãƒ³æ–¹æ³•ã‚’追加ã—ã¦ãã ã•ã„。"
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"今ã™ãã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹æ–¹æ³•ãŒã‚ã‚Šã¾ã›ã‚“ã€ä»¥ä¸‹ã®ã‚¢ã‚¤ã‚³ãƒ³ã®ã©ã‚Œã‹ã‚’クリックã—ã¦1ã¤"
+"以上を追加ã—ã¦ãã ã•ã„。"
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "ç¾åœ¨ã®ãƒ­ã‚°ã‚¤ãƒ³æ–¹æ³•ã®è¡¨ç¤ºãƒ»å¤‰æ›´"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "%s を入力ã—ã¦ã€é€²ã‚“ã§ãã ã•ã„"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "%(provider_name)s アカウントを %(site)s ã«æŽ¥ç¶šã—ã¾ã™"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "%s ã®ãƒ‘スワードを変更ã—ã¾ã™"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "パスワードを変更ã—ã¾ã™"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "%s ã®ãƒ‘スワードを作æˆã—ã¾ã™"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "パスワードを作æˆã—ã¾ã™"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "パスワードä¿è­·ã•ã‚ŒãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ã¾ã™"
#: skins/common/media/js/post.js:28
msgid "loading..."
-msgstr ""
-
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
+msgstr "読ã¿è¾¼ã¿ä¸­..."
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr ""
+msgstr "ä¸å分ãªæ¨©é™"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
-msgstr ""
+msgstr "申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€ã‚ãªãŸã®å›žç­”ã‚’å—é ˜ã§ãã¾ã›ã‚“"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr ""
+msgstr "ログインã—ã¦ãã ã•ã„"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "匿åユーザーã¯è³ªå•ã‚’フォローã§ãã¾ã›ã‚“"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "匿åユーザーã¯è³ªå•ã‚’購読ã§ãã¾ã›ã‚“"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr ""
+msgstr "申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€åŒ¿åユーザーã¯æŠ•ç¥¨ã§ãã¾ã›ã‚“ "
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
+"ã‚ãªãŸã¯ã“ã®æŠ•ç¨¿ãŒæ”»æ’ƒçš„ã€ã‚¹ãƒ‘ムã€åºƒå‘Šã€æ‚ªæ„ã®ã‚ã‚‹æ„見ãªã©ã§ã‚ã‚‹ã¨æ€ã„ã¾ã™"
+"ã‹ï¼Ÿ"
-#: skins/common/media/js/post.js:295
-msgid "anonymous users cannot flag offensive posts"
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
msgstr ""
+"ã‚ãªãŸã¯ã“ã®æŠ•ç¨¿ãŒæ”»æ’ƒçš„ã€ã‚¹ãƒ‘ムã€åºƒå‘Šã€æ‚ªæ„ã®ã‚ã‚‹æ„見ãªã©ã§ã‚ã‚‹ã¨æ€ã„ã¾ã™"
+"ã‹ï¼Ÿ"
+
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr "匿åユーザーãŒæ”»æ’ƒçš„ãªæŠ•ç¨¿ã®ãƒ•ãƒ©ã‚°ã‚’ã¤ã‘られã¾ã›ã‚“"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
-msgstr ""
+msgstr "本当ã«ã“れを削除ã—ãŸã„ã§ã™ã‹ï¼Ÿ"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
-msgstr ""
+msgstr "申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€åŒ¿åユーザーã¯æŠ•ç¨¿ã‚’削除ã¾ãŸã¯å¾©æ—§ã§ãã¾ã›ã‚“"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
-msgstr ""
+msgstr "ã“ã‚Œã§æŠ•ç¨¿ãŒå¾©å…ƒã•ã‚Œã¾ã—ãŸï¼"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
-msgstr ""
-
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
+msgstr "投稿ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
-msgstr ""
+msgstr "コメントã®è¿½åŠ "
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
+msgstr "コメントã®ä¿å­˜"
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "質å•ã®è¦‹å‡ºã—を入力ã—ã¦ãã ã•ã„(>10文字)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "ã‚¿ã‚° \"<span></span>\" ãŒä¸€è‡´ã—ã¾ã™:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "ã•ã‚‰ã« %s 個ã€è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã›ã‚“..."
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "最低1ã¤ã®é …目をé¸æŠžã—ã¦ãã ã•ã„"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "ã“ã®é€šçŸ¥ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã™ã‚‹"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã™ã‚‹"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
+"%(username)s をフォローã™ã‚‹ã«ã¯<a href=\"%(signin_url)s\">サインイン</a>ã—ã¦"
+"ãã ã•ã„"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "%s ã®ãƒ•ã‚©ãƒ­ãƒ¼è§£é™¤"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "%s ã®ãƒ•ã‚©ãƒ­ãƒ¼ä¸­"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "%s ã®ãƒ•ã‚©ãƒ­ãƒ¼"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
+msgstr "é–‰ã˜ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„"
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
-msgstr ""
+msgstr "太字"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
-msgstr ""
+msgstr "斜体"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
-msgstr ""
+msgstr "リンク"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
-msgstr ""
+msgstr "引用"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr ""
+msgstr "整形済ã¿ãƒ†ã‚­ã‚¹ãƒˆ"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
-msgstr ""
+msgstr "ç”»åƒ"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "添付"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
-msgstr ""
+msgstr "番å·ä»˜ãリスト"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
-msgstr ""
+msgstr "箇æ¡æ›¸ãリスト"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
-msgstr ""
+msgstr "見出ã—"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr ""
+msgstr "水平線"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
-msgstr ""
+msgstr "ã‚„ã‚Šç›´ã—"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
-msgstr ""
+msgstr "å†å®Ÿè¡Œ"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
+"ç”»åƒã®URL(例ã€http://www.example.com/image.jpg)を入力ã—ã¦ãã ã•ã„ã€ã¾ãŸã¯ç”»"
+"åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã—ã¦ãã ã•ã„"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
+"ウェブアドレス(例ã€http://www.example.com \"page title\")を入力ã—ã¦ãã ã•ã„"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "ファイルをé¸æŠžã—ã¦ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„:"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "最低1ã¤ã®ã‚¿ã‚°ã‚’入力ã—ã¦ãã ã•ã„"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "内容ãŒç©ºç™½ã§ã¯ã„ã‘ã¾ã›ã‚“"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "%s 文字以上を入力ã—ã¦ãã ã•ã„"
+
+#~ msgid "please enter title"
+#~ msgstr "見出ã—を入力ã—ã¦ãã ã•ã„"
+
+#~ msgid "%s title minchars"
+#~ msgstr "最低 %s 文字を入力ã—ã¦ãã ã•ã„"
+
+#~ msgid "Follow"
+#~ msgstr "フォロー"
+
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s フォロワー"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>フォロー中</div><div class=\"unfollow\">フォロー解除</div>"
+
+#~ msgid "undelete"
+#~ msgstr "復旧"
+
+#~ msgid "delete"
+#~ msgstr "削除"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "最低 %s 文字以上を入力ã—ã¦ãã ã•ã„"
+
+#~ msgid "%s characters left"
+#~ msgstr "残り %s 文字"
+
+#~ msgid "cancel"
+#~ msgstr "キャンセル"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "本当ã«ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’投稿ã—ãŸã„ã§ã™ã‹ï¼Ÿ"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "本当ã«ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã—ãŸã„ã§ã™ã‹ï¼Ÿ"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "ã“ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’編集ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„"
+
+#~ msgid "edit"
+#~ msgstr "編集"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "'%s' ã¨ã„ã†ã‚¿ã‚°ã®ä»˜ã„ãŸè³ªå•ã‚’å‚ç…§ã™ã‚‹"
+
+#~ msgid "image description"
+#~ msgstr "ç”»åƒã®èª¬æ˜Ž"
+
+#~ msgid "file name"
+#~ msgstr "ファイルå"
+
+#~ msgid "link text"
+#~ msgstr "リンクテキスト"
diff --git a/askbot/locale/ko/LC_MESSAGES/django.mo b/askbot/locale/ko/LC_MESSAGES/django.mo
index 5cdb0ec1..f22dabc6 100644
--- a/askbot/locale/ko/LC_MESSAGES/django.mo
+++ b/askbot/locale/ko/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/ko/LC_MESSAGES/django.po b/askbot/locale/ko/LC_MESSAGES/django.po
index 69d7485d..bd9e27dc 100644
--- a/askbot/locale/ko/LC_MESSAGES/django.po
+++ b/askbot/locale/ko/LC_MESSAGES/django.po
@@ -2,34 +2,34 @@
# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the CNPROG package.
# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:35-0600\n"
+"POT-Creation-Date: 2012-04-18 18:51-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Evgeny Fadeev <evgeny.fadeev@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr ""
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr ""
-#: feed.py:26
+#: feed.py:28
msgid "Individual question feed"
msgstr ""
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr ""
@@ -45,7 +45,10 @@ msgstr ""
msgid "Country field is required"
msgstr ""
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr ""
@@ -53,294 +56,336 @@ msgstr ""
msgid "please enter a descriptive title for your question"
msgstr ""
-#: forms.py:110
-msgid "title must be > 10 characters"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
msgstr ""
-#: forms.py:119
-msgid "content"
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
msgstr ""
-#: forms.py:125
-msgid "question content must be > 10 characters"
+#: forms.py:149
+msgid "content"
msgstr ""
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr ""
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr ""
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] ""
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] ""
-#: forms.py:198
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
msgstr ""
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr ""
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
msgstr ""
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr ""
-#: forms.py:346
+#: forms.py:405
msgid "administrator"
msgstr ""
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr ""
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr ""
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr ""
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr ""
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr ""
-#: forms.py:434
+#: forms.py:493
msgid "Cannot change status to admin"
msgstr ""
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr ""
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr ""
-#: forms.py:542
+#: forms.py:530
msgid "Your name (optional):"
msgstr ""
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr ""
"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr ""
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr ""
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr ""
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr ""
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr ""
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr ""
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr ""
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr ""
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr ""
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr ""
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr ""
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr ""
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr ""
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr ""
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr ""
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1120
-msgid "please choose one of the options above"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr ""
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr ""
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr ""
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr ""
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr ""
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr ""
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr "Tips"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr ""
@@ -368,51 +413,56 @@ msgstr ""
msgid "vote/"
msgstr ""
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr ""
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr ""
-#: urls.py:214
+#: urls.py:219
msgid "subscriptions/"
msgstr ""
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr ""
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr ""
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr ""
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr ""
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr ""
@@ -540,132 +590,136 @@ msgid ""
msgstr ""
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
msgstr ""
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr ""
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -675,22 +729,46 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -721,15 +799,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -737,11 +815,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -749,70 +827,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr ""
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -851,11 +913,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -899,109 +963,177 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr ""
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr ""
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Tags"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1075,16 +1207,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1249,6 +1381,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1447,27 +1583,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1592,21 +1728,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1614,40 +1750,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1659,11 +1795,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1672,21 +1808,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1695,21 +1831,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1718,19 +1854,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1741,19 +1877,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1818,39 +1954,66 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr "User login"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Your email <i>(never shared)</i>"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
msgstr ""
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1892,6 +2055,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "answered question"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Post Your Answer"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "Post Your Answer"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "Post Your Answer"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1928,275 +2124,275 @@ msgstr ""
msgid "too localized"
msgstr ""
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr ""
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr ""
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr ""
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr ""
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr ""
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr ""
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr ""
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr ""
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr ""
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr ""
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr ""
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr ""
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "Tags"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr ""
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr ""
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr ""
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr ""
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "received badge"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:142
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
msgstr ""
-#: const/__init__.py:146
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
msgstr ""
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "answered question"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "commented question"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr ""
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr ""
+#, fuzzy
+msgid "answered question"
+msgstr "Post Your Answer"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "oldest"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr ""
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr ""
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr ""
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr ""
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr ""
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr ""
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr ""
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr ""
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr ""
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr ""
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr ""
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "ask a question interesting to this community"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "ask a question interesting to this community"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr ""
-#: const/message_keys.py:18
+#: const/message_keys.py:24
#, fuzzy
msgid "click to see the oldest questions"
msgstr ""
@@ -2206,49 +2402,49 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr ""
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr ""
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr ""
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr ""
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr ""
-#: const/message_keys.py:24
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
msgstr ""
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "oldest"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
msgstr ""
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr ""
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "votes"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
#, fuzzy
msgid "click to see most voted questions"
msgstr ""
@@ -2258,13 +2454,27 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr ""
@@ -2313,11 +2523,11 @@ msgid "Your user name (<i>required</i>)"
msgstr ""
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "sorry, there is no such user name"
+msgid "sorry, there is no such user name"
+msgstr ""
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr ""
@@ -2355,6 +2565,7 @@ msgid "%(site)s user name and password"
msgstr ""
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2436,78 +2647,78 @@ msgstr ""
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr ""
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2515,82 +2726,112 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr ""
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
msgstr ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "karma"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+#, fuzzy
+msgid "Change password"
+msgstr "Password"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
msgstr ""
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
msgstr ""
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+msgid "Settings included in %(name)s."
msgstr ""
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
msgstr ""
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+#, fuzzy
+msgid "Edit Site Settings"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:57
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, fuzzy, python-format
+msgid "Group settings: %(name)s"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr ""
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr ""
@@ -2601,7 +2842,7 @@ msgstr ""
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr ""
@@ -2612,70 +2853,43 @@ msgstr ""
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"<p>Dear %(name)s,</p></p>The following %(num)d question has been updated on "
-"the Q&A forum:</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr ""
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a "
-"href='%(email_settings_link)s'>adjust</a> frequency of the email updates or "
-"turn them off entirely.<br/>If you believe that this message was sent in an "
-"error, please email about it the forum administrator at %(admin_email)s.</"
-"p><p>Sincerely,</p><p>Your friendly Q&A forum server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr ""
@@ -2685,89 +2899,75 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "Sorry, you cannot vote for your own posts"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ">%(points)s points required to upvote "
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ">%(points)s points required to downvote "
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr ""
-#: models/__init__.py:429
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr ""
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "sorry, file uploading requires karma >%(min_rep)s"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2777,56 +2977,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2835,248 +3035,264 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
-msgstr "You have flagged this question before and cannot do it more than once"
-
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-"Sorry, since your account is blocked you cannot flag posts as offensive"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:765
+#: models/__init__.py:794
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
-msgstr ""
+msgid ""
"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
"required"
+msgstr ""
-#: models/__init__.py:784
+#: models/__init__.py:815
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr ""
+msgid ""
"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+"Sorry, since your account is blocked you cannot flag posts as offensive"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "sorry, but older votes cannot be revoked"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr ""
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] ""
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] ""
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr ""
-#: models/__init__.py:2200 models/__init__.py:2205
-#, python-format
-msgid "Question: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3334,161 +3550,313 @@ msgstr ""
msgid "Created a tag used by %(num)s questions"
msgstr ""
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr ""
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr ""
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr ""
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr ""
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr ""
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr ""
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr ""
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr ""
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "How to validate email and why?"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr ""
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr ""
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr ""
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr ""
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr ""
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr ""
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr ""
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr ""
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr ""
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+#, fuzzy
+msgid "Save your email address"
+msgstr "Your email <i>(never shared)</i>"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
#, fuzzy
msgid "Username:"
msgstr "Choose screen name"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
#, fuzzy
msgid "Password:"
msgstr "Password"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
msgid "Please sign in here:"
msgstr ""
@@ -3500,63 +3868,2543 @@ msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Sign out"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "User login"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+#, fuzzy
+msgid "Password"
+msgstr "Password"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Password"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "Last updated"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "delete"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "sorry, but older votes cannot be revoked"
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Post Your Answer"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Retag question"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "Retag question"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Post Your Answer"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "link"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "undelete"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Tags"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "Tags"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+#, fuzzy
+msgid "edit"
+msgstr "Change Email"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+#, fuzzy
+msgid "reopen"
+msgstr "You can safely re-use the same login for all OpenID-enabled websites."
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+#, fuzzy
+msgid "Interesting tags"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:21
+#, fuzzy
+msgid "Ignored tags"
+msgstr "Retag question"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+#, fuzzy
+msgid "see all questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/404.jinja.html:32
+#, fuzzy
+msgid "see all tags"
+msgstr "Tags"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+#, fuzzy
+msgid "see latest questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/500.jinja.html:13
+#, fuzzy
+msgid "see tags"
+msgstr "Tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+#, fuzzy
+msgid "Edit answer"
+msgstr "oldest"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+#, fuzzy
+msgid "Save edit"
+msgstr "Change Email"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr ""
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+#, fuzzy
+msgid "Badge"
+msgstr "Badges"
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+#, fuzzy
+msgid "Badges"
+msgstr "Badges"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun "
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Badge levels"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+#, fuzzy
+msgid "Close question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/close.html:6
+#, fuzzy
+msgid "Close the question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+#, fuzzy
+msgid "Frequently Asked Questions "
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+#, fuzzy
+msgid "What should I avoid in my answers?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+#, fuzzy
+msgid "Who moderates this community?"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "How does karma system work?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+#, fuzzy
+msgid "upvote"
+msgstr "votes"
+
+#: skins/default/templates/faq_static.html:36
+#, fuzzy
+msgid "add comments"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+#, fuzzy
+msgid "downvote"
+msgstr "votes"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/faq_static.html:47
+#, fuzzy
+msgid "open and close own questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/faq_static.html:56
+#, fuzzy
+msgid "edit community wiki questions"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "oldest"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Logout Now"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+#, fuzzy
+msgid "Still have questions?"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
#, python-format
msgid ""
"\n"
"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "Choose screen name"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr "Sorry, anonymous users cannot vote"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+#, fuzzy
+msgid "answered"
+msgstr "oldest"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+#, fuzzy
+msgid "updated"
+msgstr "Last updated"
+
+#: skins/default/templates/macros.html:202
+#, fuzzy, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "Asked"
+
+#: skins/default/templates/macros.html:304
+#, fuzzy
+msgid "delete this comment"
+msgstr "post a comment"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "User login"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr ""
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "page %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "Choose screen name"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+#, fuzzy
+msgid "Questions"
+msgstr "Tags"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "post a comment"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+#, fuzzy
+msgid "Answer Your Own Question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "most voted"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+#, fuzzy
+msgid "Edit question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+#, fuzzy
+msgid "Reopen question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+#, fuzzy
+msgid "Close reason:"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:26
+#, fuzzy
+msgid "Reopen this question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+#, fuzzy
+msgid "Revision history"
+msgstr "karma history"
+
+#: skins/default/templates/revisions.html:23
+#, fuzzy
+msgid "click to hide/show revision"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "Tags"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "Tags"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Tags"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr ""
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "People"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+#, fuzzy
+msgid "by username"
+msgstr "Choose screen name"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+#, fuzzy
+msgid "Search tips:"
+msgstr "Tips"
+
+#: skins/default/templates/main_page/headline.html:27
+#, fuzzy
+msgid "reset author"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:30
+#, fuzzy
+msgid "reset tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+#, fuzzy
+msgid "Search tip:"
+msgstr "Tips"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+#, fuzzy
+msgid "There are no unanswered questions here"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "answered question"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+#, fuzzy
+msgid "resetting author"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+#, fuzzy
+msgid "resetting tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+#, fuzzy
+msgid "starting over"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+#, fuzzy
+msgid "Please, post your question!"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+#, fuzzy
+msgid "subscribe to the questions feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question/new_answer_form.html:24
+#, fuzzy
+msgid "Your answer"
+msgstr "most voted"
+
+#: skins/default/templates/question/new_answer_form.html:26
+#, fuzzy
+msgid "Be the first one to answer this question!"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+#, fuzzy
+msgid "email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Tags"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:62
+#, fuzzy
+msgid "Related questions"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Notify me</strong> weekly when there are any new answers or updates"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+#, fuzzy
+msgid "Edit user profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+#, fuzzy
+msgid "edit profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+#, fuzzy
+msgid "change picture"
+msgstr "Retag question"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:39
+#, fuzzy
+msgid "Screen Name"
+msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "sorry, but older votes cannot be revoked"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+#, fuzzy
+msgid "Update"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+#, fuzzy
+msgid "Email subscription settings"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "Tags"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "Tags"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/default/templates/user_profile/user_info.html:36
+#, fuzzy
+msgid "update profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "member since"
+
+#: skins/default/templates/user_profile/user_info.html:63
+#, fuzzy
+msgid "last seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "website"
+
+#: skins/default/templates/user_profile/user_info.html:75
+#, fuzzy
+msgid "location"
+msgstr "karma"
+
+#: skins/default/templates/user_profile/user_info.html:82
+#, fuzzy
+msgid "age"
+msgstr "Badges"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_info.html:88
+#, fuzzy
+msgid "todays unused votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_info.html:89
+#, fuzzy
+msgid "votes left"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+#, fuzzy
+msgid "User status changed"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+#, fuzzy
+msgid "Save"
+msgstr "Change Email"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "user karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "Choose screen name"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+#, fuzzy
+msgid "Send message"
+msgstr "Choose screen name"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, fuzzy, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "oldest"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "Tips"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+#, fuzzy
+msgid "User profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "Graph of user karma"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+#, fuzzy
+msgid "votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+#, fuzzy
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "provide enough details"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+#, fuzzy
+msgid "see frequently asked questions"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown basics"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "people"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+#, fuzzy
+msgid "badges"
+msgstr "Badges"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "oldest"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "votes"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+#, fuzzy
+msgid "see unanswered questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "Badges"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/user_navigation.html:15
+#, fuzzy
+msgid "settings"
+msgstr "User login"
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
msgid "Oops, apologies - there was some error"
msgstr ""
@@ -3568,94 +6416,126 @@ msgstr ""
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr ""
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "Choose screen name"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr ""
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr ""
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr ""
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr ""
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Your email <i>(never shared)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr ""
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr ""
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr ""
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Password"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Password <i>(please retype)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr ""
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr ""
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr ""
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr ""
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] ""
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] ""
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -3668,193 +6548,187 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
msgstr "Sorry, anonymous users cannot vote"
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr ""
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr ""
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
msgstr ""
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"Your subscription is saved, but email address %(email)s needs to be "
"validated, please see <a href='%(details_url)s'>more details here</a>"
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr ""
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: views/commands.py:542
+#: views/commands.py:600
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:151
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "Asked"
-#: views/readers.py:159
-#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] ""
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-
-#: views/readers.py:415
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:211
-msgid "moderate this user"
-msgstr ""
-
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr ""
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr ""
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr ""
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr ""
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr ""
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr ""
-#: views/users.py:860
-msgid "user vote record"
-msgstr ""
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr ""
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "user karma"
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "Profile - User's Karma"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr ""
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr ""
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr ""
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr ""
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr ""
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
msgstr ""
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr ""
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr ""
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr ""
+#: views/writers.py:189
+msgid ""
"<span class=\"strong big\">You are welcome to start submitting your question "
"anonymously</span>. When you submit the post, you will be redirected to the "
"login/signup page. Your question will be saved in the current session and "
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
#, fuzzy
msgid "Please log in to answer questions"
msgstr ""
@@ -3865,34 +6739,111 @@ msgstr ""
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:646
+#: views/writers.py:589
msgid "Sorry, anonymous users cannot edit comments"
msgstr ""
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
-#~ msgid "Change email"
-#~ msgstr "Change Email"
+#~ msgid "question_answered"
+#~ msgstr "answered question"
+
+#~ msgid "question_commented"
+#~ msgstr "commented question"
+
+#~ msgid "Incorrect username."
+#~ msgstr "sorry, there is no such user name"
+
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Dear %(name)s,</p></p>The following %(num)d question has been updated "
+#~ "on the Q&A forum:</p>"
+
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Please remember that you can always <a "
+#~ "href='%(email_settings_link)s'>adjust</a> frequency of the email updates "
+#~ "or turn them off entirely.<br/>If you believe that this message was sent "
+#~ "in an error, please email about it the forum administrator at "
+#~ "%(admin_email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum server.</"
+#~ "p>"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "sorry, file uploading requires karma >%(min_rep)s"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr ""
+#~ "You have flagged this question before and cannot do it more than once"
+
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, since your account is blocked you cannot flag posts as offensive"
+
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+#~ "required"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr ""
+#~ "Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+#~ "offensive flags per day."
+
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
#, fuzzy
-#~ msgid "Save your email address"
-#~ msgstr "Your email <i>(never shared)</i>"
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+#~ "required"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "sorry, but older votes cannot be revoked"
#~ msgid "change %(email)s info"
#~ msgstr ""
@@ -3915,26 +6866,14 @@ msgstr ""
#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
#~ "anyone, must be valid)"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "Change Email"
-
-#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "How to validate email and why?"
-
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">An email with a validation link has been sent "
#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
#~ "your web browser. Email validation is necessary to help insure the proper "
#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>."
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>."
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
@@ -3968,10 +6907,6 @@ msgstr ""
#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
#~ "necessary."
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "karma"
-
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "<p><span class=\"big strong\">You are here for the first time with your "
@@ -3992,11 +6927,11 @@ msgstr ""
#~ "is already used in another account.</span></p><p>Please choose another "
#~ "screen name to use with your %(provider)s login. Also, a valid email "
#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>"
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>"
#~ msgid ""
#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
@@ -4039,47 +6974,9 @@ msgstr ""
#~ msgid "create account"
#~ msgstr "Signup"
-#~ msgid "Logout"
-#~ msgstr "Sign out"
-
-#~ msgid "User login"
-#~ msgstr "User login"
-
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
#~ msgid "Login"
#~ msgstr "Sign in"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Password"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "sorry, but older votes cannot be revoked"
-
#~ msgid "with openid it is easier"
#~ msgstr "With the OpenID you don't need to create new username and password."
@@ -4109,92 +7006,23 @@ msgstr ""
#~ msgid "Create Account"
#~ msgstr "Signup"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Retag question"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Retag question"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
#~ msgid "answer permanent link"
#~ msgstr "permanent link"
-#~ msgid "permanent link"
-#~ msgstr "link"
-
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "reopen"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
-
-#~ msgid "Related tags"
+#~ msgid "remove all flags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "Interesting tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "Ignored tags"
-#~ msgstr "Retag question"
-
-#, fuzzy
-#~ msgid "see all questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "see all tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "see latest questions"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "see tags"
+#~ msgid "Related tags"
#~ msgstr "Tags"
#, fuzzy
-#~ msgid "Edit answer"
-#~ msgstr "oldest"
-
-#, fuzzy
#~ msgid "Ask a question"
#~ msgstr "Ask Your Question"
#~ msgid "Badges summary"
#~ msgstr "Badges"
-#, fuzzy
-#~ msgid "Badges"
-#~ msgstr "Badges"
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Below is the list of available badges and number \n"
-#~ " of times each type of badge has been awarded. Have ideas about fun "
-#~ "badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Badge levels"
-
#~ msgid "gold badge description"
#~ msgstr ""
#~ "Gold badge is the highest award in this community. To obtain it have to "
@@ -4208,28 +7036,6 @@ msgstr ""
#~ msgid "bronze badge description"
#~ msgstr "bronze badge: often given as a special honor"
-#, fuzzy
-#~ msgid "Close question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Close the question"
-#~ msgstr "Post Your Answer"
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Before you ask - please make sure to search for a similar question. You "
-#~ "can search questions by their title or tags."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "What kinds of questions should be avoided?"
-
-#, fuzzy
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "What kinds of questions should be avoided?"
-
#~ 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 "
@@ -4240,16 +7046,6 @@ msgstr ""
#~ "as they tend to dilute the essense of questions and answers. For the "
#~ "brief discussions please use commenting facility."
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Karma system allows users to earn rights to perform a variety of "
-#~ "moderation tasks"
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "How does karma system work?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "When a question or answer is upvoted, the user who posted them will gain "
@@ -4261,36 +7057,6 @@ msgstr ""
#~ msgid "use tags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "add comments"
-#~ msgstr "post a comment"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
-#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "oldest"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "post a comment"
-
#~ msgid "what is gravatar"
#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
@@ -4311,172 +7077,18 @@ msgstr ""
#~ "used to register with us). Default image that looks like a kitchen tile "
#~ "is generated automatically.</p>"
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Logout Now"
-
-#, fuzzy
-#~ msgid "Still have questions?"
-#~ msgstr "Post Your Answer"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
-#~ "our community better!"
-
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "Sorry, anonymous users cannot vote"
-
-#, fuzzy
-#~ msgid "answered"
-#~ msgstr "oldest"
-
-#, fuzzy
-#~ msgid "updated"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Asked"
-
-#, fuzzy
-#~ msgid "delete this comment"
-#~ msgstr "post a comment"
-
-#~ msgid "add comment"
-#~ msgstr "post a comment"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "page %(num)s"
-
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "Choose screen name"
-
-#, fuzzy
-#~ msgid "Questions"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "Edit question"
-#~ msgstr "Post Your Answer"
-
#~ msgid "Change tags"
#~ msgstr "Retag question"
-#, fuzzy
-#~ msgid "Reopen question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Reopen this question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Revision history"
-#~ msgstr "karma history"
-
-#, fuzzy
-#~ msgid "click to hide/show revision"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#~ msgid "Tag list"
-#~ msgstr "Tags"
-
-#~ msgid "Users"
-#~ msgstr "People"
-
#~ msgid "reputation"
#~ msgstr "karma"
-#, fuzzy
-#~ msgid "Search tips:"
-#~ msgstr "Tips"
-
-#, fuzzy
-#~ msgid "reset tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "answered question"
-
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#, fuzzy
-#~ msgid "Please, post your question!"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "Post Your Answer"
-
-#~ msgid "oldest answers"
-#~ msgstr "oldest"
-
#~ msgid "newest answers"
#~ msgstr "newest"
#~ msgid "popular answers"
#~ msgstr "most voted"
-#, fuzzy
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Login/Signup to Post"
-
-#, fuzzy
-#~ msgid "Your answer"
-#~ msgstr "most voted"
-
-#, fuzzy
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Please start posting your answer anonymously</"
@@ -4507,60 +7119,17 @@ msgstr ""
#~ msgid "Login/Signup to Post Your Answer"
#~ msgstr "Login/Signup to Post"
-#~ msgid "Answer the question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "Last updated"
-
#~ msgid "question asked"
#~ msgstr "Asked"
#~ msgid "question was seen"
#~ msgstr "Seen"
-#~ msgid "last updated"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "Related questions"
-#~ msgstr "ask a question interesting to this community"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Notify me</strong> once a day by email when there are any new "
#~ "answers or updates"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
@@ -4574,28 +7143,6 @@ msgstr ""
#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
#~ "updates)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
-
-#, fuzzy
-#~ msgid "change picture"
-#~ msgstr "Retag question"
-
-#, fuzzy
-#~ msgid "Screen Name"
-#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-
-#, fuzzy
-#~ msgid "Email subscription settings"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
@@ -4607,106 +7154,22 @@ msgstr ""
#~ msgid "Stop sending email"
#~ msgstr "Stop Email"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Ask Your Question"
-
-#~ msgid "member for"
-#~ msgstr "member since"
-
-#~ msgid "user website"
-#~ msgstr "website"
-
-#~ msgid "age unit"
-#~ msgstr "years old"
-
-#, fuzzy
-#~ msgid "todays unused votes"
-#~ msgstr "votes"
-
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "karma"
-
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "User login"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "user karma"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "years old"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Tips"
-
-#, fuzzy
-#~ msgid "User profile"
-#~ msgstr "User login"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
-
#~ msgid "reputation history"
#~ msgstr "karma history"
#~ msgid "casted votes"
#~ msgstr "votes"
-#, fuzzy
-#~ msgid "votes"
-#~ msgstr "votes"
-
#~ msgid "answer tips"
#~ msgstr "Tips"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "ask a question interesting to this community"
-
-#, fuzzy
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
#~ msgid "please try to provide details"
#~ msgstr "provide enough details"
#, fuzzy
-#~ msgid "see frequently asked questions"
-#~ msgstr "ask a question interesting to this community"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown basics"
-
-#, fuzzy
#~ msgid "ask a question"
#~ msgstr "Ask Your Question"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
#, fuzzy
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
@@ -4722,38 +7185,39 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "Login/Signup to Post"
-#~ msgid "Ask your question"
-#~ msgstr "Ask Your Question"
-
-#~ msgid "users"
-#~ msgstr "people"
-
#~ msgid "question tips"
#~ msgstr "Tips"
#~ msgid "please ask a relevant question"
#~ msgstr "ask a question interesting to this community"
-#~ msgid "please try provide enough details"
-#~ msgstr "provide enough details"
-
-#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Ask Your Question"
-
#~ msgid "logout"
#~ msgstr "sign out"
#~ msgid "login"
#~ msgstr "Hi, there! Please sign in"
+#~ msgid "no items in counter"
+#~ msgstr "no"
+
+#~ msgid "choose password"
+#~ msgstr "Password"
+
+#~ msgid "retype password"
+#~ msgstr "Password <i>(please retype)</i>"
+
+#~ msgid "user reputation in the community"
+#~ msgstr "user karma"
+
#, fuzzy
-#~ msgid "settings"
-#~ msgstr "User login"
+#~ msgid "Please log in to ask questions"
+#~ msgstr ""
+#~ "<span class=\"strong big\">You are welcome to start submitting your "
+#~ "question anonymously</span>. When you submit the post, you will be "
+#~ "redirected to the login/signup page. Your question will be saved in the "
+#~ "current session and will be published after you log in. Login/signup "
+#~ "process is very simple. Login takes about 30 seconds, initial signup "
+#~ "takes a minute or less."
#, fuzzy
#~ msgid "(please enter a valid email)"
@@ -4762,10 +7226,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "questions"
-#~ msgstr "Tips"
-
#~ msgid "Email verification subject line"
#~ msgstr "Verification Email from Q&A forum"
diff --git a/askbot/locale/ko/LC_MESSAGES/djangojs.mo b/askbot/locale/ko/LC_MESSAGES/djangojs.mo
index 4f02b12f..2845bf19 100644
--- a/askbot/locale/ko/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/ko/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/ko/LC_MESSAGES/djangojs.po b/askbot/locale/ko/LC_MESSAGES/djangojs.po
index 232929f9..3e40eaa0 100644
--- a/askbot/locale/ko/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ko/LC_MESSAGES/djangojs.po
@@ -2,23 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
+"POT-Creation-Date: 2012-04-18 18:51-0500\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"
-"Language: \n"
+"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,146 +75,76 @@ msgstr ""
msgid "loading..."
msgstr ""
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr ""
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr ""
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr ""
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr ""
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr ""
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr ""
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr ""
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr ""
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr ""
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -227,114 +157,112 @@ msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#, fuzzy
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] ""
+#~ "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+#~ msgstr[1] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
diff --git a/askbot/locale/pt/LC_MESSAGES/django.mo b/askbot/locale/pt/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..955fe305
--- /dev/null
+++ b/askbot/locale/pt/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/pt/LC_MESSAGES/django.po b/askbot/locale/pt/LC_MESSAGES/django.po
new file mode 100644
index 00000000..e1a027e8
--- /dev/null
+++ b/askbot/locale/pt/LC_MESSAGES/django.po
@@ -0,0 +1,6580 @@
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
+# Evgeny Fadeev &lt;evgeny.fadeev@gmail.com&gt;, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:56-0500\n"
+"PO-Revision-Date: 2012-02-17 16:06-0000\n"
+"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
+"Language-Team: Portuguese <traducao@pt.libreoffice.org >\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.1.6\n"
+
+#: exceptions.py:13
+msgid "Sorry, but anonymous visitors cannot access this function"
+msgstr "Desculpe, mas os visitantes anónimos não podem aceder a esta função"
+
+#: feed.py:28 feed.py:90
+msgid " - "
+msgstr " - "
+
+#: feed.py:28
+msgid "Individual question feed"
+msgstr ""
+
+#: feed.py:90
+msgid "latest questions"
+msgstr "últimas questões"
+
+#: forms.py:74
+msgid "select country"
+msgstr "selecione o país"
+
+#: forms.py:83
+msgid "Country"
+msgstr "País"
+
+#: forms.py:91
+msgid "Country field is required"
+msgstr "O campo país é obrigatório"
+
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "title"
+msgstr "título"
+
+#: forms.py:105
+msgid "please enter a descriptive title for your question"
+msgstr "por favor, indique o título descritivo da sua questão"
+
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
+msgid "content"
+msgstr "conteúdo"
+
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
+msgid "tags"
+msgstr "tags"
+
+#: forms.py:188
+#, python-format
+msgid ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+msgstr[1] ""
+
+#: forms.py:222 skins/default/templates/question_retag.html:58
+msgid "tags are required"
+msgstr "As tags são obrigatórias"
+
+#: forms.py:232
+#, python-format
+msgid "please use %(tag_count)d tag or less"
+msgid_plural "please use %(tag_count)d tags or less"
+msgstr[0] "por favor, utilize %(tag_count)d tag ou menos"
+msgstr[1] "por favor, utilize %(tag_count)d tags ou menos"
+
+#: forms.py:240
+#, python-format
+msgid "At least one of the following tags is required : %(tags)s"
+msgstr "É necessária, pelo menos, uma das seguintes tags: %(tags)s"
+
+#: forms.py:249
+#, python-format
+msgid "each tag must be shorter than %(max_chars)d character"
+msgid_plural "each tag must be shorter than %(max_chars)d characters"
+msgstr[0] "cada tag deve ter menos de %(max_chars)d carácter"
+msgstr[1] "cada tag deve ter menos de %(max_chars)d caracteres"
+
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
+
+#: forms.py:294
+msgid "community wiki (karma is not awarded & many others can edit wiki post)"
+msgstr ""
+
+#: forms.py:295
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+
+#: forms.py:311
+msgid "update summary:"
+msgstr "atualizar resumo:"
+
+#: forms.py:312
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+
+#: forms.py:386
+msgid "Enter number of points to add or subtract"
+msgstr "Indique o número de pontos a adicionar ou remover"
+
+#: forms.py:400 const/__init__.py:253
+msgid "approved"
+msgstr "aprovado"
+
+#: forms.py:401 const/__init__.py:254
+msgid "watched"
+msgstr "monitorizado"
+
+#: forms.py:402 const/__init__.py:255
+msgid "suspended"
+msgstr "suspenso"
+
+#: forms.py:403 const/__init__.py:256
+msgid "blocked"
+msgstr "bloqueado"
+
+#: forms.py:405
+msgid "administrator"
+msgstr "administrador"
+
+#: forms.py:406 const/__init__.py:252
+msgid "moderator"
+msgstr "moderador"
+
+#: forms.py:426
+msgid "Change status to"
+msgstr "Alterar estado para"
+
+#: forms.py:453
+msgid "which one?"
+msgstr "qual?"
+
+#: forms.py:474
+msgid "Cannot change own status"
+msgstr "Não pode alterar o seu estado"
+
+#: forms.py:480
+msgid "Cannot turn other user to moderator"
+msgstr "Não pode transformar outro utilizador em moderador"
+
+#: forms.py:487
+msgid "Cannot change status of another moderator"
+msgstr "Não pode alterar o estado de outro moderador"
+
+#: forms.py:493
+msgid "Cannot change status to admin"
+msgstr "Não pode alterar o estado para administrador"
+
+#: forms.py:499
+#, python-format
+msgid ""
+"If you wish to change %(username)s's status, please make a meaningful "
+"selection."
+msgstr ""
+"Se pretende alterar o estado de %(username)s, faça uma seleção significativa."
+
+#: forms.py:508
+msgid "Subject line"
+msgstr "Linha de assunto"
+
+#: forms.py:515
+msgid "Message text"
+msgstr "Texto da mensagem"
+
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr "O seu nome (opcional):"
+
+#: forms.py:531
+msgid "Email:"
+msgstr "Endereço eletrónico:"
+
+#: forms.py:533
+msgid "Your message:"
+msgstr "A sua mensagem:"
+
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr "Não quero indicar o endereço eletrónico nem receber uma resposta:"
+
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr "Assinale o campo \"Não quero indicar o endereço eletrónico\"."
+
+#: forms.py:599
+msgid "ask anonymously"
+msgstr "perguntar anonimamente"
+
+#: forms.py:601
+msgid "Check if you do not want to reveal your name when asking this question"
+msgstr "Assinale se não quiser revelar o seu nome ao fazer esta questão"
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
+msgid ""
+"You have asked this question anonymously, if you decide to reveal your "
+"identity, please check this box."
+msgstr ""
+"Colocou esta questão de forma anónima. Se mudar de ideia e quiser revelar "
+"sua identidade, por favor, marque esta caixa."
+
+#: forms.py:773
+msgid "reveal identity"
+msgstr "revelar identidade"
+
+#: forms.py:831
+msgid ""
+"Sorry, only owner of the anonymous question can reveal his or her identity, "
+"please uncheck the box"
+msgstr ""
+"Desculpe, mas só o criador da questão anónima pode revelar a identidade. Por "
+"favor, desmarque a caixa"
+
+#: forms.py:844
+msgid ""
+"Sorry, apparently rules have just changed - it is no longer possible to ask "
+"anonymously. Please either check the \"reveal identity\" box or reload this "
+"page and try editing the question again."
+msgstr ""
+
+#: forms.py:888
+msgid "Real name"
+msgstr "Nome real"
+
+#: forms.py:895
+msgid "Website"
+msgstr "Sítio web"
+
+#: forms.py:902
+msgid "City"
+msgstr "Cidade"
+
+#: forms.py:911
+msgid "Show country"
+msgstr "Mostrar país"
+
+#: forms.py:916
+msgid "Date of birth"
+msgstr "Data de nascimento"
+
+#: forms.py:917
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr ""
+"não será mostrado. Utilizado para calcular a idade no formato: AAAA-MM-DD"
+
+#: forms.py:923
+msgid "Profile"
+msgstr "Perfil"
+
+#: forms.py:932
+msgid "Screen name"
+msgstr "Nome a exibir"
+
+#: forms.py:963 forms.py:964
+msgid "this email has already been registered, please use another one"
+msgstr "este endereço eletrónico já está registado. Por favor, utilize outro."
+
+#: forms.py:971
+msgid "Choose email tag filter"
+msgstr "Escolha o filtro de endereço eletrónico"
+
+#: forms.py:1018
+msgid "Asked by me"
+msgstr "As minhas questões"
+
+#: forms.py:1021
+msgid "Answered by me"
+msgstr "As minhas respostas"
+
+#: forms.py:1024
+msgid "Individually selected"
+msgstr "Selecionadas individualmente"
+
+#: forms.py:1027
+msgid "Entire forum (tag filtered)"
+msgstr "Todo o fórum (filtrar por tag)"
+
+#: forms.py:1031
+msgid "Comments and posts mentioning me"
+msgstr "Os meus comentários e mensagens"
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "por favor, escolha uma das opções acima"
+
+#: forms.py:1115
+msgid "okay, let's try!"
+msgstr "pronto, vamos tentar!"
+
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr ""
+
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
+msgid "about/"
+msgstr "sobre/"
+
+#: urls.py:42
+msgid "faq/"
+msgstr "faq/"
+
+#: urls.py:43
+msgid "privacy/"
+msgstr "privacidade/"
+
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
+msgid "answers/"
+msgstr "respostas/"
+
+#: urls.py:46 urls.py:87 urls.py:212
+msgid "edit/"
+msgstr "editar/"
+
+#: urls.py:51 urls.py:117
+msgid "revisions/"
+msgstr "revisões/"
+
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr "questões/"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
+msgid "questions/"
+msgstr "questões/"
+
+#: urls.py:82
+msgid "ask/"
+msgstr "perguntar/"
+
+#: urls.py:92
+msgid "retag/"
+msgstr "alterar tag/"
+
+#: urls.py:97
+msgid "close/"
+msgstr "fechar/"
+
+#: urls.py:102
+msgid "reopen/"
+msgstr "reabrir/"
+
+#: urls.py:107
+msgid "answer/"
+msgstr "responder/"
+
+#: urls.py:112
+msgid "vote/"
+msgstr "votar/"
+
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgets/"
+
+#: urls.py:158
+msgid "tags/"
+msgstr "tags/"
+
+#: urls.py:201
+msgid "subscribe-for-tags/"
+msgstr "subscrever por tags/"
+
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
+msgid "users/"
+msgstr "utilizadores/"
+
+#: urls.py:219
+msgid "subscriptions/"
+msgstr "subscrições/"
+
+#: urls.py:231
+msgid "users/update_has_custom_avatar/"
+msgstr ""
+
+#: urls.py:236 urls.py:241
+msgid "badges/"
+msgstr ""
+
+#: urls.py:246
+msgid "messages/"
+msgstr "mensagens/"
+
+#: urls.py:246
+msgid "markread/"
+msgstr "marcar como lida/"
+
+#: urls.py:262
+msgid "upload/"
+msgstr "enviar/"
+
+#: urls.py:263
+msgid "feedback/"
+msgstr "comentários/"
+
+#: urls.py:305
+msgid "question/"
+msgstr "questão/"
+
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
+msgid "account/"
+msgstr "conta/"
+
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr ""
+
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+
+#: conf/badges.py:13
+msgid "Badge settings"
+msgstr ""
+
+#: conf/badges.py:23
+msgid "Disciplined: minimum upvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:32
+msgid "Peer Pressure: minimum downvotes for deleted post"
+msgstr ""
+
+#: conf/badges.py:41
+msgid "Teacher: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:50
+msgid "Nice Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:59
+msgid "Good Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:68
+msgid "Great Answer: minimum upvotes for the answer"
+msgstr ""
+
+#: conf/badges.py:77
+msgid "Nice Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:86
+msgid "Good Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:95
+msgid "Great Question: minimum upvotes for the question"
+msgstr ""
+
+#: conf/badges.py:104
+msgid "Popular Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:113
+msgid "Notable Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:122
+msgid "Famous Question: minimum views"
+msgstr ""
+
+#: conf/badges.py:131
+msgid "Self-Learner: minimum answer upvotes"
+msgstr ""
+
+#: conf/badges.py:140
+msgid "Civic Duty: minimum votes"
+msgstr ""
+
+#: conf/badges.py:149
+msgid "Enlightened Duty: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:158
+msgid "Guru: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:167
+msgid "Necromancer: minimum upvotes"
+msgstr ""
+
+#: conf/badges.py:176
+msgid "Necromancer: minimum delay in days"
+msgstr ""
+
+#: conf/badges.py:185
+msgid "Associate Editor: minimum number of edits"
+msgstr ""
+
+#: conf/badges.py:194
+msgid "Favorite Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:203
+msgid "Stellar Question: minimum stars"
+msgstr ""
+
+#: conf/badges.py:212
+msgid "Commentator: minimum comments"
+msgstr "Comentador: mínimo de comentários"
+
+#: conf/badges.py:221
+msgid "Taxonomist: minimum tag use count"
+msgstr ""
+
+#: conf/badges.py:230
+msgid "Enthusiast: minimum days"
+msgstr "Entusiasta: mínimo de dias"
+
+#: conf/email.py:15
+msgid "Email and email alert settings"
+msgstr "Definições de endereço eletrónico e alertas"
+
+#: conf/email.py:24
+msgid "Prefix for the email subject line"
+msgstr "Prefixo para a linha de assunto nas mensagens"
+
+#: conf/email.py:26
+msgid ""
+"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
+"value entered here will overridethe default."
+msgstr ""
+
+#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Definições de endereço eletrónico e alertas"
+
+#: conf/email.py:47
+msgid "Maximum number of news entries in an email alert"
+msgstr ""
+
+#: conf/email.py:57
+msgid "Default notification frequency all questions"
+msgstr ""
+
+#: conf/email.py:59
+msgid "Option to define frequency of emailed updates for: all questions."
+msgstr ""
+
+#: conf/email.py:71
+msgid "Default notification frequency questions asked by the user"
+msgstr ""
+
+#: conf/email.py:73
+msgid ""
+"Option to define frequency of emailed updates for: Question asked by the "
+"user."
+msgstr ""
+
+#: conf/email.py:85
+msgid "Default notification frequency questions answered by the user"
+msgstr ""
+
+#: conf/email.py:87
+msgid ""
+"Option to define frequency of emailed updates for: Question answered by the "
+"user."
+msgstr ""
+
+#: conf/email.py:99
+msgid ""
+"Default notification frequency questions individually "
+"selected by the user"
+msgstr ""
+
+#: conf/email.py:102
+msgid ""
+"Option to define frequency of emailed updates for: Question individually "
+"selected by the user."
+msgstr ""
+
+#: conf/email.py:114
+msgid ""
+"Default notification frequency for mentions and "
+"comments"
+msgstr ""
+
+#: conf/email.py:117
+msgid ""
+"Option to define frequency of emailed updates for: Mentions and comments."
+msgstr ""
+
+#: conf/email.py:128
+msgid "Send periodic reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:130
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_unanswered_question_reminders\" (for example, via a cron job "
+"- with an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:143
+msgid "Days before starting to send reminders about unanswered questions"
+msgstr ""
+
+#: conf/email.py:154
+msgid ""
+"How often to send unanswered question reminders (in days between the "
+"reminders sent)."
+msgstr ""
+
+#: conf/email.py:166
+msgid "Max. number of reminders to send about unanswered questions"
+msgstr ""
+
+#: conf/email.py:177
+msgid "Send periodic reminders to accept the best answer"
+msgstr ""
+
+#: conf/email.py:179
+msgid ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
+msgstr ""
+
+#: conf/email.py:192
+msgid "Days before starting to send reminders to accept an answer"
+msgstr ""
+
+#: conf/email.py:203
+msgid ""
+"How often to send accept answer reminders (in days between the reminders "
+"sent)."
+msgstr ""
+
+#: conf/email.py:215
+msgid "Max. number of reminders to send to accept the best answer"
+msgstr ""
+
+#: conf/email.py:227
+msgid "Require email verification before allowing to post"
+msgstr ""
+
+#: conf/email.py:228
+msgid ""
+"Active email verification is done by sending a verification key in email"
+msgstr ""
+
+#: conf/email.py:237
+msgid "Allow only one account per email address"
+msgstr ""
+
+#: conf/email.py:246
+msgid "Fake email for anonymous user"
+msgstr ""
+
+#: conf/email.py:247
+msgid "Use this setting to control gravatar for email-less user"
+msgstr ""
+
+#: conf/email.py:256
+msgid "Allow posting questions by email"
+msgstr ""
+
+#: conf/email.py:258
+msgid ""
+"Before enabling this setting - please fill out IMAP settings in the settings."
+"py file"
+msgstr ""
+
+#: conf/email.py:269
+msgid "Replace space in emailed tags with dash"
+msgstr ""
+
+#: conf/email.py:271
+msgid ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
+msgstr ""
+
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr ""
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
+msgid "Keys for external services"
+msgstr ""
+
+#: conf/external_keys.py:19
+msgid "Google site verification key"
+msgstr ""
+
+#: conf/external_keys.py:21
+#, python-format
+msgid ""
+"This key helps google index your site please obtain is at <a href=\"%(url)s?"
+"hl=%(lang)s\">google webmasters tools site</a>"
+msgstr ""
+
+#: conf/external_keys.py:36
+msgid "Google Analytics key"
+msgstr ""
+
+#: conf/external_keys.py:38
+#, python-format
+msgid ""
+"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
+"use Google Analytics to monitor your site"
+msgstr ""
+
+#: conf/external_keys.py:51
+msgid "Enable recaptcha (keys below are required)"
+msgstr ""
+
+#: conf/external_keys.py:62
+msgid "Recaptcha public key"
+msgstr ""
+
+#: conf/external_keys.py:70
+msgid "Recaptcha private key"
+msgstr ""
+
+#: conf/external_keys.py:72
+#, python-format
+msgid ""
+"Recaptcha is a tool that helps distinguish real people from annoying spam "
+"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:84
+msgid "Facebook public API key"
+msgstr ""
+
+#: conf/external_keys.py:86
+#, python-format
+msgid ""
+"Facebook API key and Facebook secret allow to use Facebook Connect login "
+"method at your site. Please obtain these keys at <a href=\"%(url)s"
+"\">facebook create app</a> site"
+msgstr ""
+
+#: conf/external_keys.py:99
+msgid "Facebook secret key"
+msgstr ""
+
+#: conf/external_keys.py:107
+msgid "Twitter consumer key"
+msgstr ""
+
+#: conf/external_keys.py:109
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
+"a>"
+msgstr ""
+
+#: conf/external_keys.py:120
+msgid "Twitter consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:128
+msgid "LinkedIn consumer key"
+msgstr ""
+
+#: conf/external_keys.py:130
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
+msgstr ""
+
+#: conf/external_keys.py:141
+msgid "LinkedIn consumer secret"
+msgstr ""
+
+#: conf/external_keys.py:149
+msgid "ident.ca consumer key"
+msgstr ""
+
+#: conf/external_keys.py:151
+#, python-format
+msgid ""
+"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
+"site</a>"
+msgstr ""
+
+#: conf/external_keys.py:162
+msgid "ident.ca consumer secret"
+msgstr ""
+
+#: conf/flatpages.py:11
+msgid "Flatpages - about, privacy policy, etc."
+msgstr ""
+
+#: conf/flatpages.py:19
+msgid "Text of the Q&A forum About page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:22
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"about\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:32
+msgid "Text of the Q&A forum FAQ page (html format)"
+msgstr ""
+
+#: conf/flatpages.py:35
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"faq\" page to check your input."
+msgstr ""
+
+#: conf/flatpages.py:46
+msgid "Text of the Q&A forum Privacy Policy (html format)"
+msgstr ""
+
+#: conf/flatpages.py:49
+msgid ""
+"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
+"the \"privacy\" page to check your input."
+msgstr ""
+
+#: conf/forum_data_rules.py:12
+msgid "Data entry and display rules"
+msgstr ""
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
+#, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr ""
+
+#: conf/forum_data_rules.py:33
+msgid "Check to enable community wiki feature"
+msgstr ""
+
+#: conf/forum_data_rules.py:42
+msgid "Allow asking questions anonymously"
+msgstr ""
+
+#: conf/forum_data_rules.py:44
+msgid ""
+"Users do not accrue reputation for anonymous questions and their identity is "
+"not revealed until they change their mind"
+msgstr ""
+
+#: conf/forum_data_rules.py:56
+msgid "Allow posting before logging in"
+msgstr ""
+
+#: conf/forum_data_rules.py:58
+msgid ""
+"Check if you want to allow users start posting questions or answers before "
+"logging in. Enabling this may require adjustments in the user login system "
+"to check for pending posts every time the user logs in. The builtin Askbot "
+"login system supports this feature."
+msgstr ""
+
+#: conf/forum_data_rules.py:73
+msgid "Allow swapping answer with question"
+msgstr ""
+
+#: conf/forum_data_rules.py:75
+msgid ""
+"This setting will help import data from other forums such as zendesk, when "
+"automatic data import fails to detect the original question correctly."
+msgstr ""
+
+#: conf/forum_data_rules.py:87
+msgid "Maximum length of tag (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "As tags são obrigatórias"
+
+#: conf/forum_data_rules.py:135
+msgid "Mandatory tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:138
+msgid ""
+"At least one of these tags will be required for any new or newly edited "
+"question. A mandatory tag may be wildcard, if the wildcard tags are active."
+msgstr ""
+
+#: conf/forum_data_rules.py:150
+msgid "Force lowercase the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:152
+msgid ""
+"Attention: after checking this, please back up the database, and run a "
+"management command: <code>python manage.py fix_question_tags</code> to "
+"globally rename the tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:166
+msgid "Format of tag list"
+msgstr ""
+
+#: conf/forum_data_rules.py:168
+msgid ""
+"Select the format to show tags in, either as a simple list, or as a tag cloud"
+msgstr ""
+
+#: conf/forum_data_rules.py:180
+msgid "Use wildcard tags"
+msgstr ""
+
+#: conf/forum_data_rules.py:182
+msgid ""
+"Wildcard tags can be used to follow or ignore many tags at once, a valid "
+"wildcard tag has a single wildcard at the very end"
+msgstr ""
+
+#: conf/forum_data_rules.py:195
+msgid "Default max number of comments to display under posts"
+msgstr ""
+
+#: conf/forum_data_rules.py:206
+#, python-format
+msgid "Maximum comment length, must be < %(max_len)s"
+msgstr ""
+
+#: conf/forum_data_rules.py:216
+msgid "Limit time to edit comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:218
+msgid "If unchecked, there will be no time limit to edit the comments"
+msgstr ""
+
+#: conf/forum_data_rules.py:229
+msgid "Minutes allowed to edit a comment"
+msgstr ""
+
+#: conf/forum_data_rules.py:230
+msgid "To enable this setting, check the previous one"
+msgstr ""
+
+#: conf/forum_data_rules.py:239
+msgid "Save comment by pressing <Enter> key"
+msgstr ""
+
+#: conf/forum_data_rules.py:248
+msgid "Minimum length of search term for Ajax search"
+msgstr ""
+
+#: conf/forum_data_rules.py:249
+msgid "Must match the corresponding database backend setting"
+msgstr ""
+
+#: conf/forum_data_rules.py:258
+msgid "Do not make text query sticky in search"
+msgstr ""
+
+#: conf/forum_data_rules.py:260
+msgid ""
+"Check to disable the \"sticky\" behavior of the search query. This may be "
+"useful if you want to move the search bar away from the default position or "
+"do not like the default sticky behavior of the text search query."
+msgstr ""
+
+#: conf/forum_data_rules.py:273
+msgid "Maximum number of tags per question"
+msgstr ""
+
+#: conf/forum_data_rules.py:285
+msgid "Number of questions to list by default"
+msgstr ""
+
+#: conf/forum_data_rules.py:295
+msgid "What should \"unanswered question\" mean?"
+msgstr ""
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Barra lateral da página principal"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "Barra lateral da página principal"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/license.py:13
+msgid "Content License"
+msgstr ""
+
+#: conf/license.py:21
+msgid "Show license clause in the site footer"
+msgstr ""
+
+#: conf/license.py:30
+msgid "Short name for the license"
+msgstr ""
+
+#: conf/license.py:39
+msgid "Full name of the license"
+msgstr ""
+
+#: conf/license.py:40
+msgid "Creative Commons Attribution Share Alike 3.0"
+msgstr ""
+
+#: conf/license.py:48
+msgid "Add link to the license page"
+msgstr ""
+
+#: conf/license.py:57
+msgid "License homepage"
+msgstr ""
+
+#: conf/license.py:59
+msgid "URL of the official page with all the license legal clauses"
+msgstr ""
+
+#: conf/license.py:69
+msgid "Use license logo"
+msgstr ""
+
+#: conf/license.py:78
+msgid "License logo image"
+msgstr ""
+
+#: conf/login_providers.py:13
+msgid "Login provider setings"
+msgstr ""
+
+#: conf/login_providers.py:22
+msgid ""
+"Show alternative login provider buttons on the password \"Sign Up\" page"
+msgstr ""
+
+#: conf/login_providers.py:31
+msgid "Always display local login form and hide \"Askbot\" button."
+msgstr ""
+
+#: conf/login_providers.py:40
+msgid "Activate to allow login with self-hosted wordpress site"
+msgstr ""
+
+#: conf/login_providers.py:41
+msgid ""
+"to activate this feature you must fill out the wordpress xml-rpc setting "
+"bellow"
+msgstr ""
+
+#: conf/login_providers.py:50
+msgid ""
+"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
+"xmlrpc.php"
+msgstr ""
+
+#: conf/login_providers.py:51
+msgid ""
+"To enable, go to Settings->Writing->Remote Publishing and check the box for "
+"XML-RPC"
+msgstr ""
+
+#: conf/login_providers.py:60
+msgid "Upload your icon"
+msgstr "Enviar o seu ícone"
+
+#: conf/login_providers.py:90
+#, python-format
+msgid "Activate %(provider)s login"
+msgstr ""
+
+#: conf/login_providers.py:95
+#, python-format
+msgid ""
+"Note: to really enable %(provider)s login some additional parameters will "
+"need to be set in the \"External keys\" section"
+msgstr ""
+
+#: conf/markup.py:15
+msgid "Markup in posts"
+msgstr ""
+
+#: conf/markup.py:41
+msgid "Enable code-friendly Markdown"
+msgstr ""
+
+#: conf/markup.py:43
+msgid ""
+"If checked, underscore characters will not trigger italic or bold formatting "
+"- bold and italic text can still be marked up with asterisks. Note that "
+"\"MathJax support\" implicitly turns this feature on, because underscores "
+"are heavily used in LaTeX input."
+msgstr ""
+
+#: conf/markup.py:58
+msgid "Mathjax support (rendering of LaTeX)"
+msgstr ""
+
+#: conf/markup.py:60
+#, python-format
+msgid ""
+"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
+"installed on your server in its own directory."
+msgstr ""
+
+#: conf/markup.py:74
+msgid "Base url of MathJax deployment"
+msgstr ""
+
+#: conf/markup.py:76
+msgid ""
+"Note - <strong>MathJax is not included with askbot</strong> - you should "
+"deploy it yourself, preferably at a separate domain and enter url pointing "
+"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+msgstr ""
+
+#: conf/markup.py:91
+msgid "Enable autolinking with specific patterns"
+msgstr ""
+
+#: conf/markup.py:93
+msgid ""
+"If you enable this feature, the application will be able to detect patterns "
+"and auto link to URLs"
+msgstr ""
+
+#: conf/markup.py:106
+msgid "Regexes to detect the link patterns"
+msgstr ""
+
+#: conf/markup.py:108
+msgid ""
+"Enter valid regular expressions for the patters, one per line. For example "
+"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
+"The numbers captured by the pattern in the parentheses will be transferred "
+"to the link url template. Please look up more information about regular "
+"expressions elsewhere."
+msgstr ""
+
+#: conf/markup.py:127
+msgid "URLs for autolinking"
+msgstr ""
+
+#: conf/markup.py:129
+msgid ""
+"Here, please enter url templates for the patterns entered in the previous "
+"setting, also one entry per line. <strong>Make sure that number of lines in "
+"this setting and the previous one are the same</strong> For example template "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
+"shown above and the entry in the post #123 will produce link to the bug 123 "
+"in the redhat bug tracker."
+msgstr ""
+
+#: conf/minimum_reputation.py:12
+msgid "Karma thresholds"
+msgstr ""
+
+#: conf/minimum_reputation.py:22
+msgid "Upvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:31
+msgid "Downvote"
+msgstr ""
+
+#: conf/minimum_reputation.py:40
+msgid "Answer own question immediately"
+msgstr ""
+
+#: conf/minimum_reputation.py:49
+msgid "Accept own answer"
+msgstr ""
+
+#: conf/minimum_reputation.py:58
+msgid "Flag offensive"
+msgstr ""
+
+#: conf/minimum_reputation.py:67
+msgid "Leave comments"
+msgstr "Abandonar comentários"
+
+#: conf/minimum_reputation.py:76
+msgid "Delete comments posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:85
+msgid "Delete questions and answers posted by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:94
+msgid "Upload files"
+msgstr "Enviar ficheiros"
+
+#: conf/minimum_reputation.py:103
+msgid "Close own questions"
+msgstr "Fechar as suas questões"
+
+#: conf/minimum_reputation.py:112
+msgid "Retag questions posted by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:121
+msgid "Reopen own questions"
+msgstr "Reabrir as suas questões"
+
+#: conf/minimum_reputation.py:130
+msgid "Edit community wiki posts"
+msgstr "Editar mensagens do wiki comunitário"
+
+#: conf/minimum_reputation.py:139
+msgid "Edit posts authored by other people"
+msgstr ""
+
+#: conf/minimum_reputation.py:148
+msgid "View offensive flags"
+msgstr ""
+
+#: conf/minimum_reputation.py:157
+msgid "Close questions asked by others"
+msgstr ""
+
+#: conf/minimum_reputation.py:166
+msgid "Lock posts"
+msgstr "Bloquear mensagens"
+
+#: conf/minimum_reputation.py:175
+msgid "Remove rel=nofollow from own homepage"
+msgstr ""
+
+#: conf/minimum_reputation.py:177
+msgid ""
+"When a search engine crawler will see a rel=nofollow attribute on a link - "
+"the link will not count towards the rank of the users personal site."
+msgstr ""
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
+#: conf/reputation_changes.py:13
+msgid "Karma loss and gain rules"
+msgstr ""
+
+#: conf/reputation_changes.py:23
+msgid "Maximum daily reputation gain per user"
+msgstr ""
+
+#: conf/reputation_changes.py:32
+msgid "Gain for receiving an upvote"
+msgstr ""
+
+#: conf/reputation_changes.py:41
+msgid "Gain for the author of accepted answer"
+msgstr ""
+
+#: conf/reputation_changes.py:50
+msgid "Gain for accepting best answer"
+msgstr ""
+
+#: conf/reputation_changes.py:59
+msgid "Gain for post owner on canceled downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:68
+msgid "Gain for voter on canceling downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:78
+msgid "Loss for voter for canceling of answer acceptance"
+msgstr ""
+
+#: conf/reputation_changes.py:88
+msgid "Loss for author whose answer was \"un-accepted\""
+msgstr ""
+
+#: conf/reputation_changes.py:98
+msgid "Loss for giving a downvote"
+msgstr ""
+
+#: conf/reputation_changes.py:108
+msgid "Loss for owner of post that was flagged offensive"
+msgstr ""
+
+#: conf/reputation_changes.py:118
+msgid "Loss for owner of post that was downvoted"
+msgstr ""
+
+#: conf/reputation_changes.py:128
+msgid "Loss for owner of post that was flagged 3 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:138
+msgid "Loss for owner of post that was flagged 5 times per same revision"
+msgstr ""
+
+#: conf/reputation_changes.py:148
+msgid "Loss for post owner when upvote is canceled"
+msgstr ""
+
+#: conf/sidebar_main.py:12
+msgid "Main page sidebar"
+msgstr "Barra lateral da página principal"
+
+#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
+#: conf/sidebar_question.py:19
+msgid "Custom sidebar header"
+msgstr ""
+
+#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
+#: conf/sidebar_question.py:22
+msgid ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_main.py:36
+msgid "Show avatar block in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:38
+msgid "Uncheck this if you want to hide the avatar block from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:49
+msgid "Limit how many avatars will be displayed on the sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:59
+msgid "Show tag selector in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:61
+msgid ""
+"Uncheck this if you want to hide the options for choosing interesting and "
+"ignored tags "
+msgstr ""
+
+#: conf/sidebar_main.py:72
+msgid "Show tag list/cloud in sidebar"
+msgstr ""
+
+#: conf/sidebar_main.py:74
+msgid ""
+"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
+#: conf/sidebar_question.py:75
+msgid "Custom sidebar footer"
+msgstr ""
+
+#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
+#: conf/sidebar_question.py:78
+msgid ""
+"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
+"When using this option (as well as the sidebar header), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+msgstr ""
+
+#: conf/sidebar_profile.py:12
+msgid "User profile sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:11
+msgid "Question page sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:35
+msgid "Show tag list in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:37
+msgid "Uncheck this if you want to hide the tag list from the sidebar "
+msgstr ""
+
+#: conf/sidebar_question.py:48
+msgid "Show meta information in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:50
+msgid ""
+"Uncheck this if you want to hide the meta information about the question "
+"(post date, views, last updated). "
+msgstr ""
+
+#: conf/sidebar_question.py:62
+msgid "Show related questions in sidebar"
+msgstr ""
+
+#: conf/sidebar_question.py:64
+msgid "Uncheck this if you want to hide the list of related questions. "
+msgstr ""
+
+#: conf/site_modes.py:64
+msgid "Bootstrap mode"
+msgstr ""
+
+#: conf/site_modes.py:74
+msgid "Activate a \"Bootstrap\" mode"
+msgstr ""
+
+#: conf/site_modes.py:76
+msgid ""
+"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
+"more suitable for the smaller communities, <strong>WARNING:</strong> your "
+"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
+"changed after you modify this setting."
+msgstr ""
+
+#: conf/site_settings.py:12
+msgid "URLS, keywords & greetings"
+msgstr ""
+
+#: conf/site_settings.py:21
+msgid "Site title for the Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:30
+msgid "Comma separated list of Q&A site keywords"
+msgstr ""
+
+#: conf/site_settings.py:39
+msgid "Copyright message to show in the footer"
+msgstr ""
+
+#: conf/site_settings.py:49
+msgid "Site description for the search engines"
+msgstr ""
+
+#: conf/site_settings.py:58
+msgid "Short name for your Q&A forum"
+msgstr ""
+
+#: conf/site_settings.py:67
+msgid "Base URL for your Q&A forum, must start with http or https"
+msgstr ""
+
+#: conf/site_settings.py:78
+msgid "Check to enable greeting for anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:89
+msgid "Text shown in the greeting message shown to the anonymous user"
+msgstr ""
+
+#: conf/site_settings.py:93
+msgid "Use HTML to format the message "
+msgstr ""
+
+#: conf/site_settings.py:102
+msgid "Feedback site URL"
+msgstr ""
+
+#: conf/site_settings.py:104
+msgid "If left empty, a simple internal feedback form will be used instead"
+msgstr ""
+
+#: conf/skin_counter_settings.py:11
+msgid "Skin: view, vote and answer counters"
+msgstr ""
+
+#: conf/skin_counter_settings.py:19
+msgid "Vote counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:29
+msgid "Background color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
+#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
+#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
+#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
+#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
+#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
+#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
+#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
+#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
+#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
+msgid "HTML color name or hex value"
+msgstr ""
+
+#: conf/skin_counter_settings.py:40
+msgid "Foreground color for votes = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:51
+msgid "Background color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:61
+msgid "Foreground color for votes"
+msgstr ""
+
+#: conf/skin_counter_settings.py:71
+msgid "Background color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:84
+msgid "Foreground color for votes = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:95
+msgid "View counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:105
+msgid "Background color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:116
+msgid "Foreground color for views = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:127
+msgid "Background color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:137
+msgid "Foreground color for views"
+msgstr ""
+
+#: conf/skin_counter_settings.py:147
+msgid "Background color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:162
+msgid "Foreground color for views = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:173
+msgid "Answer counter value to give \"full color\""
+msgstr ""
+
+#: conf/skin_counter_settings.py:185
+msgid "Background color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:195
+msgid "Foreground color for answers = 0"
+msgstr ""
+
+#: conf/skin_counter_settings.py:205
+msgid "Background color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:215
+msgid "Foreground color for answers"
+msgstr ""
+
+#: conf/skin_counter_settings.py:227
+msgid "Background color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:238
+msgid "Foreground color for answers = MAX"
+msgstr ""
+
+#: conf/skin_counter_settings.py:251
+msgid "Background color for accepted"
+msgstr ""
+
+#: conf/skin_counter_settings.py:261
+msgid "Foreground color for accepted answer"
+msgstr ""
+
+#: conf/skin_general_settings.py:15
+msgid "Logos and HTML <head> parts"
+msgstr ""
+
+#: conf/skin_general_settings.py:23
+msgid "Q&A site logo"
+msgstr ""
+
+#: conf/skin_general_settings.py:25
+msgid "To change the logo, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/skin_general_settings.py:37
+msgid "Show logo"
+msgstr "Mostrar logotipo"
+
+#: conf/skin_general_settings.py:39
+msgid ""
+"Check if you want to show logo in the forum header or uncheck in the case "
+"you do not want the logo to appear in the default location"
+msgstr ""
+
+#: conf/skin_general_settings.py:51
+msgid "Site favicon"
+msgstr "\"Favicon\" do sítio"
+
+#: conf/skin_general_settings.py:53
+#, python-format
+msgid ""
+"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
+"browser user interface. Please find more information about favicon at <a "
+"href=\"%(favicon_info_url)s\">this page</a>."
+msgstr ""
+
+#: conf/skin_general_settings.py:69
+msgid "Password login button"
+msgstr ""
+
+#: conf/skin_general_settings.py:71
+msgid ""
+"An 88x38 pixel image that is used on the login screen for the password login "
+"button."
+msgstr ""
+
+#: conf/skin_general_settings.py:84
+msgid "Show all UI functions to all users"
+msgstr ""
+
+#: conf/skin_general_settings.py:86
+msgid ""
+"If checked, all forum functions will be shown to users, regardless of their "
+"reputation. However to use those functions, moderation rules, reputation and "
+"other limits will still apply."
+msgstr ""
+
+#: conf/skin_general_settings.py:101
+msgid "Select skin"
+msgstr "Selecione o tema"
+
+#: conf/skin_general_settings.py:112
+msgid "Customize HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:121
+msgid "Custom portion of the HTML <HEAD>"
+msgstr ""
+
+#: conf/skin_general_settings.py:123
+msgid ""
+"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
+"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
+"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
+"meta&gt; may be added. Please, keep in mind that adding external javascript "
+"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
+"pages. Instead, it will be more efficient to place links to the javascript "
+"files into the footer. <strong>Note:</strong> if you do use this setting, "
+"please test the site with the W3C HTML validator service."
+msgstr ""
+
+#: conf/skin_general_settings.py:145
+msgid "Custom header additions"
+msgstr ""
+
+#: conf/skin_general_settings.py:147
+msgid ""
+"Header is the bar at the top of the content that contains user info and site "
+"links, and is common to all pages. Use this area to enter contents of the "
+"headerin the HTML format. When customizing the site header (as well as "
+"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
+"sure that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:162
+msgid "Site footer mode"
+msgstr ""
+
+#: conf/skin_general_settings.py:164
+msgid ""
+"Footer is the bottom portion of the content, which is common to all pages. "
+"You can disable, customize, or use the default footer."
+msgstr ""
+
+#: conf/skin_general_settings.py:181
+msgid "Custom footer (HTML format)"
+msgstr ""
+
+#: conf/skin_general_settings.py:183
+msgid ""
+"<strong>To enable this function</strong>, please select option 'customize' "
+"in the \"Site footer mode\" above. Use this area to enter contents of the "
+"footer in the HTML format. When customizing the site footer (as well as the "
+"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
+"that your input is valid and works well in all browsers."
+msgstr ""
+
+#: conf/skin_general_settings.py:198
+msgid "Apply custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:200
+msgid ""
+"Check if you want to change appearance of your form by adding custom style "
+"sheet rules (please see the next item)"
+msgstr ""
+
+#: conf/skin_general_settings.py:212
+msgid "Custom style sheet (CSS)"
+msgstr ""
+
+#: conf/skin_general_settings.py:214
+msgid ""
+"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
+"option above. The CSS rules added in this window will be applied after the "
+"default style sheet rules. The custom style sheet will be served dynamically "
+"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
+"depends (default is empty string) on the url configuration in your urls.py."
+msgstr ""
+
+#: conf/skin_general_settings.py:230
+msgid "Add custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:233
+msgid "Check to enable javascript that you can enter in the next field"
+msgstr ""
+
+#: conf/skin_general_settings.py:243
+msgid "Custom javascript"
+msgstr ""
+
+#: conf/skin_general_settings.py:245
+msgid ""
+"Type or paste plain javascript that you would like to run on your site. Link "
+"to the script will be inserted at the bottom of the HTML output and will be "
+"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
+"your javascript code may break other functionalities of the site and that "
+"the behavior may not be consistent across different browsers (<strong>to "
+"enable your custom code</strong>, check \"Add custom javascript\" option "
+"above)."
+msgstr ""
+
+#: conf/skin_general_settings.py:263
+msgid "Skin media revision number"
+msgstr ""
+
+#: conf/skin_general_settings.py:265
+msgid "Will be set automatically but you can modify it if necessary."
+msgstr ""
+
+#: conf/skin_general_settings.py:276
+msgid "Hash to update the media revision number automatically."
+msgstr ""
+
+#: conf/skin_general_settings.py:280
+msgid "Will be set automatically, it is not necesary to modify manually."
+msgstr ""
+
+#: conf/social_sharing.py:11
+msgid "Sharing content on social networks"
+msgstr ""
+
+#: conf/social_sharing.py:20
+msgid "Check to enable sharing of questions on Twitter"
+msgstr ""
+
+#: conf/social_sharing.py:29
+msgid "Check to enable sharing of questions on Facebook"
+msgstr ""
+
+#: conf/social_sharing.py:38
+msgid "Check to enable sharing of questions on LinkedIn"
+msgstr ""
+
+#: conf/social_sharing.py:47
+msgid "Check to enable sharing of questions on Identi.ca"
+msgstr ""
+
+#: conf/social_sharing.py:56
+msgid "Check to enable sharing of questions on Google+"
+msgstr ""
+
+#: conf/spam_and_moderation.py:10
+msgid "Akismet spam protection"
+msgstr ""
+
+#: conf/spam_and_moderation.py:18
+msgid "Enable Akismet spam detection(keys below are required)"
+msgstr ""
+
+#: conf/spam_and_moderation.py:21
+#, python-format
+msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
+msgstr ""
+
+#: conf/spam_and_moderation.py:31
+msgid "Akismet key for spam detection"
+msgstr ""
+
+#: conf/super_groups.py:5
+msgid "Reputation, Badges, Votes & Flags"
+msgstr ""
+
+#: conf/super_groups.py:6
+msgid "Static Content, URLS & UI"
+msgstr ""
+
+#: conf/super_groups.py:7
+msgid "Data rules & Formatting"
+msgstr ""
+
+#: conf/super_groups.py:8
+msgid "External Services"
+msgstr "Serviços externos"
+
+#: conf/super_groups.py:9
+msgid "Login, Users & Communication"
+msgstr ""
+
+#: conf/user_settings.py:14
+msgid "User settings"
+msgstr "Definições do utilizador"
+
+#: conf/user_settings.py:23
+msgid "Allow editing user screen name"
+msgstr ""
+
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr ""
+
+#: conf/user_settings.py:41
+msgid "Allow account recovery by email"
+msgstr ""
+
+#: conf/user_settings.py:50
+msgid "Allow adding and removing login methods"
+msgstr ""
+
+#: conf/user_settings.py:60
+msgid "Minimum allowed length for screen name"
+msgstr ""
+
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Valor padrão: %s"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr ""
+
+#: conf/user_settings.py:99
+msgid ""
+"This option allows you to set the default avatar type for email addresses "
+"without associated gravatar images. For more information, please visit <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:109
+msgid "Name for the Anonymous user"
+msgstr ""
+
+#: conf/vote_rules.py:14
+msgid "Vote and flag limits"
+msgstr ""
+
+#: conf/vote_rules.py:24
+msgid "Number of votes a user can cast per day"
+msgstr ""
+
+#: conf/vote_rules.py:33
+msgid "Maximum number of flags per user per day"
+msgstr ""
+
+#: conf/vote_rules.py:42
+msgid "Threshold for warning about remaining daily votes"
+msgstr ""
+
+#: conf/vote_rules.py:51
+msgid "Number of days to allow canceling votes"
+msgstr ""
+
+#: conf/vote_rules.py:60
+msgid "Number of days required before answering own question"
+msgstr ""
+
+#: conf/vote_rules.py:69
+msgid "Number of flags required to automatically hide posts"
+msgstr ""
+
+#: conf/vote_rules.py:78
+msgid "Number of flags required to automatically delete posts"
+msgstr ""
+
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr ""
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr ""
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr ""
+
+#: const/__init__.py:10
+msgid "duplicate question"
+msgstr ""
+
+#: const/__init__.py:11
+msgid "question is off-topic or not relevant"
+msgstr ""
+
+#: const/__init__.py:12
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: const/__init__.py:13
+msgid "not a real question"
+msgstr ""
+
+#: const/__init__.py:14
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: const/__init__.py:15
+msgid "question is not relevant or outdated"
+msgstr ""
+
+#: const/__init__.py:16
+msgid "question contains offensive or malicious remarks"
+msgstr ""
+
+#: const/__init__.py:17
+msgid "spam or advertising"
+msgstr ""
+
+#: const/__init__.py:18
+msgid "too localized"
+msgstr ""
+
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
+msgid "newest"
+msgstr "recentes"
+
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
+msgid "oldest"
+msgstr "antigas"
+
+#: const/__init__.py:45
+msgid "active"
+msgstr "ativa"
+
+#: const/__init__.py:46
+msgid "inactive"
+msgstr "inativa"
+
+#: const/__init__.py:47
+msgid "hottest"
+msgstr "mais quentes"
+
+#: const/__init__.py:48
+msgid "coldest"
+msgstr "mais frias"
+
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
+msgid "most voted"
+msgstr "mais votadas"
+
+#: const/__init__.py:50
+msgid "least voted"
+msgstr "menos votadas"
+
+#: const/__init__.py:51
+msgid "relevance"
+msgstr "relevantes"
+
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
+msgid "all"
+msgstr "todas"
+
+#: const/__init__.py:64
+msgid "unanswered"
+msgstr "não respondidas"
+
+#: const/__init__.py:65
+msgid "favorite"
+msgstr "favoritas"
+
+#: const/__init__.py:70
+msgid "list"
+msgstr "lista"
+
+#: const/__init__.py:71
+msgid "cloud"
+msgstr "nuvem"
+
+#: const/__init__.py:79
+msgid "Question has no answers"
+msgstr "A questão não tem respostas"
+
+#: const/__init__.py:80
+msgid "Question has no accepted answers"
+msgstr "A questão não tem respostas aceites"
+
+#: const/__init__.py:125
+msgid "asked a question"
+msgstr "colocou uma questão"
+
+#: const/__init__.py:126
+msgid "answered a question"
+msgstr "respondeu uma questão"
+
+#: const/__init__.py:127 const/__init__.py:203
+msgid "commented question"
+msgstr "questão comentada"
+
+#: const/__init__.py:128 const/__init__.py:204
+msgid "commented answer"
+msgstr "resposta comentada"
+
+#: const/__init__.py:129
+msgid "edited question"
+msgstr "questão editada"
+
+#: const/__init__.py:130
+msgid "edited answer"
+msgstr "resposta editada"
+
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
+msgstr "recebeu um prémio"
+
+#: const/__init__.py:132
+msgid "marked best answer"
+msgstr "marcada como melhor resposta"
+
+#: const/__init__.py:133
+msgid "upvoted"
+msgstr ""
+
+#: const/__init__.py:134
+msgid "downvoted"
+msgstr ""
+
+#: const/__init__.py:135
+msgid "canceled vote"
+msgstr "voto cancelado"
+
+#: const/__init__.py:136
+msgid "deleted question"
+msgstr "questão eliminada"
+
+#: const/__init__.py:137
+msgid "deleted answer"
+msgstr "resposta eliminada"
+
+#: const/__init__.py:138
+msgid "marked offensive"
+msgstr "assinalada como ofensiva"
+
+#: const/__init__.py:139
+msgid "updated tags"
+msgstr "tags atualizadas"
+
+#: const/__init__.py:140
+msgid "selected favorite"
+msgstr ""
+
+#: const/__init__.py:141
+msgid "completed user profile"
+msgstr ""
+
+#: const/__init__.py:142
+msgid "email update sent to user"
+msgstr ""
+
+#: const/__init__.py:145
+msgid "reminder about unanswered questions sent"
+msgstr ""
+
+#: const/__init__.py:149
+msgid "reminder about accepting the best answer sent"
+msgstr ""
+
+#: const/__init__.py:151
+msgid "mentioned in the post"
+msgstr ""
+
+#: const/__init__.py:202
+#, fuzzy
+msgid "answered question"
+msgstr "respondeu uma questão"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "resposta editada"
+
+#: const/__init__.py:209
+msgid "[closed]"
+msgstr "[fechada]"
+
+#: const/__init__.py:210
+msgid "[deleted]"
+msgstr "[eliminada]"
+
+#: const/__init__.py:211 views/readers.py:566
+msgid "initial version"
+msgstr "versão inicial"
+
+#: const/__init__.py:212
+msgid "retagged"
+msgstr "nova tag"
+
+#: const/__init__.py:220
+msgid "off"
+msgstr "desligado"
+
+#: const/__init__.py:221
+msgid "exclude ignored"
+msgstr "excluir ignoradas"
+
+#: const/__init__.py:222
+msgid "only selected"
+msgstr "só selecionadas"
+
+#: const/__init__.py:226
+msgid "instantly"
+msgstr "imediatamente"
+
+#: const/__init__.py:227
+msgid "daily"
+msgstr "diariamente"
+
+#: const/__init__.py:228
+msgid "weekly"
+msgstr "semanalmente"
+
+#: const/__init__.py:229
+msgid "no email"
+msgstr "sem endereço eletrónico"
+
+#: const/__init__.py:236
+msgid "identicon"
+msgstr ""
+
+#: const/__init__.py:237
+msgid "mystery-man"
+msgstr ""
+
+#: const/__init__.py:238
+msgid "monsterid"
+msgstr ""
+
+#: const/__init__.py:239
+msgid "wavatar"
+msgstr "wavatar"
+
+#: const/__init__.py:240
+msgid "retro"
+msgstr "retro"
+
+#: const/__init__.py:287 skins/default/templates/badges.html:38
+msgid "gold"
+msgstr "ouro"
+
+#: const/__init__.py:288 skins/default/templates/badges.html:48
+msgid "silver"
+msgstr "prata"
+
+#: const/__init__.py:289 skins/default/templates/badges.html:55
+msgid "bronze"
+msgstr "bronze"
+
+#: const/__init__.py:301
+msgid "None"
+msgstr "Nada"
+
+#: const/__init__.py:302
+msgid "Gravatar"
+msgstr "Gravatar"
+
+#: const/__init__.py:303
+msgid "Uploaded Avatar"
+msgstr "Avatar enviado"
+
+#: const/message_keys.py:21
+msgid "most relevant questions"
+msgstr "questões mais relevantes"
+
+#: const/message_keys.py:22
+msgid "click to see most relevant questions"
+msgstr "clique para ver as questões mais relevantes"
+
+#: const/message_keys.py:23
+msgid "by relevance"
+msgstr "por relevância"
+
+#: const/message_keys.py:24
+msgid "click to see the oldest questions"
+msgstr "clique para ver as questões mais antigas"
+
+#: const/message_keys.py:25
+msgid "by date"
+msgstr "por data"
+
+#: const/message_keys.py:26
+msgid "click to see the newest questions"
+msgstr "clique para ver as questões mais recentes"
+
+#: const/message_keys.py:27
+msgid "click to see the least recently updated questions"
+msgstr "clique para ver as questões não atualizadas recentemente"
+
+#: const/message_keys.py:28
+msgid "by activity"
+msgstr "por atividade"
+
+#: const/message_keys.py:29
+msgid "click to see the most recently updated questions"
+msgstr "clique para ver as questões atualizadas recentemente"
+
+#: const/message_keys.py:30
+msgid "click to see the least answered questions"
+msgstr "clique para ver as questões com menos respostas"
+
+#: const/message_keys.py:31
+msgid "by answers"
+msgstr "por respostas"
+
+#: const/message_keys.py:32
+msgid "click to see the most answered questions"
+msgstr "clique para ver as questões mais respondidas"
+
+#: const/message_keys.py:33
+msgid "click to see least voted questions"
+msgstr "clique para ver as questões menos votadas"
+
+#: const/message_keys.py:34
+msgid "by votes"
+msgstr "por votos"
+
+#: const/message_keys.py:35
+msgid "click to see most voted questions"
+msgstr "clique para ver as questões mais votadas"
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
+msgid ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
+msgid "i-names are not supported"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:233
+#, python-format
+msgid "Please enter your %(username_token)s"
+msgstr "Por favor, indique o seu %(username_token)s"
+
+#: deps/django_authopenid/forms.py:259
+msgid "Please, enter your user name"
+msgstr "Por favor, indique o seu nome de utilizador"
+
+#: deps/django_authopenid/forms.py:263
+msgid "Please, enter your password"
+msgstr "Por favor, indique a sua senha"
+
+#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
+msgid "Please, enter your new password"
+msgstr "Por favor, indique a sua nova senha"
+
+#: deps/django_authopenid/forms.py:285
+msgid "Passwords did not match"
+msgstr "As senhas não são iguais"
+
+#: deps/django_authopenid/forms.py:297
+#, python-format
+msgid "Please choose password > %(len)s characters"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:335
+msgid "Current password"
+msgstr "Senha atual"
+
+#: deps/django_authopenid/forms.py:346
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr "A senha antiga está incorreta. Por favor, indique a senha correta."
+
+#: deps/django_authopenid/forms.py:399
+msgid "Sorry, we don't have this email address in the database"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:435
+msgid "Your user name (<i>required</i>)"
+msgstr ""
+
+#: deps/django_authopenid/forms.py:450
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "Por favor, indique o seu nome de utilizador"
+
+#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
+msgid "signin/"
+msgstr "iniciar sessão/"
+
+#: deps/django_authopenid/urls.py:10
+msgid "signout/"
+msgstr "sair da sessão/"
+
+#: deps/django_authopenid/urls.py:12
+msgid "complete/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:15
+msgid "complete-oauth/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:19
+msgid "register/"
+msgstr "registar/"
+
+#: deps/django_authopenid/urls.py:21
+msgid "signup/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:25
+msgid "logout/"
+msgstr ""
+
+#: deps/django_authopenid/urls.py:30
+msgid "recover/"
+msgstr "recuperar/"
+
+#: deps/django_authopenid/util.py:378
+#, python-format
+msgid "%(site)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
+msgid "Create a password-protected account"
+msgstr ""
+
+#: deps/django_authopenid/util.py:385
+msgid "Change your password"
+msgstr "Alterar a sua senha"
+
+#: deps/django_authopenid/util.py:473
+msgid "Sign in with Yahoo"
+msgstr "Iniciar sessão com Yahoo"
+
+#: deps/django_authopenid/util.py:480
+msgid "AOL screen name"
+msgstr "Nome AOL"
+
+#: deps/django_authopenid/util.py:488
+msgid "OpenID url"
+msgstr "URL OpenID"
+
+#: deps/django_authopenid/util.py:517
+msgid "Flickr user name"
+msgstr "Utilizador Flickr"
+
+#: deps/django_authopenid/util.py:525
+msgid "Technorati user name"
+msgstr "Utilizador Technorati"
+
+#: deps/django_authopenid/util.py:533
+msgid "WordPress blog name"
+msgstr "Nome do blogue Wordpress"
+
+#: deps/django_authopenid/util.py:541
+msgid "Blogger blog name"
+msgstr "Nome do blogue Blogger"
+
+#: deps/django_authopenid/util.py:549
+msgid "LiveJournal blog name"
+msgstr "Nome do blogue LiveJournal"
+
+#: deps/django_authopenid/util.py:557
+msgid "ClaimID user name"
+msgstr "Utilizador ClaimID"
+
+#: deps/django_authopenid/util.py:565
+msgid "Vidoop user name"
+msgstr "Utilizador Vidoop"
+
+#: deps/django_authopenid/util.py:573
+msgid "Verisign user name"
+msgstr "Utilizador Verisign"
+
+#: deps/django_authopenid/util.py:608
+#, python-format
+msgid "Change your %(provider)s password"
+msgstr "Altera a senha %(provider)s"
+
+#: deps/django_authopenid/util.py:612
+#, python-format
+msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:621
+#, python-format
+msgid "Create password for %(provider)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:625
+#, python-format
+msgid "Connect your %(provider)s account to %(site_name)s"
+msgstr ""
+
+#: deps/django_authopenid/util.py:634
+#, python-format
+msgid "Signin with %(provider)s user name and password"
+msgstr ""
+
+#: deps/django_authopenid/util.py:641
+#, python-format
+msgid "Sign in with your %(provider)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:149
+#, python-format
+msgid "OpenID %(openid_url)s is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
+#, python-format
+msgid ""
+"Unfortunately, there was some problem when connecting to %(provider)s, "
+"please try again or use another provider"
+msgstr ""
+
+#: deps/django_authopenid/views.py:358
+msgid "Your new password saved"
+msgstr ""
+
+#: deps/django_authopenid/views.py:462
+msgid "The login password combination was not correct"
+msgstr ""
+
+#: deps/django_authopenid/views.py:564
+msgid "Please click any of the icons below to sign in"
+msgstr ""
+
+#: deps/django_authopenid/views.py:566
+msgid "Account recovery email sent"
+msgstr ""
+
+#: deps/django_authopenid/views.py:569
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: deps/django_authopenid/views.py:571
+msgid "If you wish, please add, remove or re-validate your login methods"
+msgstr ""
+
+#: deps/django_authopenid/views.py:573
+msgid "Please wait a second! Your account is recovered, but ..."
+msgstr ""
+
+#: deps/django_authopenid/views.py:575
+msgid "Sorry, this account recovery key has expired or is invalid"
+msgstr ""
+
+#: deps/django_authopenid/views.py:648
+#, python-format
+msgid "Login method %(provider_name)s does not exist"
+msgstr ""
+
+#: deps/django_authopenid/views.py:654
+msgid "Oops, sorry - there was some error - please try again"
+msgstr ""
+
+#: deps/django_authopenid/views.py:745
+#, python-format
+msgid "Your %(provider)s login works fine"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
+#, python-format
+msgid "your email needs to be validated see %(details_url)s"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1083
+#, python-format
+msgid "Recover your %(site)s account"
+msgstr ""
+
+#: deps/django_authopenid/views.py:1155
+msgid "Please check your email and visit the enclosed link."
+msgstr ""
+
+#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
+msgid "Site"
+msgstr "Sítio"
+
+#: deps/livesettings/values.py:69
+msgid "Main"
+msgstr "Principal"
+
+#: deps/livesettings/values.py:128
+msgid "Base Settings"
+msgstr "Definições base"
+
+#: deps/livesettings/values.py:235
+msgid "Default value: \"\""
+msgstr "Valor padrão: \"\""
+
+#: deps/livesettings/values.py:242
+msgid "Default value: "
+msgstr "Valor padrão:"
+
+#: deps/livesettings/values.py:245
+#, python-format
+msgid "Default value: %s"
+msgstr "Valor padrão: %s"
+
+#: deps/livesettings/values.py:629
+#, python-format
+msgid "Allowed image file types are %(types)s"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Sítios"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Documentação"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Alterar senha"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Terminar sessão"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Página inicial"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Editar definições de grupo"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Por favor, corrija o erro indicado."
+msgstr[1] "Por favor, corrija os erros indicados."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, python-format
+msgid "Group settings: %(name)s"
+msgstr "Definições do grupo: %(name)s"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr ""
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
+#, python-format
+msgid "Accept the best answer for %(question_count)d of your questions"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:63
+msgid "Please accept the best answer for this question:"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:65
+msgid "Please accept the best answer for these questions:"
+msgstr ""
+
+#: management/commands/send_email_alerts.py:414
+#, python-format
+msgid "%(question_count)d updated question about %(topics)s"
+msgid_plural "%(question_count)d updated questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: management/commands/send_email_alerts.py:449
+msgid "new question"
+msgstr "nova questão"
+
+#: management/commands/send_email_alerts.py:474
+#, python-format
+msgid ""
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
+
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
+msgid "%(question_count)d unanswered question about %(topics)s"
+msgid_plural "%(question_count)d unanswered questions about %(topics)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr ""
+
+#: models/__init__.py:320
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"blocked"
+msgstr ""
+
+#: models/__init__.py:324
+msgid ""
+"Sorry, you cannot accept or unaccept best answers because your account is "
+"suspended"
+msgstr ""
+
+#: models/__init__.py:337
+#, python-format
+msgid ""
+">%(points)s points required to accept or unaccept your own answer to your "
+"own question"
+msgstr ""
+
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+
+#: models/__init__.py:367
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+msgstr ""
+
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr ""
+
+#: models/__init__.py:394
+msgid "Sorry your account appears to be blocked "
+msgstr ""
+
+#: models/__init__.py:399
+msgid "Sorry your account appears to be suspended "
+msgstr ""
+
+#: models/__init__.py:409
+#, python-format
+msgid ">%(points)s points required to upvote"
+msgstr ""
+
+#: models/__init__.py:415
+#, python-format
+msgid ">%(points)s points required to downvote"
+msgstr ""
+
+#: models/__init__.py:430
+msgid "Sorry, blocked users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:431
+msgid "Sorry, suspended users cannot upload files"
+msgstr ""
+
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
+
+#: models/__init__.py:482
+#, python-format
+msgid ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minute from posting"
+msgid_plural ""
+"Sorry, comments (except the last one) are editable only within %(minutes)s "
+"minutes from posting"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:494
+msgid "Sorry, but only post owners or moderators can edit comments"
+msgstr ""
+
+#: models/__init__.py:519
+msgid ""
+"Sorry, since your account is suspended you can comment only your own posts"
+msgstr ""
+
+#: models/__init__.py:523
+#, python-format
+msgid ""
+"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
+"required. You can still comment your own posts and answers to your questions"
+msgstr ""
+
+#: models/__init__.py:553
+msgid ""
+"This post has been deleted and can be seen only by post owners, site "
+"administrators and moderators"
+msgstr ""
+
+#: models/__init__.py:570
+msgid ""
+"Sorry, only moderators, site administrators and post owners can edit deleted "
+"posts"
+msgstr ""
+
+#: models/__init__.py:585
+msgid "Sorry, since your account is blocked you cannot edit posts"
+msgstr ""
+
+#: models/__init__.py:589
+msgid "Sorry, since your account is suspended you can edit only your own posts"
+msgstr ""
+
+#: models/__init__.py:594
+#, python-format
+msgid ""
+"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:601
+#, python-format
+msgid ""
+"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:664
+msgid ""
+"Sorry, cannot delete your question since it has an upvoted answer posted by "
+"someone else"
+msgid_plural ""
+"Sorry, cannot delete your question since it has some upvoted answers posted "
+"by other users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:679
+msgid "Sorry, since your account is blocked you cannot delete posts"
+msgstr ""
+
+#: models/__init__.py:683
+msgid ""
+"Sorry, since your account is suspended you can delete only your own posts"
+msgstr ""
+
+#: models/__init__.py:687
+#, python-format
+msgid ""
+"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
+"is required"
+msgstr ""
+
+#: models/__init__.py:707
+msgid "Sorry, since your account is blocked you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:711
+msgid "Sorry, since your account is suspended you cannot close questions"
+msgstr ""
+
+#: models/__init__.py:715
+#, python-format
+msgid ""
+"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:724
+#, python-format
+msgid ""
+"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:748
+#, python-format
+msgid ""
+"Sorry, only administrators, moderators or post owners with reputation > "
+"%(min_rep)s can reopen questions."
+msgstr ""
+
+#: models/__init__.py:754
+#, python-format
+msgid ""
+"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
+msgid ""
+"Sorry, only question owners, site administrators and moderators can retag "
+"deleted questions"
+msgstr ""
+
+#: models/__init__.py:894
+msgid "Sorry, since your account is blocked you cannot retag questions"
+msgstr ""
+
+#: models/__init__.py:898
+msgid ""
+"Sorry, since your account is suspended you can retag only your own questions"
+msgstr ""
+
+#: models/__init__.py:902
+#, python-format
+msgid ""
+"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:921
+msgid "Sorry, since your account is blocked you cannot delete comment"
+msgstr ""
+
+#: models/__init__.py:925
+msgid ""
+"Sorry, since your account is suspended you can delete only your own comments"
+msgstr ""
+
+#: models/__init__.py:929
+#, python-format
+msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
+msgstr ""
+
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
+
+#: models/__init__.py:1469 utils/functions.py:78
+#, python-format
+msgid "on %(date)s"
+msgstr "em %(date)s"
+
+#: models/__init__.py:1471
+msgid "in two days"
+msgstr ""
+
+#: models/__init__.py:1473
+msgid "tomorrow"
+msgstr "amanhã"
+
+#: models/__init__.py:1475
+#, python-format
+msgid "in %(hr)d hour"
+msgid_plural "in %(hr)d hours"
+msgstr[0] "em %(hr)d hora"
+msgstr[1] "em %(hr)d horas"
+
+#: models/__init__.py:1477
+#, python-format
+msgid "in %(min)d min"
+msgid_plural "in %(min)d mins"
+msgstr[0] "em %(min)d minuto"
+msgstr[1] "em %(min)d minutos"
+
+#: models/__init__.py:1478
+#, python-format
+msgid "%(days)d day"
+msgid_plural "%(days)d days"
+msgstr[0] "%(days)d dia"
+msgstr[1] "%(days)d dias"
+
+#: models/__init__.py:1480
+#, python-format
+msgid ""
+"New users must wait %(days)s before answering their own question. You can "
+"post an answer %(left)s"
+msgstr ""
+
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
+msgid "Anonymous"
+msgstr "Anónimo"
+
+#: models/__init__.py:1749
+msgid "Site Adminstrator"
+msgstr "Adminictrador do sítio"
+
+#: models/__init__.py:1751
+msgid "Forum Moderator"
+msgstr "Moderador do fórum"
+
+#: models/__init__.py:1753
+msgid "Suspended User"
+msgstr "Utilizador suspenso"
+
+#: models/__init__.py:1755
+msgid "Blocked User"
+msgstr "Utilizador bloqueado"
+
+#: models/__init__.py:1757
+msgid "Registered User"
+msgstr "Utilizador registado"
+
+#: models/__init__.py:1759
+msgid "Watched User"
+msgstr "Utilizador monitorizado"
+
+#: models/__init__.py:1761
+msgid "Approved User"
+msgstr "Utilizador aprovado"
+
+#: models/__init__.py:1870
+#, python-format
+msgid "%(username)s karma is %(reputation)s"
+msgstr ""
+
+#: models/__init__.py:1880
+#, python-format
+msgid "one gold badge"
+msgid_plural "%(count)d gold badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1887
+#, python-format
+msgid "one silver badge"
+msgid_plural "%(count)d silver badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1894
+#, python-format
+msgid "one bronze badge"
+msgid_plural "%(count)d bronze badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:1905
+#, python-format
+msgid "%(item1)s and %(item2)s"
+msgstr ""
+
+#: models/__init__.py:1909
+#, python-format
+msgid "%(user)s has %(badges)s"
+msgstr ""
+
+#: models/__init__.py:2389
+#, python-format
+msgid "\"%(title)s\""
+msgstr "\"%(title)s\""
+
+#: models/__init__.py:2542
+#, python-format
+msgid ""
+"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
+"href=\"%(user_profile)s\">your profile</a>."
+msgstr ""
+
+#: models/__init__.py:2745 views/commands.py:460
+msgid "Your tag subscription was saved, thanks!"
+msgstr ""
+
+#: models/badges.py:129
+#, python-format
+msgid "Deleted own post with %(votes)s or more upvotes"
+msgstr ""
+
+#: models/badges.py:133
+msgid "Disciplined"
+msgstr ""
+
+#: models/badges.py:151
+#, python-format
+msgid "Deleted own post with %(votes)s or more downvotes"
+msgstr ""
+
+#: models/badges.py:155
+msgid "Peer Pressure"
+msgstr ""
+
+#: models/badges.py:174
+#, python-format
+msgid "Received at least %(votes)s upvote for an answer for the first time"
+msgstr ""
+
+#: models/badges.py:178
+msgid "Teacher"
+msgstr "Professor"
+
+#: models/badges.py:218
+msgid "Supporter"
+msgstr "Apoiante"
+
+#: models/badges.py:219
+msgid "First upvote"
+msgstr ""
+
+#: models/badges.py:227
+msgid "Critic"
+msgstr ""
+
+#: models/badges.py:228
+msgid "First downvote"
+msgstr ""
+
+#: models/badges.py:237
+msgid "Civic Duty"
+msgstr ""
+
+#: models/badges.py:238
+#, python-format
+msgid "Voted %(num)s times"
+msgstr ""
+
+#: models/badges.py:252
+#, python-format
+msgid "Answered own question with at least %(num)s up votes"
+msgstr ""
+
+#: models/badges.py:256
+msgid "Self-Learner"
+msgstr ""
+
+#: models/badges.py:304
+msgid "Nice Answer"
+msgstr "Resposta aceitável"
+
+#: models/badges.py:309 models/badges.py:321 models/badges.py:333
+#, python-format
+msgid "Answer voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:316
+msgid "Good Answer"
+msgstr "Boa resposta"
+
+#: models/badges.py:328
+msgid "Great Answer"
+msgstr "Ótima resposta"
+
+#: models/badges.py:340
+msgid "Nice Question"
+msgstr "Questão aceitável"
+
+#: models/badges.py:345 models/badges.py:357 models/badges.py:369
+#, python-format
+msgid "Question voted up %(num)s times"
+msgstr ""
+
+#: models/badges.py:352
+msgid "Good Question"
+msgstr "Boa questão"
+
+#: models/badges.py:364
+msgid "Great Question"
+msgstr "Ótima questão"
+
+#: models/badges.py:376
+msgid "Student"
+msgstr "Estudante"
+
+#: models/badges.py:381
+msgid "Asked first question with at least one up vote"
+msgstr ""
+
+#: models/badges.py:414
+msgid "Popular Question"
+msgstr ""
+
+#: models/badges.py:418 models/badges.py:429 models/badges.py:441
+#, python-format
+msgid "Asked a question with %(views)s views"
+msgstr ""
+
+#: models/badges.py:425
+msgid "Notable Question"
+msgstr ""
+
+#: models/badges.py:436
+msgid "Famous Question"
+msgstr ""
+
+#: models/badges.py:450
+msgid "Asked a question and accepted an answer"
+msgstr ""
+
+#: models/badges.py:453
+msgid "Scholar"
+msgstr "Escolar"
+
+#: models/badges.py:495
+msgid "Enlightened"
+msgstr "Iluminado"
+
+#: models/badges.py:499
+#, python-format
+msgid "First answer was accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:507
+msgid "Guru"
+msgstr "Guru"
+
+#: models/badges.py:510
+#, python-format
+msgid "Answer accepted with %(num)s or more votes"
+msgstr ""
+
+#: models/badges.py:518
+#, python-format
+msgid ""
+"Answered a question more than %(days)s days later with at least %(votes)s "
+"votes"
+msgstr ""
+
+#: models/badges.py:525
+msgid "Necromancer"
+msgstr ""
+
+#: models/badges.py:548
+msgid "Citizen Patrol"
+msgstr ""
+
+#: models/badges.py:551
+msgid "First flagged post"
+msgstr ""
+
+#: models/badges.py:563
+msgid "Cleanup"
+msgstr "Limpeza"
+
+#: models/badges.py:566
+msgid "First rollback"
+msgstr ""
+
+#: models/badges.py:577
+msgid "Pundit"
+msgstr ""
+
+#: models/badges.py:580
+msgid "Left 10 comments with score of 10 or more"
+msgstr ""
+
+#: models/badges.py:612
+msgid "Editor"
+msgstr "Editor"
+
+#: models/badges.py:615
+msgid "First edit"
+msgstr "Primeira edição"
+
+#: models/badges.py:623
+msgid "Associate Editor"
+msgstr ""
+
+#: models/badges.py:627
+#, python-format
+msgid "Edited %(num)s entries"
+msgstr ""
+
+#: models/badges.py:634
+msgid "Organizer"
+msgstr "Organizador"
+
+#: models/badges.py:637
+msgid "First retag"
+msgstr ""
+
+#: models/badges.py:644
+msgid "Autobiographer"
+msgstr ""
+
+#: models/badges.py:647
+msgid "Completed all user profile fields"
+msgstr ""
+
+#: models/badges.py:663
+#, python-format
+msgid "Question favorited by %(num)s users"
+msgstr ""
+
+#: models/badges.py:689
+msgid "Stellar Question"
+msgstr ""
+
+#: models/badges.py:698
+msgid "Favorite Question"
+msgstr ""
+
+#: models/badges.py:710
+msgid "Enthusiast"
+msgstr ""
+
+#: models/badges.py:714
+#, python-format
+msgid "Visited site every day for %(num)s days in a row"
+msgstr ""
+
+#: models/badges.py:732
+msgid "Commentator"
+msgstr "Comentador"
+
+#: models/badges.py:736
+#, python-format
+msgid "Posted %(num_comments)s comments"
+msgstr ""
+
+#: models/badges.py:752
+msgid "Taxonomist"
+msgstr ""
+
+#: models/badges.py:756
+#, python-format
+msgid "Created a tag used by %(num)s questions"
+msgstr ""
+
+#: models/badges.py:774
+msgid "Expert"
+msgstr ""
+
+#: models/badges.py:777
+msgid "Very active in one tag"
+msgstr ""
+
+#: models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr ""
+
+#: models/post.py:1110
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent question has been removed"
+msgstr ""
+
+#: models/post.py:1117
+msgid ""
+"Sorry, the comment you are looking for is no longer accessible, because the "
+"parent answer has been removed"
+msgstr ""
+
+#: models/question.py:54
+#, python-format
+msgid "\" and \"%s\""
+msgstr "\" e \"%s\""
+
+#: models/question.py:57
+msgid "\" and more"
+msgstr "\" e mais"
+
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Validae endereço"
+
+#: models/repute.py:143
+#, python-format
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr ""
+
+#: models/repute.py:154
+#, python-format
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
+msgstr ""
+
+#: models/repute.py:159
+#, python-format
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
+msgstr ""
+
+#: models/tag.py:106
+msgid "interesting"
+msgstr ""
+
+#: models/tag.py:106
+msgid "ignored"
+msgstr "ignorada"
+
+#: models/user.py:266
+msgid "Entire forum"
+msgstr "Todo o fórum"
+
+#: models/user.py:267
+msgid "Questions that I asked"
+msgstr "Questões que eu respondi"
+
+#: models/user.py:268
+msgid "Questions that I answered"
+msgstr "Questões que eu coloquei"
+
+#: models/user.py:269
+msgid "Individually selected questions"
+msgstr ""
+
+#: models/user.py:270
+msgid "Mentions and comment responses"
+msgstr ""
+
+#: models/user.py:273
+msgid "Instantly"
+msgstr "Imediatamente"
+
+#: models/user.py:274
+msgid "Daily"
+msgstr "Diariamente"
+
+#: models/user.py:275
+msgid "Weekly"
+msgstr "Semanalmente"
+
+#: models/user.py:276
+msgid "No email"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "Iniciar sessão"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Alterar endereço eletrónico"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Gravar endereço eletrónico"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Validae endereço"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Validae endereço"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Definições do utilizador"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr "Os detalhes da conta são:"
+
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr "Nome de utilizador:"
+
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr "Senha:"
+
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr ""
+
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+#, fuzzy
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+msgstr "Adminictrador do sítio"
+
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
+msgstr ""
+
+#: skins/common/templates/authopenid/email_validation.txt:9
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Terminar sessão"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "A sessão foi terminada"
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Senha"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "Nova senha"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "fornecedor"
+
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "eliminar"
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr "não pode ser eliminado"
+
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "ou"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "adicionar \"avatar\""
+
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "Alterar \"avatar\""
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "O seu \"avatar\":"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Enviar nova imagem"
+
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr "alterar \"avatar\""
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "Enviar"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "ligação"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "recuperar"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "assinalada como ofensiva"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "editar"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "esta resposta foi escolhida como correta"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "reabrir"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "fechar"
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "O campo país é obrigatório"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(necessário)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Tags interessantes"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "adicionar"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Tags ignoradas"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Página não encontrada"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "faq"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "reportar este problema"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "voltar à página anterior"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "ver todas as questões"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "ver todas as tags"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "ver as últimas questões"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "ver tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Editar resposta"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "recuar"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "revisão"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "selecionar revisão"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Gravar edição"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "mostrar antevisão"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Coloque a sua questão"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr ""
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr ""
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Fechar questão"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Fechar a questão"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Motivos"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "FAQ"
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Perguntas frequentes"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:20
+msgid "How does karma system work?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "adicionar comentários"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "resposta editada"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "Abandonar comentários"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:80
+#, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Comentários"
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(este campo é obrigatório)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Enviar comentários"
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "respostas de %(username)s"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "utilizador anónimo"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr ""
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr ""
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr ""
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr ""
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr ""
+
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "anterior"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "página atual"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "página %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "página seguinte"
+
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "respostas de %(username)s"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Questões"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "adicionar comentários"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr ""
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "A sua resposta"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
+msgstr ""
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Editar questão"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Questões relacionadas"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Nova tag"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr ""
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Título"
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr ""
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr ""
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr ""
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr ""
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr ""
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "por nome"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "por popularidade"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Nada encontrado"
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Utlizadores"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "recentes"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "por utilizador"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Nada encontrado."
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s questão"
+msgstr[1] "%(q_num)s questões"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr " ou"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr ""
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s resposta\n"
+" "
+msgstr[1] ""
+"\n"
+" %(counter)s respostas\n"
+" "
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "A sua resposta"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr " ou"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "subscrever a esta questão via RSS"
+
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "subscrever a fonte RSS"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "Estatísticas"
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "As minhas questões"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "vezes"
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "menos votadas"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Questões relacionadas"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil de %(username)s"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Editar perfil de utilizador"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "editar perfil"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "alterar imagem"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "remover"
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Utilizador registado"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Nome a exibir"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "não pode ser eliminado"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Atualizar"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "subscrições"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "sem endereço eletrónico"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "caixa de entrada"
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Secções:"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "vistas"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "nova"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "nada"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "marcar como vista"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "marcar como nova"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "rejeitar"
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "remover"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "eliminar"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "atualizar perfil"
+
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nome real"
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "membro de"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "Sítio web"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "localização"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "idade"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "moderação"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Gravar"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Remover"
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Adicionar"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Enviar mensagem a %(username)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Mensagem enviada"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Enviar mensagem"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "rede"
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "atividade"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "resumo"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "resposta"
+msgstr[1] "respostas"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "a resposta foi votada %(answer_score)s vezes"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s comentário)"
+msgstr[1] "a resposta foi comentada %(comment_count)s vezes"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr "Responder a:"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Perfil do utilizador:"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "votos"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+msgid "give an answer interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*ítálico*"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**negrito**"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*ítálico* ou _ítálico_"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**negrito** ou _negrito_"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "texto"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "imagem"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "lista numerada:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Contribuintes"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "sobre"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "política de privacidade"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "enviar comentários"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "voltar à página inicial"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "utilizadores"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr ""
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+msgid "ask a question interesting to this community"
+msgstr ""
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "resposta"
+msgstr[1] "respostas"
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "voto"
+msgstr[1] "votos"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "Tudo"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "sair da sessão/"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr ""
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "definições"
+
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "nada"
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
+
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
+
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "este campo é obrigatório"
+
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
+msgstr "escolha o nome de utilizador"
+
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "o nome de utilizador é obrigatório"
+
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr ""
+
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr ""
+
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr ""
+
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr ""
+
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr ""
+
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "a senha é obrigatória"
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "por favor, indique novamente a senha"
+
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr ""
+
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "2 dias atrás"
+
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "ontem"
+
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
+
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
+
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
+msgstr "Desculpe, mas os visitantes anónimos não podem aceder a esta função"
+
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
+
+#: views/commands.py:339
+#, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr ""
+
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr ""
+
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "em %(date)s"
+
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr ""
+
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Política de privacidade"
+
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+
+#: views/users.py:206
+msgid "moderate user"
+msgstr ""
+
+#: views/users.py:381
+msgid "user profile"
+msgstr ""
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr ""
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr ""
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr ""
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr ""
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr ""
+
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
+
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr ""
+
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr ""
+
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr ""
+
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr ""
+
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr ""
+
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr ""
+
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr ""
+
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr ""
+
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
+
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
+
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "utilize estes caracteres nas tags"
+
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "este endereço ficará vinculado ao \"gravatar\""
+
+#~ msgid "Incorrect username."
+#~ msgstr "Nome de utilizador inválido."
+
+#~ msgid "create account"
+#~ msgstr "criar conta"
+
+#~ msgid "Find out more"
+#~ msgstr "Saiba mais"
+
+#~ msgid "Get OpenID"
+#~ msgstr "Obter OpenID"
+
+#~ msgid "Create Account"
+#~ msgstr "Criar conta"
+
+#~ msgid "Related tags"
+#~ msgstr "Tags relacionadas"
+
+#~ msgid "Ask a question"
+#~ msgstr "Colocar uma questão"
+
+#~ msgid "posts per page"
+#~ msgstr "mmensagens por página"
+
+#~ msgid "Change tags"
+#~ msgstr "Alterar tags"
+
+#~ msgid "reputation"
+#~ msgstr "reputação"
+
+#~ msgid "oldest answers"
+#~ msgstr "respostas antigas"
+
+#~ msgid "newest answers"
+#~ msgstr "respostas recentes"
+
+#~ msgid "popular answers"
+#~ msgstr "respostas populares"
+
+#~ msgid "Answer the question"
+#~ msgstr "Responder à questão"
+
+#~ msgid "question asked"
+#~ msgstr "questão colocada"
+
+#~ msgid "question was seen"
+#~ msgstr "a questão foi vista"
+
+#~ msgid "recent activity"
+#~ msgstr "atividade recente"
+
+#~ msgid "ask a question"
+#~ msgstr "colocar questão"
+
+#~ msgid "choose password"
+#~ msgstr "escolha a senha"
+
+#~ msgid "retype password"
+#~ msgstr "indique novamente a senha"
+
+#~ msgid "title must be &gt; %d character"
+#~ msgid_plural "title must be &gt; %d characters"
+#~ msgstr[0] "o título tem que ter mais de %d carácter"
+#~ msgstr[1] "o título tem que ter mais de %d caracteres"
+
+#~ msgid "Please choose password &gt; %(len)s characters"
+#~ msgstr "Por favor, escolha uma senha com &gt; %(len)s caracteres"
+
+#~ msgid "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Question"
+#~ msgid_plural ""
+#~ "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Questions"
+#~ msgstr[0] "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Questão"
+#~ msgstr[1] "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Questões"
+
+#~ msgid "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Answer"
+#~ msgid_plural "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Answers"
+#~ msgstr[0] "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Resposta"
+#~ msgstr[1] "&lt;span class=\"count\"&gt;%(counter)s&lt;/span&gt; Respostas"
+
+#~ msgid "&lt;span class=\"count\"&gt;%(cnt)s&lt;/span&gt; Vote"
+#~ msgid_plural "&lt;span class=\"count\"&gt;%(cnt)s&lt;/span&gt; Votes "
+#~ msgstr[0] "&lt;span class=\"count\"&gt;%(cnt)s&lt;/span&gt; Voto"
+#~ msgstr[1] "&lt;span class=\"count\"&gt;%(cnt)s&lt;/span&gt; Votos "
diff --git a/askbot/locale/pt/LC_MESSAGES/djangojs.mo b/askbot/locale/pt/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..4d4d2883
--- /dev/null
+++ b/askbot/locale/pt/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/pt/LC_MESSAGES/djangojs.po b/askbot/locale/pt/LC_MESSAGES/djangojs.po
new file mode 100644
index 00000000..dd9cacbd
--- /dev/null
+++ b/askbot/locale/pt/LC_MESSAGES/djangojs.po
@@ -0,0 +1,264 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: askbot\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-04-18 18:56-0500\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"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+
+#: skins/common/media/jquery-openid/jquery.openid.js:73
+#, perl-format
+msgid "Are you sure you want to remove your %s login?"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:90
+msgid "Please add one or more login methods."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:93
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:135
+msgid "passwords do not match"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:161
+msgid "Show/change current login methods"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
+msgid "Please enter your %s, then proceed"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:228
+msgid "Connect your %(provider_name)s account to %(site)s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
+msgid "Change your %s password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:323
+msgid "Change password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
+msgid "Create a password for %s"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:327
+msgid "Create password"
+msgstr ""
+
+#: skins/common/media/jquery-openid/jquery.openid.js:343
+msgid "Create a password-protected account"
+msgstr ""
+
+#: skins/common/media/js/post.js:28
+msgid "loading..."
+msgstr ""
+
+#: skins/common/media/js/post.js:318
+msgid "insufficient privilege"
+msgstr ""
+
+#: skins/common/media/js/post.js:319
+msgid "cannot pick own answer as best"
+msgstr ""
+
+#: skins/common/media/js/post.js:324
+msgid "please login"
+msgstr ""
+
+#: skins/common/media/js/post.js:326
+msgid "anonymous users cannot follow questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:327
+msgid "anonymous users cannot subscribe to questions"
+msgstr ""
+
+#: skins/common/media/js/post.js:328
+msgid "anonymous users cannot vote"
+msgstr ""
+
+#: skins/common/media/js/post.js:330
+msgid "please confirm offensive"
+msgstr ""
+
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
+msgid "anonymous users cannot flag offensive posts"
+msgstr ""
+
+#: skins/common/media/js/post.js:333
+msgid "confirm delete"
+msgstr ""
+
+#: skins/common/media/js/post.js:334
+msgid "anonymous users cannot delete/undelete"
+msgstr ""
+
+#: skins/common/media/js/post.js:335
+msgid "post recovered"
+msgstr ""
+
+#: skins/common/media/js/post.js:336
+msgid "post deleted"
+msgstr ""
+
+#: skins/common/media/js/post.js:1206
+msgid "add comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1209
+msgid "save comment"
+msgstr ""
+
+#: skins/common/media/js/post.js:1874
+msgid "Please enter question title (>10 characters)"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:15
+msgid "Tag \"<span></span>\" matches:"
+msgstr ""
+
+#: skins/common/media/js/tag_selector.js:84
+#, perl-format
+msgid "and %s more, not shown..."
+msgstr ""
+
+#: skins/common/media/js/user.js:14
+msgid "Please select at least one item"
+msgstr ""
+
+#: skins/common/media/js/user.js:58
+msgid "Delete this notification?"
+msgid_plural "Delete these notifications?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:159
+msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
+msgstr ""
+
+#: skins/common/media/js/user.js:191
+#, perl-format
+msgid "unfollow %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:194
+#, perl-format
+msgid "following %s"
+msgstr ""
+
+#: skins/common/media/js/user.js:200
+#, perl-format
+msgid "follow %s"
+msgstr ""
+
+#: skins/common/media/js/utils.js:44
+msgid "click to close"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:26
+msgid "bold"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:27
+msgid "italic"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:28
+msgid "link"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:29
+msgid "quote"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:30
+msgid "preformatted text"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:31
+msgid "image"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:32
+msgid "attachment"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:33
+msgid "numbered list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:34
+msgid "bulleted list"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:35
+msgid "heading"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:36
+msgid "horizontal bar"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:37
+msgid "undo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
+msgid "redo"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:47
+msgid "enter image url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:48
+msgid "enter url"
+msgstr ""
+
+#: skins/common/media/js/wmd/wmd.js:49
+msgid "upload file attachment"
+msgstr ""
diff --git a/askbot/locale/pt_BR/LC_MESSAGES/django.mo b/askbot/locale/pt_BR/LC_MESSAGES/django.mo
index 143a0ceb..d5412c46 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/django.mo
+++ b/askbot/locale/pt_BR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/pt_BR/LC_MESSAGES/django.po b/askbot/locale/pt_BR/LC_MESSAGES/django.po
index 120ac747..a1bb7459 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/django.po
+++ b/askbot/locale/pt_BR/LC_MESSAGES/django.po
@@ -1,14 +1,13 @@
# English translation for CNPROG package.
# Copyright (C) 2009 Gang Chen, 2010 Askbot
# This file is distributed under the same license as the CNPROG package.
-#
# Translators:
-# Sandro <sandrossv@hotmail.com>, 2011.
+# Sandro <sandrossv@hotmail.com>, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:45-0600\n"
+"POT-Creation-Date: 2012-04-18 18:53-0500\n"
"PO-Revision-Date: 2011-06-30 21:57+0000\n"
"Last-Translator: sandrossv <sandrossv@hotmail.com>\n"
"Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/"
@@ -23,16 +22,15 @@ msgstr ""
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "Desculpe, mas os visitantes anônimos não podem acessar esta função"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "Selecionados individualmente"
+msgstr "inserção de pergunta individual"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "últimas perguntas"
@@ -48,7 +46,10 @@ msgstr "País"
msgid "Country field is required"
msgstr "Campo País é necessário"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "título"
@@ -56,60 +57,90 @@ msgstr "título"
msgid "please enter a descriptive title for your question"
msgstr "digite um título descritivo para sua pergunta"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "título deve ser > 10 caracteres"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "o título deve ter mais de %d caracteres"
+msgstr[1] "o título deve ter mais de %d caracteres"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "conteúdo"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "conteúdo questão deve ser > 10 caracteres"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "tags"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr "Tags são palavras-chave, sem espaços. Até cinco tags podem ser usadas."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Tags são palavras-chave, sem espaços. Até %(max_tags)d tags podem ser "
+"usadas."
+msgstr[1] ""
+"Tags são palavras-chave curtas, sem espaços. Até %(max_tags)d tags podem ser "
+"usadas."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "tags são necessárias"
-#: forms.py:173
-#, python-format
+#: forms.py:232
+#, fuzzy, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
-msgstr[0] "por favor, use %(tag_count)d tags ou menos"
-msgstr[1] "por favor, use %(tag_count)d tags ou menos"
+msgstr[0] ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"por favor, use %(tag_count)d tags ou menos\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"por favor, utilize %(tag_count) tags ou menos"
+msgstr[1] ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"por favor, use %(tag_count)d tags ou menos\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"utilize até %(tag_count)d tags ou menos"
-#: forms.py:181
+# 100%
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Pelo menos uma das seguintes tags é obrigatória: %(tags)s"
-#: forms.py:190
+# 100%
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "cada tag deve ter menos de %(max_chars)d caractere"
+msgstr[1] "cada tag deve ter menos de %(max_chars)d caracteres"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "use-estes-caracteres-nas-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
"wiki comunitária (karma não é concedido e muitos outros podem editar a wiki)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -117,138 +148,174 @@ msgstr ""
"se você escolher a opção de wiki comunitária, a pergunta e a resposta não "
"geram pontos e o nome do autor não será mostrado"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "atualizar resumo:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
msgstr ""
"insira um breve resumo de sua revisão (por exemplo, correção de ortografia, "
-"gramática, melhorou estilo , este campo é opcional)"
+"gramática, melhorou estilo, este campo é opcional)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "Digite o número de pontos para adicionar ou subtrair"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "aprovado"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "assistido"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr "suspenso"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "bloqueado"
-#: forms.py:346
+# 100%
+#: forms.py:405
msgid "administrator"
-msgstr ""
+msgstr "administrador"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "moderador"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "Mudar status para"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "qual?"
-#: forms.py:415
+#: forms.py:474
+#, fuzzy
msgid "Cannot change own status"
-msgstr "Não pode alterar o próprio estado"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Não pode alterar o próprio estado\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Não é possível alterar o próprio estado"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "Não é possível tornar outro usuário moderador"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "Não é possível alterar o status de outro moderador"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "Não pode alterar o próprio estado"
+msgstr "Não é possível alterar o status para administrador"
-#: forms.py:440
-#, python-format
+#: forms.py:499
+#, fuzzy, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
"Se você deseja mudar o status de %(username)s, por favor, faça uma seleção "
+"significativa.\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Se desejar mudar o status de %(username), por favor, faça uma seleção "
"significativa."
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "Linha de assunto"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "Texto da mensagem"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "Seu nome:"
+msgstr "Seu nome (opcional):"
-#: forms.py:543
+# 100%
+#: forms.py:531
msgid "Email:"
-msgstr ""
+msgstr "Email:"
-#: forms.py:545
+#: forms.py:533
+#, fuzzy
msgid "Your message:"
-msgstr "A sua mensagem:"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"A sua mensagem:\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Sua mensagem:"
-#: forms.py:550
+# 100%
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "Não quero fornecer meu e-mail ou receber uma resposta:"
-#: forms.py:572
+# 100%
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "Marque o campo \"Não quero fornecer meu e-mail\"."
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr "perguntar anonimamente"
-#: forms.py:613
+#: forms.py:601
+#, fuzzy
msgid "Check if you do not want to reveal your name when asking this question"
-msgstr "Marque se você não quer revelar seu nome ao fazer esta pergunta"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Marque se você não quer revelar seu nome ao fazer esta pergunta\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Marque se não quer revelar seu nome ao fazer esta pergunta"
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
+#, fuzzy
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
"Você fez essa pergunta de forma anônima, se você decidir revelar sua "
-"identidade, por favor, marque esta caixa."
+"identidade, por favor, marque esta caixa.\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Você fez essa pergunta de forma anônima, se decidir revelar sua identidade, "
+"por favor, marque esta caixa."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr "revelar a identidade"
-#: forms.py:835
+#: forms.py:831
+#, fuzzy
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
"Desculpe, apenas o proprietário da questão anônima pode revelar sua "
-"identidade, por favor, desmarque a caixa"
+"identidade, por favor, desmarque a caixa\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Desculpe, apenas o proprietário da questão anônima pode revelar sua "
+"identidade, por favor desmarque a caixa"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
@@ -258,126 +325,220 @@ msgstr ""
"forma anônima. Por favor, marque a caixa \"revelar a identidade\" ou "
"recarregue esta página e tente editar novamente a questão."
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr "este e-mail será ligado ao gravatar"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nome real"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Site"
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr "Cidade"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr "Mostrar país"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Data de nascimento"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "não será mostrado, usado para calcular a idade formato: AAAA-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Perfil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Apelido"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
+#, fuzzy
msgid "this email has already been registered, please use another one"
-msgstr "este e-mail já foi registrado, por favor use outro"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"este e-mail já foi registrado, por favor use outro\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"este e-mail já foi registrado, utilize outro"
-#: forms.py:976
+# 100%
+#: forms.py:971
msgid "Choose email tag filter"
-msgstr ""
+msgstr "Escolha o filtro de tags de e-mail"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Perguntada(s) por mim"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Respondida(s) por mim"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Selecionados individualmente"
-#: forms.py:1032
+#: forms.py:1027
+#, fuzzy
msgid "Entire forum (tag filtered)"
-msgstr "Forum inteiro (filtrada por tag)"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Forum inteiro (filtrada por tag)\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Fórum inteiro (filtrada por tag)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Comentários e posts me mencionando"
+#: forms.py:1112
+#, fuzzy
+msgid "please choose one of the options above"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"por favor, escolha uma das opções acima\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"escolha uma das opções acima"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "ok, vamos tentar!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "não envie e-mails, obrigado(a)"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "por favor, escolha uma das opções acima"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
+#, fuzzy
msgid "about/"
-msgstr "about /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"about /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"sobre/"
-#: urls.py:58
+#: urls.py:42
+#, fuzzy
msgid "faq/"
-msgstr "faq /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"faq /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"faq/"
-#: urls.py:59
+#: urls.py:43
+#, fuzzy
msgid "privacy/"
-msgstr "privacidade /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"privacidade /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"privacidade/"
+
+#: urls.py:44
+msgid "help/"
+msgstr ""
-#: urls.py:61 urls.py:66
+#: urls.py:46 urls.py:51
+#, fuzzy
msgid "answers/"
-msgstr "respostas /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"respostas /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"respostas/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
+#, fuzzy
msgid "edit/"
-msgstr "editar /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"editar /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"editar/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
+#, fuzzy
msgid "revisions/"
-msgstr "revisões /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"revisões /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"revisões/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
-msgid "questions/"
+#: urls.py:61
+#, fuzzy
+msgid "questions"
msgstr "perguntas /"
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
+#, fuzzy
+msgid "questions/"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"perguntas /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"perguntas/"
+
#: urls.py:82
+#, fuzzy
msgid "ask/"
-msgstr "perguntar /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"perguntar /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"perguntar/"
#: urls.py:92
+#, fuzzy
msgid "retag/"
-msgstr "alterar tags/"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"alterar tags/\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"alterar tag/"
#: urls.py:97
+#, fuzzy
msgid "close/"
-msgstr "fechar /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"fechar /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"fechar/"
#: urls.py:102
+#, fuzzy
msgid "reopen/"
-msgstr "reabrir /"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"reabrir /\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"reabrir/"
#: urls.py:107
msgid "answer/"
@@ -387,331 +548,491 @@ msgstr "responder/"
msgid "vote/"
msgstr "votar/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgets/"
+
+#: urls.py:158
msgid "tags/"
msgstr "tags/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr "inscrever-por-tags/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "usuários/"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "perguntas /"
+msgstr "inscrições/"
-#: urls.py:226
+# 100%
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "usuários/update_has_custom_avatar/"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "insígnias/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "mensagens/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "marcar como lida/"
-#: urls.py:257
+#: urls.py:262
+#, fuzzy
msgid "upload/"
-msgstr "upload/"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"upload/\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"gravar/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "feedback/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "perguntar/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "conta/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "Configurar insígnias/"
+msgstr "Configurações de controle de acesso"
+# 100%
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "Permitir acesso ao fórum somente para usuários registrados"
#: conf/badges.py:13
+#, fuzzy
msgid "Badge settings"
-msgstr "Configurar insígnias/"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Configurar insígnias/\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Configurar insígnias"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
msgstr "Disciplinada: mínimo de votos positivos para apagar mensagem"
#: conf/badges.py:32
+#, fuzzy
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr "Pressão do grupo: mínimo de votos negativos para apagar mensagem"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pressão do grupo: mínimo de votos negativos para apagar mensagem\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pressão dos pares: mínimo de votos negativos para a mensagem apagada"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
msgstr "Professor: mínimo de votos positivos para a resposta"
#: conf/badges.py:50
+#, fuzzy
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr "Resposta Razoável: mínimo de votos positivos para a resposta"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta Razoável: mínimo de votos positivos para a resposta\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta razoável: mínimo de votos positivos para a resposta"
#: conf/badges.py:59
+#, fuzzy
msgid "Good Answer: minimum upvotes for the answer"
-msgstr "Resposta Boa: mínimo de votos positivos para a resposta"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta Boa: mínimo de votos positivos para a resposta\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta boa: mínimo de votos positivos para a resposta"
#: conf/badges.py:68
+#, fuzzy
msgid "Great Answer: minimum upvotes for the answer"
-msgstr "Resposta Ótima: mínimo de votos positivos para a resposta"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta Ótima: mínimo de votos positivos para a resposta\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Resposta ótima: mínimo de votos positivos para a resposta"
#: conf/badges.py:77
+#, fuzzy
msgid "Nice Question: minimum upvotes for the question"
-msgstr "Pergunta Razoável: mínimo de votos positivos para a questão"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Razoável: mínimo de votos positivos para a questão\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta razoável: mínimo de votos positivos para a questão"
#: conf/badges.py:86
+#, fuzzy
msgid "Good Question: minimum upvotes for the question"
-msgstr "Pergunta Boa: mínimo de votos positivos para a questão"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Boa: mínimo de votos positivos para a questão\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta boa: mínimo de votos positivos para a questão"
#: conf/badges.py:95
+#, fuzzy
msgid "Great Question: minimum upvotes for the question"
-msgstr "Pergunta Ótima: mínimo de votos positivos para a questão"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Ótima: mínimo de votos positivos para a questão\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta ótima: mínimo de votos positivos para a questão"
#: conf/badges.py:104
+#, fuzzy
msgid "Popular Question: minimum views"
-msgstr "Pergunta Popular: mínimo de visualizações"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Popular: mínimo de visualizações\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta popular: mínimo de visualizações"
#: conf/badges.py:113
+#, fuzzy
msgid "Notable Question: minimum views"
-msgstr "Pergunta Notável: mínimo de visualizações"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Notável: mínimo de visualizações\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta notável: mínimo de visualizações"
#: conf/badges.py:122
+#, fuzzy
msgid "Famous Question: minimum views"
-msgstr "Pergunta Famosa: mínimo de visualizações"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta Famosa: mínimo de visualizações\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Pergunta famosa: mínimo de visualizações"
#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
msgstr "Autodidata: mínimo de votos positivos para a resposta"
+# 100%
#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "Dever cívico: mínimo de votos"
+# 100%
#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "Dever iluminado: mínimo de votos"
+# 100%
#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Guru: mínimo de votos"
+# 100%
#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Necromancer: mínimo de votos"
+# 100%
#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Necromancer: atraso mínimo em dias"
+# 100%
#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Editor associado: número mínimo de edições"
+# 100%
#: conf/badges.py:194
msgid "Favorite Question: minimum stars"
-msgstr ""
+msgstr "Pergunta favorita: mínimo de estrelas"
+# 100%
#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
-msgstr ""
+msgstr "Pergunta galáctica: minimo de estrelas"
+# 100%
#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Palpiteiro: mínimo de comentários"
+# 100%
#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "Taxonomista: contagem mínima de utilização de tags"
+# 100%
#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "Entusiasta: mínimo de dias"
+# 100%
#: conf/email.py:15
msgid "Email and email alert settings"
-msgstr ""
+msgstr "Configuração de e-mail e de alertas de e-mail"
+# 100%
#: conf/email.py:24
msgid "Prefix for the email subject line"
-msgstr ""
+msgstr "Prefixo para a linha de assunto dos e-mails"
#: conf/email.py:26
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"Esta configuração obtém o padrão da configuração EMAIL_SUBJECT_PREFIX do "
+"django. Um valor inserido aqui sobrescreverá o padrão."
+# 100%
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configuração de e-mail e de alertas de e-mail"
+
+# 100%
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr ""
+msgstr "Número máximo de novas entradas em um e-mail de alerta"
-#: conf/email.py:48
+# 100%
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr ""
+msgstr "Frequência padrão de notificação de todas as perguntas"
-#: conf/email.py:50
+# 100%
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
+"Opção para definir a frequência dos e-mails de atualização: todas as "
+"perguntas."
-#: conf/email.py:62
+# 100%
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr ""
+msgstr "Frequência padrão de notificação de perguntas feitas pelo usuário"
-#: conf/email.py:64
+# 100%
+# 78%
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"Opção para definir a frequência dos e-mails de atualização: Perguntas feitas "
+"pelo usuário."
-#: conf/email.py:76
+# 100%
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr ""
+msgstr "Frequência padrão de notificação de perguntas respondidas pelo usuário"
-#: conf/email.py:78
+# 100%
+# 78%
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"Opção para definir a frequência dos e-mails de atualização para : Perguntas "
+"respondidas pelo usuário."
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
+"Frequência padrão de notificação de perguntas selecionadas individualmente "
+"pelo usuário"
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
+"Opção para definir a frequência de e-mails de atualização para: Perguntas "
+"selecionadas individualmente pelo usuário."
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
-msgstr ""
+msgstr "Frequência padrão de notificação para menções e comentários"
-#: conf/email.py:108
+# 100%
+# 75%
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
+"Opção para definir a frequência dos e-mails de atualização: Menções e "
+"comentários"
-#: conf/email.py:119
+# 100%
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr ""
+msgstr "Enviar lembretes periódicos sobre perguntas sem respostas"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
+"NOTA: para utilizar este recurso, é necessário executar o comando de "
+"administração \"enviar lembretes de perguntas sem resposta\". (por exemplo, "
+"através de um cron job - com uma frequência apropriada)"
-#: conf/email.py:134
+# 100%
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr ""
+msgstr "Dias antes de começar a mandar lembretes sobre perguntas sem respostas"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
+"Frequência para enviar lembretes de perguntas sem resposta (em dias entre os "
+"lembretes enviados)."
-#: conf/email.py:157
+# 100%
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
-msgstr ""
+msgstr "Número máximo de lembretes a enviar sobre perguntas sem respostas"
-#: conf/email.py:168
+# 100%
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
-msgstr ""
+msgstr "Enviar lembretes periódicos para aceitar a melhor resposta"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
+"NOTA: para utilizar este recurso, é necessário executar o comando de "
+"administração \"enviar lembretes de aceitar respostas\". (por exemplo, "
+"através de um cron job - com uma frequência apropriada)"
-#: conf/email.py:183
+# 100%
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
-msgstr ""
+msgstr "Dias antes de começar a enviar lembretes para aceitar uma resposta"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
+"Frequência para enviar lembretes de aceitar respostas (em dias entre os "
+"lembretes enviados)."
-#: conf/email.py:206
+# 100%
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
-msgstr ""
+msgstr "Número máximo de lembretes a enviar sobre aceitar a melhor resposta"
-#: conf/email.py:218
+# 100%
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
-msgstr ""
+msgstr "Pedir para a verificar o e-mail antes de autorizar a postar"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
+"A verificação ativa do e-mails é feita enviando uma chave de verificação "
+"dentro do e-mail"
-#: conf/email.py:228
+# 100%
+#: conf/email.py:237
msgid "Allow only one account per email address"
-msgstr ""
+msgstr "Permitir somente uma conta por endereço de e-mail"
-#: conf/email.py:237
+# 100%
+#: conf/email.py:246
msgid "Fake email for anonymous user"
-msgstr ""
+msgstr "E-mail falso para usuário anônimo"
-#: conf/email.py:238
+# 100%
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
+"Utilize esta configuração para controlar o gravatar para usuários sem e-mail"
-#: conf/email.py:247
+# 100%
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr ""
+msgstr "Permitir postar perguntas por e-mail"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Antes de ativar esta configuração - preencha as configurações do IMAP no "
+"arquivo settings.py"
-#: conf/email.py:260
+# 100%
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Substituir espaços em tags de e-mail por travessões"
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"Esta configuração aplica-se a tags escritas na linha de assunto de perguntas "
+"feitas por e-mail"
+# 100%
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "Permitir postar perguntas por e-mail"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+# 100%
#: conf/external_keys.py:11
msgid "Keys for external services"
-msgstr ""
+msgstr "Chaves para serviços externos"
+# 100%
#: conf/external_keys.py:19
msgid "Google site verification key"
-msgstr ""
+msgstr "Chave de verificação do site do Google"
#: conf/external_keys.py:21
#, python-format
@@ -719,10 +1040,14 @@ msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
+"Esta chave ajuda o google a indexar seu site. Consiga em índices do google "
+"<a href=\"%(url)s?hl=%(lang)s\">site de ferramentas para webmasters do "
+"google </a>"
+# 100%
#: conf/external_keys.py:36
msgid "Google Analytics key"
-msgstr ""
+msgstr "Chave do Google Analytics"
#: conf/external_keys.py:38
#, python-format
@@ -730,165 +1055,196 @@ msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
+"Consiga no site <a href=\"%(url)s\">Google Analytics</a>, se desejar "
+"utilizar o Google Analytics para monitorar seu site"
+# 100%
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Permitir recaptcha (as chaves abaixo são necessárias)"
-#: conf/external_keys.py:60
+# 100%
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
-msgstr ""
+msgstr "Chave pública recaptcha"
-#: conf/external_keys.py:68
+# 100%
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
-msgstr ""
+msgstr "Chave privativa recaptcha"
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
+"Recaptcha é uma ferramenta que ajuda a distinguir pessoas verdadeiras de "
+"robots de spam. Obtenha esta e uma chave pública em <a href=\"%(url)s\">"
+"%(url)s</a>"
-#: conf/external_keys.py:82
+# 100%
+#: conf/external_keys.py:84
msgid "Facebook public API key"
-msgstr ""
+msgstr "Chave do Facebook public API"
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
"\">facebook create app</a> site"
msgstr ""
+"A chave Facebook API e o segredo Facebook permitem utilizar o método de "
+"login Facebook Connect no seu site. Obtenha estas chaves no site <a href="
+"\"%(url)s\">facebook create app</a> "
-#: conf/external_keys.py:97
+# 100%
+#: conf/external_keys.py:99
msgid "Facebook secret key"
-msgstr ""
+msgstr "Chave secreta Facebook"
-#: conf/external_keys.py:105
+# 100%
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Chave Twitter consumer"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
+"Registre seu fórum no <a href=\"%(url)s\">site de aplicações do Twitter</a>"
-#: conf/external_keys.py:118
+# 100%
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Chave secreta Twitter consumer"
-#: conf/external_keys.py:126
+# 100%
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "Chave LinkedIn consumer"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
+"Registre seu fórum no <a href=\"%(url)s\">site de desenvolvedores do "
+"LinkedIn</a>"
-#: conf/external_keys.py:139
+# 100%
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "Chave secreta LinkedIn consumer"
-#: conf/external_keys.py:147
+# 100%
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr ""
+msgstr "Chave ident.ca consumer"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
+"Registre seu fórum no <a href=\"%(url)s\">site de aplicações do ident.ca</a>"
-#: conf/external_keys.py:160
+# 100%
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr ""
-
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr ""
+msgstr "Chave secreta ident.ca consumer"
+# 100%
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
-msgstr ""
+msgstr "Páginas modelos - sobre, privacidade, politicas, etc."
+# 100%
#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
msgstr ""
+"Texto para a página Sobre do fórum de Perguntas e Respostas (formato html)"
#: conf/flatpages.py:22
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"about\" page to check your input."
msgstr ""
+"Salve, e depois <a href=\"http://validator.w3.org/\">utilize o validador "
+"HTML</a> na página \"sobre\" para verificar sua entrada."
+# 100%
#: conf/flatpages.py:32
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
+"Texto para a página FAQ do fórum de Perguntas e Respostas (formato html)"
#: conf/flatpages.py:35
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
+"Salve, e depois <a href=\"http://validator.w3.org/\">utilize o validador "
+"HTML</a> na página \"faq\" para verificar sua entrada."
+# 100%
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
msgstr ""
+"Texto para a página Privacy Policy do fórum de Perguntas e Respostas "
+"(formato html)"
#: conf/flatpages.py:49
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"privacy\" page to check your input."
msgstr ""
+"Salve, e depois <a href=\"http://validator.w3.org/\">utilize o validador "
+"HTML</a> na página \"privacidade\" para verificar sua entrada."
+# 100%
#: conf/forum_data_rules.py:12
msgid "Data entry and display rules"
+msgstr "Entrada de datas e regras de exibição"
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
msgstr ""
-#: conf/forum_data_rules.py:22
-#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
+"Permitir incorporar vídeos. <em>Nota: leia <a href=\"%(url)s>isto aqui</a> "
+"primeiro.</em>"
+# 100%
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
-msgstr ""
+msgstr "Marque para permitir o recurso do wiki da comunidade"
+# 100%
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Permitir perguntar anonimamente"
#: conf/forum_data_rules.py:44
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"Os usuários não aumentam sua reputação com perguntas anônimas e sua "
+"identidade não é revelada até que mudem de opinião."
+# 100%
#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "Permitir postar antes de fazer o login"
#: conf/forum_data_rules.py:58
msgid ""
@@ -897,219 +1253,376 @@ msgid ""
"to check for pending posts every time the user logs in. The builtin Askbot "
"login system supports this feature."
msgstr ""
+"Marque se desejar permitir que os usuários comecem a postar perguntas ou "
+"respostas antes de fazer o login. Ativar este recurso pode exigir ajustes no "
+"sistema de login do usuário para verificar posts pendentes a cada vez que o "
+"usuário faz o login. O sistema interno de login do AskBot permite este "
+"recurso."
+# 100%
#: conf/forum_data_rules.py:73
msgid "Allow swapping answer with question"
-msgstr ""
+msgstr "Permitir trocar a resposta pela pergunta"
#: conf/forum_data_rules.py:75
msgid ""
"This setting will help import data from other forums such as zendesk, when "
"automatic data import fails to detect the original question correctly."
msgstr ""
+"Esta configuração ajudará a importar dados de outros fóruns tais como o "
+"zendesk, quando a importação automática de dados falhar em detectar a "
+"pergunta original corretamente."
+# 100%
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
-msgstr ""
+msgstr "Tamanho máximo do tag (em quantidade de caracteres)"
+
+# 86%
+# 100%
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "Tamanho máximo do título (em quantidade de caracteres)"
+
+# 75%
+# 87%
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "Tamanho mínimo do corpo da pergunta (em quantidade de caracteres)"
+
+# 75%
+# 100%
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "Tamanho mínimo do corpo da resposta (em quantidade de caracteres)"
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "tags são necessárias"
-#: conf/forum_data_rules.py:95
+# 100%
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr ""
+msgstr "Tags obrigatórios"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
+"Ao menos um destas tags será necessária para cada pergunta nova ou pergunta "
+"editada. Uma tag obrigatória pode ser um coringa, se as tags coringas "
+"estiverem ativas."
-#: conf/forum_data_rules.py:110
+# 100%
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Forçar caixa baixa para as tags"
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
+"Cuidado: depois de marcar esta opção, faça um backup do banco de dados e "
+"execute o comando de administração <code>python manage.py fix_question_tags</"
+"code> para renomear as tags globalmente."
-#: conf/forum_data_rules.py:126
+# 100%
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "Formato da lista de tags"
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
+"Selecione o formato para mostrar as tags, seja uma lista simples ou uma "
+"nuvem de tags"
-#: conf/forum_data_rules.py:140
+# 100%
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr ""
+msgstr "Utilizar tags coringa"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
+"Tags coringa podem ser utilizadas para seguir ou ignorar várias tags de uma "
+"só vez. Uma tag coringa válida contém o coringa no final."
-#: conf/forum_data_rules.py:155
+# 100%
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
-msgstr ""
+msgstr "Número máximo padrão de comentários a exibir sob os posts"
-#: conf/forum_data_rules.py:166
+# 100%
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
-msgstr ""
+msgstr "Tamanho máximo dos comentários, deve ser < %(max_len)s"
-#: conf/forum_data_rules.py:176
+# 100%
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "Tempo limite para editar comentários"
-#: conf/forum_data_rules.py:178
+# 100%
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
-msgstr ""
+msgstr "Se desmarcado, não haverá tempo limite para editar comentários"
-#: conf/forum_data_rules.py:189
+# 100%
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Nº de minutos permitidos para editar comentários"
-#: conf/forum_data_rules.py:190
+# 100%
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Para ativar este recurso, marque o anterior"
-#: conf/forum_data_rules.py:199
+# 100%
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "Salvar comentários com a tecla <Enter> "
-#: conf/forum_data_rules.py:208
+# 100%
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "Tamanho mínimo do termo de busca para pesquisa Ajax"
-#: conf/forum_data_rules.py:209
+# 100%
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
-msgstr ""
+msgstr "Deve corresponder à configuração do banco de dados"
-#: conf/forum_data_rules.py:218
+# 100%
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "Não guardar o texto da busca na pesquisa"
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
+"Marque para desativar o comportamento \"pegajoso\" da consulta de pesquisa. "
+"Pode ser útil se desejar afastar a barra de pesquisa da posição padrão ou "
+"não gostar do comportamento pegajoso do texto da pesquisa da consulta."
-#: conf/forum_data_rules.py:233
+# 100%
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
-msgstr ""
+msgstr "Número máximo de tags por pergunta"
-#: conf/forum_data_rules.py:245
+# 100%
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
-msgstr ""
+msgstr "Número padrão de perguntas a listar"
-#: conf/forum_data_rules.py:255
+# 100%
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
+msgstr "O que significaria \"pergunta sem resposta\"?"
+
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
msgstr ""
-#: conf/license.py:13
-msgid "Content LicensContent License"
+# 100%
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "Utilizar autenticação LDAP para o login com senha"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
msgstr ""
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+# 100%
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "Nome do provedor de serviços do LDAP"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+# 100%
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "Nome do provedor de serviços do LDAP"
+
+# 100%
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Barra lateral da página principal"
+
+# 100%
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "Barra lateral do perfil do usuário"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+#, fuzzy
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+"Utilize esta área para inserir conteúdo no topo da barra lateral no formato "
+"HTML. Ao utilizar esta opção (bem como o rodapé da barra lateral), utilize o "
+"serviço de validação HTML para garantir que sua entrada é válida e funciona "
+"com todos os navegadores."
+
+# 100%
+#: conf/license.py:13
+#, fuzzy
+msgid "Content License"
+msgstr "Licença LicensContent "
+
+# 100%
#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "Mostrar o texto da licença no rodapé do site"
+# 100%
#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "Nome abreviado da licença"
+# 100%
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "Nome completo da licença"
+# 100%
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution Share Alike 3.0"
+# 100%
#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "Adicionar um link para a página da licença"
+# 100%
#: conf/license.py:57
msgid "License homepage"
-msgstr ""
+msgstr "Homepage da licença"
+# 100%
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "URL da página oficial com todas as cláusulas legais"
+# 100%
#: conf/license.py:69
msgid "Use license logo"
-msgstr ""
+msgstr "Utilizar a logo da licença"
+# 100%
#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Imagem da logo da licença"
+# 100%
#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "configuração do provedor de login"
+# 100%
#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
msgstr ""
+"Mostrar provedores de login alternativos na página de senha do \"Login\""
+# 100%
#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
msgstr ""
+"Sempre exibir o formulário de login local e ocultar o botão \"AskBot\"."
+# 100%
#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
-msgstr ""
+msgstr "Ative para permitir o login com o site wordpress auto-hospedado"
#: conf/login_providers.py:41
msgid ""
"to activate this feature you must fill out the wordpress xml-rpc setting "
"bellow"
msgstr ""
+"para ativar este recurso, você deve preencher a configuração do wordpress "
+"xml-rpc abaixo"
#: conf/login_providers.py:50
msgid ""
"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
"xmlrpc.php"
msgstr ""
+"Preencha com a url para xml-rpc do wordpress, normalmente http://meusite.com/"
+"xmlrpc.php"
#: conf/login_providers.py:51
msgid ""
"To enable, go to Settings->Writing->Remote Publishing and check the box for "
"XML-RPC"
msgstr ""
+"para ativar, vá para Configurações ->Escrita->Publicação remota e marque a "
+"caixa para XML-RPC"
-#: conf/login_providers.py:62
+# 100%
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "Carregar seu ícone"
-#: conf/login_providers.py:92
+# 100%
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
-msgstr ""
+msgstr "Ativar o login do %(provider)s"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
"need to be set in the \"External keys\" section"
msgstr ""
+"Nota: para ativar realmente o login %(provider)s será necessário definir "
+"alguns parâmetros adicionais na seção \"Chaves externas\"."
+# 100%
#: conf/markup.py:15
msgid "Markup in posts"
-msgstr ""
+msgstr "Marcação em posts"
+# 100%
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Ativar o código amigável Markdown"
#: conf/markup.py:43
msgid ""
@@ -1118,10 +1631,15 @@ msgid ""
"\"MathJax support\" implicitly turns this feature on, because underscores "
"are heavily used in LaTeX input."
msgstr ""
+"Quando marcado, o caractere de sublinhado não iniciará a formatação itálica "
+"ou negrita - texto em negrito e itálico pode ser marcados com asteriscos. "
+"Note que o suporte \"MathJax\" ativa este recurso implicitamente, porque os "
+"sublinhados são usados com frequência nas entradas em LaTex."
+# 100%
#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
-msgstr ""
+msgstr "Suporte Mathjax (renderização de LaTex)"
#: conf/markup.py:60
#, python-format
@@ -1129,10 +1647,13 @@ msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
msgstr ""
+"Ao ativar este recurso, o <a href=\"%(url)s\">mathjax</a> deve ser instalado "
+"no seu servidor em seu próprio diretório."
+# 100%
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
-msgstr ""
+msgstr "URL de base da implantação do MathJax"
#: conf/markup.py:76
msgid ""
@@ -1140,20 +1661,28 @@ msgid ""
"deploy it yourself, preferably at a separate domain and enter url pointing "
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
+"Nota - <strong>MathJax não vem com o askbot</strong> - você deve instalá-lo "
+"por conta própria, preferivelmente em um domínio separado e inserir o url "
+"apontando para o diretório \"mathjax\" (por exemplo: http://mysite.com/"
+"mathjax)"
+# 100%
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
-msgstr ""
+msgstr "Ativar autolink com padrões específicos"
#: conf/markup.py:93
msgid ""
"If you enable this feature, the application will be able to detect patterns "
"and auto link to URLs"
msgstr ""
+"Ao ativar este recurso, a aplicação será capaz de detectar padrões e "
+"vincular automaticamente a URLS"
+# 100%
#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "Expressões regulares para detectar o link padrão"
#: conf/markup.py:108
msgid ""
@@ -1163,10 +1692,16 @@ msgid ""
"to the link url template. Please look up more information about regular "
"expressions elsewhere."
msgstr ""
+"Insira uma expressão regular válida para os padrões, uma por linha. Por "
+"exemplo, para detectar um padrão de bug tipo #bug123, utilize a seguinte "
+"expressão regular: #bug(\\d+). Os números capturados pelo padrão dentro dos "
+"parênteses serão transferidos para o modelo de url do link. Consulte sobre "
+"expressões regulares em documentação apropriada."
+# 100%
#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "URLs para autolinks"
#: conf/markup.py:129
msgid ""
@@ -1177,157 +1712,207 @@ msgid ""
"shown above and the entry in the post #123 will produce link to the bug 123 "
"in the redhat bug tracker."
msgstr ""
+"Insira o modelo de url para os padrões digitados na configuração anterior, "
+"uma por linha. <strong>Garanta que o número de linhas nesta configuração e "
+"na anterior seja o mesmo</strong>. Por exemplo, o modelo https://bugzilla."
+"redhat.com/show_bug.cgi?id=\\1 junto com o padrão mostrado acima e a entrada "
+"do post #123 produzirá um link para o bug 123 no sistema de bugs da redhat."
+# 100%
#: conf/minimum_reputation.py:12
msgid "Karma thresholds"
-msgstr ""
+msgstr "limiares de Karma"
+# 100%
#: conf/minimum_reputation.py:22
msgid "Upvote"
-msgstr ""
+msgstr "Voto favorável"
+# 100%
#: conf/minimum_reputation.py:31
msgid "Downvote"
-msgstr ""
+msgstr "Voto desfavorável"
+# 100%
#: conf/minimum_reputation.py:40
msgid "Answer own question immediately"
-msgstr ""
+msgstr "Responda a própria pergunta imediatamente"
+# 100%
#: conf/minimum_reputation.py:49
msgid "Accept own answer"
-msgstr ""
+msgstr "Aceitar a própria resposta"
+# 100%
#: conf/minimum_reputation.py:58
msgid "Flag offensive"
-msgstr ""
+msgstr "Sinalizar teor ofensivo"
+# 100%
#: conf/minimum_reputation.py:67
msgid "Leave comments"
-msgstr ""
+msgstr "Deixar comentários"
+# 100%
#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
-msgstr ""
+msgstr "Excluir comentários postados por outros"
+# 100%
#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
-msgstr ""
+msgstr "Excluir perguntas e respostas postados por outros"
+# 100%
#: conf/minimum_reputation.py:94
msgid "Upload files"
-msgstr ""
+msgstr "Gravar arquivos"
+# 100%
#: conf/minimum_reputation.py:103
msgid "Close own questions"
-msgstr ""
+msgstr "Fechar questões próprias"
+# 100%
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
-msgstr ""
+msgstr "Retag perguntas postadas por outras pessoas"
+# 100%
#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
-msgstr ""
+msgstr "Reabrir questões próprias"
+# 100%
#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
-msgstr ""
+msgstr "Editar mensagens da comunidade wiki"
+# 100%
#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
-msgstr ""
+msgstr "Editar mensagens autorizadas por outras pessoas"
+# 100%
#: conf/minimum_reputation.py:148
msgid "View offensive flags"
-msgstr ""
+msgstr "Ver sinalizadores de teor ofensivo"
+# 100%
#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
-msgstr ""
+msgstr "Fechar perguntas feitas por outros"
+# 100%
#: conf/minimum_reputation.py:166
msgid "Lock posts"
-msgstr ""
+msgstr "Bloquear mensagens"
+# 100%
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "Remover rel=nofollow da própria página inicial"
#: conf/minimum_reputation.py:177
msgid ""
"When a search engine crawler will see a rel=nofollow attribute on a link - "
"the link will not count towards the rank of the users personal site."
msgstr ""
+"Quando um rastejador de um motor de busca enxergar rel=nofollow em um link - "
+"o link não contará para o rank dos sites pessoais dos usuários."
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+# 100%
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
-msgstr ""
+msgstr "Regras de sucesso e falha do Karma"
+# 100%
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
-msgstr ""
+msgstr "Máximo ganho de reputação diária por usuário"
+# 100%
#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
-msgstr ""
+msgstr "Ganho por receber um voto a favor"
+# 100%
#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
-msgstr ""
+msgstr "Ganho para o autor da resposta aceita"
+# 100%
#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
-msgstr ""
+msgstr "Ganho por aceitar a melhor resposta"
+# 100%
#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
-msgstr ""
+msgstr "Ganho para o proprietário da mensagem cancelada por voto desfavorável"
+# 100%
#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
-msgstr ""
+msgstr "Ganho para votante no cancelamento do voto desfavorável"
+# 100%
#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr ""
+msgstr "Perda para o votante por cancelar a aceitação da resposta"
+# 100%
#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
-msgstr ""
+msgstr "Perda para o autor cuja resposta era \"não aceita\""
+# 100%
#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
-msgstr ""
+msgstr "Perda por dar um voto desfavorável"
+# 100%
#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
msgstr ""
+"Perda para o proprietário da mensagem que era sinalizada como teor ofensivo"
+# 100%
#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr ""
+msgstr "Perda para o dono da mensagem que teve voto desfavorável"
+# 100%
#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
msgstr ""
+"Perda para o dono da mensagem que foi sinalizada 3 vezes pela mesma revisão"
+# 100%
#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
msgstr ""
+"Perda para o dono da mensagem que foi sinalizada 5 vezes pela mesma revisão"
+# 100%
#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
-msgstr ""
+msgstr "Perder para o dono da mensagem quando o voto favorável é cancelado"
+# 100%
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
-msgstr ""
+msgstr "Barra lateral da página principal"
+# 100%
#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "Cabeçalho personalizado da barra lateral"
#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
#: conf/sidebar_question.py:22
@@ -1337,42 +1922,54 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Utilize esta área para inserir conteúdo no topo da barra lateral no formato "
+"HTML. Ao utilizar esta opção (bem como o rodapé da barra lateral), utilize o "
+"serviço de validação HTML para garantir que sua entrada é válida e funciona "
+"com todos os navegadores."
+# 100%
#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "Mostrar bloco avatar na barra lateral"
+# 100%
#: conf/sidebar_main.py:38
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
-msgstr ""
+msgstr "Desmarque esta se desejar ocultar o bloco avatar da barra lateral."
+# 100%
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "Limite do número de avatares a exibir na barra lateral"
+# 100%
#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "Mostrar seletor de tags na barra lateral"
#: conf/sidebar_main.py:61
msgid ""
"Uncheck this if you want to hide the options for choosing interesting and "
"ignored tags "
msgstr ""
+"Desmarque se desejar ocultar as opções para escolher tags interessantes e "
+"ignoradas"
+# 100%
#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "Mostrar lista de etiqueta/nuvem na barra lateral"
#: conf/sidebar_main.py:74
msgid ""
"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
-msgstr ""
+msgstr "Desmarque se desejar ocultar a nuvem de tags da barra lateral"
+# 100%
#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "Rodapé da barra lateral personalizado"
#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
#: conf/sidebar_question.py:78
@@ -1382,48 +1979,63 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Utilize esta área para inserir conteúdo embaixo da barra lateral no formato "
+"HTML. Ao utilizar esta opção (bem como o cabeçalho da barra lateral), "
+"utilize o serviço de validação HTML para garantir que sua entrada é válida e "
+"funciona com todos os navegadores."
+# 100%
#: conf/sidebar_profile.py:12
msgid "User profile sidebar"
-msgstr ""
+msgstr "Barra lateral do perfil do usuário"
+# 100%
#: conf/sidebar_question.py:11
msgid "Question page sidebar"
-msgstr ""
+msgstr "Barra lateral da página de perguntas"
+# 100%
#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "Mostrar a lista de etiqueta na barra lateral"
+# 100%
#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "Desmarque se desejar ocultar a lista de tags da barra lateral."
+# 100%
#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "Mostrar informação meta na barra lateral"
#: conf/sidebar_question.py:50
msgid ""
"Uncheck this if you want to hide the meta information about the question "
"(post date, views, last updated). "
msgstr ""
+"Desmarque se desejar ocultar a meta-informação sobre a pergunta(data da "
+"postagem, visualizações, última atualização)."
+# 100%
#: conf/sidebar_question.py:62
msgid "Show related questions in sidebar"
-msgstr ""
+msgstr "Mostrar perguntas relacionadas na barra lateral"
+# 100%
#: conf/sidebar_question.py:64
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr ""
+msgstr "Desmarque se desejar ocultar a lista de perguntas relacionadas."
+# 100%
#: conf/site_modes.py:64
msgid "Bootstrap mode"
-msgstr ""
+msgstr "modo Bootstrap"
+# 100%
#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "Ativar um modo \"Bootstrap\""
#: conf/site_modes.py:76
msgid ""
@@ -1432,67 +2044,89 @@ msgid ""
"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
"changed after you modify this setting."
msgstr ""
+"O modo Bootstrap baixa a reputação e o nível de algumas insígnias para "
+"valores mais adequados para comunidades pequenas, <strong>ATENÇÃO</strong> "
+"o seu valor para reputação mínima, configuração de insígnias e regras de "
+"votação serão alteradas ao modificar este parâmetro."
+# 100%
#: conf/site_settings.py:12
msgid "URLS, keywords & greetings"
-msgstr ""
+msgstr "URLS, palavras-chave e saudações"
+# 100%
#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
-msgstr ""
+msgstr "Título do site para forum Perguntas e Respostas"
+# 100%
#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
msgstr ""
+"Listas separadas por vírgula das palavras-chave de Perguntas e Respostas"
+# 100%
#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
-msgstr ""
+msgstr "Mensagem de Direitos Autorais para exibir no rodapé"
+# 100%
#: conf/site_settings.py:49
msgid "Site description for the search engines"
-msgstr ""
+msgstr "Descrição do site para a pesquisa motor"
+# 100%
#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
-msgstr ""
+msgstr "Seu nome curto para forum Perguntas e Respostas"
-#: conf/site_settings.py:68
+# 100%
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
+"Base URL para seu forum Perguntas e Respostas, deve iniciar com http ou https"
-#: conf/site_settings.py:79
+# 100%
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr ""
+msgstr "Marcar para ativar saudações para usuário anônimo"
-#: conf/site_settings.py:90
+# 100%
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr ""
+msgstr "Texto mostrado na mensagem de saudação do usuário anônimo"
-#: conf/site_settings.py:94
+# 100%
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "Use HTML para formatar a mensagem"
-#: conf/site_settings.py:103
+# 100%
+#: conf/site_settings.py:102
msgid "Feedback site URL"
-msgstr ""
+msgstr "URL do site de feedback"
-#: conf/site_settings.py:105
+# 100%
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
-msgstr ""
+msgstr "Se deixado vazio, será utilizado um formulário de feedback simples"
+# 100%
#: conf/skin_counter_settings.py:11
msgid "Skin: view, vote and answer counters"
-msgstr ""
+msgstr "Skin: contadores para visualização, votação e respostas"
+# 100%
#: conf/skin_counter_settings.py:19
msgid "Vote counter value to give \"full color\""
-msgstr ""
+msgstr "Valor do contador de votos para dar \"cores cheias\""
+# 100%
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr ""
+msgstr "Cor de plano de fundo para votos = 0"
+# 100%
#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
@@ -1504,160 +2138,204 @@ msgstr ""
#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
-msgstr ""
+msgstr "Nome da cor HTML ou valor hexadecimal"
+# 100%
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
-msgstr ""
+msgstr "Cor de primeiro plano para votos = 0"
+# 100%
#: conf/skin_counter_settings.py:51
msgid "Background color for votes"
-msgstr ""
+msgstr "Cor de plano de fundo para votos"
+# 100%
#: conf/skin_counter_settings.py:61
msgid "Foreground color for votes"
-msgstr ""
+msgstr "Cor de primeiro plano para votos"
+# 100%
#: conf/skin_counter_settings.py:71
msgid "Background color for votes = MAX"
-msgstr ""
+msgstr "Cor de plano de fundo para votos = MAX"
+# 100%
#: conf/skin_counter_settings.py:84
msgid "Foreground color for votes = MAX"
-msgstr ""
+msgstr "Cor de primeiro plano para votos = MAX"
+# 100%
#: conf/skin_counter_settings.py:95
msgid "View counter value to give \"full color\""
-msgstr ""
+msgstr "Visualizar o valor do contador para dar \"cores cheias\""
+# 100%
#: conf/skin_counter_settings.py:105
msgid "Background color for views = 0"
-msgstr ""
+msgstr "Cor de plano de fundo para visualizações = 0"
+# 100%
#: conf/skin_counter_settings.py:116
msgid "Foreground color for views = 0"
-msgstr ""
+msgstr "Cor de primeiro plano para visualizações = 0"
+# 100%
#: conf/skin_counter_settings.py:127
msgid "Background color for views"
-msgstr ""
+msgstr "Cor de plano de fundo para visualizações"
+# 100%
#: conf/skin_counter_settings.py:137
msgid "Foreground color for views"
-msgstr ""
+msgstr "Cor de primeiro plano para visualizações"
+# 100%
#: conf/skin_counter_settings.py:147
msgid "Background color for views = MAX"
-msgstr ""
+msgstr "Cor de plano de fundo para visualizações = MAX"
+# 100%
#: conf/skin_counter_settings.py:162
msgid "Foreground color for views = MAX"
-msgstr ""
+msgstr "Cor de primeiro plano para visualizações = MAX"
+# 100%
#: conf/skin_counter_settings.py:173
msgid "Answer counter value to give \"full color\""
-msgstr ""
+msgstr "Valor do contador de respostas dar \"cores cheias\""
+# 100%
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr ""
+msgstr "Cor de plano de fundo para respostas = 0"
+# 100%
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
-msgstr ""
+msgstr "Cor de primeiro plano para respostas = 0"
+# 100%
#: conf/skin_counter_settings.py:205
msgid "Background color for answers"
-msgstr ""
+msgstr "Cor de plano de fundo para respostas"
+# 100%
#: conf/skin_counter_settings.py:215
msgid "Foreground color for answers"
-msgstr ""
+msgstr "Cor de primeiro plano para respostas"
+# 100%
#: conf/skin_counter_settings.py:227
msgid "Background color for answers = MAX"
-msgstr ""
+msgstr "Cor de plano de fundo para respostas = MAX"
+# 100%
#: conf/skin_counter_settings.py:238
msgid "Foreground color for answers = MAX"
-msgstr ""
+msgstr "Cor de primeiro plano para respostas = MAX"
+# 100%
#: conf/skin_counter_settings.py:251
msgid "Background color for accepted"
-msgstr ""
+msgstr "Cor de plano de fundo para aceito"
+# 100%
#: conf/skin_counter_settings.py:261
msgid "Foreground color for accepted answer"
-msgstr ""
+msgstr "Cor de primeiro plano para resposta aceita"
+# 100%
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
-msgstr ""
+msgstr "Logotipo e partes <head> HTML"
+# 100%
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
-msgstr ""
+msgstr "Logotipo do site Perguntas e Respostas"
+# 100%
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
+"Para alterar o logotipo, selecione o novo arquivo, então submeta este "
+"formulário inteiro."
-#: conf/skin_general_settings.py:39
+# 100%
+#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "Mostrar logotipo"
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
+"Marque se desejar mostrar o logo no cabeçalho do forum ou desmarque no caso "
+"de não querer que o logotipo apareça na posição padrão"
-#: conf/skin_general_settings.py:53
+# 100%
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr ""
+msgstr "Favicon do site"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
"browser user interface. Please find more information about favicon at <a "
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
+"Uma imagem pequena de 16x16 ou 32x32 utilizada para diferenciar seu site na "
+"interface de usuário de seu navegador. Mais informações sobre favicon em <a "
+"href=\"%(favicon_info_url)s\">nesta página</a>."
-#: conf/skin_general_settings.py:73
+# 100%
+#: conf/skin_general_settings.py:69
msgid "Password login button"
-msgstr ""
+msgstr "Botão senha de login"
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
+"Uma imagem de 88x38 pixel utilizada na tela de login para o botão de senha "
+"do login."
-#: conf/skin_general_settings.py:90
+# 100%
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
+"Mostrar todas as funções da Interface do Usuário para todos os usuários"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
+"Quando marcada, todas as funções dos fóruns serão mostradas para todos os "
+"usuários, independente das reputações. Todavia, para utilizar estas funções, "
+"as regras de moderação, reputação e outros limites ainda serão aplicadas."
-#: conf/skin_general_settings.py:107
+# 100%
+#: conf/skin_general_settings.py:101
msgid "Select skin"
-msgstr ""
+msgstr "Selecione o skin"
-#: conf/skin_general_settings.py:118
+# 100%
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "Personalizar o <HEAD> em HTML"
-#: conf/skin_general_settings.py:127
+# 100%
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "Parte personalizada do <HEAD> HTML"
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1668,12 +2346,21 @@ msgid ""
"files into the footer. <strong>Note:</strong> if you do use this setting, "
"please test the site with the W3C HTML validator service."
msgstr ""
-
-#: conf/skin_general_settings.py:151
+"<strong>Para utilizar esta função</strong>, marque \"Personalizar o HTML &lt;"
+"HEAD&gt;\" acima. O conteúdo desta caixa será inserido na porção do &lt;"
+"HEAD&gt; da saída do HTML, onde elementos tais como &lt;script&gt;, &lt;"
+"link&gt;, &lt;meta&gt; podem ser acrescentados. lembre-se que adicionar "
+"javascript externo ao &lt;HEAD&gt; não é recomendado por que retarda o "
+"carregamento das páginas. Em vez disso, será mais eficiente colocar os links "
+"para os arquivos javascript no rodapé. <strong>Nota:</strong> Se for usar "
+"esta configuração, teste o site com o validador W3C HTML."
+
+# 100%
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "Adições personalizadas do cabeçalho"
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1681,22 +2368,31 @@ msgid ""
"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
"sure that your input is valid and works well in all browsers."
msgstr ""
+"O cabeçalho é a barra em cima do conteúdo com informações do usuário e links "
+"do site, e é comum a todas as páginas do site. Utilize esta área para "
+"inserir conteúdo no cabeçalho no formato HTML. Ao personalizar o cabeçalho "
+"do site (assim como o rodapé e o &lt;HEAD&gt; HTML), utilize o serviço de "
+"validação do HTML e garanta que seu conteúdo é válido para todos os browsers."
-#: conf/skin_general_settings.py:168
+# 100%
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "Modo rodapé do site"
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
+"O rodapé é a parte de baixo do conteúdo, que é comum a todas as páginas. "
+"Você pode desativar, personalizar, ou utilizar um rodapé padrão."
-#: conf/skin_general_settings.py:187
+# 100%
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "Rodapé personalizado (formato HTML)"
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1704,22 +2400,31 @@ msgid ""
"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
"that your input is valid and works well in all browsers."
msgstr ""
+"<strong>Para ativar esta função</strong>, selecione a opção 'Personalizar' "
+"no \"Modo rodapé do site\" acima. Utilize esta área para inserir conteúdo "
+"HTML. Ao personalizar o rodapé do site (bem como o cabeçalho e o &lt;"
+"HEAD&gt; do HTML), utilize um serviço de validação de HTML para garantir que "
+"seu site funcione com todos os navegadores."
-#: conf/skin_general_settings.py:204
+# 100%
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "Aplicar folha de estilo personalizado (CSS)"
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
+"Marque se desejar muda a aparência de seu formulário ao adicionar regras de "
+"folhas de estilo personalizadas (veja o próximo item)"
-#: conf/skin_general_settings.py:218
+# 100%
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "Folha de estilo personalizado (CSS)"
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1727,20 +2432,30 @@ msgid ""
"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
+"<strong>Para utilizar esta função </strong>, marque a opção \"Aplicar folha "
+"de estilos personalizada\" acima. As regras de CSS acrescentadas nesta "
+"janela serão aplicadas após a folha de estilo padrão ser aplicada. A folha "
+"de estilos personalizada será servida dinamicamente na url \"&lt;forum "
+"url&gt;/custom.css\", onde a parte \"&lt;forum url&gt; depende (o padrão é "
+"vazio) da configuração da url em seu urls.py."
-#: conf/skin_general_settings.py:236
+# 100%
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "Adicionar javascript personalizado"
-#: conf/skin_general_settings.py:239
+# 100%
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
+"Verifique para ativar o javascript que você pode entrar no campo ao lado"
-#: conf/skin_general_settings.py:249
+# 100%
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "Javascript personalizado"
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1750,545 +2465,766 @@ msgid ""
"enable your custom code</strong>, check \"Add custom javascript\" option "
"above)."
msgstr ""
+"Digite ou cole javascript que deseja executar no seu site. Um link para o "
+"script será inserido no fim da saída HTML e será servido na url \"&lt;forum "
+"url&gt;/custom.js\". Lembre-se que seu código javascript pode quebrar outras "
+"funcionalidades do site e este comportamento pode não estar consistente ao "
+"variar os navegadores (<strong>para ativar o modo personalizado</strong>, "
+"marque a opção \"Adicionar javascript personalizado\" acima)."
-#: conf/skin_general_settings.py:269
+# 100%
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
-msgstr ""
+msgstr "Número de revisão da mídia de skin"
-#: conf/skin_general_settings.py:271
+# 100%
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
+"Será definido automaticamente, mas você pode modificá-lo se necessário."
-#: conf/skin_general_settings.py:282
+# 100%
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
-msgstr ""
+msgstr "Hash para atualizar o número de revisão de mídia automaticamente."
-#: conf/skin_general_settings.py:286
+# 100%
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
-msgstr ""
+msgstr "Será definido automaticamente, não é necessário modificar manualmente."
+# 100%
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
-msgstr ""
+msgstr "Compartilhando o conteúdo nas redes sociais"
+# 100%
#: conf/social_sharing.py:20
msgid "Check to enable sharing of questions on Twitter"
-msgstr ""
+msgstr "Marque para ativar compartilhamento de perguntas no Twitter"
+# 100%
#: conf/social_sharing.py:29
msgid "Check to enable sharing of questions on Facebook"
-msgstr ""
+msgstr "Marque para ativar compartilhamento de perguntas no Facebook"
+# 100%
#: conf/social_sharing.py:38
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr ""
+msgstr "Marque para ativar compartilhamento de perguntas no LinkedIn"
+# 100%
#: conf/social_sharing.py:47
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr ""
+msgstr "Marque para ativar compartilhamento de perguntas no Identi.ca"
+# 100%
#: conf/social_sharing.py:56
msgid "Check to enable sharing of questions on Google+"
-msgstr ""
+msgstr "Marque para ativar compartilhamento de perguntas no Google+"
+# 100%
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
-msgstr ""
+msgstr "Proteção contra spam Akismet"
+# 100%
#: conf/spam_and_moderation.py:18
msgid "Enable Akismet spam detection(keys below are required)"
-msgstr ""
+msgstr "Ativar detecção de spam Akismet (teclas abaixo são obrigatórias)"
+# 100%
#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
msgstr ""
+"Para obter uma chave Akismet, por favor visite <a href=\"%(url)s\">site "
+"Akismet</a>"
+# 100%
#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "Chave Akismet para detecção de spam"
+# 100%
#: conf/super_groups.py:5
msgid "Reputation, Badges, Votes & Flags"
-msgstr ""
+msgstr "Reputação, Insígnias, Votos e Sinalizadores"
+# 100%
#: conf/super_groups.py:6
msgid "Static Content, URLS & UI"
-msgstr ""
+msgstr "Conteúdo estático, URLS e Interface do Usuário"
+# 100%
#: conf/super_groups.py:7
msgid "Data rules & Formatting"
-msgstr ""
+msgstr "Regras de dados e Formatação"
+# 100%
#: conf/super_groups.py:8
msgid "External Services"
-msgstr ""
+msgstr "Serviços externos"
+# 100%
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
-msgstr ""
+msgstr "Login, Usuários e Comunicação"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr "Configurar insígnias/"
+msgstr "Configurações do usuário"
-#: conf/user_settings.py:21
+# 100%
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
-msgstr ""
+msgstr "Permitir edição do nome de tela do usuário"
-#: conf/user_settings.py:30
+# 100%
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Permitir somente uma conta por endereço de e-mail"
+
+# 100%
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr ""
+msgstr "Permitir a recuperação de conta por e-mail"
-#: conf/user_settings.py:39
+# 100%
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
-msgstr ""
+msgstr "Permitir adicionar e remover métodos de login"
-#: conf/user_settings.py:49
+# 100%
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
+msgstr "Tamanho mínimo permitido para o nome de tela"
+
+# 100%
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Ãcone padrão tipo Gravatar"
+
+# 100%
+#: conf/user_settings.py:70
+#, fuzzy
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
msgstr ""
+"Para alterar o logotipo, selecione o novo arquivo, então submeta este "
+"formulário inteiro."
-#: conf/user_settings.py:59
-msgid "Default Gravatar icon type"
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+# 100%
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr "Ãcone padrão tipo Gravatar"
+
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
+"Esta opção permite definir o tipo padrão dos avatares para endereços de e-"
+"mail sem associação com imagens gravatar. Para mais informações , visite<a "
+"href=\"http://en.gravatar.com/site/implement/images/\">esta página</a>."
-#: conf/user_settings.py:71
+# 100%
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr ""
+msgstr "Nome para o usuário anônimo"
+# 100%
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
-msgstr ""
+msgstr "Limites de voto e de sinalizador"
+# 100%
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
-msgstr ""
+msgstr "Número de votos que um usuário pode lançar por dia"
+# 100%
#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
-msgstr ""
+msgstr "Número máximo de sinalizadores por usuário por dia"
+# 100%
#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr ""
+msgstr "Limite para aviso sobre votos diários restantes"
+# 100%
#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
-msgstr ""
+msgstr "Número de dias para permitir o cancelamento de votos"
+# 100%
#: conf/vote_rules.py:60
msgid "Number of days required before answering own question"
-msgstr ""
+msgstr "Número de dias necessários antes de responder a própria pergunta"
+# 100%
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
-msgstr ""
+msgstr "Número de sinalizadores necessários para automaticamente ocultar posts"
+# 100%
#: conf/vote_rules.py:78
msgid "Number of flags required to automatically delete posts"
-msgstr ""
+msgstr "Número de sinalizadores necessários para automaticamente excluir posts"
#: conf/vote_rules.py:87
msgid ""
"Minimum days to accept an answer, if it has not been accepted by the "
"question poster"
msgstr ""
+"Número mínimo de dias para aceitar uma resposta, se já não tiver sido aceita "
+"por quem perguntou."
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "Widgets incorporáveis"
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "Número de perguntas a mostrar"
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+"Para incorporar o widget, adicione o seguinte código no seu site (e preencha "
+"a base do url correta, tags preferidas, largura e altura):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Seu navegador não tem suporte a frames."
+"</p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "CSS para o widget de perguntas"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "Cabeçalho para o widget de perguntas"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "Rodapé para o widget de perguntas"
+
+# 100%
#: const/__init__.py:10
msgid "duplicate question"
-msgstr ""
+msgstr "pergunta duplicada"
+# 100%
#: const/__init__.py:11
msgid "question is off-topic or not relevant"
-msgstr ""
+msgstr "a pergunta é fora de contexto ou não relevante"
+# 100%
#: const/__init__.py:12
msgid "too subjective and argumentative"
-msgstr ""
+msgstr "muito subjetivo e argumentativo"
+# 100%
#: const/__init__.py:13
msgid "not a real question"
-msgstr ""
+msgstr "não é uma questão verdadeira"
+# 100%
#: const/__init__.py:14
msgid "the question is answered, right answer was accepted"
-msgstr ""
+msgstr "a questão foi respondida, a resposta certa foi aceita"
+# 100%
#: const/__init__.py:15
msgid "question is not relevant or outdated"
-msgstr ""
+msgstr "questão não é relevante ou desatualizada"
+# 100%
#: const/__init__.py:16
msgid "question contains offensive or malicious remarks"
-msgstr ""
+msgstr "questões contém comentários ofensivos ou maliciosos"
+# 100%
#: const/__init__.py:17
msgid "spam or advertising"
-msgstr ""
+msgstr "spam ou publicidade"
+# 100%
#: const/__init__.py:18
msgid "too localized"
-msgstr ""
+msgstr "também localizada"
-#: const/__init__.py:41
+# 100%
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
-msgstr ""
+msgstr "mais recente"
-#: const/__init__.py:42
+# 100%
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
-msgstr ""
+msgstr "mais antiga"
-#: const/__init__.py:43
+# 100%
+#: const/__init__.py:45
msgid "active"
-msgstr ""
+msgstr "ativo"
-#: const/__init__.py:44
+# 100%
+#: const/__init__.py:46
msgid "inactive"
-msgstr ""
+msgstr "inativo"
-#: const/__init__.py:45
+# 100%
+#: const/__init__.py:47
msgid "hottest"
-msgstr ""
+msgstr "mais quente"
-#: const/__init__.py:46
+# 100%
+#: const/__init__.py:48
msgid "coldest"
-msgstr ""
+msgstr "mais frio"
-#: const/__init__.py:47
+# 100%
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
-msgstr ""
+msgstr "mais votado"
-#: const/__init__.py:48
+# 100%
+#: const/__init__.py:50
msgid "least voted"
-msgstr ""
+msgstr "menos votado"
-#: const/__init__.py:49
+# 100%
+#: const/__init__.py:51
msgid "relevance"
-msgstr ""
+msgstr "relevância"
-#: const/__init__.py:57
+# 100%
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
-msgstr ""
+msgstr "todos"
-#: const/__init__.py:58
+# 100%
+#: const/__init__.py:64
msgid "unanswered"
-msgstr ""
+msgstr "sem resposta"
-#: const/__init__.py:59
+# 100%
+#: const/__init__.py:65
msgid "favorite"
-msgstr ""
+msgstr "favorito"
-#: const/__init__.py:64
+# 100%
+#: const/__init__.py:70
msgid "list"
-msgstr ""
+msgstr "lista"
-#: const/__init__.py:65
+# 100%
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "nuvem"
-#: const/__init__.py:78
+# 100%
+#: const/__init__.py:79
msgid "Question has no answers"
-msgstr ""
+msgstr "Pergunta não tem respostas"
-#: const/__init__.py:79
+# 100%
+#: const/__init__.py:80
msgid "Question has no accepted answers"
-msgstr ""
+msgstr "Pergunta não tem respostas aceita"
-#: const/__init__.py:122
+# 100%
+#: const/__init__.py:125
msgid "asked a question"
-msgstr ""
+msgstr "perguntou"
-#: const/__init__.py:123
+# 100%
+#: const/__init__.py:126
msgid "answered a question"
-msgstr ""
+msgstr "respondeu uma questão"
-#: const/__init__.py:124
+# 100%
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
-msgstr ""
+msgstr "pergunta comentada"
-#: const/__init__.py:125
+# 100%
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
-msgstr ""
+msgstr "resposta comentada"
-#: const/__init__.py:126
+# 100%
+#: const/__init__.py:129
msgid "edited question"
-msgstr ""
+msgstr "pergunta editada"
-#: const/__init__.py:127
+# 100%
+#: const/__init__.py:130
msgid "edited answer"
-msgstr ""
+msgstr "resposta editada"
-#: const/__init__.py:128
-msgid "received award"
-msgstr ""
+# 100%
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
+msgstr "prêmio recebido"
-#: const/__init__.py:129
+# 100%
+#: const/__init__.py:132
msgid "marked best answer"
-msgstr ""
+msgstr "marcado a melhor resposta"
-#: const/__init__.py:130
+# 100%
+#: const/__init__.py:133
msgid "upvoted"
-msgstr ""
+msgstr "votado"
-#: const/__init__.py:131
+# 100%
+#: const/__init__.py:134
msgid "downvoted"
-msgstr ""
+msgstr "não votado"
-#: const/__init__.py:132
+# 100%
+#: const/__init__.py:135
msgid "canceled vote"
-msgstr ""
+msgstr "voto cancelado"
-#: const/__init__.py:133
+# 100%
+#: const/__init__.py:136
msgid "deleted question"
-msgstr ""
+msgstr "pergunta excluída"
-#: const/__init__.py:134
+# 100%
+#: const/__init__.py:137
msgid "deleted answer"
-msgstr ""
+msgstr "resposta excluída"
-#: const/__init__.py:135
+# 100%
+#: const/__init__.py:138
msgid "marked offensive"
-msgstr ""
+msgstr "ofenciva marcada"
-#: const/__init__.py:136
+# 100%
+#: const/__init__.py:139
msgid "updated tags"
-msgstr ""
+msgstr "etiquetas atualizadas"
-#: const/__init__.py:137
+# 100%
+#: const/__init__.py:140
msgid "selected favorite"
-msgstr ""
+msgstr "favorito selecionado"
-#: const/__init__.py:138
+# 100%
+#: const/__init__.py:141
msgid "completed user profile"
-msgstr ""
+msgstr "perfil de usuário completado"
-#: const/__init__.py:139
+# 100%
+#: const/__init__.py:142
msgid "email update sent to user"
-msgstr ""
+msgstr "atualizar e-mail enviado para o usuário"
-#: const/__init__.py:142
+# 100%
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr ""
+msgstr "lembrete sobre perguntas sem resposta enviado"
-#: const/__init__.py:146
+# 100%
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr ""
+msgstr "lembrete sobre aceitar a melhor resposta enviada"
-#: const/__init__.py:148
+# 100%
+#: const/__init__.py:151
msgid "mentioned in the post"
-msgstr ""
-
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr ""
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr ""
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr ""
+msgstr "mencionado no post"
+# 100%
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr ""
+#, fuzzy
+msgid "answered question"
+msgstr "respondeu uma questão"
+
+# 100%
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "resposta editada"
-#: const/__init__.py:206
+# 100%
+#: const/__init__.py:209
msgid "[closed]"
-msgstr ""
+msgstr "[fechado]"
-#: const/__init__.py:207
+# 100%
+#: const/__init__.py:210
msgid "[deleted]"
-msgstr ""
+msgstr "[excluído]"
-#: const/__init__.py:208 views/readers.py:589
+# 100%
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
-msgstr ""
+msgstr "versão inicial"
-#: const/__init__.py:209
+# 100%
+#: const/__init__.py:212
msgid "retagged"
-msgstr ""
+msgstr "arrumei"
-#: const/__init__.py:217
+# 100%
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "fora"
-#: const/__init__.py:218
+# 100%
+#: const/__init__.py:221
msgid "exclude ignored"
-msgstr ""
+msgstr "exclusáo ignorada"
-#: const/__init__.py:219
+# 100%
+#: const/__init__.py:222
msgid "only selected"
-msgstr ""
+msgstr "selecionado apenas"
-#: const/__init__.py:223
+# 100%
+#: const/__init__.py:226
msgid "instantly"
-msgstr ""
+msgstr "imediatamente"
-#: const/__init__.py:224
+# 100%
+#: const/__init__.py:227
msgid "daily"
-msgstr ""
+msgstr "diário"
-#: const/__init__.py:225
+# 100%
+#: const/__init__.py:228
msgid "weekly"
-msgstr ""
+msgstr "semanal"
-#: const/__init__.py:226
+# 100%
+#: const/__init__.py:229
msgid "no email"
-msgstr ""
+msgstr "nenhum e-mail"
-#: const/__init__.py:233
+# 100%
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identificador"
-#: const/__init__.py:234
+# 100%
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr ""
+msgstr "mistério do homem"
-#: const/__init__.py:235
+# 100%
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "id mostro"
-#: const/__init__.py:236
+# 100%
+#: const/__init__.py:239
msgid "wavatar"
-msgstr ""
+msgstr "wavatar"
-#: const/__init__.py:237
+# 100%
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "de volta"
-#: const/__init__.py:284
+# 100%
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
-msgstr ""
+msgstr "ouro"
-#: const/__init__.py:285
+# 100%
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
-msgstr ""
+msgstr "prata"
-#: const/__init__.py:286
+# 100%
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
-msgstr ""
+msgstr "bronze"
-#: const/__init__.py:298
+# 100%
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "nenhum"
-#: const/__init__.py:299
+# 100%
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr ""
+msgstr "Gravatar"
-#: const/__init__.py:300
+# 100%
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "Avatar enviado"
-#: const/message_keys.py:15
+# 100%
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr ""
+msgstr "perguntas mais relevantes"
-#: const/message_keys.py:16
+# 100%
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr ""
+msgstr "clique para ver perguntas mais relevantes"
-#: const/message_keys.py:17
+# 100%
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr ""
+msgstr "por relevância"
-#: const/message_keys.py:18
+# 100%
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
-msgstr ""
+msgstr "clique para ver as perguntas antigas"
-#: const/message_keys.py:19
+# 100%
+#: const/message_keys.py:25
msgid "by date"
-msgstr ""
+msgstr "por data"
-#: const/message_keys.py:20
+# 100%
+#: const/message_keys.py:26
msgid "click to see the newest questions"
-msgstr ""
+msgstr "clique para ver as perguntas mais recentes"
-#: const/message_keys.py:21
+# 100%
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
-msgstr ""
+msgstr "clique para ver as perguntas menos atualizadas recentemente"
-#: const/message_keys.py:22
+# 100%
+#: const/message_keys.py:28
msgid "by activity"
-msgstr ""
+msgstr "por atividade"
-#: const/message_keys.py:23
+# 100%
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
-msgstr ""
+msgstr "clique para ver as perguntas mais atualizadas recentemente"
-#: const/message_keys.py:24
+# 100%
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr ""
+msgstr "clique para ver as perguntas menos respondidas"
-#: const/message_keys.py:25
+# 100%
+#: const/message_keys.py:31
msgid "by answers"
-msgstr ""
+msgstr "por respostas"
-#: const/message_keys.py:26
+# 100%
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr ""
+msgstr "clique para ver as perguntas mais respondidas"
-#: const/message_keys.py:27
+# 100%
+#: const/message_keys.py:33
msgid "click to see least voted questions"
-msgstr ""
+msgstr "clique para ver as perguntas menos votadas"
-#: const/message_keys.py:28
+# 100%
+#: const/message_keys.py:34
msgid "by votes"
-msgstr ""
+msgstr "por votos"
-#: const/message_keys.py:29
+# 100%
+#: const/message_keys.py:35
msgid "click to see most voted questions"
+msgstr "clique para ver as perguntas mais votadas"
+
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
msgstr ""
-#: deps/django_authopenid/backends.py:88
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+# 100%
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
-msgstr ""
+msgstr "Os nomes não são suportados"
+# 100%
#: deps/django_authopenid/forms.py:233
#, python-format
msgid "Please enter your %(username_token)s"
-msgstr ""
+msgstr "Por favor entre seu %(username_token)s"
+# 100%
#: deps/django_authopenid/forms.py:259
msgid "Please, enter your user name"
-msgstr ""
+msgstr "Por favor, entre seu nome de usuário"
+# 100%
#: deps/django_authopenid/forms.py:263
msgid "Please, enter your password"
-msgstr ""
+msgstr "Por favor, entre com sua senha"
+# 100%
#: deps/django_authopenid/forms.py:270 deps/django_authopenid/forms.py:274
msgid "Please, enter your new password"
-msgstr ""
+msgstr "Por favor, entre com sua nova senha"
+# 100%
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Senhas não encontradas"
+# 100%
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr ""
+msgstr "Por favor, escolha sua senha > %(len)s caracteres"
+# 100%
#: deps/django_authopenid/forms.py:335
msgid "Current password"
-msgstr ""
+msgstr "senha atual"
#: deps/django_authopenid/forms.py:346
msgid ""
@@ -2296,439 +3232,522 @@ msgid ""
"password."
msgstr ""
+# 100%
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Desculpe, não temos este endereço de e-mail em nosso banco de dados"
+# 100%
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
-msgstr ""
+msgstr "Seu nome de usuário(<i>required</i>)"
+# 100%
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr ""
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "desculpe, não há usuário com este nome"
+# 100%
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
-msgstr ""
+msgstr "entrar/"
+# 100%
#: deps/django_authopenid/urls.py:10
msgid "signout/"
-msgstr ""
+msgstr "sair/"
+# 100%
#: deps/django_authopenid/urls.py:12
msgid "complete/"
-msgstr ""
+msgstr "completo/"
+# 100%
#: deps/django_authopenid/urls.py:15
msgid "complete-oauth/"
-msgstr ""
+msgstr "complete-oauth/"
+# 100%
#: deps/django_authopenid/urls.py:19
msgid "register/"
-msgstr ""
+msgstr "registrar/"
+# 100%
#: deps/django_authopenid/urls.py:21
msgid "signup/"
-msgstr ""
+msgstr "inscrição"
#: deps/django_authopenid/urls.py:25
msgid "logout/"
msgstr "sair /"
+# 100%
#: deps/django_authopenid/urls.py:30
msgid "recover/"
-msgstr ""
+msgstr "recuperar/"
+# 100%
#: deps/django_authopenid/util.py:378
#, python-format
msgid "%(site)s user name and password"
-msgstr ""
+msgstr "%(site)s nome de usuário e senha"
+# 100%
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Criar uma conta protegida por senha"
+# 100%
#: deps/django_authopenid/util.py:385
msgid "Change your password"
-msgstr ""
+msgstr "Alterar sua senha"
+# 100%
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Faça login no Yahoo"
+# 100%
#: deps/django_authopenid/util.py:480
msgid "AOL screen name"
-msgstr ""
+msgstr "nome de tela AOL"
+# 100%
#: deps/django_authopenid/util.py:488
msgid "OpenID url"
-msgstr ""
+msgstr "AbrirID url"
+# 100%
#: deps/django_authopenid/util.py:517
msgid "Flickr user name"
-msgstr ""
+msgstr "nome de usuário Flickr"
+# 100%
#: deps/django_authopenid/util.py:525
msgid "Technorati user name"
-msgstr ""
+msgstr "Nome de usuário Technorati"
+# 100%
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "nome do blog WordPress"
+# 100%
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "nome do blog Blogger"
+# 100%
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "nome do blog LiveJournal"
+# 100%
#: deps/django_authopenid/util.py:557
msgid "ClaimID user name"
-msgstr ""
+msgstr "Nome de usuário ClaimD"
+# 100%
#: deps/django_authopenid/util.py:565
msgid "Vidoop user name"
-msgstr ""
+msgstr "Nome de usuário Vidoop"
+# 100%
#: deps/django_authopenid/util.py:573
msgid "Verisign user name"
-msgstr ""
+msgstr "Nome de usuário Verisign"
+# 100%
#: deps/django_authopenid/util.py:608
#, python-format
msgid "Change your %(provider)s password"
-msgstr ""
+msgstr "Altere sua %(provider)s senha"
+# 100%
#: deps/django_authopenid/util.py:612
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
msgstr ""
+"Clique para ver se seu %(provider)s login ainda funciona para %(site_name)s"
+# 100%
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Criar senha para %(provider)s"
+# 100%
#: deps/django_authopenid/util.py:625
#, python-format
msgid "Connect your %(provider)s account to %(site_name)s"
-msgstr ""
+msgstr "Conectar sua %(provider)s conta para %(site_name)s"
+# 100%
#: deps/django_authopenid/util.py:634
#, python-format
msgid "Signin with %(provider)s user name and password"
-msgstr ""
+msgstr "Login com %(provider)s nome de usuário e senha"
+# 100%
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Entre com sua %(provider)s conta"
-#: deps/django_authopenid/views.py:158
+# 100%
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
-msgstr ""
+msgstr "AbriID %(openid_url)s é inválido"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+# 100%
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
-msgstr ""
+msgstr "Sua nova senha foi salva"
-#: deps/django_authopenid/views.py:475
+# 100%
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "a combinação de senha e login não estão corretos"
-#: deps/django_authopenid/views.py:579
+# 100%
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Por favor, clique em qualquer ícone abaixo para entrar no"
-#: deps/django_authopenid/views.py:581
+# 100%
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
-msgstr ""
+msgstr "E-mail de recuperação de conta enviado"
-#: deps/django_authopenid/views.py:584
+# 100%
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Por favor, adicione um ou mais métodos de login"
-#: deps/django_authopenid/views.py:586
+# 100%
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
+"Se você quiser, por favor adicionar, remover ou revalidar seus métodos de "
+"login"
-#: deps/django_authopenid/views.py:588
+# 100%
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
-msgstr ""
+msgstr "Por favor, espere um segundo! Sua conta está recuperada, mas..."
-#: deps/django_authopenid/views.py:590
+# 100%
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
-msgstr ""
+msgstr "Desculpe, esta chave de recuperação de conta expirou ou é inválida"
-#: deps/django_authopenid/views.py:663
+# 100%
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "Método de login %(provider_name)s não existe"
-#: deps/django_authopenid/views.py:669
+# 100%
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
-msgstr ""
+msgstr "Oops, desculpe - houve algum erro - por favor tente novamente"
-#: deps/django_authopenid/views.py:760
+# 100%
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "Seu %(provider)s login funciona bem"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+# 100%
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
-msgstr ""
+msgstr "Seu e-mail precisa ser validado, veja %(details_url)s"
-#: deps/django_authopenid/views.py:1098
+# 100%
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
-msgstr ""
+msgstr "Recuperar sua %(site)s conta"
-#: deps/django_authopenid/views.py:1168
+# 100%
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "Por favor verifique seu e-mail e visite o link em anexo"
+# 100%
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
msgid "Site"
-msgstr ""
+msgstr "site"
-#: deps/livesettings/values.py:68
+# 100%
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "Principal"
-#: deps/livesettings/values.py:127
+# 100%
+#: deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr ""
+msgstr "Configurações de base"
-#: deps/livesettings/values.py:234
+# 100%
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "Valor padrão:\"\""
-#: deps/livesettings/values.py:241
+# 100%
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "Valor padrão:"
-#: deps/livesettings/values.py:244
+# 100%
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "Valor padrão: %s"
-#: deps/livesettings/values.py:622
+# 100%
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
-msgstr ""
+msgstr "Permitidos tipos de arquivo imagem são %(types)s "
+
+# 80%
+# 100%
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Sites"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Documentação"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Alterar senha"
+
+# 85%
+# 100%
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Log out"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Home"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "perguntar/"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Corrija o erro abaixo"
+msgstr[1] ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr "Configurações incluídas em %(name)s."
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Sem permissão para editar valores."
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Editar configurações do site"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Livesettings foram desativados neste site."
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "Todas as configurações deve ser editadas no arquivo settings.py"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Grupo de configurações: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Desmembrar todos"
+
+# 100%
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Parabéns, você é agora um Administrador"
-#: management/commands/send_accept_answer_reminders.py:57
+# 100%
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
-msgstr ""
+msgstr "Aceitar a melhor resposta para %(question_count)d das suas perguntas"
-#: management/commands/send_accept_answer_reminders.py:62
+# 100%
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr ""
+msgstr "Por favor, aceite a melhor resposta para esta pergunta:"
-#: management/commands/send_accept_answer_reminders.py:64
+# 100%
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr ""
+msgstr "Por favor, aceite a melhor resposta para estas perguntas:"
-#: management/commands/send_email_alerts.py:411
+# 100%
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d pergunta atualizada sobre %(topics)s"
+msgstr[1] "%(question_count)d perguntas atualizadas sobre %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:438
+# 100%
+#: management/commands/send_email_alerts.py:449
msgid "new question"
-msgstr ""
+msgstr "nova pergunta"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-#: management/commands/send_unanswered_question_reminders.py:56
+# 100%
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(question_count)d não respondida pergunta sobre %(topics)s"
+msgstr[1] "%(question_count)d não respondidas perguntas sobre %(topics)s"
-#: middleware/forum_mode.py:31
-#, fuzzy, python-format
+#: middleware/forum_mode.py:53
+#, python-format
msgid "Please log in to use %s"
-msgstr "últimas perguntas"
+msgstr "Faça login para utilizar %s"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
+"Você não pode aceitar ou recusar melhores respostas por que sua conta está "
+"bloqueada"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
+"Você não pode aceitar ou recusar melhores respostas por que sua conta está "
+"suspensa"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
+">%(points)s pontos são necessários para aceitar ou recusar sua própria "
+"resposta a sua pergunta"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
-msgstr ""
+msgstr "Você poderá aceitar esta resposta somente após %(will_be_able_at)s"
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
+"Somente moderadores ou o autor original da pergunta - %(username)s - pode "
+"aceitar ou recusar a melhor resposta"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
-msgstr ""
+# 100%
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
+msgstr "não é possível votar em posts próprios"
-#: models/__init__.py:392
+# 100%
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
-msgstr ""
+msgstr "Sua conta parece estar bloqueada"
-#: models/__init__.py:397
+# 100%
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
-msgstr ""
+msgstr "Sua conta parece estar suspensa"
-#: models/__init__.py:407
+# 100%
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
-msgstr ""
+msgstr ">%(points)s pontos requeridos para voto a favor"
-#: models/__init__.py:413
+# 100%
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
-msgstr ""
+msgstr ">%(points)s pontos requeridos para voto contrário"
-#: models/__init__.py:428
+# 100%
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
-msgstr ""
+msgstr "Usuários bloqueados não podem fazer upload de arquivos"
-#: models/__init__.py:429
+# 100%
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
-msgstr ""
+msgstr "Usuários suspensos não podem fazer upload de arquivos"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr ""
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr ""
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2737,58 +3756,80 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
+"Cometários (com exceção do último) podem ser editados somente antes de "
+"%(minutes)s minuto da postagem"
msgstr[1] ""
+"Cometários (com exceção do último) podem ser editados somente antes de "
+"%(minutes)s minutos da postagem"
-#: models/__init__.py:490
+# 100%
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
-msgstr ""
+msgstr "Somente o dono da mensagem ou moderadores podem editar comentários"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
+"Por estar com a conta suspensa, você só poderá comentar suas próprias "
+"postagens"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
+"Para comentar qualquer postagem, é necessário um mínimo de %(min_rep)s "
+"pontos de reputação. Você ainda pode comentar suas próprias postagens e "
+"respostas a suas perguntas"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
+"Este post foi excluído e só pode ser visto pelo proprietário, administrador "
+"do site e moderadores."
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
+"Somente moderadores, administradores do site e o proprietário do post podem "
+"editar posts excluídos"
-#: models/__init__.py:567
+# 100%
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
+"Por estar com a conta bloqueada, você só poderá editar suas próprias "
+"postagens"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
+"Por estar com a conta suspensa, você só poderá editar suas próprias postagens"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
+"Para editar postagens do wiki, é necessário um mínimo de %(min_rep)s pontos "
+"de reputação."
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"Para editar postagens de outras pessoas, é necessário um mínimo de "
+"%(min_rep)s pontos de reputação."
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2798,394 +3839,495 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:661
+# 100%
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
-msgstr ""
+msgstr "Desculpe, já que sua conta está bloqueada, você não pode excluir posts"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+# 100%
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
+"Desculpe, já que sua conta está bloqueado, você não pode fechar perguntas"
-#: models/__init__.py:693
+# 100%
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
+"Desculpe, já que sua conta está suspensa, você não pode fechar perguntas"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
-msgstr ""
+# 100%
+#: models/__init__.py:783
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "Desculpe, já que sua conta está bloqueada, você não pode excluir posts"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
msgstr ""
+"Para editar postagens do wiki, é necessário um mínimo de %(min_rep)s pontos "
+"de reputação."
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:799
+# 100%
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Desculpe, já que sua conta está bloqueada, você não pode excluir posts"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Para editar postagens do wiki, é necessário um mínimo de %(min_rep)s pontos "
+"de reputação."
+msgstr[1] ""
+"Para editar postagens do wiki, é necessário um mínimo de %(min_rep)s pontos "
+"de reputação."
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr ""
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+# 100%
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
+"Desculpe, já que sua conta está bloqueada, você não pode reetiquetar "
+"perguntas"
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+# 100%
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
+"Desculpe, já que sua conta está bloqueada, você não pode excluir comentário"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+# 100%
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
+"Desculpe, para excluir comentários, reputação de %(min_rep)s é requerido"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+# 100%
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
-msgstr ""
+msgstr "em %(date)s"
-#: models/__init__.py:1341
+# 100%
+#: models/__init__.py:1471
msgid "in two days"
-msgstr ""
+msgstr "em dois dias"
-#: models/__init__.py:1343
+# 100%
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "amanhã"
-#: models/__init__.py:1345
+# 100%
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "em %(hr)d hora"
+msgstr[1] "em %(hr)d horas"
-#: models/__init__.py:1347
+# 100%
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "em %(min)d minuto"
+msgstr[1] "em %(min)d minutos"
-#: models/__init__.py:1348
+# 100%
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(days)d dia"
+msgstr[1] "%(days)d dias"
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+# 100%
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr ""
+msgstr "Anônimo"
-#: models/__init__.py:1612 views/users.py:371
+# 100%
+#: models/__init__.py:1749
msgid "Site Adminstrator"
-msgstr ""
+msgstr "Administrador do Site"
-#: models/__init__.py:1614 views/users.py:373
+# 100%
+#: models/__init__.py:1751
msgid "Forum Moderator"
-msgstr ""
+msgstr "Moderador do Forum"
-#: models/__init__.py:1616 views/users.py:375
+# 100%
+#: models/__init__.py:1753
msgid "Suspended User"
-msgstr ""
+msgstr "Usuário suspenso"
-#: models/__init__.py:1618 views/users.py:377
+# 100%
+#: models/__init__.py:1755
msgid "Blocked User"
-msgstr ""
+msgstr "Usuário bloqueado"
-#: models/__init__.py:1620 views/users.py:379
+# 100%
+#: models/__init__.py:1757
msgid "Registered User"
-msgstr ""
+msgstr "Usuário registrado"
-#: models/__init__.py:1622
+# 100%
+#: models/__init__.py:1759
msgid "Watched User"
-msgstr ""
+msgstr "Usuário assistido"
-#: models/__init__.py:1624
+# 100%
+#: models/__init__.py:1761
msgid "Approved User"
-msgstr ""
+msgstr "Usuário aprovado"
-#: models/__init__.py:1733
+# 100%
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr ""
+msgstr "%(username)s Karma é %(reputation)s"
-#: models/__init__.py:1743
+# 100%
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "um crachá de ouro"
+msgstr[1] "%(count)d crachás de ouro"
-#: models/__init__.py:1750
+# 100%
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "um crachá de prata"
+msgstr[1] "%(count)d crachás de prata"
-#: models/__init__.py:1757
+# 100%
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "um crachál de bronze"
+msgstr[1] "%(count)d crachás de bronze"
-#: models/__init__.py:1768
+# 100%
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s e %(item2)s"
-#: models/__init__.py:1772
+# 100%
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
-
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
+msgstr "%(user)s tem %(badges)s"
-#: models/__init__.py:2200 models/__init__.py:2205
-#, python-format
-msgid "Question: \"%(title)s\""
-msgstr ""
+#: models/__init__.py:2389
+#, fuzzy, python-format
+msgid "\"%(title)s\""
+msgstr "título"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+# 100%
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
+msgstr "Sua etiqueta subscrita foi salvo, obrigado!"
+# 100%
#: models/badges.py:129
#, python-format
msgid "Deleted own post with %(votes)s or more upvotes"
-msgstr ""
+msgstr "Excluído o próprio post com %(votes)s ou mais upvotes"
+# 100%
#: models/badges.py:133
msgid "Disciplined"
-msgstr ""
+msgstr "Disciplinado"
+# 100%
#: models/badges.py:151
#, python-format
msgid "Deleted own post with %(votes)s or more downvotes"
-msgstr ""
+msgstr "Excluído o próprio post com %(votes)s ou mais downvotes"
+# 100%
#: models/badges.py:155
msgid "Peer Pressure"
-msgstr ""
+msgstr "Igualar a pressão"
+# 100%
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
msgstr ""
+"Recebido pelo menos %(votes)s upvote para uma resposta, pela primeira vez"
+# 100%
#: models/badges.py:178
msgid "Teacher"
-msgstr ""
+msgstr "Professor"
+# 100%
#: models/badges.py:218
msgid "Supporter"
-msgstr ""
+msgstr "Suporte"
+# 100%
#: models/badges.py:219
msgid "First upvote"
-msgstr ""
+msgstr "Primeiro upvote"
+# 100%
#: models/badges.py:227
msgid "Critic"
-msgstr ""
+msgstr "Crítico"
+# 100%
#: models/badges.py:228
msgid "First downvote"
-msgstr ""
+msgstr "Primeiro downvote"
+# 100%
#: models/badges.py:237
msgid "Civic Duty"
-msgstr ""
+msgstr "Dever cívico"
+# 100%
#: models/badges.py:238
#, python-format
msgid "Voted %(num)s times"
-msgstr ""
+msgstr "Votado %(num)s vezes"
+# 100%
#: models/badges.py:252
#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr ""
+msgstr "Respondeu a própria pergunta com pelo menos %(num)s de votos"
+# 100%
#: models/badges.py:256
msgid "Self-Learner"
-msgstr ""
+msgstr "Auto-Aprendiz"
+# 100%
#: models/badges.py:304
msgid "Nice Answer"
-msgstr ""
+msgstr "Resposta agradável"
+# 100%
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
#, python-format
msgid "Answer voted up %(num)s times"
-msgstr ""
+msgstr "Resposta votada até %(num)s vezes"
+# 100%
#: models/badges.py:316
msgid "Good Answer"
-msgstr ""
+msgstr "Resposta boa"
+# 100%
#: models/badges.py:328
msgid "Great Answer"
-msgstr ""
+msgstr "Resposta grande"
+# 100%
#: models/badges.py:340
msgid "Nice Question"
-msgstr ""
+msgstr "Pergunta agradável"
+# 100%
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
#, python-format
msgid "Question voted up %(num)s times"
-msgstr ""
+msgstr "Pergunta votada até %(num)s vezes"
+# 100%
#: models/badges.py:352
msgid "Good Question"
-msgstr ""
+msgstr "Pergunta boa"
+# 100%
#: models/badges.py:364
msgid "Great Question"
-msgstr ""
+msgstr "Pergunta grande"
+# 100%
#: models/badges.py:376
msgid "Student"
-msgstr ""
+msgstr "Estudante"
+# 100%
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
-msgstr ""
+msgstr "Fez a primeira pergunta com pelo menos até um voto"
+# 100%
#: models/badges.py:414
msgid "Popular Question"
-msgstr ""
+msgstr "Pergunta popular"
+# 100%
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
#, python-format
msgid "Asked a question with %(views)s views"
-msgstr ""
+msgstr "Fez uma pergunta com %(views)s visualizações"
+# 100%
#: models/badges.py:425
msgid "Notable Question"
-msgstr ""
+msgstr "Pergunta notável"
+# 100%
#: models/badges.py:436
msgid "Famous Question"
-msgstr ""
+msgstr "Pergunta famosa"
+# 100%
#: models/badges.py:450
msgid "Asked a question and accepted an answer"
-msgstr ""
+msgstr "Fez uma pergunta e aceitou uma resposta"
+# 100%
#: models/badges.py:453
msgid "Scholar"
-msgstr ""
+msgstr "Estudioso"
+# 100%
#: models/badges.py:495
msgid "Enlightened"
-msgstr ""
+msgstr "Esclarecido"
+# 100%
#: models/badges.py:499
#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Primeira resposta foi aceitada com %(num)s ou mais votos"
+# 100%
#: models/badges.py:507
msgid "Guru"
-msgstr ""
+msgstr "guru"
+# 100%
#: models/badges.py:510
#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Resposta aceita com %(num)s ou mais votos"
#: models/badges.py:518
#, python-format
@@ -3194,1124 +4336,3839 @@ msgid ""
"votes"
msgstr ""
+# 100%
#: models/badges.py:525
msgid "Necromancer"
-msgstr ""
+msgstr "necromante"
+# 100%
#: models/badges.py:548
msgid "Citizen Patrol"
-msgstr ""
+msgstr "Patrulha cidadão"
+# 100%
#: models/badges.py:551
msgid "First flagged post"
-msgstr ""
+msgstr "Primeiro post sinalizado"
+# 100%
#: models/badges.py:563
msgid "Cleanup"
-msgstr ""
+msgstr "limpeza"
+# 100%
#: models/badges.py:566
msgid "First rollback"
-msgstr ""
+msgstr "Primeiro rollback"
+# 100%
#: models/badges.py:577
msgid "Pundit"
-msgstr ""
+msgstr "Pândita"
+# 100%
#: models/badges.py:580
msgid "Left 10 comments with score of 10 or more"
-msgstr ""
+msgstr "Deixou 10 comentários com pontuação de 10 ou mais"
+# 100%
#: models/badges.py:612
msgid "Editor"
-msgstr ""
+msgstr "Editor"
+# 100%
#: models/badges.py:615
msgid "First edit"
-msgstr ""
+msgstr "Primeira edição"
+# 100%
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Editor associado"
+# 100%
#: models/badges.py:627
#, python-format
msgid "Edited %(num)s entries"
-msgstr ""
+msgstr "Editado %(num)s entradas"
+# 100%
#: models/badges.py:634
msgid "Organizer"
-msgstr ""
+msgstr "Organizador"
+# 100%
#: models/badges.py:637
msgid "First retag"
-msgstr ""
+msgstr "Primeira reetiqueta"
+# 100%
#: models/badges.py:644
msgid "Autobiographer"
-msgstr ""
+msgstr "Autobiografia"
+# 100%
#: models/badges.py:647
msgid "Completed all user profile fields"
-msgstr ""
+msgstr "Completado todos os campos do perfil de usuário"
+# 100%
#: models/badges.py:663
#, python-format
msgid "Question favorited by %(num)s users"
-msgstr ""
+msgstr "Pergunta favorita por %(num)s usuários"
+# 100%
#: models/badges.py:689
msgid "Stellar Question"
-msgstr ""
+msgstr "Pergunta estelar"
+# 100%
#: models/badges.py:698
msgid "Favorite Question"
-msgstr ""
+msgstr "Pergunta favorita"
+# 100%
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "Entusiasta"
+# 100%
#: models/badges.py:714
#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr ""
+msgstr "Site visitado todos os dias por %(num)s dias consecutivos"
+# 100%
#: models/badges.py:732
msgid "Commentator"
-msgstr ""
+msgstr "Comentador"
+# 100%
#: models/badges.py:736
#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr ""
+msgstr "Postado %(num_comments)s comentários"
+# 100%
#: models/badges.py:752
msgid "Taxonomist"
-msgstr ""
+msgstr "Taxonomista"
+# 100%
#: models/badges.py:756
#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr ""
+msgstr "Criou uma etiqueta por %(num)s perguntas"
-#: models/badges.py:776
+# 100%
+#: models/badges.py:774
msgid "Expert"
-msgstr ""
+msgstr "Especialista"
-#: models/badges.py:779
+# 100%
+#: models/badges.py:777
msgid "Very active in one tag"
-msgstr ""
+msgstr "Muito ativo em uma etiqueta"
-#: models/content.py:549
+# 100%
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
+msgstr "Desculpe, esta pergunta foi excluída e não está mais acessível"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+# 100%
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr ""
+msgstr "Desculpe, esta resposta foi removida e não está mais acessível"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+# 100%
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" e \"%s\""
-#: models/question.py:66
+# 100%
+#: models/question.py:57
msgid "\" and more"
-msgstr ""
+msgstr "\" e mais"
-#: models/question.py:806
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "How to validate email and why?"
+
+# 100%
+#: models/repute.py:143
#, python-format
-msgid "%(author)s modified the question"
-msgstr ""
+msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+msgstr "<em>Alterado pelo moderador. Motivo:</em> %(reason)s"
-#: models/question.py:810
+#: models/repute.py:154
#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
+msgid ""
+"%(points)s points were added for %(username)s's contribution to question "
+"%(question_title)s"
msgstr ""
-#: models/question.py:815
+#: models/repute.py:159
#, python-format
-msgid "%(people)s commented the question"
+msgid ""
+"%(points)s points were subtracted for %(username)s's contribution to "
+"question %(question_title)s"
msgstr ""
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
+# 100%
+#: models/tag.py:106
+msgid "interesting"
+msgstr "Interessante"
+
+# 100%
+#: models/tag.py:106
+msgid "ignored"
+msgstr "ignorada"
+
+# 100%
+#: models/user.py:266
+msgid "Entire forum"
+msgstr "Fórum inteiro"
+
+# 100%
+#: models/user.py:267
+msgid "Questions that I asked"
+msgstr "Perguntas que eu fiz"
+
+# 100%
+#: models/user.py:268
+msgid "Questions that I answered"
+msgstr "Perguntas que eu respondi"
+
+# 100%
+#: models/user.py:269
+msgid "Individually selected questions"
+msgstr "Perguntas selecionadas individualmente"
+
+# 100%
+#: models/user.py:270
+msgid "Mentions and comment responses"
+msgstr "Menciona respostas e comentários"
+
+# 100%
+#: models/user.py:273
+msgid "Instantly"
+msgstr "Isistentemente"
+
+# 100%
+#: models/user.py:274
+msgid "Daily"
+msgstr "Diário"
+
+# 100%
+#: models/user.py:275
+msgid "Weekly"
+msgstr "Semanal"
+
+# 100%
+#: models/user.py:276
+msgid "No email"
+msgstr "nenhum e-mail"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
msgstr ""
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "por favor, escolha uma das opções acima"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
msgstr ""
-#: models/repute.py:142
-#, python-format
-msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Mudar status para"
+
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 78%
+# 100%
+#: skins/common/templates/authopenid/changeemail.html:10
+#, fuzzy
+msgid "Save your email address"
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"seu endereço de e-mail"
-#: models/repute.py:153
+#: skins/common/templates/authopenid/changeemail.html:15
#, python-format
msgid ""
-"%(points)s points were added for %(username)s's contribution to question "
-"%(question_title)s"
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
msgstr ""
-#: models/repute.py:158
+#: skins/common/templates/authopenid/changeemail.html:19
#, python-format
msgid ""
-"%(points)s points were subtracted for %(username)s's contribution to "
-"question %(question_title)s"
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
msgstr ""
-#: models/tag.py:151
-msgid "interesting"
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "A sua mensagem:"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
msgstr ""
-#: models/tag.py:151
-msgid "ignored"
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
msgstr ""
-#: models/user.py:264
-msgid "Entire forum"
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
msgstr ""
-#: models/user.py:265
-msgid "Questions that I asked"
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
msgstr ""
-#: models/user.py:266
-msgid "Questions that I answered"
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
msgstr ""
-#: models/user.py:267
-msgid "Individually selected questions"
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
msgstr ""
-#: models/user.py:268
-msgid "Mentions and comment responses"
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
msgstr ""
-#: models/user.py:271
-msgid "Instantly"
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
msgstr ""
-#: models/user.py:272
-msgid "Daily"
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
msgstr ""
-#: models/user.py:273
-msgid "Weekly"
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "moderador"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "moderador"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
msgstr ""
-#: models/user.py:274
-msgid "No email"
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+#, fuzzy
+msgid "please select one of the options above"
+msgstr "por favor, escolha uma das opções acima"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
msgstr ""
+# 100%
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
-msgstr ""
+msgstr "Obrigado por se registrar em nosso forum de Perguntas e Respostas"
+# 100%
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
-msgstr ""
+msgstr "Detalhes de sua conte é:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
+#, fuzzy
msgid "Username:"
-msgstr ""
+msgstr "Nome real"
+# 100%
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
-msgstr ""
+msgstr "Senha"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
msgid "Please sign in here:"
msgstr "últimas perguntas"
+# 100%
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
+"Atenciosamente,\n"
+"Administrador do Forum"
+# 100%
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
-msgstr ""
+msgstr "Saudações do forum Perguntas e Respostas"
+# 100%
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
-msgstr ""
+msgstr "Para fazer uso do Forum, por favor siga o link abaixo:"
+# 100%
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
+"Seguindo o link abaixo irá nos ajudar a verificar seu endereço de e-mail"
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
+#: skins/common/templates/authopenid/logout.html:3
+#, fuzzy
+msgid "Logout"
+msgstr "sair /"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+#, fuzzy
+msgid "User login"
+msgstr "Configurar insígnias/"
+
+#: skins/common/templates/authopenid/signin.html:14
#, python-format
msgid ""
"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "últimas perguntas"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+#, fuzzy
+msgid "Password"
+msgstr "Mudar status para"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Mudar status para"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+#, fuzzy
+msgid "provider"
+msgstr "aprovado"
+
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "delete"
+msgstr "Mudar status para"
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "últimas perguntas"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "por favor, escolha uma das opções acima"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
msgstr ""
-#: templatetags/extra_tags.py:43
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "Mudar status para"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Mudar status para"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "Mudar status para"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+#, fuzzy
+msgid "Upload"
+msgstr "upload/"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "Mudar status para"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
-msgid "%(username)s gravatar image"
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
msgstr ""
-#: utils/decorators.py:109
-msgid "Please login to post"
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "últimas perguntas"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
msgstr ""
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
msgstr ""
-#: utils/forms.py:32
-msgid "this field is required"
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 75%
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "undelete"
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Mudar status para"
+
+# 100%
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Ver sinalizadores de teor ofensivo"
-#: utils/forms.py:46
-msgid "choose a username"
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
msgstr ""
-#: utils/forms.py:52
-msgid "user name is required"
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
msgstr ""
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 92%
+# 100%
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+#, fuzzy
+msgid "flag offensive"
msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Sinalizador de ataque"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+#, fuzzy
+msgid "edit"
+msgstr "editar /"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
msgstr ""
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
msgstr ""
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
msgstr ""
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
+#: skins/common/templates/question/question_controls.html:6
+#, fuzzy
+msgid "reopen"
+msgstr "reabrir /"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+#, fuzzy
+msgid "close"
+msgstr "fechar /"
+
+#: skins/common/templates/question/question_controls.html:35
+#, fuzzy
+msgid "retag"
+msgstr "alterar tags/"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "Campo País é necessário"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
msgstr ""
-#: utils/forms.py:119
-msgid "email address is required"
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
msgstr ""
-#: utils/forms.py:120
-msgid "please enter a valid email address"
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
msgstr ""
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
msgstr ""
-#: utils/forms.py:149
-msgid "choose password"
+#: skins/common/templates/widgets/tag_selector.html:4
+#, fuzzy
+msgid "Interesting tags"
+msgstr "Configurar insígnias/"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
msgstr ""
-#: utils/forms.py:150
-msgid "password is required"
+#: skins/common/templates/widgets/tag_selector.html:21
+#, fuzzy
+msgid "Ignored tags"
+msgstr "Mudar status para"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
msgstr ""
-#: utils/forms.py:154
-msgid "please, retype your password"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
msgstr ""
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
msgstr ""
-#: utils/functions.py:74
-msgid "2 days ago"
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
msgstr ""
-#: utils/functions.py:76
-msgid "yesterday"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+#, fuzzy
+msgid "faq"
+msgstr "faq /"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+#, fuzzy
+msgid "see all questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/404.jinja.html:32
+#, fuzzy
+msgid "see all tags"
+msgstr "tags"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+#, fuzzy
+msgid "see latest questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/500.jinja.html:13
+#, fuzzy
+msgid "see tags"
+msgstr "tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+#, fuzzy
+msgid "Edit answer"
+msgstr "responder/"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+#, fuzzy
+msgid "back"
+msgstr "feedback/"
+
+#: skins/default/templates/answer_edit.html:14
+#, fuzzy
+msgid "revision"
+msgstr "revisões /"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+#, fuzzy
+msgid "select revision"
+msgstr "revisões /"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+#, fuzzy
+msgid "Save edit"
+msgstr "editar /"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
msgstr ""
-#: utils/functions.py:79
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] ""
-msgstr[1] ""
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+#, fuzzy
+msgid "Badge"
+msgstr "insígnias/"
-#: utils/functions.py:85
+#: skins/default/templates/badge.html:7
#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr "perguntas /"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
msgstr[0] ""
msgstr[1] ""
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+#, fuzzy
+msgid "Badges"
+msgstr "insígnias/"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
msgstr ""
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
msgstr ""
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
msgstr ""
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+#, fuzzy
+msgid "Close question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/close.html:6
+#, fuzzy
+msgid "Close the question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+#, fuzzy
+msgid "OK to close"
+msgstr "fechar /"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+#, fuzzy
+msgid "Frequently Asked Questions "
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
msgstr ""
-#: views/commands.py:65
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "karma"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
#, python-format
-msgid "You have %(votes_left)s votes left for today"
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+#, fuzzy
+msgid "upvote"
+msgstr "votar/"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+#, fuzzy
+msgid "downvote"
+msgstr "votar/"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:47
+#, fuzzy
+msgid "open and close own questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:56
+#, fuzzy
+msgid "edit community wiki questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "responder/"
+
+# 100%
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "Deixar comentários"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
msgstr ""
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
msgstr ""
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
msgstr ""
-#: views/commands.py:288
+#: skins/default/templates/faq_static.html:79
+#, fuzzy
+msgid "Still have questions?"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/faq_static.html:80
#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
msgstr ""
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
+#: skins/default/templates/feedback.html:3
+#, fuzzy
+msgid "Feedback"
+msgstr "feedback/"
+
+#: skins/default/templates/feedback.html:5
+#, fuzzy
+msgid "Give us your feedback!"
+msgstr "feedback/"
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+#, fuzzy
+msgid "(this field is required)"
+msgstr "Campo País é necessário"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
msgstr ""
-#: views/commands.py:400
+#: skins/default/templates/feedback.html:63
+#, fuzzy
+msgid "Send Feedback"
+msgstr "feedback/"
+
+# 100%
+#: skins/default/templates/feedback_email.txt:2
#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
+"\n"
+"Olá, este é um forum %(site_title)s de mensagem de retorno.\n"
-#: views/commands.py:409
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "mensagens/"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
+msgid "Thank you for using %(app_name)s, here is how it works."
msgstr ""
-#: views/commands.py:542
-msgid "Please sign in to vote"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
msgstr ""
-#: views/meta.py:84
-msgid "Q&A forum feedback"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
msgstr ""
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
msgstr ""
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
msgstr ""
-#: views/readers.py:151
+#: skins/default/templates/help.html:26
#, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] ""
-msgstr[1] ""
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
-#: views/readers.py:159
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] ""
-msgstr[1] ""
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
-#: views/readers.py:199
+#: skins/default/templates/instant_notification.html:3
#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-msgstr[1] ""
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
-#: views/readers.py:415
+#: skins/default/templates/instant_notification.html:8
+#, python-format
msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
msgstr ""
-#: views/users.py:211
-msgid "moderate this user"
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
-#: views/users.py:212
-msgid "moderate user"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
-#: views/users.py:386
-msgid "user profile"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
-#: views/users.py:387
-msgid "user profile overview"
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
-#: views/users.py:698
-msgid "recent user activity"
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
msgstr ""
-#: views/users.py:699
-msgid "profile - recent activity"
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
msgstr ""
-#: views/users.py:785
-msgid "comments and answers to others questions"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
msgstr ""
-#: views/users.py:786
-msgid "profile - responses"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
msgstr ""
-#: views/users.py:860
-msgid "user vote record"
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
msgstr ""
-#: views/users.py:861
-msgid "profile - votes"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
msgstr ""
-#: views/users.py:896
-msgid "user reputation in the community"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
msgstr ""
-#: views/users.py:924
-msgid "users favorite questions"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
msgstr ""
-#: views/users.py:925
-msgid "profile - favorite questions"
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr "perguntar anonimamente"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
msgstr ""
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
msgstr ""
-#: views/users.py:955
-msgid "email updates canceled"
+#: skins/default/templates/macros.html:88
+msgid "asked"
msgstr ""
-#: views/users.py:973
-msgid "email subscription settings"
+#: skins/default/templates/macros.html:90
+#, fuzzy
+msgid "answered"
+msgstr "responder/"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
msgstr ""
-#: views/users.py:974
-msgid "profile - email subscriptions"
+#: skins/default/templates/macros.html:122
+msgid "updated"
msgstr ""
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
msgstr ""
-#: views/writers.py:68
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr ""
+
+# 100%
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
-msgid "allowed file types are '%(file_types)s'"
+msgid "%(username)s gravatar image"
+msgstr "%(username)s imagem gravatar"
+
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "Perfil"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+#, fuzzy
+msgid "previous"
+msgstr "revisões /"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
msgstr ""
-#: views/writers.py:91
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
#, python-format
-msgid "maximum upload file size is %(file_size)sK"
+msgid "page %(num)s"
msgstr ""
-#: views/writers.py:99
-msgid "Error uploading file. Please contact the site administrator. Thank you."
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "mensagens/"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+#, fuzzy
+msgid "Questions"
+msgstr "perguntas /"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
msgstr ""
-#: views/writers.py:191
+# 100%
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "Deixar comentários"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
#, fuzzy
-msgid "Please log in to ask questions"
+msgid "Answer Your Own Question"
msgstr "últimas perguntas"
-#: views/writers.py:492
-msgid "Please log in to answer questions"
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "oldest"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+#, fuzzy
+msgid "Edit question"
+msgstr "perguntar/"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/question_retag.html:21
+#, fuzzy
+msgid "Retag"
+msgstr "alterar tags/"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
msgstr ""
-#: views/writers.py:598
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+#, fuzzy
+msgid "Reopen question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/reopen.html:6
+#, fuzzy
+msgid "Title"
+msgstr "título"
+
+#: skins/default/templates/reopen.html:11
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
msgstr ""
-#: views/writers.py:646
-msgid "Sorry, anonymous users cannot edit comments"
+#: skins/default/templates/reopen.html:16
+#, fuzzy
+msgid "Close reason:"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
msgstr ""
-#: views/writers.py:654
-#, python-format
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/reopen.html:26
+#, fuzzy
+msgid "Reopen this question"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/reply_by_email_error.html:1
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
msgstr ""
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+#, fuzzy
+msgid "Revision history"
+msgstr "revisões /"
+
+#: skins/default/templates/revisions.html:23
+#, fuzzy
+msgid "click to hide/show revision"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "revisões /"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "inscrever-por-tags/"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
msgstr ""
+#: skins/default/templates/subscribe_for_tags.html:15
#, fuzzy
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
-#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
-#~ "changed your email address - <strong>check your email and click the "
-#~ "included link</strong>.<br>The link contains a key generated specifically "
-#~ "for you. You can also <button style='display:inline' "
-#~ "type='submit'><strong>get a new key</strong></button> and check your "
-#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
-#~ "validation is required to make sure that <strong>only you can post "
-#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
-#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
-#~ "the most interesting questions. Also, when you sign up for the first time "
-#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
-#~ "strong></a> personal image.</p>"
+msgid "Subscribe"
+msgstr "inscrever-por-tags/"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+#: skins/default/templates/tags.html:20
#, fuzzy
-#~ msgid "Your Email"
-#~ msgstr "A sua mensagem:"
+msgid "by name"
+msgstr "Nome real"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "How to validate email and why?"
+msgid "by popularity"
+msgstr "most voted"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
#, fuzzy
-#~ msgid "This account already exists, please use another."
-#~ msgstr "este e-mail já foi registrado, por favor use outro"
+msgid "Users"
+msgstr "usuários/"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
#, fuzzy
-#~ msgid "Screen name label"
-#~ msgstr "Apelido"
+msgid "by username"
+msgstr "Nome real"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+# 100%
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "pergunta %(q_num)s"
+msgstr[1] "perguntas %(q_num)s"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
#, fuzzy
-#~ msgid "please select one of the options above"
-#~ msgstr "por favor, escolha uma das opções acima"
+msgid "Search tips:"
+msgstr "respostas /"
+#: skins/default/templates/main_page/headline.html:27
#, fuzzy
-#~ msgid "create account"
-#~ msgstr "conta/"
+msgid "reset author"
+msgstr "Configurar insígnias/"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+#: skins/default/templates/main_page/headline.html:30
#, fuzzy
-#~ msgid "Logout"
-#~ msgstr "sair /"
+msgid "reset tags"
+msgstr "Configurar insígnias/"
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 76%
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
#, fuzzy
-#~ msgid "User login"
-#~ msgstr "Configurar insígnias/"
+msgid "start over"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Configurar insígnias/"
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
#, fuzzy
-#~ msgid "provider"
-#~ msgstr "aprovado"
+msgid "Search tip:"
+msgstr "respostas /"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+#: skins/default/templates/main_page/nothing_found.html:4
#, fuzzy
-#~ msgid "reuse openid"
-#~ msgstr "reabrir /"
+msgid "There are no unanswered questions here"
+msgstr "últimas perguntas"
+#: skins/default/templates/main_page/nothing_found.html:7
#, fuzzy
-#~ msgid "Create Account"
-#~ msgstr "conta/"
+msgid "No questions here. "
+msgstr "perguntas /"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+#: skins/default/templates/main_page/nothing_found.html:16
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Mudar status para"
+msgid "resetting author"
+msgstr "Configurar insígnias/"
+#: skins/default/templates/main_page/nothing_found.html:19
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
+msgid "resetting tags"
+msgstr "Configurar insígnias/"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
#, fuzzy
-#~ msgid "edit"
-#~ msgstr "editar /"
+msgid "starting over"
+msgstr "Configurar insígnias/"
+#: skins/default/templates/main_page/nothing_found.html:30
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "últimas perguntas"
+msgid "Please always feel free to ask your question!"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+#: skins/default/templates/main_page/questions_loop.html:12
#, fuzzy
-#~ msgid "retag"
-#~ msgstr "alterar tags/"
+msgid "Please, post your question!"
+msgstr "últimas perguntas"
+#: skins/default/templates/main_page/tab_bar.html:10
#, fuzzy
-#~ msgid "reopen"
-#~ msgstr "reabrir /"
+msgid "subscribe to the questions feed"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 96%
+# 100%
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"cada tag deve ter menos de %(max_chars)d caractere"
+msgstr[1] ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"cada tag deve ter menos de %(max_chars)d caracteres"
+
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "por favor, use %(tag_count)d tags ou menos"
+msgstr[1] "por favor, use %(tag_count)d tags ou menos"
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:16
#, fuzzy
-#~ msgid "close"
-#~ msgstr "fechar /"
+msgid "Login/Signup to Answer"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/new_answer_form.html:24
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "Campo País é necessário"
+msgid "Your answer"
+msgstr "oldest"
+#: skins/default/templates/question/new_answer_form.html:26
#, fuzzy
-#~ msgid "faq"
-#~ msgstr "faq /"
+msgid "Be the first one to answer this question!"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
#, fuzzy
-#~ msgid "see all questions"
-#~ msgstr "últimas perguntas"
+msgid "email"
+msgstr "A sua mensagem:"
+#: skins/default/templates/question/sidebar.html:6
#, fuzzy
-#~ msgid "see latest questions"
-#~ msgstr "últimas perguntas"
+msgid "Question tools"
+msgstr "perguntas /"
+#: skins/default/templates/question/sidebar.html:9
#, fuzzy
-#~ msgid "see tags"
-#~ msgstr "tags"
+msgid "click to unfollow this question"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:10
#, fuzzy
-#~ msgid "Edit answer"
-#~ msgstr "responder/"
+msgid "Following"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:11
#, fuzzy
-#~ msgid "back"
-#~ msgstr "feedback/"
+msgid "Unfollow"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:15
#, fuzzy
-#~ msgid "revision"
-#~ msgstr "revisões /"
+msgid "click to follow this question"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:16
#, fuzzy
-#~ msgid "select revision"
-#~ msgstr "revisões /"
+msgid "Follow"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
#, fuzzy
-#~ msgid "Ask a question"
-#~ msgstr "perguntar/"
+msgid "subscribe to this question rss feed"
+msgstr "últimas perguntas"
+#: skins/default/templates/question/sidebar.html:38
#, fuzzy
-#~ msgid "Badge"
-#~ msgstr "insígnias/"
+msgid "subscribe to rss feed"
+msgstr "inscrever-por-tags/"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "perguntas /"
+msgid "Asked"
+msgstr "Perguntada(s) por mim"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+# 100%
+#: skins/default/templates/question/sidebar.html:54
#, fuzzy
-#~ msgid "Badges summary"
-#~ msgstr "atualizar resumo:"
+msgid "Last updated"
+msgstr "menos votado"
+#: skins/default/templates/question/sidebar.html:62
#, fuzzy
-#~ msgid "Badges"
-#~ msgstr "insígnias/"
+msgid "Related questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr ""
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "Perfil"
+
+#: skins/default/templates/user_profile/user_edit.html:4
#, fuzzy
-#~ msgid "Close question"
-#~ msgstr "últimas perguntas"
+msgid "Edit user profile"
+msgstr "Perfil"
+#: skins/default/templates/user_profile/user_edit.html:7
#, fuzzy
-#~ msgid "Close the question"
-#~ msgstr "últimas perguntas"
+msgid "edit profile"
+msgstr "Perfil"
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
#, fuzzy
-#~ msgid "Rep system summary"
-#~ msgstr "atualizar resumo:"
+msgid "change picture"
+msgstr "Mudar status para"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 93%
+# 100%
+#: skins/default/templates/user_profile/user_edit.html:32
#, fuzzy
-#~ msgid "upvote"
-#~ msgstr "votar/"
+msgid "Registered user"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"Usuário registrado"
+#: skins/default/templates/user_profile/user_edit.html:39
#, fuzzy
-#~ msgid "use tags"
-#~ msgstr "tags"
+msgid "Screen Name"
+msgstr "Apelido"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr ""
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
#, fuzzy
-#~ msgid "downvote"
-#~ msgstr "votar/"
+msgid "subscriptions"
+msgstr "perguntas /"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "últimas perguntas"
+msgid "Email subscription settings"
+msgstr "perguntas /"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "últimas perguntas"
+msgid "Stop Email"
+msgstr "A sua mensagem:"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "últimas perguntas"
+msgid "followed questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+#: skins/default/templates/user_profile/user_inbox.html:34
#, fuzzy
-#~ msgid "Still have questions?"
-#~ msgstr "últimas perguntas"
+msgid "Sections:"
+msgstr "perguntas /"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "por favor, use %(tag_count)d tags ou menos"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 75%
+# 100%
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
#, fuzzy
-#~ msgid "Feedback"
-#~ msgstr "feedback/"
+msgid "none"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"nenhum"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
#, fuzzy
-#~ msgid "(this field is required)"
-#~ msgstr "Campo País é necessário"
+msgid "remove flags"
+msgstr "tags"
+#: skins/default/templates/user_profile/user_inbox.html:68
#, fuzzy
-#~ msgid "Send Feedback"
-#~ msgstr "feedback/"
+msgid "delete post"
+msgstr "Mudar status para"
+#: skins/default/templates/user_profile/user_info.html:36
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "perguntar anonimamente"
+msgid "update profile"
+msgstr "Perfil"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:53
#, fuzzy
-#~ msgid "answered"
-#~ msgstr "responder/"
+msgid "real name"
+msgstr "Nome real"
+
+#: skins/default/templates/user_profile/user_info.html:58
+msgid "member since"
+msgstr ""
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "previous"
-#~ msgstr "revisões /"
+msgid "website"
+msgstr "Site"
+#: skins/default/templates/user_profile/user_info.html:75
#, fuzzy
-#~ msgid "Questions"
-#~ msgstr "perguntas /"
+msgid "location"
+msgstr "moderador"
+#: skins/default/templates/user_profile/user_info.html:82
#, fuzzy
-#~ msgid "Edit question"
-#~ msgstr "perguntar/"
+msgid "age"
+msgstr "insígnias/"
+#: skins/default/templates/user_profile/user_info.html:83
#, fuzzy
-#~ msgid "Change tags"
-#~ msgstr "Mudar status para"
+msgid "age unit"
+msgstr "Texto da mensagem"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:89
#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "alterar tags/"
+msgid "votes left"
+msgstr "votar/"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
#, fuzzy
-#~ msgid "Reopen question"
-#~ msgstr "últimas perguntas"
+msgid "moderation"
+msgstr "moderador"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
#, fuzzy
-#~ msgid "Title"
-#~ msgstr "título"
+msgid "User status changed"
+msgstr "Configurar insígnias/"
+#: skins/default/templates/user_profile/user_moderate.html:20
#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "últimas perguntas"
+msgid "Save"
+msgstr "editar /"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
#, fuzzy
-#~ msgid "Reopen this question"
-#~ msgstr "últimas perguntas"
+msgid "User reputation changed"
+msgstr "Configurar insígnias/"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "mensagens/"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
#, fuzzy
-#~ msgid "Revision history"
-#~ msgstr "revisões /"
+msgid "Message sent"
+msgstr "Texto da mensagem"
+#: skins/default/templates/user_profile/user_moderate.html:64
#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "revisões /"
+msgid "Send message"
+msgstr "mensagens/"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "Perfil"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, fuzzy, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Perfil"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "inscrever-por-tags/"
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "responder/"
+msgstr[1] "responder/"
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
#, fuzzy
-#~ msgid "by name"
-#~ msgstr "Nome real"
+msgid "Answer to:"
+msgstr "respostas /"
+#: skins/default/templates/user_profile/user_tabs.html:5
#, fuzzy
-#~ msgid "by popularity"
-#~ msgstr "most voted"
+msgid "User profile"
+msgstr "Perfil"
+
+# 100%
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "comentários e respostas a outras perguntas"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+# 100%
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "registro de votos do usuário"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
#, fuzzy
-#~ msgid "Users"
-#~ msgstr "usuários/"
+msgid "votes"
+msgstr "votar/"
+
+# 100%
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "configuração de assinatura de e-mail"
+
+# 100%
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "moderar este usuário"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:6
#, fuzzy
-#~ msgid "reputation"
-#~ msgstr "karma"
+msgid "give an answer interesting to this community"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "perguntas /"
+msgid "see frequently asked questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "Configurar insígnias/"
+msgid "login to post question info"
+msgstr "últimas perguntas"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "últimas perguntas"
+msgid "about"
+msgstr "about /"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
#, fuzzy
-#~ msgid "Please, post your question!"
-#~ msgstr "últimas perguntas"
+msgid "privacy policy"
+msgstr "privacidade /"
+#: skins/default/templates/widgets/footer.html:51
#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "por favor, use %(tag_count)d tags ou menos"
-#~ msgstr[1] "por favor, use %(tag_count)d tags ou menos"
+msgid "give feedback"
+msgstr "feedback/"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
#, fuzzy
-#~ msgid "oldest answers"
-#~ msgstr "oldest"
+msgid "users"
+msgstr "usuários/"
+#: skins/default/templates/widgets/meta_nav.html:15
#, fuzzy
-#~ msgid "newest answers"
-#~ msgstr "oldest"
+msgid "badges"
+msgstr "insígnias/"
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "popular answers"
-#~ msgstr "oldest"
+msgid "ask a question interesting to this community"
+msgstr "últimas perguntas"
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
#, fuzzy
-#~ msgid "Your answer"
-#~ msgstr "oldest"
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "responder/"
+msgstr[1] "responder/"
+#: skins/default/templates/widgets/question_summary.html:40
#, fuzzy
-#~ msgid "Answer the question"
-#~ msgstr "últimas perguntas"
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "votar/"
+msgstr[1] "votar/"
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "perguntas /"
+msgid "see unanswered questions"
+msgstr "últimas perguntas"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+#: skins/default/templates/widgets/scope_nav.html:11
#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "últimas perguntas"
+msgid "see your followed questions"
+msgstr "últimas perguntas"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "últimas perguntas"
+msgid "Please ask your question here"
+msgstr "últimas perguntas"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
#, fuzzy
-#~ msgid "question asked"
-#~ msgstr "perguntas /"
+msgid "badges:"
+msgstr "insígnias/"
+# 100%
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "question was seen"
-#~ msgstr "perguntas /"
+msgid "sign out"
+msgstr "sair/"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "Related questions"
-#~ msgstr "últimas perguntas"
+msgid "Hi, there! Please sign in"
+msgstr "últimas perguntas"
+#: skins/default/templates/widgets/user_navigation.html:15
#, fuzzy
-#~ msgid "edit profile"
-#~ msgstr "Perfil"
+msgid "settings"
+msgstr "Configurar insígnias/"
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 75%
+# 100%
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "Screen Name"
-#~ msgstr "Apelido"
+msgid "no"
+msgstr ""
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+"nenhum"
+# 100%
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Oops, desculpe - houve algum erro"
+
+# 100%
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "Por favor, login para post"
+
+# 100%
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr "Spam foi detectado em seu post, desculpe, pois se este é um erro"
+
+# 100%
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "Este campo é obrigatório"
+
+# 100%
+#: utils/forms.py:60
#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "perguntas /"
+msgid "Choose a screen name"
+msgstr "escolha um nome de usuário"
+
+# 100%
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "nome de usuário é necessário"
+
+# 100%
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "desculpe, este nome já tem, por favor escolha outro"
+
+# 100%
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "desculpe, este nome não é permitido, por favor escolha outro"
+
+# 100%
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "desculpe, não há usuário com este nome"
+
+# 100%
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+"desculpe, mas tem um erro grave - nome de usuário é usado por vários usuários"
+
+# 100%
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+"nome de usuário pode somente consiste de letras, espaço vazio e sublinhado"
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+# 100%
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "endereço de e-mail é necessário"
+
+# 100%
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "por favor entre um endereço de e-mail válido"
+
+# 100%
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+"este e-mail já esta sendo usado por outra pessoa, por favor escolha outro"
+
+# 100%
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "senha é necessária"
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+# 100%
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "por favor, redigite sua senha"
+
+# 100%
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "desculpe, senhas digitadas não coincidem, por favor tente novamente"
+
+# 100%
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "2 dias atrás"
+
+# 100%
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "ontem"
+
+# 100%
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "%(hr)d hora atrás"
+msgstr[1] "%(hr)d horas atrás"
+
+# 100%
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "%(min)d minuto atrás"
+msgstr[1] "%(min)d minutos atrás"
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>Para perguntar por e-mail:</p>\n"
+"<ul>\n"
+" <li>Formate a linha de assunto como: [Tag1; Tag2] Título da Pergunta</"
+"li>\n"
+" <li>digite os detalhes de sua pergunta no corpo do e-mail</li>\n"
+"</ul>\n"
+"<p>Note que as tags podem ter mais de uma palavra, e as tags\n"
+"podem estar separadas por ponto-e-vírgula ou vírgula</p>\n"
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>Ocorreu um problema ao postar sua pergunta. Contate o administrador do "
+"site %(site)s</p>"
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Para postar perguntas no site %(site)s por email, <a href=\"%(url)s"
+"\">registre-se primeiro</a></p>"
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>Sua pergunta não pode ser postada por insuficiência de privilégios da sua "
+"conta de usuário</p>"
+
+# 100%
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "carregado com sucesso um novo avatar"
+
+# 100%
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "carregado com sucesso seu avatar"
+
+# 100%
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "Excluídos com sucesso os avatares solicitados"
+
+# 100%
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "desculpe, mas usuários anônimos não podem acessar a caixa de entrada"
+
+# 100%
+#: views/commands.py:112
#, fuzzy
-#~ msgid "Email subscription settings"
-#~ msgstr "perguntas /"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "usuários anônimos não podem votar"
+
+# 100%
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "Desculpe, você ficou sem votos para hoje"
+
+# 100%
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "Você tem %(votes_left)s votos deixado para hoje"
+
+# 100%
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "desculpe, algo não esta certo aqui..."
+
+# 100%
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "desculpe, mas usuários anônimos não podem aceitar respostas"
+# 100%
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"subscrição salva, %(email)s necessita de validação, veja %(details_url)s"
+
+# 100%
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "frequência de atualização de e-mail foi configurada para diária"
+
+# 100%
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+"Subscrição de etiqueta foi cancelada (<a href=\"%(url)s\">desfazer</a>)"
+
+# 100%
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr "Acesse para subscrever para: %(tags)s"
+
+# 100%
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr "Acesse para votar"
+
+# 100%
+#: views/commands.py:620
#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "últimas perguntas"
+msgid "Please sign in to delete/restore posts"
+msgstr "Acesse para votar"
+
+# 100%
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "em %(date)s"
+# 100%
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "comentários forum Perguntas e Respostas"
+
+# 100%
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "Obrigado pelo comentário!"
+
+# 100%
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr ""
+"Estamos ansioos para ouvir seu comentário! Por favor, dê ele da próxima "
+"vez :)"
+
+#: views/meta.py:106
#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "perguntas /"
+msgid "Privacy policy"
+msgstr "privacidade /"
+
+# 100%
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "%(q_num)s pregunta, etiquetada"
+msgstr[1] "%(q_num)s preguntas, etiquetadas"
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+
+# 100%
+#: views/users.py:206
+msgid "moderate user"
+msgstr "moderar usuário"
+
+# 100%
+#: views/users.py:381
+msgid "user profile"
+msgstr "perfil do usuário"
+
+# 100%
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "visão geral do perfil do usuário"
+
+# 100%
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "atividade recente do usuário"
+
+# 100%
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "perfil - atividade recente"
+
+# 100%
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "perfil - respostas"
+
+# 100%
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "perfil - votos"
+
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
+
+# 100%
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
+msgstr "perfil reputação do usuário"
+
+# 100%
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "perguntas favoritas do usuário"
+
+# 100%
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "perfil - perguntas favoritas"
+
+# 100%
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "alterações salvas"
+
+# 100%
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "atualizações por email canceladas"
+
+# 100%
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "perfil - assinaturas de e-mail"
+
+# 100%
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "Usuários anônimos não podem gravar arquivos"
+
+# 100%
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "os tipos de arquivos permitidos são '%(file_types)s'"
+
+# 100%
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "o tamanho máximo do arquivo a gravar é %(file_size)sK"
+
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+# 100%
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr "Faça o login para responder ás perguntas"
+
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+# 100%
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "Usuários anônimos não podem editar comentários"
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+# 100%
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "parece que temos algumas dificuldades técnicas"
#, fuzzy
-#~ msgid "real name"
-#~ msgstr "Nome real"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "use-estes-caracteres-nas-tags\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "utilize-estes-caracteres-nas-tags"
+
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "este e-mail será ligado ao gravatar"
+
+# 100%
+#~ msgid "URL for the LDAP service"
+#~ msgstr "URL do provedor de serviços de LDAP"
+
+# 100%
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Explique como mudar a senha no LDAP"
+
+# 100%
+#~ msgid "question_answered"
+#~ msgstr "pergunta respondida"
+
+# 100%
+#~ msgid "question_commented"
+#~ msgstr "pergunta comentada"
+
+# 100%
+#~ msgid "answer_commented"
+#~ msgstr "resposta comentada"
+
+# 100%
+#~ msgid "answer_accepted"
+#~ msgstr "resposta aceita"
+
+# 100%
+#~ msgid "Incorrect username."
+#~ msgstr "Nome de usuário incorreto."
+
+#~ msgid ""
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
+#~ msgstr ""
+#~ "Este comando pode ajuda-lo a migrar para a autenticação de senha no LDAP "
+#~ "ao criar um registro para a associação LDAP para cada conta de usuário. "
+#~ "Assume-se que o id de usuário do LDAP é o menos que o nome de usuário "
+#~ "registrado no site. Antes de executar este comando é necessário definir "
+#~ "os parâmetros LDAP na seção \"Chaves externas\" das configurações do site."
+
+# 100%
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "%(name)s, esta é uma atualização para o cabeçalho da mensagem para "
+#~ "%(num)d pergunta"
+#~ msgstr[1] ""
+#~ "%(name)s, esta é uma atualização para o cabeçalho das mensagens para "
+#~ "%(num)d perguntas"
+
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Visite o askbot e veja as novidades! Que tal você nos ajudar a divulgá-"
+#~ "lo? Alguém de seu relacionamento poderia ajudar a responder essas "
+#~ "perguntas ou aproveitar uma das respostas?"
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Sua configuração de assinatura mais frequente é \"diário\" nas perguntas "
+#~ "selecionadas. Se estiver recebendo mais de um e-mail por dia, contate-nos "
+#~ "relatando o fato para o administrador do askbot."
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Sua configuração de assinatura mais frequente é \"semanal\". Se estiver "
+#~ "recebendo mais de um e-mail por semana, contate-nos relatando o fato para "
+#~ "o administrador do askbot."
+
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "Há uma chance que esteja recebendo links já visitados - devido a um "
+#~ "assunto técnico que pode eventualmente desaparecer."
+
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "vá para %(email_settings_link)s para alterar a frequência das "
+#~ "atualizações de e-mail ou %(admin_email)s administrador"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "a gravação de imagens é limitada a usuários com >%(min_rep)s pontos de "
+#~ "reputação"
+
+# 100%
+#~ msgid "blocked users cannot post"
+#~ msgstr "usuários bloqueados não podem postar"
+
+# 100%
+#~ msgid "suspended users cannot post"
+#~ msgstr "usuários suspensos não podem postar"
+
+# 100%
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "não pode sinalizar mensagem como ofensiva duas vezes"
+
+# 100%
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "usuários bloqueados não podem sinalizar posts"
+
+# 100%
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "usuários suspensos não podem sinalizar posts"
+
+# 100%
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr "necessita > %(min_rep)s pontos para sinalizar spam"
+
+# 100%
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "%(max_flags_per_day)s excedido"
+
+# 100%
+#~ msgid "cannot revoke old vote"
+#~ msgstr "não pode revogar voto antigo"
+
+# 100%
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s modificou a pergunta"
+
+# 100%
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s postaram %(new_answer_count)s novas respostas"
+
+# 100%
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s comentou a pergunta"
+
+# 100%
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s comentou as respostas"
+
+# 100%
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s comentou uma resposta"
#, fuzzy
-#~ msgid "user website"
-#~ msgstr "Site"
+#~ msgid "change %(email)s info"
+#~ msgstr "Mudar status para"
#, fuzzy
-#~ msgid "age"
-#~ msgstr "insígnias/"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' "
+#~ "action='%(send_email_key_url)s'><p><span class=\"bigger strong\">How?</"
+#~ "span> If you have just set or changed your email address - <strong>check "
+#~ "your email and click the included link</strong>.<br>The link contains a "
+#~ "key generated specifically for you. You can also <button style='display:"
+#~ "inline' type='submit'><strong>get a new key</strong></button> and check "
+#~ "your email again.</p></form><span class=\"bigger strong\">Why?</span> "
+#~ "Email validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "moderador"
+#~ msgid "Your new Email"
+#~ msgstr "A sua mensagem:"
#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "Configurar insígnias/"
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' "
+#~ "action='%(send_email_key_url)s'><p><span class=\"bigger strong\">How?</"
+#~ "span> If you have just set or changed your email address - <strong>check "
+#~ "your email and click the included link</strong>.<br>The link contains a "
+#~ "key generated specifically for you. You can also <button style='display:"
+#~ "inline' type='submit'><strong>get a new key</strong></button> and check "
+#~ "your email again.</p></form><span class=\"bigger strong\">Why?</span> "
+#~ "Email validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
#, fuzzy
-#~ msgid "User reputation changed"
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' "
+#~ "action='%(send_email_key_url)s'><p><span class=\"bigger strong\">How?</"
+#~ "span> If you have just set or changed your email address - <strong>check "
+#~ "your email and click the included link</strong>.<br>The link contains a "
+#~ "key generated specifically for you. You can also <button style='display:"
+#~ "inline' type='submit'><strong>get a new key</strong></button> and check "
+#~ "your email again.</p></form><span class=\"bigger strong\">Why?</span> "
+#~ "Email validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
+
+#, fuzzy
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "<form style='margin:0;padding:0;' "
+#~ "action='%(send_email_key_url)s'><p><span class=\"bigger strong\">How?</"
+#~ "span> If you have just set or changed your email address - <strong>check "
+#~ "your email and click the included link</strong>.<br>The link contains a "
+#~ "key generated specifically for you. You can also <button style='display:"
+#~ "inline' type='submit'><strong>get a new key</strong></button> and check "
+#~ "your email again.</p></form><span class=\"bigger strong\">Why?</span> "
+#~ "Email validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
+
+#, fuzzy
+#~ msgid "This account already exists, please use another."
+#~ msgstr "este e-mail já foi registrado, por favor use outro"
+
+#, fuzzy
+#~ msgid "Screen name label"
+#~ msgstr "Apelido"
+
+#, fuzzy
+#~ msgid "create account"
+#~ msgstr "conta/"
+
+#, fuzzy
+#~ msgid "Login"
#~ msgstr "Configurar insígnias/"
#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "Texto da mensagem"
+#~ msgid "reuse openid"
+#~ msgstr "reabrir /"
+
+#, fuzzy
+#~ msgid "Create Account"
+#~ msgstr "conta/"
#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "mensagens/"
+#~ msgid "Related tags"
+#~ msgstr "tags"
#, fuzzy
-#~ msgid "User profile"
-#~ msgstr "Perfil"
+#~ msgid "Ask a question"
+#~ msgstr "perguntar/"
#, fuzzy
-#~ msgid "reputation history"
+#~ msgid "Badges summary"
+#~ msgstr "atualizar resumo:"
+
+#, fuzzy
+#~ msgid "Rep system summary"
+#~ msgstr "atualizar resumo:"
+
+#, fuzzy
+#~ msgid "use tags"
+#~ msgstr "tags"
+
+#, fuzzy
+#~ msgid "what is gravatar"
+#~ msgstr "Mudar status para"
+
+#, fuzzy
+#~ msgid "Change tags"
+#~ msgstr "Mudar status para"
+
+#, fuzzy
+#~ msgid "reputation"
#~ msgstr "karma"
#, fuzzy
-#~ msgid "votes"
-#~ msgstr "votar/"
+#~ msgid "oldest answers"
+#~ msgstr "oldest"
#, fuzzy
-#~ msgid "answer tips"
-#~ msgstr "respostas /"
+#~ msgid "newest answers"
+#~ msgstr "oldest"
#, fuzzy
-#~ msgid "see frequently asked questions"
-#~ msgstr "últimas perguntas"
+#~ msgid "popular answers"
+#~ msgstr "oldest"
#, fuzzy
-#~ msgid "ask a question"
+#~ msgid "Login/Signup to Post Your Answer"
#~ msgstr "últimas perguntas"
#, fuzzy
-#~ msgid "login to post question info"
+#~ msgid "Answer the question"
#~ msgstr "últimas perguntas"
#, fuzzy
-#~ msgid "Ask your question"
-#~ msgstr "últimas perguntas"
+#~ msgid "question asked"
+#~ msgstr "perguntas /"
#, fuzzy
-#~ msgid "about"
-#~ msgstr "about /"
+#~ msgid "question was seen"
+#~ msgstr "perguntas /"
#, fuzzy
-#~ msgid "privacy policy"
-#~ msgstr "privacidade /"
+#~ msgid "email subscription settings info"
+#~ msgstr "perguntas /"
#, fuzzy
-#~ msgid "give feedback"
-#~ msgstr "feedback/"
+#~ msgid "user website"
+#~ msgstr "Site"
#, fuzzy
-#~ msgid "users"
-#~ msgstr "usuários/"
+#~ msgid "reputation history"
+#~ msgstr "karma"
+# #-#-#-#-# django.po (askbot) #-#-#-#-#
+# 75%
+# 100%
#, fuzzy
-#~ msgid "badges"
-#~ msgstr "insígnias/"
+#~ msgid "recent activity"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "atividade recente do usuário"
#, fuzzy
-#~ msgid "question tips"
-#~ msgstr "perguntas /"
+#~ msgid "answer tips"
+#~ msgstr "respostas /"
#, fuzzy
-#~ msgid "please ask a relevant question"
+#~ msgid "ask a question"
#~ msgstr "últimas perguntas"
#, fuzzy
-#~ msgid "see unanswered questions"
+#~ msgid "Login/signup to post your question"
#~ msgstr "últimas perguntas"
#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "últimas perguntas"
+#~ msgid "question tips"
+#~ msgstr "perguntas /"
#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "insígnias/"
+#~ msgid "please ask a relevant question"
+#~ msgstr "últimas perguntas"
#, fuzzy
#~ msgid "logout"
#~ msgstr "sair /"
#, fuzzy
-#~ msgid "settings"
+#~ msgid "login"
#~ msgstr "Configurar insígnias/"
-#, fuzzy
-#~ msgid "Question tags"
-#~ msgstr "perguntas /"
+# 100%
+#~ msgid "no items in counter"
+#~ msgstr "não tem itens no contador"
-#, fuzzy
-#~ msgid "questions"
-#~ msgstr "perguntas /"
+# 100%
+#~ msgid "your email address"
+#~ msgstr "seu endereço de e-mail"
+
+# 100%
+#~ msgid "choose password"
+#~ msgstr "escolha a senha"
+
+# 100%
+#~ msgid "retype password"
+#~ msgstr "redigite a senha"
+
+# 100%
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s crachá"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s crachás"
+
+# 100%
+#~ msgid "user reputation in the community"
+#~ msgstr "reputação do usuário na comunidade"
#, fuzzy
-#~ msgid "followed"
+#~ msgid "Please log in to ask questions"
#~ msgstr "últimas perguntas"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "conteúdo questão deve ser > 10 caracteres"
+
+#, fuzzy
+#~ msgid "Question tags"
+#~ msgstr "perguntas /"
+
#~ msgid "Email (not shared with anyone):"
#~ msgstr "E-mail (não compartilhado com ninguém):"
diff --git a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo b/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo
index e476a69f..f8127ee5 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/pt_BR/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.po b/askbot/locale/pt_BR/LC_MESSAGES/djangojs.po
index 4d28c27f..cadb90a3 100644
--- a/askbot/locale/pt_BR/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/pt_BR/LC_MESSAGES/djangojs.po
@@ -1,341 +1,409 @@
-# 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.
-#
+# Olivier Hallot, 2012.
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:00-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:53-0500\n"
+"PO-Revision-Date: 2012-02-08 10:19-0200\n"
+"Last-Translator: Olivier Hallot\n"
+"Language-Team: Brazilian Portuguese <kde-i18n-doc@kde.org>\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.2\n"
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "Tem certeza que deseja remover seu %s login?"
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Por favor adicione um ou mais métodos de login."
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
+"Você não tem um método de login, adicione um ou mais clicando em qualquer um "
+"dos ícones abaixo."
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "as senhas não coincidem"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Mostrar/alterar os métodos de login atual"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "Por favor digite seu %s, então prossiga"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "Conecte sua conta %(provider_name)s ao %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "Altere sua %s senha"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Alterar senha"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "Criar uma senha para %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Criar senha"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Criar uma conta protegida por senha"
+# 100%
#: skins/common/media/js/post.js:28
msgid "loading..."
-msgstr ""
-
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
+msgstr "carregando..."
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+# 100%
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr ""
+msgstr "privilégio insuficiente"
-#: skins/common/media/js/post.js:283
+# 100%
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
-msgstr ""
+msgstr "não é possível pegar a própria resposta como melhor"
-#: skins/common/media/js/post.js:288
+# 100%
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr ""
+msgstr "faça o login"
-#: skins/common/media/js/post.js:290
+# 100%
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "usuários anônimos não podem seguir perguntas"
-#: skins/common/media/js/post.js:291
+# 100%
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "usuários anônimos não podem se inscrever para perguntas"
-#: skins/common/media/js/post.js:292
+# 100%
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr ""
+msgstr "usuários anônimos não podem votar"
-#: skins/common/media/js/post.js:294
+# 100%
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
-msgstr ""
+msgstr "Confirme o teor ofensivo"
-#: skins/common/media/js/post.js:295
+# 100%
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "Confirme o teor ofensivo"
+
+# 100%
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
-msgstr ""
+msgstr "usuários anônimos não podem sinalizar posts ofensivos"
-#: skins/common/media/js/post.js:296
+# 100%
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
-msgstr ""
+msgstr "confirme a exclusão"
-#: skins/common/media/js/post.js:297
+# 100%
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
-msgstr ""
+msgstr "usuários anônimos não podem excluir/recuperar"
-#: skins/common/media/js/post.js:298
+# 100%
+#: skins/common/media/js/post.js:335
msgid "post recovered"
-msgstr ""
+msgstr "post recuperado"
-#: skins/common/media/js/post.js:299
+# 100%
+#: skins/common/media/js/post.js:336
msgid "post deleted"
-msgstr ""
-
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
+msgstr "post excluído"
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+# 100%
+#: skins/common/media/js/post.js:1206
msgid "add comment"
-msgstr ""
+msgstr "adicionar comentário"
-#: skins/common/media/js/post.js:960
+# 100%
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
+msgstr "salvar comentário"
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+# 100%
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "Digite o título da pergunta (>10 caracteres)"
+# 100%
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "Tags \"<span></span>\" correspondentes:"
+# 100%
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "e %s a mais, ocultos..."
+# 100%
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "Selecione pelo menos um item"
+# 100%
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "Excluir esta notificação?"
+msgstr[1] "Excluir estas notificações?"
+
+# 100%
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "excluir este comentário"
+msgstr[1] "excluir este comentário"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
msgstr[1] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+# 100%
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "excluir este comentário"
+msgstr[1] "excluir este comentário"
+
+# 100%
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
-msgstr ""
+msgstr "Faça o <a href=\"%(signin_url)s\">login</a> para seguir %(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "deixar de seguir %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "seguindo %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "seguir %s"
-#: skins/common/media/js/utils.js:43
+# 100%
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
+msgstr "clique para fechar"
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+# 100%
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
-msgstr ""
+msgstr "negrito"
-#: skins/common/media/js/wmd/wmd.js:31
+# 100%
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
-msgstr ""
+msgstr "itálico"
-#: skins/common/media/js/wmd/wmd.js:32
+# 100%
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
-msgstr ""
+msgstr "vincular"
-#: skins/common/media/js/wmd/wmd.js:33
+# 100%
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
-msgstr ""
+msgstr "citar"
-#: skins/common/media/js/wmd/wmd.js:34
+# 100%
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr ""
+msgstr "texto pré-formatado"
-#: skins/common/media/js/wmd/wmd.js:35
+# 100%
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
-msgstr ""
+msgstr "imagem"
-#: skins/common/media/js/wmd/wmd.js:36
+# 100%
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "anexo"
-#: skins/common/media/js/wmd/wmd.js:37
+# 100%
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
-msgstr ""
+msgstr "lista numerada"
-#: skins/common/media/js/wmd/wmd.js:38
+# 100%
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
-msgstr ""
+msgstr "lista de marcadores"
-#: skins/common/media/js/wmd/wmd.js:39
+# 100%
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
-msgstr ""
+msgstr "título"
-#: skins/common/media/js/wmd/wmd.js:40
+# 100%
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr ""
+msgstr "barra horizontal"
-#: skins/common/media/js/wmd/wmd.js:41
+# 100%
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
-msgstr ""
+msgstr "desfazer"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+# 100%
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
-msgstr ""
+msgstr "refazer"
-#: skins/common/media/js/wmd/wmd.js:53
+# 100%
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
-msgstr ""
+msgstr "insira a url da imagem"
-#: skins/common/media/js/wmd/wmd.js:54
+# 100%
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
-msgstr ""
+msgstr "entre com a url"
-#: skins/common/media/js/wmd/wmd.js:55
+# 100%
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "gravar arquivo anexo"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+# 100%
+#~ msgid "tags cannot be empty"
+#~ msgstr "as tags não podem ser vazias"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+# 100%
+#~ msgid "content cannot be empty"
+#~ msgstr "o conteúdo não pode ser vazio"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+# 100%
+#~ msgid "%s content minchars"
+#~ msgstr "%s conteúdo minchars"
+
+# 100%
+#~ msgid "please enter title"
+#~ msgstr "Digite o título"
+
+# 100%
+#~ msgid "%s title minchars"
+#~ msgstr "%s título minchars"
+
+# 100%
+#~ msgid "Follow"
+#~ msgstr "Seguir"
+
+# 100%
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s seguidor"
+#~ msgstr[1] "%s seguidores"
+
+# 100%
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>Seguindo</div><div class=\"unfollow\">Deixar de seguir</div>"
+
+# 100%
+#~ msgid "undelete"
+#~ msgstr "recuperar"
+
+# 100%
+#~ msgid "delete"
+#~ msgstr "excluir"
+
+# 100%
+#~ msgid "enter %s more characters"
+#~ msgstr "digite mais %s caracteres"
+
+# 100%
+#~ msgid "%s characters left"
+#~ msgstr "%s caracteres sobrando"
+
+# 100%
+#~ msgid "cancel"
+#~ msgstr "cancelar"
+
+# 100%
+#~ msgid "confirm abandon comment"
+#~ msgstr "confirme abandonar comentário"
+
+# 100%
+#~ msgid "confirm delete comment"
+#~ msgstr "confirme excluir comentário"
+
+# 100%
+#~ msgid "click to edit this comment"
+#~ msgstr "clique para editar este comentário"
+
+# 100%
+#~ msgid "edit"
+#~ msgstr "editar"
+
+# 100%
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "veja as perguntas marcadas com a tag '%s'"
+
+# 100%
+#~ msgid "image description"
+#~ msgstr "descrição da imagem"
+
+# 100%
+#~ msgid "file name"
+#~ msgstr "nome do arquivo"
+
+# 100%
+#~ msgid "link text"
+#~ msgstr "vincular texto"
diff --git a/askbot/locale/ro/LC_MESSAGES/django.mo b/askbot/locale/ro/LC_MESSAGES/django.mo
index 197dc079..ecfc2923 100644
--- a/askbot/locale/ro/LC_MESSAGES/django.mo
+++ b/askbot/locale/ro/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/ro/LC_MESSAGES/django.po b/askbot/locale/ro/LC_MESSAGES/django.po
index 3d70c21b..e5f1bd24 100644
--- a/askbot/locale/ro/LC_MESSAGES/django.po
+++ b/askbot/locale/ro/LC_MESSAGES/django.po
@@ -2,12 +2,11 @@
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the ubuntu-ro package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
-#
msgid ""
msgstr ""
"Project-Id-Version: ubuntu-ro\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:37-0600\n"
+"POT-Creation-Date: 2012-04-18 18:56-0500\n"
"PO-Revision-Date: 2011-04-10 19:43+0000\n"
"Last-Translator: Adi Roiban <adi@roiban.ro>\n"
"Language-Team: Romanian <ro@li.org>\n"
@@ -17,23 +16,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
"== 0) && (n != 0))) ? 2: 1));\n"
-"X-Launchpad-Export-Date: 2011-04-10 19:44+0000\n"
"X-Generator: Launchpad (build 12757)\n"
+"X-Launchpad-Export-Date: 2011-04-10 19:44+0000\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "Vizitatorii anonimi nu pot accesa această funcție"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr " - "
-#: feed.py:26
+#: feed.py:28
#, fuzzy
msgid "Individual question feed"
msgstr "Întrebări selectate individual"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "ultimele întrebări"
@@ -49,7 +48,10 @@ msgstr "Țară"
msgid "Country field is required"
msgstr "Câmpul cu țara este obligatoriu"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "titlu"
@@ -57,34 +59,56 @@ msgstr "titlu"
msgid "please enter a descriptive title for your question"
msgstr "introduceți un titlu descriptiv pentru întrebare"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "titlul trebuie să fie mai lung decât 10 caractere"
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "titlul trebuie să fie mai lung decât 10 caractere"
+msgstr[1] "titlul trebuie să fie mai lung decât 10 caractere"
+msgstr[2] "titlul trebuie să fie mai lung decât 10 caractere"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
-#: forms.py:119
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "conținut"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "conținutul întrebării trebuie să fie mai lung decât 10 caractere"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "etichete"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Etichetele sunt cuvinte cheie scurte, fără spații. Pot fi folosite până la "
+"cinci etichete."
+msgstr[1] ""
+"Etichetele sunt cuvinte cheie scurte, fără spații. Pot fi folosite până la "
+"cinci etichete."
+msgstr[2] ""
"Etichetele sunt cuvinte cheie scurte, fără spații. Pot fi folosite până la "
"cinci etichete."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "etichetele sunt obligatorii"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
@@ -92,12 +116,12 @@ msgstr[0] "vă rugăm să folosiți %(tag_count)d etichetă sau mai puțin"
msgstr[1] "vă rugăm să folosiți %(tag_count)d etichete sau mai puțin"
msgstr[2] "vă rugăm să folosiți %(tag_count)d de etichete sau mai puțin"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
@@ -108,17 +132,17 @@ msgstr[1] ""
msgstr[2] ""
"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d de caractere"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "folositi-aceste-caractere-in-etichete"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
"wiki al comunității (nu se primesc puncte de reputație și mesajul poate fi "
"modificat de mai multe persoane)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -126,11 +150,11 @@ msgstr ""
"dacă alegeți opțiunea wiki al comunității, întrebarea și răspunsul nu vor "
"genera puncte iar numele autorului nu va fi afișat"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "sumar actualizare:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -138,108 +162,113 @@ msgstr ""
"introduceți o descriere scurtă a reviziei (de ex. corectare ortografică, "
"gramaticală, stil îmbunătățit, câmp opțional)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "Introduceți numărul de puncte pentru a fi adăugate sau retrase"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "aprobat"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "urmărit"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr "suspendat"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "blocat"
-#: forms.py:346
+#: forms.py:405
#, fuzzy
msgid "administrator"
msgstr "Administrator"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "moderator"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "Schimbă starea în"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "care?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr "Nu se poate schimba propria stare"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "Nu s-a putut schimba alt utilizator în moderator"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "Nu se poate schimba starea altui utilizator"
-#: forms.py:434
+#: forms.py:493
#, fuzzy
msgid "Cannot change status to admin"
msgstr "Nu se poate schimba propria stare"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr "Dacă doriți să modificați statusul %(username)s alegeți ceva expresiv."
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "Linie subiect"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "Text mesaj"
-#: forms.py:542
+#: forms.py:530
#, fuzzy
msgid "Your name (optional):"
msgstr "Nume:"
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr "email"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "Mesaj:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr "întreabă anonim"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
"Bifați în cazul în care nu doriți să dezvăluiți numele vostru când puneți "
"această întrebare"
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
@@ -247,11 +276,11 @@ msgstr ""
"Ați răspuns la această întrebare anonim, dacă decideți să vă arătați "
"identitatea, marcați această căsuță."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr "arată identitatea"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
@@ -259,7 +288,7 @@ msgstr ""
"Doar cel care a pus întrebarea anonimă poate dezvălui identitatea, debifați "
"căsuța"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
@@ -269,110 +298,132 @@ msgstr ""
"rugăm să marcați căsuța „arată identitatea†sau să reîncărcați pagina pentru "
"a încerca din nou să introduceți întrebarea."
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr "această adresă de email va fi conectată cu gravatarul"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Nume real"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "Pagină web"
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr "OraÈ™"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr "Arată țara"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Data nașterii"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"nu va fi afișată, ci folosită doar pentru calcularea vârstei, format AAAA-LL-"
"ZZ"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Nume afișat"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "acest email este deja înregistrat, utilizați altul"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "Alegeți filtru email etichete"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "ÃŽntrebate de mine"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Răspunse de mine"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Alese individual"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Toate întrebările (filtrate pe tag)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Comentarii și răspunsuri în care sunt menționat eu"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "alegeți una dintre opțiunile de mai sus"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "Bine, să încercăm!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "fără emailuri de la comunitate, mulțumesc"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "alegeți una dintre opțiunile de mai sus"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr "despre/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "intrebari-frecvente/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "confidentialitate/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "raspunsuri/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "edit/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "revizii/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "întrebări"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "intrebari/"
@@ -400,52 +451,57 @@ msgstr "raspuns/"
msgid "vote/"
msgstr "vot/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr "etichete/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr "abonare-etichete/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "utilizatori/"
-#: urls.py:214
+#: urls.py:219
#, fuzzy
msgid "subscriptions/"
msgstr "abonamente"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "insigne/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "mesaje/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "macheaza-citit/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "incarca/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "sugestii/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "intrebare/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "cont/"
@@ -573,159 +629,183 @@ msgid ""
msgstr ""
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Configurări email și alerte"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "Număr maxim de intrări întrun email de alerte"
-#: conf/email.py:48
+#: conf/email.py:57
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "Frecvența implicită a notificărilor de noutăți"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "vezi întrebările fără răspuns"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
#, fuzzy
msgid "Max. number of reminders to send about unanswered questions"
msgstr "efectuați clic pentru a vedea întrebările cu cele mai multe răspunsuri"
-#: conf/email.py:168
+#: conf/email.py:177
#, fuzzy
msgid "Send periodic reminders to accept the best answer"
msgstr "vezi întrebările fără răspuns"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
#, fuzzy
msgid "Max. number of reminders to send to accept the best answer"
msgstr "efectuați clic pentru a vedea întrebările cu cele mai multe răspunsuri"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr ""
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr "autentificați-vă pentru a pune o întrebare"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "autentificați-vă pentru a pune o întrebare"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -756,15 +836,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -772,11 +852,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -784,70 +864,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr ""
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Pagini statice - despre, confidențialiate, etc"
@@ -887,11 +951,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -935,109 +1001,179 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "etichetele sunt obligatorii"
+
+#: conf/forum_data_rules.py:135
#, fuzzy
msgid "Mandatory tags"
msgstr "etichete actualizate"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
msgstr ""
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr ""
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Etichete întrebare"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "Profil utilizator"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1113,16 +1249,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1288,6 +1424,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1489,27 +1629,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "URL site pentru feedback"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "Dacă este lăsat gol, se va folosi un formular intern de feedback"
@@ -1634,21 +1774,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1656,40 +1796,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1701,11 +1841,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1714,21 +1854,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1737,21 +1877,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1760,19 +1900,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1783,19 +1923,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1862,41 +2002,69 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr "Configurări de bază"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "adresa de email"
+
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "E-mail-ul pentru recuperarea contului a fost trimis"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
#, fuzzy
msgid "Allow adding and removing login methods"
msgstr "Adăugați una sau mai multe metode de autentificare"
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Valoare implicită: %s"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1938,6 +2106,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "întrebare_cu_răspuns"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Închide întrebarea"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "întrebările favorite ale utilizatorului"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "întrebările favorite ale utilizatorului"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "întrebare duplicat"
@@ -1974,331 +2175,345 @@ msgstr "spam sau reclamă"
msgid "too localized"
msgstr "prea localizată"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "cele mai noi"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "mai vechi"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "activ"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "inactiv"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "cele mai interesante"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "mai reci"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "cele mai votate"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "cele mai puțin votate"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "relevanță"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "toate"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "fără răspuns"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "favorite"
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "Listă etichete"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "Întrebarea nu are răspuns"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "Întrebarea nu are un răspuns acceptat"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "a pus o întrebare"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "a răspuns unei întrebări"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "întrebare comentată"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "răspuns comentat"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "întrebare editată"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "răspuns editat"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "recompensă primită"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "marcat ca cel mai bun răspuns"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "votat pozitiv"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "votat negativ"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "vot anulat"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "întrebare ștearsă"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "răspuns șters"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "marcat ca ofensator"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "etichete actualizate"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "profil utilizator complet"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "e-mail actualizat trimis utilizatorului"
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "vezi întrebările fără răspuns"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "vezi întrebările fără răspuns"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "menționat în postare"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "întrebare_cu_răspuns"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "întrebare_comentată"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "răspuns_comentat"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "răspuns_acceptat"
+#, fuzzy
+msgid "answered question"
+msgstr "a răspuns unei întrebări"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "răspuns editat"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[închis]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[șters]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "versiune inițială"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "reetichetat"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr "dezactivat"
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr "exclude cele ignorate"
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr "doar cele selectate"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "instant"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "zilnic"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "săptămânal"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "fără e-mail"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
#, fuzzy
msgid "mystery-man"
msgstr "ieri"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "ce este gravatarul"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "aur"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "argint"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronz"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
msgid "most relevant questions"
msgstr "cele mai relevante întrebări"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
msgstr "efectuați clic pentru a vedea cele mai relevante întrebări"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr "după relevanță"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "clic pentru a vedea cele mai vechi întrebări"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr "după dată"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "efectuați clic pentru a vedea cele mai noi întrebări"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "clic pentru a vedea cel mai puțin recent actualizate întrebări"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr "după activitate"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "clic pentru a vedea cele mai recent actualizate întrebări"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
msgstr ""
"efectuați clic pentru a vedea întrebările cu cele mai puține răspunsuri"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
msgid "by answers"
msgstr "după răspunsuri"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
msgstr "efectuați clic pentru a vedea întrebările cu cele mai multe răspunsuri"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "efectuați clic pentru a vedea întrebările cu cele mai puține voturi"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
msgid "by votes"
msgstr "după voturi"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "efectuați clic pentru a vedea întrebările cu cele mai multe voturi"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr ""
@@ -2347,11 +2562,12 @@ msgid "Your user name (<i>required</i>)"
msgstr "Numele de utilizator este (<i>obligatoriu</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Nume de utilizator incorect"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "ne pare rău, nu există nici un utilizator cu acest nume"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "autentificare/"
@@ -2389,6 +2605,7 @@ msgid "%(site)s user name and password"
msgstr ""
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr "Creați un cont protejat prin parolă"
@@ -2472,13 +2689,13 @@ msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s"
msgid "Sign in with your %(provider)s account"
msgstr "Autentificați-vă cu contul de %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "Legătura OpenID %(openid_url)s este nevalidă"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
@@ -2487,68 +2704,68 @@ msgstr ""
"Din păcate există o problemă la conectarea la %(provider)s, reîncercați sau "
"utilizați un alt furnizor"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr "Noua parolă a fost salvată"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
"Pentru a vă autentifica efectuați clic pe oricare din iconițele de mai jos"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr "E-mail-ul pentru recuperarea contului a fost trimis"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr "Adăugați una sau mai multe metode de autentificare"
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
"Dacă doriți, adăugați, ștergeți sau revalidați metodele de autentificare"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr "Așteptați puțin! Contul dumneavoastră este recuperat, dar..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
"Ne pare rău, cheia pentru recuperarea contului a expirat sau nu mai este "
"validă"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "Metoda de autentificare pentru %(provider_name)s nu există"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr "Oauu, scuze - a apărut o eroare - încercați mai târziu"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "Autentificarea pentru %(provider)s este funcțională"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"adresa dumneavoastră de e-mail trebuie validată, consultați %(details_url)s"
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr "Recuperați contul %(site)s"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
@@ -2556,93 +2773,123 @@ msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
msgid "Site"
msgstr "Pagină web"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "Configurări de bază"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Valoare implicită: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Valoare implicită: "
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Valoare implicită: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "Tipurile de fișiere imagine permise sunt %(types)s"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Felicitări, de acum sunteți un administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Pagini web"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Documentație"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Schimbă parola"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Ieșire"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Acasă"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Editare configurări de grup"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Corectați eroarea de mai jos"
+msgstr[1] "Corectați erorile de mai jos"
+msgstr[2] "Corectați erorile de mai jos"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr "Configurări incluse în %(name)s."
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Nu aveți permisiunea de a edita valorile"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Editați configurările site-ului"
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Configurările live sunt dezactivate pentru acest site"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
+"Toate opțiunile de configurare trebuie editate în fișierul site-ului "
+"settings.py"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Configurări grup: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Restrânge tot"
+
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Felicitări, de acum sunteți un administrator"
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "Fi primul care răspunde acestei întrebări!"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr ""
"efectuați clic pentru a vedea întrebările cu cele mai puține răspunsuri"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
@@ -2650,70 +2897,33 @@ msgstr[0] "%(question_count)d întrebare actualizată despre %(topics)s"
msgstr[1] "%(question_count)d întrebări actualizate despre %(topics)s"
msgstr[2] "%(question_count)d de întrebări actualizate despre %(topics)s"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d întrebare"
msgstr[1] ""
-"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d întrebări"
msgstr[2] ""
-"%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d de "
-"întrebări"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "întrebare nouă"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Vizitați pagina askbot pentru a afla noutățile! Puteți duce vestea mai "
-"departe - poate că cineva cunoscut are răspunsuri pentru aceste întrebări "
-"sau dorește să posteze o întrebare."
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate este "
-"„zilnicâ€. Dacă primiÈ›i mai mult de un e-mail pe zi, adresaÈ›i-vă "
-"administratorului paginii askbot pentru a raporta problema."
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate este "
-"„săptămânalâ€. Dacă primiÈ›i mai mult de un e-mail pe săptămână, adresaÈ›i-vă "
-"administratorului paginii askbot pentru a raporta problema."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-"Există posibilitatea unele legături pe care le-ați primit deja să vă fie din "
-"nou trimise - cauza este de natură tehnică și va fi remediată. "
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"mergeți la %(email_settings_link)s pentru a modifica frecvența e-mail-urilor "
-"cu actualizări sau %(admin_email)s de administrare"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, fuzzy, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
@@ -2721,12 +2931,12 @@ msgstr[0] "%(question_count)d întrebare actualizată despre %(topics)s"
msgstr[1] "%(question_count)d întrebări actualizate despre %(topics)s"
msgstr[2] "%(question_count)d de întrebări actualizate despre %(topics)s"
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "administrează metodele de autentificare"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2734,7 +2944,7 @@ msgstr ""
"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul "
"dumneavoastră este blocat"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2742,7 +2952,7 @@ msgstr ""
"Nu puteți accepta sau refuza cele mai bune răspunsuri deoarece contul "
"dumneavoastră este suspendat"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
@@ -2751,13 +2961,13 @@ msgstr ""
"Nu se poate accepta sau revoca acceptarea pentru propriul răspuns la propria "
"întrebare"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, fuzzy, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
@@ -2766,53 +2976,43 @@ msgstr ""
"Numai autorul original al întrebării - %(username)s - poate accepta cel mai "
"bun răspuns"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "nu se pot vota mesajele proprii"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "Contul dumneavoastră pare a fi blocat "
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "Contul dumneavoastră pare a fi suspendat "
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Sunt necesare >%(points)s puncte pentru a vota pozitiv"
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "sunt necesare %(points)s puncte pentru a dezaprova"
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "Utilizatorii blocați nu pot încărca fișiere"
-#: models/__init__.py:429
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr "Utilizatorii suspendați nu pot încărca fișiere"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"încărcarea de imagini este limitată utilizatorilor cu mai mult de "
-"%(min_rep)s puncte de reputație"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr "utilizatorii blocați nu pot introduce postări"
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
-msgstr "utilizatorii suspendați nu pot introduce postări"
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2830,19 +3030,19 @@ msgstr[2] ""
"Comentariile (cu excepția ultimului) pot fi modificate numai într-un "
"interval de %(minutes)s de minute de la postare"
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"Doar cel care a adăugat mesajul și moderatorii pot modifica comentariile"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, puteți comenta numai postările "
"proprii"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2852,7 +3052,7 @@ msgstr ""
"%(min_rep)s puncte de reputație. Puteți în continuare să comentați mesajele "
"și răspunsurile pentru întrebările proprii"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2860,7 +3060,7 @@ msgstr ""
"Această postare a fost ștearsă și poate fi văzută numai de către "
"proprietari, administratorii site-ului și moderatori"
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2868,18 +3068,18 @@ msgstr ""
"Numai moderatorii, administratorii site-ului și proprietarii postării pot "
"modifica postările șterse"
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
"Deoarece contul dumneavoastră este blocat, nu puteți modifica postările"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, puteți modifica numai "
"postările proprii"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2887,7 +3087,7 @@ msgstr ""
"Pentru a modifica wiki-ul, este necesar un minim de %(min_rep)s puncte de "
"reputație"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
@@ -2896,7 +3096,7 @@ msgstr ""
"Ne pare rău, pentru a modifica mesajele altor utilizatori este nevoie de un "
"minim de %(min_rep)s puncte de reputație"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2913,18 +3113,18 @@ msgstr[2] ""
"Nu puteți șterge întrebarea deoarece beneficiază de răspunsuri votate "
"pozitiv de alți utilizatori."
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr "Deoarece contul dumneavoastră este blocat, nu puteți șterge postări"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, puteți șterge numai postările "
"proprii"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -2933,16 +3133,16 @@ msgstr ""
"Ne pare rău, pentru a șterge mesajele altor utilizatori este nevoie de un "
"minim de %(min_rep)s puncte de reputație"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr "Deoarece contul dumneavoastră este blocat, nu puteți închide întrebări"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, nu puteți închide întrebări"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -2951,7 +3151,7 @@ msgstr ""
"Ne pare rău, pentru a închide mesajele altor utilizatori este nevoie de un "
"minim de %(min_rep)s puncte de reputație"
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
@@ -2959,7 +3159,7 @@ msgstr ""
"Ne pare rău, pentru a închide propria întrebare este nevoie de un minim de "
"%(min_rep)s puncte de reputație"
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
@@ -2969,7 +3169,7 @@ msgstr ""
"o reputație de minim %(min_rep)s puncte de reputație pot redeschide "
"întrebări."
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -2977,30 +3177,71 @@ msgstr ""
"Ne pare rău, pentru a redesche propria întrebare este nevoie de un minim de "
"%(min_rep)s puncte de reputație"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
-msgstr "nu se poate marca ofensiv de mai multe ori"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
-msgstr "utilizatorii blocați nu pot marca postări"
+#: models/__init__.py:783
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "Deoarece contul dumneavoastră este blocat, nu puteți șterge postări"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
-msgstr "utilizatorii suspendați nu pot marca postări"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de "
+"%(min_rep)s puncte de reputație"
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-"este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam"
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr "ați depășit %(max_flags_per_day)s"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Deoarece contul dumneavoastră este blocat, nu puteți șterge postări"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de "
+"%(min_rep)s puncte de reputație"
+msgstr[1] ""
+"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de "
+"%(min_rep)s puncte de reputație"
+msgstr[2] ""
+"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de "
+"%(min_rep)s puncte de reputație"
+
+#: models/__init__.py:862
+#, fuzzy
+msgid "you don't have the permission to remove all flags"
+msgstr "Nu aveți permisiunea de a edita valorile"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr ""
+
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3008,19 +3249,19 @@ msgstr ""
"Numai proprietarii întrebării, administratorii site-ului și moderatorii pot "
"reeticheta întrebările șterse"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
"Deoarece contul dumneavoastră este blocat, nu puteți reeticheta întrebări"
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, puteți reeticheta numai "
"întrebările proprii"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
@@ -3028,42 +3269,42 @@ msgstr ""
"Ne pare rău, pentru a reeticheta întrebări este nevoie de un minim de "
"%(min_rep)s puncte de reputație"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr "Deoarece contul dumneavoastră este blocat, nu puteți șterge comentarii"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
"Deoarece contul dumneavoastră este suspendat, puteți șterge numai propriile "
"comentarii"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
"Ne pare rău, pentru a șterge un comentariu este nevoie de un minim de "
"%(min_rep)s puncte de reputație"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "voturile vechi nu pot fi revocate"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "în %(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
@@ -3071,7 +3312,7 @@ msgstr[0] "acum %(hr)d oră"
msgstr[1] "acum %(hr)d ore"
msgstr[2] "acum %(hr)d de ore"
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
@@ -3079,7 +3320,7 @@ msgstr[0] "acum %(min)d minut"
msgstr[1] "acum %(min)d minute"
msgstr[2] "acum %(min)d de minute"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
@@ -3087,52 +3328,51 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "Anonim"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "Administrator"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr "Moderator"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr "Utilizator suspendat"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr "Utilizator blocat"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "Utilizator înregistrat"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr "Utilizator urmărit"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr "Utilizator aprobat"
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s are %(reputation)s puncte de reputație"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
@@ -3140,7 +3380,7 @@ msgstr[0] "o insignă de aur"
msgstr[1] "%(count)d insigne de aur"
msgstr[2] "%(count)d de insigne de aur"
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3148,7 +3388,7 @@ msgstr[0] "o insignă de argint"
msgstr[1] "%(count)d insigne de argint"
msgstr[2] "%(count)d de insigne de argint"
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3156,28 +3396,22 @@ msgstr[0] "o insignă de bronz"
msgstr[1] "%(count)d insigne de bronz"
msgstr[2] "%(count)d de insigne de bronz"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s și %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s are %(badges)s"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
+#: models/__init__.py:2389
+#, fuzzy, python-format
+msgid "\"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2200 models/__init__.py:2205
-#, python-format
-msgid "Question: \"%(title)s\""
-msgstr "ÃŽntrebare: „%(title)sâ€"
-
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3186,7 +3420,7 @@ msgstr ""
"Felicitări, aÈ›i obÈ›inut o insignă „%(badge_name)sâ€. VerificaÈ›i <a href="
"\"%(user_profile)s\">profilul propriu</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr "Abonarea la etichetă a fost salvată!"
@@ -3448,20 +3682,20 @@ msgstr "Taxonomist"
msgid "Created a tag used by %(num)s questions"
msgstr "A creat o etichetă folosită în %(num)s întrebări"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "Expert"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Foarte activ pe o anumită etichetă"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr ""
"Ne pare rău, această întrebare a fost ștearsă și nu mai este accesibilă"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
@@ -3469,12 +3703,12 @@ msgstr ""
"Ne pare rău, răspunsul pe care îl cautați nu mai etse disponibil deoarece "
"întrebarea asociată a fost ștearsă"
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr ""
"Ne pară rău, această întrebarea a fost ștearsă și nu mai este accesibilă"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
@@ -3482,7 +3716,7 @@ msgstr ""
"Ne pare rău, comentariu pe care îl cautați nu mai este accesibil deoarece "
"întrebarea asociată a fost ștearsă"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
@@ -3490,46 +3724,26 @@ msgstr ""
"Ne pare rău, comentariul pe care îl cautați nu mai este accesibil deoarece "
"răspunsul asociat a fost șters"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr "\" și \"%s\""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr "\" și în plus"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s a modificat întrebarea"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s au adăugat %(new_answer_count)s întrebări noi"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s au comentat întrebările"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s au comentat răspunsurile"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s au comentat un răspuns"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Validează adresa de e-mail"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>Schimbat de moderator. Motiv:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
@@ -3538,7 +3752,7 @@ msgstr ""
"%(points)s puncte au fost adăugate pentru contribuția utilizatorului "
"%(username)s la întrebarea %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
@@ -3547,2042 +3761,3552 @@ msgstr ""
"%(points)s puncte au fost retrase pentru contribuția utilizatorului "
"%(username)s la întrebarea %(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "interesant"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "ignorat"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "Toate întrebările"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Întrebările pe care le-am pus"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Întrebările la care am răspuns"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Întrebări selectate individual"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr "Mențiuni și răspunsuri la comentarii"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Imediat"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Zilnic"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Săptămânal"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "Fără email"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Introduceți %(username_token)s"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "alegeți una dintre opțiunile de mai sus"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Schimbare email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Salvați adresa de email"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Salvează adresa de e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Anulează"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "Validează adresa de e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "Adresa de e-mail nu a fost schimbată"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "Adresa de e-mail a fost schimbată"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Adresa de e-mail a fost verificată"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Validează adresa de e-mail"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "ÃŽnregistrare"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "ÃŽnregistrare"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+#, fuzzy
+msgid "please select one of the options above"
+msgstr "alegeți una dintre opțiunile de mai sus"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
#, fuzzy
msgid "Your account details are:"
msgstr "Detaliile contului sunt:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "Nume utilizator:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Parolă:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
msgid "Please sign in here:"
msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr "<p>Cu stimă,<br/>Administrator forum</p>"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, fuzzy, python-format
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Ieșire"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Autentificare autilizator"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
"\n"
-"Salut, acesta este un mesaj de sugestii pentru %(site_title)s\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "nu sunt elemente în contor"
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr "imagine gravatat %(username)s"
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr "Oops, ne cerem scuze - a apărut o eroare"
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
-#: utils/decorators.py:109
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
#, fuzzy
-msgid "Please login to post"
-msgstr "administrează metodele de autentificare"
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Introduceți %(username_token)s"
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
msgstr ""
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "acest câmp este obligatoriu"
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "fără e-mail"
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "alegeți un nume de utilizator"
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Parolă"
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "numele de utilizator este obligatoriu"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "ne pare rău, acest nume este luat, alegeți un alt nume"
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "Parolă nouă"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "ne pare rău, acest nume nu este permis, alegeți un alt nume"
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr "introduceți din nou"
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "ne pare rău, nu există nici un utilizator cu acest nume"
+#: skins/common/templates/authopenid/signin.html:157
+#, fuzzy
+msgid "Here are your current login methods"
+msgstr "Adăugați una sau mai multe metode de autentificare"
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/common/templates/authopenid/signin.html:161
+#, fuzzy
+msgid "provider"
+msgstr "Utilizator aprobat"
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "văzut ultima dată"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
msgstr ""
-"ne pare rău, avem o problemă gravă, numele de utilizator este luat de mai "
-"mult utilizatori"
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "șterge"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "voturile vechi nu pot fi revocate"
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Aveți și alte întrebări?"
+
+#: skins/common/templates/authopenid/signin.html:197
+#, fuzzy
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
+
+#: skins/common/templates/authopenid/signin.html:199
+#, fuzzy
+msgid "Please, enter your email address below to recover your account"
+msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
+
+#: skins/common/templates/authopenid/signin.html:202
+#, fuzzy
+msgid "recover your account via email"
+msgstr "Recuperați contul %(site)s"
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
msgstr ""
-"numele de utilizator poate fi format doar din litere, spații și liniuță de "
-"subliniere"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "adresa de email"
+#: skins/common/templates/authopenid/signin.html:215
+#, fuzzy
+msgid "Recover your account via email"
+msgstr "Recuperați contul %(site)s"
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "adresa de email este obligatorie"
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+"Pentru a vă autentifica efectuați clic pe oricare din iconițele de mai jos"
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "introduceți o adresă de email validă"
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+#, fuzzy
+msgid "Create login name and password"
+msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
msgstr ""
-"această adresă de email este deja folosită de un alt utilizator, folosiți o "
-"altă adresă"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "alegeți parola"
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "parola este obligatorie"
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "retastați parola"
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "sau"
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "retastați parola"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
-msgstr "ne pare rău, parolele tastate nu sunt identice, încercați din nou"
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "ce este gravatarul"
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "acum 2 zile"
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Schimbă etichetele"
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "ieri"
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr "Detaliile contului sunt:"
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] "acum %(hr)d oră"
-msgstr[1] "acum %(hr)d ore"
-msgstr[2] "acum %(hr)d de ore"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] "acum %(min)d minut"
-msgstr[1] "acum %(min)d minute"
-msgstr[2] "acum %(min)d de minute"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
-msgstr "A încărcat cu succes un avatar nou."
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "schimbările au fost salvate"
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
-msgstr "Ați actualizat cu succes propriul avatar."
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
-msgstr "Ați șters cu succes avatarele cerute."
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "Încarcă"
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "utilizatorii anonimi nu pot vota"
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "șterge avatar"
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
-msgstr "Ne pare rău, dar nu mai aveți voturi pentru azi... și mâine este o zi"
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
-#: views/commands.py:65
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
-msgid "You have %(votes_left)s votes left for today"
-msgstr "Mai ai %(votes_left)s voturi pentru azi"
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "Ne pare rău dar utilizatorii anonimi nu pot accesa inboxul"
+#: skins/common/templates/avatar/confirm_delete.html:12
+#, fuzzy
+msgid "Delete These"
+msgstr "răspuns șters"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
-msgstr "Ne pare rău dar ceva nu este în regulă aici"
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Răspunde întrebării"
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "Ne pare rău dar utilizatorii anonimi nu pot accepta răspunsuri"
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "legătură permanentă"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr "abonament salvat, %(email)s necesită validare, vezi %(details_url)s"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "legătură"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "frecvența de actualizare a emailurilor a fost definită drept zilnic"
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "recuperează"
-#: views/commands.py:400
-#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
-msgstr "Abonomanetul la etichetă a fost anulat (<a href=\"%(url)s\">refă</a>)."
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "elimină"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "elimină"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"raportează ca ofensatoare (de ex. conține spam, reclame, texte rău-voitoare, "
+"etc.)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "marchează ofensiv"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "modifică"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "acest răspuns a fost ales drept corect"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+"marchează acest răspuns ca favorit (efectuați clic din nou pentru a anula)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"Această întrebare a fost închisă din următoarele motive \"%(close_reason)s\" "
+"de către"
-#: views/commands.py:409
+#: skins/common/templates/question/closed_question_info.html:4
#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
-msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+msgid "close date %(closed_at)s"
+msgstr "data închiderii %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "redeschide"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "închide"
-#: views/commands.py:542
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "reetichetează"
+
+#: skins/common/templates/widgets/edit_post.html:22
#, fuzzy
-msgid "Please sign in to vote"
-msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+msgid ", one of these is required"
+msgstr "acest câmp este obligatoriu"
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "Sugestii pentru întrebări și răspunsuri"
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "etichete"
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "Vă mulțumim pentru sugestii!"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(obligatoriu)"
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr "Suntem interesați de sugestiile voastre!"
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Comută previzualizare în timp real pentru textul Markdown"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "ascunde previzualizarea"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Etichete interesante"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "Adaugă"
-#: views/readers.py:151
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Etichete ignorate"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Afișare filtre etichete"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Pagina nu a fost găsită"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Ne pare rău, pagina cerută nu a putut fi găsită."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Acest lucru s-a întâmplat probabil din următoarele motive:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "acestă întrebare sau răspuns a fost ștearsă;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "legătura conține erori - verificați;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"pagina pe care ați încercat să o vizitați este protejată și nu aveți "
+"suficiente puncte, vezi"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "întrebări frecvente"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+"în cazul în care considerați că acestă eroare 404 nu ar trebui să apară, vă "
+"rugăm"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "raportați acestă problemă"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "mergeți înapoi la pagina anterioară"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "vezi toate întrebările"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "vezi toate etichetele"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "Eroare server internă"
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr "eroarea a fost înregistrată și va fi rezolvată cât de curând posibil"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "puteți raporta eroarea administratorilor acestui site"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "vezi cele mai recente întrebări"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "vezi etichetele"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Modifică răspuns"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "înapoi"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "revizie"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "alege revizia"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Salvează modificările"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "arată previzualizarea"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Puneți întrebarea"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] ""
-msgstr[1] ""
+msgid "%(name)s"
+msgstr "%(name)s"
-#: views/readers.py:159
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Insignă"
+
+#: skins/default/templates/badge.html:7
#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] ""
-msgstr[1] ""
+msgid "Badge \"%(name)s\""
+msgstr "Insigna „%(name)sâ€"
-#: views/readers.py:199
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s insignă"
-msgstr[1] "%(badge_count)d %(badge_level)s insigne"
-msgstr[2] "%(badge_count)d %(badge_level)s de insigne"
+msgid "%(description)s"
+msgstr "%(description)s"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "utilizator care a primit această insignă:"
+msgstr[1] "utilizatorii care au primit acestă insignă:"
+msgstr[2] "utilizatorii care au primit acestă insignă:"
-#: views/readers.py:415
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Insigne"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"Comunitatea vă recompensează pentru întrebările, răspunsurile și voturile "
+"dumneavoastră."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
msgstr ""
-"Ne pare rău, comentariul pe care îl căutați a fost șters nu mai este "
-"accesibil"
+"Mai jos este lista insignelor disponibile și numărul \n"
+"de ori fiecare dintre ele a fost obținuntă. Puteți trimite sugestiile "
+"voastre la %(feedback_faq_url)s.\n"
-#: views/users.py:211
-msgid "moderate this user"
-msgstr "moderează acest utilizator"
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Insigne ale comunității"
-#: views/users.py:212
-msgid "moderate user"
-msgstr "moderează utilizator"
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "insignă de aur: cea mai înaltă onoare ... și foarte rară"
-#: views/users.py:386
-msgid "user profile"
-msgstr "profil utilizator"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "privire de ansamblu profil utilizator"
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+"insignă de argint: acordată ocazional pentru contribuții de cea mai bună "
+"calitate"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "activitate recentă utilizator"
+#: skins/default/templates/badges.html:51
+#, fuzzy
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+"insignă de argint: acordată ocazional pentru contribuții de cea mai bună "
+"calitate"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "profil - activitate recentă"
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+"insignă de argint: acordată adesea pentru a onora pe cineva într-un mod "
+"special"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "comentarii și răspunsuri pentru întrebările altora"
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Închide întrebarea"
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "profil - răspunsuri"
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Închide întrebarea"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "istoria voturilor utilizatorului"
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Motive"
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "profil - voturi"
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "Ok pentru închidere"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "reputația utilizatorului în comunitate"
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "Întrebări frecvente"
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "profil - reputație utilizator"
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Întrebări frecvente "
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "întrebările favorite ale utilizatorului"
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Ce fel de întrebări pot întreba aici?"
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "profile - întrebări favorite"
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"Cel mai important - întrebările trebuie să fie <strong>relevante</strong> "
+"pentru această comunitate."
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "schimbările au fost salvate"
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Înainte de a pune o întrebare vă rugăm să căutați acestă întrebare pentru a "
+"vă asigura că nu are deja un răspuns."
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "actualizările email au fost anulate"
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "Ce întrebări ar trebui să evit a pune?"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "configurări abonament email"
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Vă rugăm să evitați a pune întrebări care nu sunt relevante pentru această "
+"comunitate, prea subiective și argumentative."
-#: views/users.py:974
-msgid "profile - email subscriptions"
-msgstr "profil - abonamente email"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Ce ar trebui să evit în răspunsurile mele?"
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "Utilizatorii anonimi nu pot încărca fișiere"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr "tipurile de fiÈ™iere permise sunt „%(file_types)sâ€"
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Cine moderează această comunitate?"
-#: views/writers.py:91
-#, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "mărimea maximă a fișierului încărcat este %(file_size)sK"
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Răspunsul scurt este: <strong>dumneavoastră</strong>."
-#: views/writers.py:99
-msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr ""
-"Eroare la încărcarea fișierului. Vă rugăm să contactați administratorii "
-"siteului. Vă mulțumim."
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Acest site web este moderat de utilizatori."
-#: views/writers.py:191
+#: skins/default/templates/faq_static.html:18
#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "autentificați-vă pentru a pune o întrebare"
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Sistemul de reputație permite utilizatorilor să câștige autoritate pe care o "
+"folosesc la realizarea mai multor sarcini de moderare."
-#: views/writers.py:492
+#: skins/default/templates/faq_static.html:20
#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "vezi întrebările fără răspuns"
+msgid "How does karma system work?"
+msgstr "Cum funcționează sistemul de reputație?"
-#: views/writers.py:598
-#, python-format
+#: skins/default/templates/faq_static.html:21
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
msgstr ""
-"Nu sunteți autentificat și nu puteți adăuga comentarii . Vă rugăm să vă <a "
-"href=\"%(sign_in_url)s\">autentificați</a>."
-
-#: views/writers.py:646
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "Utilizatorii anonimi nu pot modifica comentariile"
-#: views/writers.py:654
+#: skins/default/templates/faq_static.html:22
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"De exemplu, dacă puneți o întrebare interesantă sau dacă oferiți un răspuns "
+"util, veți fi apreciat cu voturi pozitive. Pe de altă parte, dacă răspunsul "
+"este greșit, va fi votat negativ. Fiecare vot pozitiv va genera puncte "
+"<strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, fiecare vot "
+"negativ va șterge puncte <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</"
+"strong>. Există o limită a punctelor <strong>"
+"%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> pe care le puteți acumula pentru "
+"o întrebare sau un răspuns în decursul unei zile. Tabelul de mai jos explică "
+"necesarul de puncte de reputație necesare pentru fiecare tip de sarcină de "
+"moderare."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "vot pozitiv"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "adaugă comentarii"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "vot negativ"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "comentarii și răspunsuri pentru întrebările altora"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "deschide și închide propriile întrebări"
+
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "reetichetează întrebările altora"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "modifică întrebările wiki-ului comunității"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "\"modifică orice răspuns"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "\"șterge orice comentariu"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
msgstr ""
-"Nu sunteți autentificat și nu puteți șterge comentarii . Vă rugăm să vă <a "
-"href=\"%(sign_in_url)s\">autentificați</a>."
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Pentru a mă înregistra trebuie să creez o parolă nouă?"
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"Nu, nu trebuie neapărat. Vă puteți autentifica prin orice serviciu care "
+"recunoaște OpenID, de ex. Google, Yahoo, AOL, etc.\""
-#~ msgid "Sites"
-#~ msgstr "Pagini web"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "\"Autentifică acum!\""
-#~ msgid "Documentation"
-#~ msgstr "Documentație"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "De ce alții pot modifica întrebările/răspunsurile mele?"
-#~ msgid "Change password"
-#~ msgstr "Schimbă parola"
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Scopul acestui site este..."
-#~ msgid "Log out"
-#~ msgstr "Ieșire"
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Întrebările și răspunsurile pot fi modifica asemănător paginilor wiki de "
+"către utilizatori cu experineță în acest fel îmbunătățindu-se calitatea "
+"bazei de cunoștințe."
-#~ msgid "Home"
-#~ msgstr "Acasă"
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+"Dacă această abordare nu este pe placul dumneavoastră, vă respectăm alegerea."
-#~ msgid "Edit Group Settings"
-#~ msgstr "Editare configurări de grup"
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Aveți și alte întrebări?"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Corectați eroarea de mai jos"
-#~ msgstr[1] "Corectați erorile de mai jos"
-#~ msgstr[2] "Corectați erorile de mai jos"
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Răspundeți întrebărilor la %(ask_question_url)s, ajutând astfel comunitatea "
+"să devină mai bună!"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "Configurări incluse în %(name)s."
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Sugestii"
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "Nu aveți permisiunea de a edita valorile"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Trimite sugestia ta!"
-#~ msgid "Edit Site Settings"
-#~ msgstr "Editați configurările site-ului"
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>%(user_name)s</span> așteptăm cu intereset "
+"sugestiile tale. \n"
+"Introduceți mai jos mesajul sugestiei.\n"
+" "
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "Configurările live sunt dezactivate pentru acest site"
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>Stimate vizitator(user_name)s</span> "
+"așteptăm cu intereset sugestiile tale. \n"
+"Introduceți mai jos mesajul sugestiei.\n"
+" "
-#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
-#~ msgstr ""
-#~ "Toate opțiunile de configurare trebuie editate în fișierul site-ului "
-#~ "settings.py"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "Configurări grup: %(name)s"
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(acest câmp este obligatoriu)"
-#~ msgid "Uncollapse all"
-#~ msgstr "Restrânge tot"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
-#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Introduceți %(username_token)s"
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Trimite sugestia"
-#~ msgid "Change email"
-#~ msgstr "Schimbare email"
+#: skins/default/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"Salut, acesta este un mesaj de sugestii pentru %(site_title)s\n"
-#~ msgid "Save your email address"
-#~ msgstr "Salvați adresa de email"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
-#~ msgid "change %(email)s info"
-#~ msgstr "modifică informațiile despre %(email)s"
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "răspunsuri pentru %(username)s"
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "pentru a afla de ce este necesară o adresă de e-mail, consultați "
-#~ "%(gravatar_faq_url)s"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
-#~ msgid "Your new Email"
-#~ msgstr "Adresa nouă de e-mail"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
-#~ msgid "Your Email"
-#~ msgstr "Adresa dumneavoastră de e-mail"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
-#~ msgid "Save Email"
-#~ msgstr "Salvează adresa de e-mail"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
-#~ msgid "Cancel"
-#~ msgstr "Anulează"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
-#~ msgid "Validate email"
-#~ msgstr "Validează adresa de e-mail"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr ""
-#~ "validați informațiile despre %(email)s sau mergeți la %(change_email_url)s"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
-#~ msgid "Email not changed"
-#~ msgstr "Adresa de e-mail nu a fost schimbată"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr ""
-#~ "vechea adresă %(email)s a fost păstrată, puteți merge, dacă doriți, la "
-#~ "%(change_email_url)s"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
-#~ msgid "Email changed"
-#~ msgstr "Adresa de e-mail a fost schimbată"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "Importă date StackExchange"
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "adresa curentă %(email)s poate fi utilizată pentru acest lucru"
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Avertisment:</em> dacă baza de date nu este goală, creați o copie de "
+"siguranță\n"
+" înainte de a începe această operație."
-#~ msgid "Email verified"
-#~ msgstr "Adresa de e-mail a fost verificată"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Încărcați fișierul dump .zip stackexchange, apoi așteptați până ce\n"
+" se termină importul datelor. Procesul poate dura câteva minute.\n"
+" Rețineți că feedback-ul va fi afișat în text simplu.\n"
+" "
-#~ msgid "thanks for verifying email"
-#~ msgstr "Mulțumim pentru verificarea adresei de e-mail"
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "Import date"
-#~ msgid "email key not sent"
-#~ msgstr "cheia pentru adresa de e-mail nu a fost trimisă"
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"În cazul în care întâmpinați dificultăți în utilizarea acestei unelte pentru "
+"import,\n"
+" încercați să importați datele utilizând linia de comandă : "
+"<code>python manage.py load_stackexchange calea/către/datele-dumneavoastră."
+"zip</code>"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "cheia pentru adresa de e-mail nu a fost trimisă %(email)s modificați "
-#~ "adresa de e-mail aici %(change_link)s"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>%(receiving_user_name)s,</p>"
-#~ msgid "Registration"
-#~ msgstr "ÃŽnregistrare"
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu "
+"nou</a>:</p>\n"
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "înregistrați informații noi pentru contul %(provider)s, consultați "
-#~ "%(gravatar_faq_url)s"
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu "
+"nou</a></p>\n"
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "%(username)s există deja, alegeți un alt nume pentru \n"
-#~ " %(provider)s. Este necesară și o adresă de e-"
-#~ "mail, consultați %(gravatar_faq_url)s\n"
-#~ " "
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a răspuns unei întrebări \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "înregistrați informații noi pentru contul %(provider)s extern, consultați "
-#~ "%(gravatar_faq_url)s"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a postat o întrebare nouă \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "înregistrați informații noi pentru conectarea prin contul Facebook, "
-#~ "consultați %(gravatar_faq_url)s"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a actualizat un răspuns la întrebarea\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Acest cont există deja, vă rugăm să utilizați un altul."
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s a actualizat o întrebare \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#, fuzzy
-#~ msgid "Screen name label"
-#~ msgstr "Nume afișat"
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Rețineți că puteți <a href=\"%(user_subscriptions_url)s\">modifica</a> cu "
+"ușurință\n"
+"frecvența cu care primiți aceste notificări sau chiar anula abonamentul. Vă "
+"mulțumim pentru interesul acordat forumului nostru!</p>\n"
+#: skins/default/templates/instant_notification.html:42
#, fuzzy
-#~ msgid "Email address label"
-#~ msgstr "adresa de email"
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>Cu stimă,<br/>Administrator forum</p>"
-#, fuzzy
-#~ msgid "please select one of the options above"
-#~ msgstr "alegeți una dintre opțiunile de mai sus"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid "create account"
-#~ msgstr "creaţi un cont"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "Logout"
-#~ msgstr "Ieșire"
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "Partajează această întrebare pe twitter"
-#~ msgid "User login"
-#~ msgstr "Autentificare autilizator"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr "Verificați-vă e-mail-ul și mergeți la legătura inclusă"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "fără e-mail"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
-#~ msgid "Password"
-#~ msgstr "Parolă"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "număr actual de voturi"
-#~ msgid "Login"
-#~ msgstr "Autentificare"
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "utilizator anonim"
-#~ msgid "New password"
-#~ msgstr "Parolă nouă"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "acest text este marca drep un wiki al comunității"
-#~ msgid "Please, retype"
-#~ msgstr "introduceți din nou"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Acesta este o pagină wiki.\n"
+" Oricine cu o reputație mai mare decât %(wiki_min_rep)s este binevenit "
+"să o imbunătățească."
-#, fuzzy
-#~ msgid "Here are your current login methods"
-#~ msgstr "Adăugați una sau mai multe metode de autentificare"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "întrebat"
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "Utilizator aprobat"
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "răspuns"
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "văzut ultima dată"
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "adăugat"
-#~ msgid "delete"
-#~ msgstr "șterge"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "actualizat"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "voturile vechi nu pot fi revocate"
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "afiÈ™ează întrebările etichetate „%(tag)sâ€"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Aveți și alte întrebări?"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "șterge acest comentariu"
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Recuperați contul %(site)s"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "imagine gravatat %(username)s"
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Recuperați contul %(site)s"
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "Pagina web pentru %(username)s este %(url)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "precedentă"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "pagiona curentă"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "număr pagină %(num)s"
-#, fuzzy
-#~ msgid "reuse openid"
-#~ msgstr "redeschide"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "pagina următoare"
-#, fuzzy
-#~ msgid "Find out more"
-#~ msgstr "\" și în plus"
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "răspunsuri pentru %(username)s"
-#, fuzzy
-#~ msgid "Get OpenID"
-#~ msgstr "URL OpenID"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "ai un răspuns nou"
+msgstr[1] "ai %(response_count)s răspunsuri noi"
+msgstr[2] "ai %(response_count)s de răspunsuri noi"
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "încă nici un răspuns nou"
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "%(new)s postări noi marcate și %(seen)s anterioare"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr ""
-#~ "Pentru a vă autentifica efectuați clic pe oricare din iconițele de mai jos"
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s postări noi marcate"
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Autentificați-vă cu numele de utilizator și parola %(provider)s"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "%(seen)s (de) postări marcate"
-#, fuzzy
-#~ msgid "Create Account"
-#~ msgstr "creaţi un cont"
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Întrebări"
-#~ msgid "or"
-#~ msgstr "sau"
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr "afișează încă <strong>%(counter)s</strong>"
+#: skins/default/templates/question.html:113
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "ce este gravatarul"
+msgid "see <strong>some</strong> more"
+msgstr "afișează încă <strong>%(counter)s</strong>"
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Schimbă etichetele"
+msgid "post a comment"
+msgstr "adaugă comentariu"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Răspunde propriei întrebări"
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "schimbările au fost salvate"
+msgid "Post Your Answer"
+msgstr "Răspunsul tău"
-#~ msgid "Upload"
-#~ msgstr "Încarcă"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-#~ msgid "delete avatar"
-#~ msgstr "șterge avatar"
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Modifică întrebarea"
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "răspuns șters"
+msgid "Retag question"
+msgstr "Întrebări similare"
-#~ msgid "answer permanent link"
-#~ msgstr "legătură permanentă întrebare"
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "Reetichetează"
-#~ msgid "permanent link"
-#~ msgstr "legătură permanentă"
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "De ce să folosiți și să modificați etichetele?"
-#~ msgid "edit"
-#~ msgstr "modifică"
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr "Etichetele ajută la organizarea și căutarea conținutului"
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "raportează ca ofensatoare (de ex. conține spam, reclame, texte rău-"
-#~ "voitoare, etc.)"
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+"cei care modifică etichetele primesc recompense speciale din partea "
+"comunității"
-#~ msgid "flag offensive"
-#~ msgstr "marchează ofensiv"
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "până la 5 etichete, mai puțin de 20 de caractere pentru fiecare"
-#~ msgid "undelete"
-#~ msgstr "recuperează"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Redeschide întrebarea"
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Răspunde întrebării"
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "Titlu"
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr ""
-#~ "marchează acest răspuns ca favorit (efectuați clic din nou pentru a anula)"
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"Această întrebare a fost închisă de \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "%(question_author)s a ales acest răspuns ca fiind cel corect"
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Motiv închidere:"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr ""
-#~ "Această întrebare a fost închisă din următoarele motive \"%(close_reason)s"
-#~ "\" de către"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Când:"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "data închiderii %(closed_at)s"
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Redeschide această întrebare?"
-#~ msgid "retag"
-#~ msgstr "reetichetează"
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Redeschide această întrebare"
-#~ msgid "reopen"
-#~ msgstr "redeschide"
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#~ msgid "close"
-#~ msgstr "închide"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Istoric revizii"
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "acest câmp este obligatoriu"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "clic pentru a arătă/a ascunde revizia"
-#~ msgid "(required)"
-#~ msgstr "(obligatoriu)"
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "revizia %(number)s"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Comută previzualizare în timp real pentru textul Markdown"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "Abonare etichete"
-#~ msgid "hide preview"
-#~ msgstr "ascunde previzualizarea"
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr "Abonați-vă la următoarele etichete:"
-#~ msgid "Related tags"
-#~ msgstr "Etichete asemămătoare"
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "Abonare"
-#~ msgid "Interesting tags"
-#~ msgstr "Etichete interesante"
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Adaugă"
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Listă etichete"
-#~ msgid "Ignored tags"
-#~ msgstr "Etichete ignorate"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+#, fuzzy
+msgid "Sort by &raquo;"
+msgstr "Ordonează după:"
-#~ msgid "Display tag filter"
-#~ msgstr "Afișare filtre etichete"
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "ordonate alfabetic"
-#~ msgid "Page not found"
-#~ msgstr "Pagina nu a fost găsită"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "după nume"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Ne pare rău, pagina cerută nu a putut fi găsită."
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "ordonate după frecvența folosirii etichetei"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Acest lucru s-a întâmplat probabil din următoarele motive:"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "după popularitate"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "acestă întrebare sau răspuns a fost ștearsă;"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Nu a fost găsit nimic"
-#~ msgid "url has error - please check it;"
-#~ msgstr "legătura conține erori - verificați;"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Utilizatori"
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "pagina pe care ați încercat să o vizitați este protejată și nu aveți "
-#~ "suficiente puncte, vezi"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
-#~ msgid "faq"
-#~ msgstr "întrebări frecvente"
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "reputație"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr ""
-#~ "în cazul în care considerați că acestă eroare 404 nu ar trebui să apară, "
-#~ "vă rugăm"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
-#~ msgid "report this problem"
-#~ msgstr "raportați acestă problemă"
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "recent"
-#~ msgid "back to previous page"
-#~ msgstr "mergeți înapoi la pagina anterioară"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
-#~ msgid "see all questions"
-#~ msgstr "vezi toate întrebările"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
-#~ msgid "see all tags"
-#~ msgstr "vezi toate etichetele"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "după nume de utilizator"
-#~ msgid "Internal server error"
-#~ msgstr "Eroare server internă"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "eroarea a fost înregistrată și va fi rezolvată cât de curând posibil"
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Nu s-a găsit nimic."
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "puteți raporta eroarea administratorilor acestui site"
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, fuzzy, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] ""
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+msgstr[1] ""
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
-#~ msgid "see latest questions"
-#~ msgstr "vezi cele mai recente întrebări"
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
-#~ msgid "see tags"
-#~ msgstr "vezi etichetele"
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "reetichetat"
-#~ msgid "About %(site_name)s"
-#~ msgstr "Despre %(site_name)s"
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Indicii de căutare:"
-#~ msgid "Edit answer"
-#~ msgstr "Modifică răspuns"
+#: skins/default/templates/main_page/headline.html:27
+#, fuzzy
+msgid "reset author"
+msgstr "resetare etichete"
-#~ msgid "back"
-#~ msgstr "înapoi"
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr " sau "
-#~ msgid "revision"
-#~ msgstr "revizie"
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "resetare etichete"
-#~ msgid "select revision"
-#~ msgstr "alege revizia"
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "începeți din nou"
-#~ msgid "Save edit"
-#~ msgstr "Salvează modificările"
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+" pentru a lărgi sau a filtra prin adăugarea mai multor etichete sau a "
+"textului de căutat."
-#~ msgid "show preview"
-#~ msgstr "arată previzualizarea"
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Indiciu de căutare:"
-#~ msgid "Ask a question"
-#~ msgstr "Puneți o întrebare"
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "adăugarea de etichete și a mai multe cuvinte cheie pentru căutare"
-#~ msgid "%(name)s"
-#~ msgstr "%(name)s"
+#: skins/default/templates/main_page/nothing_found.html:4
+#, fuzzy
+msgid "There are no unanswered questions here"
+msgstr "vezi întrebările fără răspuns"
-#~ msgid "Badge"
-#~ msgstr "Insignă"
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "întrebare_cu_răspuns"
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "Insigna „%(name)sâ€"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
-#~ msgid "%(description)s"
-#~ msgstr "%(description)s"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Puteți extinde căutarea prin "
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "utilizator care a primit această insignă:"
-#~ msgstr[1] "utilizatorii care au primit acestă insignă:"
-#~ msgstr[2] "utilizatorii care au primit acestă insignă:"
+#: skins/default/templates/main_page/nothing_found.html:16
+#, fuzzy
+msgid "resetting author"
+msgstr "resetare etichete"
-#~ msgid "Badges summary"
-#~ msgstr "Sumar insigne"
+#: skins/default/templates/main_page/nothing_found.html:19
+#, fuzzy
+msgid "resetting tags"
+msgstr "resetare etichete"
-#~ msgid "Badges"
-#~ msgstr "Insigne"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+#, fuzzy
+msgid "starting over"
+msgstr "începeți din nou"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "Comunitatea vă recompensează pentru întrebările, răspunsurile și voturile "
-#~ "dumneavoastră."
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr "autentificați-vă pentru a pune o întrebare"
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Mai jos este lista insignelor disponibile și numărul \n"
-#~ "de ori fiecare dintre ele a fost obținuntă. Puteți trimite sugestiile "
-#~ "voastre la %(feedback_faq_url)s.\n"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Nu ați găsit ceea ce căutați?"
-#~ msgid "Community badges"
-#~ msgstr "Insigne ale comunității"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Vă rugăm să puneți o întrebare!"
-#~ msgid "gold badge: the highest honor and is very rare"
-#~ msgstr "insignă de aur: cea mai înaltă onoare ... și foarte rară"
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "abonarea la fluxul de întrebări"
-#~ msgid "gold badge description"
-#~ msgstr "descriere insignă de aur"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
-#~ msgid ""
-#~ "silver badge: occasionally awarded for the very high quality contributions"
-#~ msgstr ""
-#~ "insignă de argint: acordată ocazional pentru contribuții de cea mai bună "
-#~ "calitate"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
-#~ msgid "silver badge description"
-#~ msgstr "descriere insignă de argint"
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caracter"
+msgstr[1] ""
+"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caractere"
+msgstr[2] ""
+"fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d de caractere"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr ""
-#~ "insignă de argint: acordată adesea pentru a onora pe cineva într-un mod "
-#~ "special"
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "vă rugăm să folosiți %(tag_count)d etichetă sau mai puțin"
+msgstr[1] "vă rugăm să folosiți %(tag_count)d etichete sau mai puțin"
+msgstr[2] "vă rugăm să folosiți %(tag_count)d de etichete sau mai puțin"
-#~ msgid "bronze badge description"
-#~ msgstr "descriere insignă de bronz"
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "până la 5 etichete, mai puțin de 20 de caractere pentru fiecare"
-#~ msgid "Close question"
-#~ msgstr "Închide întrebarea"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s răspuns:\n"
+" "
+msgstr[1] ""
+"\n"
+" %(counter)s răspunsuri:\n"
+" "
+msgstr[2] ""
+"\n"
+" %(counter)s de răspunsuri:\n"
+" "
-#~ msgid "Close the question"
-#~ msgstr "Închide întrebarea"
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr "Ordonează după:"
-#~ msgid "Reasons"
-#~ msgstr "Motive"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "răspunsurile mai vechi vor fi afișate întâi"
-#~ msgid "OK to close"
-#~ msgstr "Ok pentru închidere"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "răspunsurile mai noi vor fi afișate întâi"
-#~ msgid "FAQ"
-#~ msgstr "Întrebări frecvente"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "cele mai votate răspunsuri vor fi afișate întâi"
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Întrebări frecvente "
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Ce fel de întrebări pot întreba aici?"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Răspunsul tău"
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "Cel mai important - întrebările trebuie să fie <strong>relevante</strong> "
-#~ "pentru această comunitate."
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Fi primul care răspunde acestei întrebări!"
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Înainte de a pune o întrebare vă rugăm să căutați acestă întrebare pentru "
-#~ "a vă asigura că nu are deja un răspuns."
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Ce întrebări ar trebui să evit a pune?"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Vă rugăm să evitați a pune întrebări care nu sunt relevante pentru "
-#~ "această comunitate, prea subiective și argumentative."
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Ce ar trebui să evit în răspunsurile mele?"
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
-#~ 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 ""
-#~ "Este un site pentru întrebări și răspunsuri, nu un grup de discuții. De "
-#~ "aceea evitați purtarea unor discuții în răspunsurile dumneavoastră, mai "
-#~ "ales că funcția pentru comentarii permite ceva spațiu pentru discuții "
-#~ "scurte."
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+#, fuzzy
+msgid " or"
+msgstr " sau "
-#~ msgid "Who moderates this community?"
-#~ msgstr "Cine moderează această comunitate?"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "email"
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Răspunsul scurt este: <strong>dumneavoastră</strong>."
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Etichete întrebare"
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Acest site web este moderat de utilizatori."
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "clic pentru a vedea cele mai vechi întrebări"
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Sistemul de reputație permite utilizatorilor să câștige autoritate pe "
-#~ "care o folosesc la realizarea mai multor sarcini de moderare."
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Închide întrebarea"
-#~ msgid "How does reputation system work?"
-#~ msgstr "Cum funcționează sistemul de reputație?"
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Închide întrebarea"
-#~ msgid "Rep system summary"
-#~ msgstr "Sumar al sistemului de reputație"
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "clic pentru a vedea cele mai vechi întrebări"
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "De exemplu, dacă puneți o întrebare interesantă sau dacă oferiți un "
-#~ "răspuns util, veți fi apreciat cu voturi pozitive. Pe de altă parte, dacă "
-#~ "răspunsul este greșit, va fi votat negativ. Fiecare vot pozitiv va genera "
-#~ "puncte <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, fiecare "
-#~ "vot negativ va șterge puncte <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</"
-#~ "strong>. Există o limită a punctelor <strong>"
-#~ "%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> pe care le puteți acumula "
-#~ "pentru o întrebare sau un răspuns în decursul unei zile. Tabelul de mai "
-#~ "jos explică necesarul de puncte de reputație necesare pentru fiecare tip "
-#~ "de sarcină de moderare."
-
-#~ msgid "upvote"
-#~ msgstr "vot pozitiv"
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Închide întrebarea"
-#~ msgid "use tags"
-#~ msgstr "utilizează etichete"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-#~ msgid "add comments"
-#~ msgstr "adaugă comentarii"
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "actualizările email au fost anulate"
-#~ msgid "downvote"
-#~ msgstr "vot negativ"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+#: skins/default/templates/question/sidebar.html:37
#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "comentarii și răspunsuri pentru întrebările altora"
+msgid "subscribe to this question rss feed"
+msgstr "abonarea la fluxul de întrebări"
-#~ msgid "open and close own questions"
-#~ msgstr "deschide și închide propriile întrebări"
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "abonarea la fluxul de întrebări"
-#~ msgid "retag other's questions"
-#~ msgstr "reetichetează întrebările altora"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
-#~ msgid "edit community wiki questions"
-#~ msgstr "modifică întrebările wiki-ului comunității"
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "întrebat"
-#~ msgid "\"edit any answer"
-#~ msgstr "\"modifică orice răspuns"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#~ msgid "\"delete any comment"
-#~ msgstr "\"șterge orice comentariu"
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "ori"
-#~ msgid "what is gravatar"
-#~ msgstr "ce este gravatarul"
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "ultima actualizare"
-#~ msgid "gravatar faq info"
-#~ msgstr "informații utile despre gravatar"
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Întrebări similare"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Pentru a mă înregistra trebuie să creez o parolă nouă?"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr "Notifică-mă o dată pe săptămână când apar răspunsuri noi"
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "Nu, nu trebuie neapărat. Vă puteți autentifica prin orice serviciu care "
-#~ "recunoaște OpenID, de ex. Google, Yahoo, AOL, etc.\""
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"odată ce vă veți autentifica, aici vă veți putea abona la orice actualizare"
-#~ msgid "\"Login now!\""
-#~ msgstr "\"Autentifică acum!\""
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "De ce alții pot modifica întrebările/răspunsurile mele?"
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profilul pentru %(username)s"
-#~ msgid "Goal of this site is..."
-#~ msgstr "Scopul acestui site este..."
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Modifică profilul de utilizator"
-#~ 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 ""
-#~ "Întrebările și răspunsurile pot fi modifica asemănător paginilor wiki de "
-#~ "către utilizatori cu experineță în acest fel îmbunătățindu-se calitatea "
-#~ "bazei de cunoștințe."
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "modifică profil"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr ""
-#~ "Dacă această abordare nu este pe placul dumneavoastră, vă respectăm "
-#~ "alegerea."
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "schimbă poza"
-#~ msgid "Still have questions?"
-#~ msgstr "Aveți și alte întrebări?"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "elimină"
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Răspundeți întrebărilor la %(ask_question_url)s, ajutând astfel "
-#~ "comunitatea să devină mai bună!"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Utilizator înregistrat"
-#~ msgid "Feedback"
-#~ msgstr "Sugestii"
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Nume afișat"
-#~ msgid "Give us your feedback!"
-#~ msgstr "Trimite sugestia ta!"
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "voturile vechi nu pot fi revocate"
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>%(user_name)s</span> așteptăm cu "
-#~ "intereset sugestiile tale. \n"
-#~ "Introduceți mai jos mesajul sugestiei.\n"
-#~ " "
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Actualizează"
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>Stimate vizitator(user_name)s</span> "
-#~ "așteptăm cu intereset sugestiile tale. \n"
-#~ "Introduceți mai jos mesajul sugestiei.\n"
-#~ " "
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "abonamente"
-#~ msgid "(this field is required)"
-#~ msgstr "(acest câmp este obligatoriu)"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "Configurări abonamente email"
-#~ msgid "Send Feedback"
-#~ msgstr "Trimite sugestia"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
-#~ msgid "Import StackExchange data"
-#~ msgstr "Importă date StackExchange"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "Adresa dumneavoastră de e-mail"
-#~ msgid ""
-#~ "<em>Warning:</em> if your database is not empty, please back it up\n"
-#~ " before attempting this operation."
-#~ msgstr ""
-#~ "<em>Avertisment:</em> dacă baza de date nu este goală, creați o copie de "
-#~ "siguranță\n"
-#~ " înainte de a începe această operație."
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Închide întrebarea"
-#~ msgid ""
-#~ "Upload your stackexchange dump .zip file, then wait until\n"
-#~ " the data import completes. This process may take several "
-#~ "minutes.\n"
-#~ " Please note that feedback will be printed in plain text.\n"
-#~ " "
-#~ msgstr ""
-#~ "Încărcați fișierul dump .zip stackexchange, apoi așteptați până ce\n"
-#~ " se termină importul datelor. Procesul poate dura câteva minute.\n"
-#~ " Rețineți că feedback-ul va fi afișat în text simplu.\n"
-#~ " "
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "inbox"
-#~ msgid "Import data"
-#~ msgstr "Import date"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Secțiuni:"
-#~ msgid ""
-#~ "In the case you experience any difficulties in using this import tool,\n"
-#~ " please try importing your data via command line: <code>python "
-#~ "manage.py load_stackexchange path/to/your-data.zip</code>"
-#~ msgstr ""
-#~ "În cazul în care întâmpinați dificultăți în utilizarea acestei unelte "
-#~ "pentru import,\n"
-#~ " încercați să importați datele utilizând linia de comandă : "
-#~ "<code>python manage.py load_stackexchange calea/către/datele-"
-#~ "dumneavoastră.zip</code>"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "răspunsuri site (%(re_count)s)"
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>%(receiving_user_name)s,</p>"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "elemente marcate (%(flag_count)s)"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu "
-#~ "nou</a>:</p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "selectează:"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a lăsat un <a href=\"%(post_url)s\">comentariu "
-#~ "nou</a></p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "văzut"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a răspuns unei întrebări \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "nou"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a postat o întrebare nouă \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "niciunul"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a actualizat un răspuns la întrebarea\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "machează ca văzut"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s a actualizat o întrebare \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "marcează ca nou"
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Rețineți că puteți <a href=\"%(user_subscriptions_url)s\">modifica</a> "
-#~ "cu ușurință\n"
-#~ "frecvența cu care primiți aceste notificări sau chiar anula abonamentul. "
-#~ "Vă mulțumim pentru interesul acordat forumului nostru!</p>\n"
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+#: skins/default/templates/user_profile/user_inbox.html:66
#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Partajează această întrebare pe twitter"
+msgid "remove flags"
+msgstr "elimină"
+#: skins/default/templates/user_profile/user_inbox.html:68
#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "îmi place această postare (efectuați clic din nou pentru a anula)"
+msgid "delete post"
+msgstr "șterge"
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "îmi place acest răspuns (efectuați clic din nou pentru a anula)"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "actualizează profil"
-#~ msgid "current number of votes"
-#~ msgstr "număr actual de voturi"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "administrează metodele de autentificare"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "nume real"
+#: skins/default/templates/user_profile/user_info.html:58
#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr ""
-#~ "nu îmi place această postare (efectuați clic din nou pentru a anula)"
+msgid "member since"
+msgstr "membru de"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "nu îmi place acest răspuns (efectuați clic din nou pentru a anula)"
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "văzut ultima dată"
-#~ msgid "anonymous user"
-#~ msgstr "utilizator anonim"
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "Pagină web"
-#~ msgid "this post is marked as community wiki"
-#~ msgstr "acest text este marca drep un wiki al comunității"
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "locație"
-#~ msgid ""
-#~ "This post is a wiki.\n"
-#~ " Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
-#~ msgstr ""
-#~ "Acesta este o pagină wiki.\n"
-#~ " Oricine cu o reputație mai mare decât %(wiki_min_rep)s este "
-#~ "binevenit să o imbunătățească."
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "vârstă"
-#~ msgid "asked"
-#~ msgstr "întrebat"
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "ani"
-#~ msgid "answered"
-#~ msgstr "răspuns"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "voturi nefolosite azi"
-#~ msgid "posted"
-#~ msgstr "adăugat"
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "voturi rămase"
-#~ msgid "updated"
-#~ msgstr "actualizat"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "moderare"
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "afiÈ™ează întrebările etichetate „%(tag)sâ€"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "starea curentă a utilizatorului %(username)s este „%(status)sâ€"
-#~ msgid "delete this comment"
-#~ msgstr "șterge acest comentariu"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "Starea utilizatorului a fost schimbată"
-#~ msgid "add comment"
-#~ msgstr "adaugă comentariu"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Salvează"
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "afișează încă <strong>%(counter)s</strong>"
-#~ msgstr[1] "afișează încă <strong>%(counter)s</strong>"
-#~ msgstr[2] "afișează încă <strong>%(counter)s</strong>"
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Reputația curentă este %(reputation)s puncte"
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] "afișează încă <strong>%(counter)s</strong> comentariu"
-#~ msgstr[1] "afișează încă <strong>%(counter)s</strong> comentarii"
-#~ msgstr[2] "afișează încă <strong>%(counter)s</strong> de comentarii"
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "Reputația curentă a utilizatorului este %(reputation)s puncte"
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "Pagina web pentru %(username)s este %(url)s"
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "Reputația utilizatorului a fost schimbată"
-#~ msgid "previous"
-#~ msgstr "precedentă"
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "Scade"
-#~ msgid "current page"
-#~ msgstr "pagiona curentă"
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Adaugă"
-#~ msgid "page number %(num)s"
-#~ msgstr "număr pagină %(num)s"
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Trimite mesaj către %(username)s"
-#~ msgid "next page"
-#~ msgstr "pagina următoare"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"Un mesaj email va fi trimis către utilizator cu câmpul „reply-to†definit la "
+"adresa proprie de email. Verificați că adresa proprie este introdusă corect."
-#~ msgid "posts per page"
-#~ msgstr "postări pe pagină"
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Mesaj trimis"
-#~ msgid "responses for %(username)s"
-#~ msgstr "răspunsuri pentru %(username)s"
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Trimite mesaj"
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "ai un răspuns nou"
-#~ msgstr[1] "ai %(response_count)s răspunsuri noi"
-#~ msgstr[2] "ai %(response_count)s de răspunsuri noi"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
-#~ msgid "no new responses yet"
-#~ msgstr "încă nici un răspuns nou"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "%(new)s postări noi marcate și %(seen)s anterioare"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "%(new)s postări noi marcate"
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr "utilizatorii suspendați nu pot marca postări"
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "%(seen)s (de) postări marcate"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
-#~ msgid "Questions"
-#~ msgstr "Întrebări"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
-#~ msgid "Privacy policy"
-#~ msgstr "Politica de confidențialitate"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-#~ msgid "Edit question"
-#~ msgstr "Modifică întrebarea"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-#~ msgid "Change tags"
-#~ msgstr "Schimbă etichetele"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
-#~ msgid "Retag"
-#~ msgstr "Reetichetează"
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "Profilul pentru %(username)s"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "De ce să folosiți și să modificați etichetele?"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "activitate"
-#~ msgid "Tags help to keep the content better organized and searchable"
-#~ msgstr "Etichetele ajută la organizarea și căutarea conținutului"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr ""
-#~ "cei care modifică etichetele primesc recompense speciale din partea "
-#~ "comunității"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Schimbările în reputație."
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "până la 5 etichete, mai puțin de 20 de caractere pentru fiecare"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "schimbăr în reputația utilizatorului %(user_name)s"
-#~ msgid "Reopen question"
-#~ msgstr "Redeschide întrebarea"
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "privire de ansamblu"
-#~ msgid "Title"
-#~ msgstr "Titlu"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> întrebare"
+msgstr[1] "<span class=\"count\">%(counter)s</span> întrebări"
+msgstr[2] "<span class=\"count\">%(counter)s</span> de întrebări"
-#~ msgid ""
-#~ "This question has been closed by \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgstr ""
-#~ "Această întrebare a fost închisă de \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "răspuns"
+msgstr[1] "răspunsuri"
+msgstr[2] "de răspunsuri"
-#~ msgid "Close reason:"
-#~ msgstr "Motiv închidere:"
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "răspunsul a fost votat de %(answer_score)s de ori"
-#~ msgid "When:"
-#~ msgstr "Când:"
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s comentariu)"
+msgstr[1] "răspunsul a fost comentat de %(comment_count)s ori"
+msgstr[2] "răspunsul a fost comentat de %(comment_count)s de ori"
-#~ msgid "Reopen this question?"
-#~ msgstr "Redeschide această întrebare?"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> vot"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> voturi"
+msgstr[2] "<span class=\"count\">%(cnt)s</span> de voturi"
-#~ msgid "Reopen this question"
-#~ msgstr "Redeschide această întrebare"
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
-#~ msgid "Revision history"
-#~ msgstr "Istoric revizii"
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "utilizatorul a votat pozitiv de atâtea ori"
-#~ msgid "click to hide/show revision"
-#~ msgstr "clic pentru a arătă/a ascunde revizia"
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
-#~ msgid "revision %(number)s"
-#~ msgstr "revizia %(number)s"
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "utilizatorul a votat negativ de atâtea ori"
-#~ msgid "Subscribe for tags"
-#~ msgstr "Abonare etichete"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> etichetă"
+msgstr[1] "<span class=\"count\">%(counter)s</span> etichete"
+msgstr[2] "<span class=\"count\">%(counter)s</span> de etichete"
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Abonați-vă la următoarele etichete:"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> insignă"
+msgstr[1] "<span class=\"count\">%(counter)s</span> insigne"
+msgstr[2] "<span class=\"count\">%(counter)s</span> de insigne"
-#~ msgid "Subscribe"
-#~ msgstr "Abonare"
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "indicații pentru răspunsuri"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Profil utilizator"
-#~ msgid "Tag list"
-#~ msgstr "Listă etichete"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "comentarii și răspunsuri pentru întrebările altora"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Ordonează după:"
+msgid "Graph of user karma"
+msgstr "graficul reputației utilizatorului"
-#~ msgid "sorted alphabetically"
-#~ msgstr "ordonate alfabetic"
+#: skins/default/templates/user_profile/user_tabs.html:25
+#, fuzzy
+msgid "questions that user is following"
+msgstr "întrebări pe care utilizatorul le-a ales ca fiind favorite"
-#~ msgid "by name"
-#~ msgstr "după nume"
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "istoria voturilor utilizatorului"
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "ordonate după frecvența folosirii etichetei"
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "voturi"
-#~ msgid "by popularity"
-#~ msgstr "după popularitate"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "configurări abonament email"
-#~ msgid "Nothing found"
-#~ msgstr "Nu a fost găsit nimic"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "moderează acest utilizator"
-#~ msgid "Users"
-#~ msgstr "Utilizatori"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
-#~ msgid "reputation"
-#~ msgstr "reputație"
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "dați răspunsuri relevante pentru această comunitate"
-#~ msgid "recent"
-#~ msgstr "recent"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "încercați să oferiți un răspuns, nu să vă angajați într-o discuție"
-#~ msgid "by username"
-#~ msgstr "după nume de utilizator"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "încercați să oferiți suficiente detalii"
-#~ msgid "Nothing found."
-#~ msgstr "Nu s-a găsit nimic."
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "fiți clari și conciși"
-#~ msgid "Search tips:"
-#~ msgstr "Indicii de căutare:"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "consultați secțiunea întrebărilor frecvente"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
#, fuzzy
-#~ msgid "reset author"
-#~ msgstr "resetare etichete"
+msgid "Markdown basics"
+msgstr "indicii Markdown"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*înclinat*"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**îngroșat**"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*înclinat* sau __înclinat__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**îngroșat** sau __îngroșat__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "text"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "imagine"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "listă numerotată:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "de asemenea sunt suportate tag-uri HTML simple"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "află mai multe despre Markdown"
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "autentificați-vă pentru a pune o întrebare"
-#~ msgid " or "
-#~ msgstr " sau "
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#~ msgid "reset tags"
-#~ msgstr "resetare etichete"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#~ msgid "start over"
-#~ msgstr "începeți din nou"
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Contribuitori"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr ""
-#~ " pentru a lărgi sau a filtra prin adăugarea mai multor etichete sau a "
-#~ "textului de căutat."
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "despre"
-#~ msgid "Search tip:"
-#~ msgstr "Indiciu de căutare:"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "adăugarea de etichete și a mai multe cuvinte cheie pentru căutare"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "politica de confidențialitate"
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "vezi întrebările fără răspuns"
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "oferă o sugestie"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "întrebare_cu_răspuns"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "înapoi la pagina de start"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "siglă %(site)s"
-#~ msgid "You can expand your search by "
-#~ msgstr "Puteți extinde căutarea prin "
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "utilizatori"
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "insigne"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "resetare etichete"
+msgid "ask a question interesting to this community"
+msgstr "dați răspunsuri relevante pentru această comunitate"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "afișare"
+msgstr[1] "afișări"
+msgstr[2] "de afișări"
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "răspuns"
+msgstr[1] "răspunsuri"
+msgstr[2] "de răspunsuri"
+
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "vot"
+msgstr[1] "voturi"
+msgstr[2] "de voturi"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "vezi întrebările fără răspuns"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+#: skins/default/templates/widgets/scope_nav.html:11
#, fuzzy
-#~ msgid "starting over"
-#~ msgstr "începeți din nou"
+msgid "see your followed questions"
+msgstr "vezi întrebările tale favorite"
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "autentificați-vă pentru a pune o întrebare"
+msgid "Please ask your question here"
+msgstr "Vă rugăm să puneți o întrebare!"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Nu ați găsit ceea ce căutați?"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "reputație:"
-#~ msgid "Please, post your question!"
-#~ msgstr "Vă rugăm să puneți o întrebare!"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "insigne:"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "abonarea la fluxul de întrebări"
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "Ieșire"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] ""
-#~ "fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caracter"
-#~ msgstr[1] ""
-#~ "fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d caractere"
-#~ msgstr[2] ""
-#~ "fiecare etichetă trebuie să fie mai scurtă de %(max_chars)d de caractere"
+msgid "Hi, there! Please sign in"
+msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "configurări"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "vă rugăm să folosiți %(tag_count)d etichetă sau mai puțin"
-#~ msgstr[1] "vă rugăm să folosiți %(tag_count)d etichete sau mai puțin"
-#~ msgstr[2] "vă rugăm să folosiți %(tag_count)d de etichete sau mai puțin"
+msgid "no"
+msgstr "niciunul"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Oops, ne cerem scuze - a apărut o eroare"
+
+#: utils/decorators.py:109
#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "până la 5 etichete, mai puțin de 20 de caractere pentru fiecare"
+msgid "Please login to post"
+msgstr "administrează metodele de autentificare"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
+
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "acest câmp este obligatoriu"
+
+#: utils/forms.py:60
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)s răspuns:\n"
-#~ " "
-#~ msgstr[1] ""
-#~ "\n"
-#~ " %(counter)s răspunsuri:\n"
-#~ " "
-#~ msgstr[2] ""
-#~ "\n"
-#~ " %(counter)s de răspunsuri:\n"
-#~ " "
+msgid "Choose a screen name"
+msgstr "alegeți un nume de utilizator"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "răspunsurile mai vechi vor fi afișate întâi"
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "numele de utilizator este obligatoriu"
-#~ msgid "oldest answers"
-#~ msgstr "cele mai vechi întrebări"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "ne pare rău, acest nume este luat, alegeți un alt nume"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "răspunsurile mai noi vor fi afișate întâi"
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "ne pare rău, acest nume nu este permis, alegeți un alt nume"
-#~ msgid "newest answers"
-#~ msgstr "cele mai noi răspunsuri"
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "ne pare rău, nu există nici un utilizator cu acest nume"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "cele mai votate răspunsuri vor fi afișate întâi"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+"ne pare rău, avem o problemă gravă, numele de utilizator este luat de mai "
+"mult utilizatori"
-#~ msgid "popular answers"
-#~ msgstr "răspunsuri populare"
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+"numele de utilizator poate fi format doar din litere, spații și liniuță de "
+"subliniere"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Răspunde propriei întrebări"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#~ msgid "Your answer"
-#~ msgstr "Răspunsul tău"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "adresa de email este obligatorie"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Fi primul care răspunde acestei întrebări!"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "introduceți o adresă de email validă"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "puteți răspunde anonim și vă puteți autentifica după aceea"
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr ""
+"această adresă de email este deja folosită de un alt utilizator, folosiți o "
+"altă adresă"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "răspunde propriei întrebări doar pentru a oferi un răspuns"
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "parola este obligatorie"
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "vă rugăm să dați doar răspunsul, fără discuții"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "retastați parola"
-#~ msgid "Answer the question"
-#~ msgstr "Răspunde întrebării"
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "ne pare rău, parolele tastate nu sunt identice, încercați din nou"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr " sau "
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "acum 2 zile"
-#~ msgid "email"
-#~ msgstr "email"
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "ieri"
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Etichete întrebare"
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "acum %(hr)d oră"
+msgstr[1] "acum %(hr)d ore"
+msgstr[2] "acum %(hr)d de ore"
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "acum %(min)d minut"
+msgstr[1] "acum %(min)d minute"
+msgstr[2] "acum %(min)d de minute"
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "A încărcat cu succes un avatar nou."
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "Ați actualizat cu succes propriul avatar."
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "Ați șters cu succes avatarele cerute."
+
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "Ne pare rău dar utilizatorii anonimi nu pot accesa inboxul"
+
+#: views/commands.py:112
#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "utilizatorii anonimi nu pot vota"
+
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "Ne pare rău, dar nu mai aveți voturi pentru azi... și mâine este o zi"
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "Mai ai %(votes_left)s voturi pentru azi"
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "Ne pare rău dar ceva nu este în regulă aici"
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "Ne pare rău dar utilizatorii anonimi nu pot accepta răspunsuri"
+
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr "abonament salvat, %(email)s necesită validare, vezi %(details_url)s"
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "frecvența de actualizare a emailurilor a fost definită drept zilnic"
+
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr "Abonomanetul la etichetă a fost anulat (<a href=\"%(url)s\">refă</a>)."
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+
+#: views/commands.py:600
#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "clic pentru a vedea cele mai vechi întrebări"
+msgid "Please sign in to vote"
+msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+#: views/commands.py:620
#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "actualizările email au fost anulate"
+msgid "Please sign in to delete/restore posts"
+msgstr "Vă rugăm să vă autentificați pentru a vă abona la: %(tags)s"
+
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "Despre %(site_name)s"
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "Sugestii pentru întrebări și răspunsuri"
+
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "Vă mulțumim pentru sugestii!"
+
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "Suntem interesați de sugestiile voastre!"
+
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Politica de confidențialitate"
+
+#: views/readers.py:133
+#, fuzzy, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+msgstr[1] ""
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+"#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# django.po (ubuntu-ro) #-#-#-#-#\n"
+
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr ""
+"Ne pare rău, comentariul pe care îl căutați a fost șters nu mai este "
+"accesibil"
+
+#: views/users.py:206
+msgid "moderate user"
+msgstr "moderează utilizator"
+
+#: views/users.py:381
+msgid "user profile"
+msgstr "profil utilizator"
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "privire de ansamblu profil utilizator"
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "activitate recentă utilizator"
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "profil - activitate recentă"
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "profil - răspunsuri"
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "profil - voturi"
+
+#: views/users.py:701
#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "abonarea la fluxul de întrebări"
+msgid "user karma"
+msgstr "reputație"
+#: views/users.py:702
#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "abonarea la fluxul de întrebări"
+msgid "Profile - User's Karma"
+msgstr "profil - reputație utilizator"
-#~ msgid "question asked"
-#~ msgstr "întrebare cu răspuns"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "întrebările favorite ale utilizatorului"
-#~ msgid "question was seen"
-#~ msgstr "întrebarea a fost văzută de"
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "profile - întrebări favorite"
-#~ msgid "times"
-#~ msgstr "ori"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "schimbările au fost salvate"
-#~ msgid "last updated"
-#~ msgstr "ultima actualizare"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "actualizările email au fost anulate"
-#~ msgid "Related questions"
-#~ msgstr "Întrebări similare"
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "profil - abonamente email"
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "Notifică-mă o dată pe zi când apar răspunsuri noi"
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "Utilizatorii anonimi nu pot încărca fișiere"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "Notifică-mă o dată pe săptămână când apar răspunsuri noi"
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "tipurile de fiÈ™iere permise sunt „%(file_types)sâ€"
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "Notifică-mă imediat ce apar răspunsuri noi"
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "mărimea maximă a fișierului încărcat este %(file_size)sK"
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "Puteți oricând să modificați frecvența notificărilor mergând la pagina "
-#~ "%(profile_url)s"
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+"Eroare la încărcarea fișierului. Vă rugăm să contactați administratorii "
+"siteului. Vă mulțumim."
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "odată ce vă veți autentifica, aici vă veți putea abona la orice "
-#~ "actualizare"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "%(username)s's profile"
-#~ msgstr "Profilul pentru %(username)s"
+#: views/writers.py:466
+#, fuzzy
+msgid "Please log in to answer questions"
+msgstr "vezi întrebările fără răspuns"
-#~ msgid "Edit user profile"
-#~ msgstr "Modifică profilul de utilizator"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Nu sunteți autentificat și nu puteți adăuga comentarii . Vă rugăm să vă <a "
+"href=\"%(sign_in_url)s\">autentificați</a>."
-#~ msgid "edit profile"
-#~ msgstr "modifică profil"
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "Utilizatorii anonimi nu pot modifica comentariile"
-#~ msgid "change picture"
-#~ msgstr "schimbă poza"
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Nu sunteți autentificat și nu puteți șterge comentarii . Vă rugăm să vă <a "
+"href=\"%(sign_in_url)s\">autentificați</a>."
-#~ msgid "Registered user"
-#~ msgstr "Utilizator înregistrat"
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
-#~ msgid "Screen Name"
-#~ msgstr "Nume afișat"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "folositi-aceste-caractere-in-etichete"
-#~ msgid "Update"
-#~ msgstr "Actualizează"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "această adresă de email va fi conectată cu gravatarul"
-#~ msgid "subscriptions"
-#~ msgstr "abonamente"
+#~ msgid "question_answered"
+#~ msgstr "întrebare_cu_răspuns"
-#~ msgid "Email subscription settings"
-#~ msgstr "Configurări abonamente email"
+#~ msgid "question_commented"
+#~ msgstr "întrebare_comentată"
-#~ msgid "email subscription settings info"
-#~ msgstr "informații configurări abonamente email"
+#~ msgid "answer_commented"
+#~ msgstr "răspuns_comentat"
-#~ msgid "Stop sending email"
-#~ msgstr "Nu mai trimite emailuri"
+#~ msgid "answer_accepted"
+#~ msgstr "răspuns_acceptat"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Închide întrebarea"
+#~ msgid "Incorrect username."
+#~ msgstr "Nume de utilizator incorect"
-#~ msgid "inbox"
-#~ msgstr "inbox"
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d "
+#~ "întrebare"
+#~ msgstr[1] ""
+#~ "%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d "
+#~ "întrebări"
+#~ msgstr[2] ""
+#~ "%(name)s, acesta este un antet de mesaj actualizat pentru %(num)d de "
+#~ "întrebări"
-#~ msgid "Sections:"
-#~ msgstr "Secțiuni:"
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Vizitați pagina askbot pentru a afla noutățile! Puteți duce vestea mai "
+#~ "departe - poate că cineva cunoscut are răspunsuri pentru aceste întrebări "
+#~ "sau dorește să posteze o întrebare."
-#~ msgid "forum responses (%(re_count)s)"
-#~ msgstr "răspunsuri site (%(re_count)s)"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate "
+#~ "este „zilnicâ€. Dacă primiÈ›i mai mult de un e-mail pe zi, adresaÈ›i-vă "
+#~ "administratorului paginii askbot pentru a raporta problema."
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "elemente marcate (%(flag_count)s)"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Frecvența aleasă de dumneavoastră pentru a primi întrebările selectate "
+#~ "este „săptămânalâ€. Dacă primiÈ›i mai mult de un e-mail pe săptămână, "
+#~ "adresați-vă administratorului paginii askbot pentru a raporta problema."
-#~ msgid "select:"
-#~ msgstr "selectează:"
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "Există posibilitatea unele legături pe care le-ați primit deja să vă fie "
+#~ "din nou trimise - cauza este de natură tehnică și va fi remediată. "
-#~ msgid "seen"
-#~ msgstr "văzut"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "mergeți la %(email_settings_link)s pentru a modifica frecvența e-mail-"
+#~ "urilor cu actualizări sau %(admin_email)s de administrare"
-#~ msgid "new"
-#~ msgstr "nou"
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "încărcarea de imagini este limitată utilizatorilor cu mai mult de "
+#~ "%(min_rep)s puncte de reputație"
-#~ msgid "none"
-#~ msgstr "niciunul"
+#~ msgid "blocked users cannot post"
+#~ msgstr "utilizatorii blocați nu pot introduce postări"
-#~ msgid "mark as seen"
-#~ msgstr "machează ca văzut"
+#~ msgid "suspended users cannot post"
+#~ msgstr "utilizatorii suspendați nu pot introduce postări"
-#~ msgid "mark as new"
-#~ msgstr "marcează ca nou"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "nu se poate marca ofensiv de mai multe ori"
-#~ msgid "remove"
-#~ msgstr "elimină"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "utilizatorii blocați nu pot marca postări"
-#~ msgid "update profile"
-#~ msgstr "actualizează profil"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "utilizatorii suspendați nu pot marca postări"
-#~ msgid "manage login methods"
-#~ msgstr "administrează metodele de autentificare"
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr ""
+#~ "este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam"
-#~ msgid "real name"
-#~ msgstr "nume real"
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "ați depășit %(max_flags_per_day)s"
-#~ msgid "member for"
-#~ msgstr "membru de"
+#, fuzzy
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr "utilizatorii blocați nu pot marca postări"
+
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "utilizatorii suspendați nu pot marca postări"
-#~ msgid "last seen"
-#~ msgstr "văzut ultima dată"
+#, fuzzy
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam"
+#~ msgstr[1] ""
+#~ "este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam"
+#~ msgstr[2] ""
+#~ "este nevoie de mai mult de %(min_rep)s puncte pentru a marca drept spam"
-#~ msgid "user website"
-#~ msgstr "pagină web utilizator"
+#~ msgid "cannot revoke old vote"
+#~ msgstr "voturile vechi nu pot fi revocate"
-#~ msgid "location"
-#~ msgstr "locație"
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s a modificat întrebarea"
-#~ msgid "age"
-#~ msgstr "vârstă"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s au adăugat %(new_answer_count)s întrebări noi"
-#~ msgid "age unit"
-#~ msgstr "ani"
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s au comentat întrebările"
-#~ msgid "todays unused votes"
-#~ msgstr "voturi nefolosite azi"
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s au comentat răspunsurile"
-#~ msgid "votes left"
-#~ msgstr "voturi rămase"
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s au comentat un răspuns"
-#~ msgid "moderation"
-#~ msgstr "moderare"
+#~ msgid "change %(email)s info"
+#~ msgstr "modifică informațiile despre %(email)s"
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "starea curentă a utilizatorului %(username)s este „%(status)sâ€"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "pentru a afla de ce este necesară o adresă de e-mail, consultați "
+#~ "%(gravatar_faq_url)s"
-#~ msgid "User status changed"
-#~ msgstr "Starea utilizatorului a fost schimbată"
+#~ msgid "Your new Email"
+#~ msgstr "Adresa nouă de e-mail"
-#~ msgid "Save"
-#~ msgstr "Salvează"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr ""
+#~ "validați informațiile despre %(email)s sau mergeți la %(change_email_url)s"
+
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr ""
+#~ "vechea adresă %(email)s a fost păstrată, puteți merge, dacă doriți, la "
+#~ "%(change_email_url)s"
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "Reputația curentă este %(reputation)s puncte"
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "adresa curentă %(email)s poate fi utilizată pentru acest lucru"
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "Reputația curentă a utilizatorului este %(reputation)s puncte"
+#~ msgid "thanks for verifying email"
+#~ msgstr "Mulțumim pentru verificarea adresei de e-mail"
-#~ msgid "User reputation changed"
-#~ msgstr "Reputația utilizatorului a fost schimbată"
+#~ msgid "email key not sent"
+#~ msgstr "cheia pentru adresa de e-mail nu a fost trimisă"
-#~ msgid "Subtract"
-#~ msgstr "Scade"
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr ""
+#~ "cheia pentru adresa de e-mail nu a fost trimisă %(email)s modificați "
+#~ "adresa de e-mail aici %(change_link)s"
-#~ msgid "Add"
-#~ msgstr "Adaugă"
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "înregistrați informații noi pentru contul %(provider)s, consultați "
+#~ "%(gravatar_faq_url)s"
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Trimite mesaj către %(username)s"
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "%(username)s există deja, alegeți un alt nume pentru \n"
+#~ " %(provider)s. Este necesară și o adresă de e-"
+#~ "mail, consultați %(gravatar_faq_url)s\n"
+#~ " "
#~ msgid ""
-#~ "An email will be sent to the user with 'reply-to' field set to your email "
-#~ "address. Please make sure that your address is entered correctly."
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
-#~ "Un mesaj email va fi trimis către utilizator cu câmpul „reply-to†definit "
-#~ "la adresa proprie de email. Verificați că adresa proprie este introdusă "
-#~ "corect."
+#~ "înregistrați informații noi pentru contul %(provider)s extern, consultați "
+#~ "%(gravatar_faq_url)s"
-#~ msgid "Message sent"
-#~ msgstr "Mesaj trimis"
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr ""
+#~ "înregistrați informații noi pentru conectarea prin contul Facebook, "
+#~ "consultați %(gravatar_faq_url)s"
-#~ msgid "Send message"
-#~ msgstr "Trimite mesaj"
+#~ msgid "This account already exists, please use another."
+#~ msgstr "Acest cont există deja, vă rugăm să utilizați un altul."
#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "utilizatorii suspendați nu pot marca postări"
+#~ msgid "Screen name label"
+#~ msgstr "Nume afișat"
#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "Profilul pentru %(username)s"
+#~ msgid "Email address label"
+#~ msgstr "adresa de email"
-#~ msgid "activity"
-#~ msgstr "activitate"
+#~ msgid "create account"
+#~ msgstr "creaţi un cont"
-#~ msgid "karma"
-#~ msgstr "reputație"
+#~ msgid "Login"
+#~ msgstr "Autentificare"
-#~ msgid "Your karma change log."
-#~ msgstr "Schimbările în reputație."
+#, fuzzy
+#~ msgid "Why use OpenID?"
+#~ msgstr "URL OpenID"
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "schimbăr în reputația utilizatorului %(user_name)s"
+#, fuzzy
+#~ msgid "reuse openid"
+#~ msgstr "redeschide"
-#~ msgid "overview"
-#~ msgstr "privire de ansamblu"
+#, fuzzy
+#~ msgid "Find out more"
+#~ msgstr "\" și în plus"
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> întrebare"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> întrebări"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> de întrebări"
+#, fuzzy
+#~ msgid "Get OpenID"
+#~ msgstr "URL OpenID"
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> răspuns"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> răspunsuri"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> de răspunsuri"
+#, fuzzy
+#~ msgid "Create Account"
+#~ msgstr "creaţi un cont"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "răspunsul a fost votat de %(answer_score)s de ori"
+#~ msgid "answer permanent link"
+#~ msgstr "legătură permanentă întrebare"
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "acest răspuns a fost ales drept corect"
+#, fuzzy
+#~ msgid "remove all flags"
+#~ msgstr "vezi toate etichetele"
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "(%(comment_count)s comentariu)"
-#~ msgstr[1] "răspunsul a fost comentat de %(comment_count)s ori"
-#~ msgstr[2] "răspunsul a fost comentat de %(comment_count)s de ori"
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "%(question_author)s a ales acest răspuns ca fiind cel corect"
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> vot"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> voturi"
-#~ msgstr[2] "<span class=\"count\">%(cnt)s</span> de voturi"
+#~ msgid "Related tags"
+#~ msgstr "Etichete asemămătoare"
-#~ msgid "user has voted up this many times"
-#~ msgstr "utilizatorul a votat pozitiv de atâtea ori"
+#~ msgid "Ask a question"
+#~ msgstr "Puneți o întrebare"
-#~ msgid "user voted down this many times"
-#~ msgstr "utilizatorul a votat negativ de atâtea ori"
+#~ msgid "Badges summary"
+#~ msgstr "Sumar insigne"
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> etichetă"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> etichete"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> de etichete"
+#~ msgid "gold badge description"
+#~ msgstr "descriere insignă de aur"
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> insignă"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> insigne"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> de insigne"
+#~ msgid "silver badge description"
+#~ msgstr "descriere insignă de argint"
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "indicații pentru răspunsuri"
+#~ msgid "bronze badge description"
+#~ msgstr "descriere insignă de bronz"
-#~ msgid "User profile"
-#~ msgstr "Profil utilizator"
+#~ 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 ""
+#~ "Este un site pentru întrebări și răspunsuri, nu un grup de discuții. De "
+#~ "aceea evitați purtarea unor discuții în răspunsurile dumneavoastră, mai "
+#~ "ales că funcția pentru comentarii permite ceva spațiu pentru discuții "
+#~ "scurte."
-#~ msgid "graph of user reputation"
-#~ msgstr "graficul reputației utilizatorului"
+#~ msgid "Rep system summary"
+#~ msgstr "Sumar al sistemului de reputație"
-#~ msgid "reputation history"
-#~ msgstr "istorie reputație"
+#~ msgid "use tags"
+#~ msgstr "utilizează etichete"
+
+#~ msgid "what is gravatar"
+#~ msgstr "ce este gravatarul"
+
+#~ msgid "gravatar faq info"
+#~ msgstr "informații utile despre gravatar"
#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "întrebări pe care utilizatorul le-a ales ca fiind favorite"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "îmi place această postare (efectuați clic din nou pentru a anula)"
-#~ msgid "recent activity"
-#~ msgstr "activitate recentă"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "îmi place acest răspuns (efectuați clic din nou pentru a anula)"
-#~ msgid "casted votes"
-#~ msgstr "voturi date"
+#, fuzzy
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr ""
+#~ "nu îmi place această postare (efectuați clic din nou pentru a anula)"
-#~ msgid "votes"
-#~ msgstr "voturi"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "nu îmi place acest răspuns (efectuați clic din nou pentru a anula)"
-#~ msgid "answer tips"
-#~ msgstr "indicații pentru răspunsuri"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] "afișează încă <strong>%(counter)s</strong> comentariu"
+#~ msgstr[1] "afișează încă <strong>%(counter)s</strong> comentarii"
+#~ msgstr[2] "afișează încă <strong>%(counter)s</strong> de comentarii"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "dați răspunsuri relevante pentru această comunitate"
+#~ msgid "posts per page"
+#~ msgstr "postări pe pagină"
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "încercați să oferiți un răspuns, nu să vă angajați într-o discuție"
+#~ msgid "Change tags"
+#~ msgstr "Schimbă etichetele"
-#~ msgid "please try to provide details"
-#~ msgstr "încercați să furnizați detalii"
+#~ msgid "reputation"
+#~ msgstr "reputație"
+
+#~ msgid "oldest answers"
+#~ msgstr "cele mai vechi întrebări"
+
+#~ msgid "newest answers"
+#~ msgstr "cele mai noi răspunsuri"
+
+#~ msgid "popular answers"
+#~ msgstr "răspunsuri populare"
+
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "puteți răspunde anonim și vă puteți autentifica după aceea"
+
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "răspunde propriei întrebări doar pentru a oferi un răspuns"
+
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "vă rugăm să dați doar răspunsul, fără discuții"
+
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
+
+#~ msgid "Answer the question"
+#~ msgstr "Răspunde întrebării"
+
+#~ msgid "question asked"
+#~ msgstr "întrebare cu răspuns"
-#~ msgid "be clear and concise"
-#~ msgstr "fiți clari și conciși"
+#~ msgid "question was seen"
+#~ msgstr "întrebarea a fost văzută de"
-#~ msgid "see frequently asked questions"
-#~ msgstr "consultați secțiunea întrebărilor frecvente"
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "Notifică-mă o dată pe zi când apar răspunsuri noi"
-#~ msgid "Markdown tips"
-#~ msgstr "indicii Markdown"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "Notifică-mă imediat ce apar răspunsuri noi"
-#~ msgid "*italic*"
-#~ msgstr "*înclinat*"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr ""
+#~ "Puteți oricând să modificați frecvența notificărilor mergând la pagina "
+#~ "%(profile_url)s"
-#~ msgid "**bold**"
-#~ msgstr "**îngroșat**"
+#~ msgid "email subscription settings info"
+#~ msgstr "informații configurări abonamente email"
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*înclinat* sau __înclinat__"
+#~ msgid "Stop sending email"
+#~ msgstr "Nu mai trimite emailuri"
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**îngroșat** sau __îngroșat__"
+#~ msgid "user website"
+#~ msgstr "pagină web utilizator"
-#~ msgid "link"
-#~ msgstr "legătură"
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] "<span class=\"count\">%(counter)s</span> răspuns"
+#~ msgstr[1] "<span class=\"count\">%(counter)s</span> răspunsuri"
+#~ msgstr[2] "<span class=\"count\">%(counter)s</span> de răspunsuri"
-#~ msgid "text"
-#~ msgstr "text"
+#~ msgid "reputation history"
+#~ msgstr "istorie reputație"
-#~ msgid "image"
-#~ msgstr "imagine"
+#~ msgid "recent activity"
+#~ msgstr "activitate recentă"
-#~ msgid "numbered list:"
-#~ msgstr "listă numerotată:"
+#~ msgid "casted votes"
+#~ msgstr "voturi date"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "de asemenea sunt suportate tag-uri HTML simple"
+#~ msgid "answer tips"
+#~ msgstr "indicații pentru răspunsuri"
-#~ msgid "learn more about Markdown"
-#~ msgstr "află mai multe despre Markdown"
+#~ msgid "please try to provide details"
+#~ msgstr "încercați să furnizați detalii"
#~ msgid "ask a question"
#~ msgstr "pune o întrebare"
-#~ msgid "login to post question info"
-#~ msgstr "autentificați-vă pentru a pune o întrebare"
-
#, fuzzy
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
@@ -5597,81 +7321,45 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Login/signup to post your question"
#~ msgstr "Autentifică-te / înregistrează-te pentru a adăuga răspunsul"
-#~ msgid "Ask your question"
-#~ msgstr "Puneți întrebarea"
-
-#~ msgid "Contributors"
-#~ msgstr "Contribuitori"
-
-#~ msgid "about"
-#~ msgstr "despre"
-
-#~ msgid "privacy policy"
-#~ msgstr "politica de confidențialitate"
-
-#~ msgid "give feedback"
-#~ msgstr "oferă o sugestie"
-
-#~ msgid "back to home page"
-#~ msgstr "înapoi la pagina de start"
-
-#~ msgid "%(site)s logo"
-#~ msgstr "siglă %(site)s"
-
-#~ msgid "users"
-#~ msgstr "utilizatori"
-
-#~ msgid "badges"
-#~ msgstr "insigne"
-
#~ msgid "question tips"
#~ msgstr "indicii căutare"
#~ msgid "please ask a relevant question"
#~ msgstr "puneți o întrebare relevantă"
-#~ msgid "please try provide enough details"
-#~ msgstr "încercați să oferiți suficiente detalii"
-
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "afișare"
-#~ msgstr[1] "afișări"
-#~ msgstr[2] "de afișări"
+#~ msgid "logout"
+#~ msgstr "ieșire"
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "răspuns"
-#~ msgstr[1] "răspunsuri"
-#~ msgstr[2] "de răspunsuri"
+#~ msgid "login"
+#~ msgstr "autentificare"
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "vot"
-#~ msgstr[1] "voturi"
-#~ msgstr[2] "de voturi"
+#~ msgid "no items in counter"
+#~ msgstr "nu sunt elemente în contor"
-#~ msgid "see unanswered questions"
-#~ msgstr "vezi întrebările fără răspuns"
+#~ msgid "choose password"
+#~ msgstr "alegeți parola"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "vezi întrebările tale favorite"
+#~ msgid "retype password"
+#~ msgstr "retastați parola"
-#~ msgid "karma:"
-#~ msgstr "reputație:"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s insignă"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s insigne"
+#~ msgstr[2] "%(badge_count)d %(badge_level)s de insigne"
-#~ msgid "badges:"
-#~ msgstr "insigne:"
+#~ msgid "user reputation in the community"
+#~ msgstr "reputația utilizatorului în comunitate"
-#~ msgid "logout"
-#~ msgstr "ieșire"
+#, fuzzy
+#~ msgid "Please log in to ask questions"
+#~ msgstr "autentificați-vă pentru a pune o întrebare"
-#~ msgid "login"
-#~ msgstr "autentificare"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "conținutul întrebării trebuie să fie mai lung decât 10 caractere"
-#~ msgid "settings"
-#~ msgstr "configurări"
+#~ msgid "Question: \"%(title)s\""
+#~ msgstr "ÃŽntrebare: „%(title)sâ€"
#~ msgid "(please enter a valid email)"
#~ msgstr "(introduceți o adresă de e-mail validă)"
@@ -5719,9 +7407,6 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "Question tags"
#~ msgstr "Etichete întrebare"
-#~ msgid "questions"
-#~ msgstr "întrebări"
-
#~ msgid "search"
#~ msgstr "caută"
@@ -5731,13 +7416,6 @@ msgstr "ne pare rău dar se pare că avem unele dificultăți tehnice"
#~ msgid "In:"
#~ msgstr "ÃŽn:"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Închide întrebarea"
-
-#~ msgid "Sort by:"
-#~ msgstr "Ordonează după:"
-
#~ msgid "Email (not shared with anyone):"
#~ msgstr "Email (nu este dezvăluit altor părți):"
diff --git a/askbot/locale/ro/LC_MESSAGES/djangojs.mo b/askbot/locale/ro/LC_MESSAGES/djangojs.mo
index ba92e8af..cdee9448 100644
--- a/askbot/locale/ro/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/ro/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/ro/LC_MESSAGES/djangojs.po b/askbot/locale/ro/LC_MESSAGES/djangojs.po
index 9bc40f29..26105f4f 100644
--- a/askbot/locale/ro/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ro/LC_MESSAGES/djangojs.po
@@ -2,24 +2,24 @@
# 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.
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: Askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
+"POT-Creation-Date: 2012-04-18 18:57-0500\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"
-"Language: \n"
+"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
"== 0) && (n != 0))) ? 2: 1));\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -37,38 +37,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -76,146 +76,76 @@ msgstr ""
msgid "loading..."
msgstr ""
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr ""
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr ""
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr ""
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr ""
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr ""
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr ""
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr ""
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr ""
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr ""
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -224,120 +154,124 @@ msgid "Please select at least one item"
msgstr ""
#: skins/common/media/js/user.js:58
+#, fuzzy
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
msgstr[1] ""
-msgstr[2] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[1] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
diff --git a/askbot/locale/ru/LC_MESSAGES/django.mo b/askbot/locale/ru/LC_MESSAGES/django.mo
index 7f478b30..e4fdb063 100644
--- a/askbot/locale/ru/LC_MESSAGES/django.mo
+++ b/askbot/locale/ru/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/ru/LC_MESSAGES/django.po b/askbot/locale/ru/LC_MESSAGES/django.po
index d760a28a..30744f83 100644
--- a/askbot/locale/ru/LC_MESSAGES/django.po
+++ b/askbot/locale/ru/LC_MESSAGES/django.po
@@ -1,58 +1,65 @@
-# Russian translation of messa and 2010 Askbot
-# Copyright (C) 2009 Gang Chen
-# This file is distributed under the same license as the Askbot package.
-# FIRST AUTHOR <evgeny.fadeev@gmail.com>, 2010.
+# English translation for CNPROG package.
+# Copyright (C) 2009 Gang Chen, 2010 Askbot
+# This file is distributed under the same license as the CNPROG package.
#
+# Translators:
+# <alexander@burmystrov.com>, 2012.
+# FIRST AUTHOR <evgeny.fadeev@gmail.com>, 2010.
+# <olloff@gmail.com>, 2012.
+# Slava <admin@bacherikov.org.ua>, 2012.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:38-0600\n"
-"PO-Revision-Date: 2011-10-04 01:46\n"
-"Last-Translator: <evgeny.fadeev@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:49-0500\n"
+"PO-Revision-Date: 2012-03-30 13:12+0000\n"
+"Last-Translator: olloff <olloff@gmail.com>\n"
+"Language-Team: Russian (http://www.transifex.net/projects/p/askbot/language/"
+"ru/)\n"
+"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
-"X-Translated-Using: django-rosetta 0.6.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr ""
-"Извините, но к Ñожалению Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупна Ð´Ð»Ñ Ð½ÐµÐ°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… "
-"пользователей"
+"К Ñожалению, Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупна Ð´Ð»Ñ Ð½ÐµÐ°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… пользователей"
-#: feed.py:26 feed.py:100
+#: feed.py:26 feed.py:100 feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "Индивидуально избранные вопроÑÑ‹"
+msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð° вопроÑов"
-#: feed.py:100
+#: feed.py:100 feed.py:90
msgid "latest questions"
msgstr "новые вопроÑÑ‹"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Удалить аккаунт"
+msgstr ""
+"выберите Ñтрану"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "Страна"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "Ñто поле обÑзательное"
+msgstr ""
+"Заполните поле \"Страна\""
-#: forms.py:104
+#: forms.py:104 skins/default/templates/blocks/answer_edit_tips.html:43
+#: skins/default/templates/blocks/answer_edit_tips.html:47
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "заголовок"
@@ -64,15 +71,20 @@ msgstr "пожалуйÑта, введите заголовок, ÑодержаÑ
msgid "title must be > 10 characters"
msgstr "заголовок должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ 10 букв"
-#: forms.py:119
+#: forms.py:119 forms.py:149
msgid "content"
-msgstr "оÑновное Ñодержание"
+msgstr ""
+"оÑновное Ñодержание"
#: forms.py:125
msgid "question content must be > 10 characters"
msgstr "Ñодержание вопроÑа должно быть более 10-ти букв"
-#: forms.py:134
+#: forms.py:134 skins/default/templates/macros.html:659
+#: skins/default/templates/macros.html:671
+#: skins/default/templates/blocks/header.html:25 forms.py:185
+#: skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "Ñ‚Ñги"
@@ -83,309 +95,333 @@ msgstr ""
"Теги - ключевые Ñлова, характеризующие вопроÑ. Теги отделÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð¼, "
"может быть иÑпользовано до 5 тегов."
-#: forms.py:164
+#: forms.py:164 skins/default/templates/question_retag.html:58 forms.py:222
msgid "tags are required"
-msgstr "теги (ключевые Ñлова) обÑзательны"
+msgstr ""
+"Ñ‚Ñги обÑзательны"
-#: forms.py:173
+#: forms.py:173 forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
-msgstr[0] "пожалуйÑта введите не более %(tag_count)d Ñлов"
-msgstr[1] "пожалуйÑта введите не более %(tag_count)d Ñлова"
-msgstr[2] "пожалуйÑта введите не более %(tag_count)d Ñлов"
+msgstr[0] ""
+"пожалуйÑта введите не более %(tag_count)d Ñлова"
+msgstr[1] ""
+"пожалуйÑта введите не более %(tag_count)d Ñлов"
+msgstr[2] ""
+"пожалуйÑта введите не более %(tag_count)d Ñлов"
-#: forms.py:181
+#: forms.py:181 forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
+"Ðеобходим Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один из Ñледующих Ñ‚Ñгов : %(tags)s"
-#: forms.py:190
+#: forms.py:190 forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
-msgstr[0] "каждое Ñлово должно быть не более %(max_chars)d букв"
-msgstr[1] "каждое Ñлово должно быть не более %(max_chars)d буквы"
-msgstr[2] "каждое Ñлово должно быть не более %(max_chars)d букв"
+msgstr[0] ""
+"каждый Ñ‚Ñг должен Ñодержать не более %(max_chars)d знака"
+msgstr[1] ""
+"каждый Ñ‚Ñг должен Ñодержать не более %(max_chars)d знаков"
+msgstr[2] ""
+"каждый Ñ‚Ñг должен Ñодержать не более %(max_chars)d знаков"
#: forms.py:198
msgid "use-these-chars-in-tags"
-msgstr "допуÑкаетÑÑ Ð¸Ñпользование только Ñимвола Ð´ÐµÑ„Ð¸Ñ \"-\""
+msgstr ""
+"иÑпользуйте только буквы и Ñимвол Ð´ÐµÑ„Ð¸Ñ \"-\""
-#: forms.py:233
+#: forms.py:233 forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
+"вики (карма не приÑуждаетÑÑ Ð¸ многие могут редактировать поÑÑ‚)"
-#: forms.py:234
+#: forms.py:234 forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
msgstr ""
-"еÑли вы отметите \"вики ÑообщеÑтва\", то Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ ответ не дадут вам кармы и "
-"Ð¸Ð¼Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° не будет отображатьÑÑ"
+"еÑли вы отметите опцию \"Вики ÑообщеÑтва\", то Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ ответ не дадут вам "
+"кармы и Ð¸Ð¼Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° не будет отображатьÑÑ"
-#: forms.py:250
+#: forms.py:250 forms.py:311
msgid "update summary:"
msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± обновлениÑÑ…:"
-#: forms.py:251
+#: forms.py:251 forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
msgstr ""
-"еÑли у Ð’Ð°Ñ ÐµÑÑ‚ÑŒ желание, то кратко опишите здеÑÑŒ Ñуть вашей правки (например "
-"- иÑправление орфографии, грамматики, ÑтилÑ)"
+"кратко опишите здеÑÑŒ Ñуть вашей правки (например - иÑправление орфографии, "
+"грамматики, ÑтилÑ, Ñто необÑзательно)"
-#: forms.py:327
+#: forms.py:327 forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr "Введите количеÑтво очков которые Ð’Ñ‹ ÑобираетеÑÑŒ вычеÑÑ‚ÑŒ или добавить."
+msgstr ""
+"Введите количеÑтво очков которые Ð’Ñ‹ ÑобираетеÑÑŒ вычеÑÑ‚ÑŒ или добавить"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:341 const/__init__.py:250 forms.py:400 const/__init__.py:253
msgid "approved"
-msgstr "проÑтой гражданин"
+msgstr ""
+"одобрен"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:342 const/__init__.py:251 forms.py:401 const/__init__.py:254
msgid "watched"
-msgstr "поднадзорный пользователь"
+msgstr ""
+"под надзором"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:343 const/__init__.py:252 forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr "ограниченный в правах"
+msgstr ""
+"ограничен в правах"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:344 const/__init__.py:253 forms.py:403 const/__init__.py:256
msgid "blocked"
-msgstr "заблокированный пользователь"
+msgstr ""
+"заблокирован"
-#: forms.py:346
-#, fuzzy
+#: forms.py:346 forms.py:405
msgid "administrator"
-msgstr "ÐдминиÑтратор Ñайта"
+msgstr "админиÑтратор"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:347 const/__init__.py:249 forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "модератор"
-#: forms.py:367
+#: forms.py:367 forms.py:426
msgid "Change status to"
-msgstr "Измененить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð°"
+msgstr ""
+"Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð°"
-#: forms.py:394
+#: forms.py:394 forms.py:453
msgid "which one?"
-msgstr "который?"
+msgstr ""
+"выберите"
-#: forms.py:415
+#: forms.py:415 forms.py:474
msgid "Cannot change own status"
-msgstr "Извините, но ÑобÑтвенный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ нельзÑ"
+msgstr ""
+"Ðевозможно изменить ÑобÑтвенный ÑтатуÑ"
-#: forms.py:421
+#: forms.py:421 forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-"Извините, но у Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти давать другим пользователÑм ÑÑ‚Ð°Ñ‚ÑƒÑ "
-"модератора"
+"У Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти приÑваивать другим пользователÑм ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°"
-#: forms.py:428
+#: forms.py:428 forms.py:487
msgid "Cannot change status of another moderator"
-msgstr "Извините, но у Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти изменÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð²"
+msgstr ""
+"У Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти изменÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð²"
-#: forms.py:434
-#, fuzzy
+#: forms.py:434 forms.py:493
msgid "Cannot change status to admin"
-msgstr "Извините, но ÑобÑтвенный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ нельзÑ"
+msgstr ""
+"Ðевозможно изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° \"админиÑтратор\""
-#: forms.py:440
+#: forms.py:440 forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
"ЕÑли Ð’Ñ‹ хотите изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s, Ñто можно Ñделать "
-"ÑдеÑÑŒ"
+"здеÑÑŒ"
-#: forms.py:449
+#: forms.py:449 forms.py:508
msgid "Subject line"
msgstr "Тема"
-#: forms.py:456
+#: forms.py:456 forms.py:515
msgid "Message text"
msgstr "ТекÑÑ‚ ÑообщениÑ"
#: forms.py:542
-#, fuzzy
-msgid "Your name (optional):"
+msgid "Your name:"
msgstr "Ваше имÑ:"
#: forms.py:543
-#, fuzzy
-msgid "Email:"
-msgstr "email"
+msgid "Email (not shared with anyone):"
+msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты (держитÑÑ Ð² Ñекрете):"
-#: forms.py:545
+#: forms.py:544 forms.py:533
msgid "Your message:"
msgstr "Ваше Ñообщение:"
-#: forms.py:550
-msgid "I don't want to give my email or receive a response:"
-msgstr ""
-
-#: forms.py:572
-msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
-
-#: forms.py:611
-#, fuzzy
+#: forms.py:581 forms.py:599
msgid "ask anonymously"
-msgstr "анонимный"
+msgstr ""
+"ÑпроÑить анонимно"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
+"ПоÑтавьте галочку, еÑли не хотите раÑкрывать Ñвою личноÑÑ‚ÑŒ, когда задаете "
+"вопроÑ"
-#: forms.py:773
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Ð’Ñ‹ задали Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾, еÑли решите раÑкрыть Ñвою личноÑÑ‚ÑŒ, отметьте Ñту "
+"опцию."
-#: forms.py:777
+#: forms.py:747 forms.py:773
msgid "reveal identity"
msgstr ""
+"убрать анонимноÑÑ‚ÑŒ"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"ПроÑтите, только Ñоздатель анонимного вопроÑа может раÑкрыть Ñвою личноÑÑ‚ÑŒ, "
+"пожалуйÑта, Ñнимите галочку."
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"ПроÑтите, похоже, правила изменилиÑÑŒ - больше невозможно задавать вопроÑÑ‹ "
+"анонимно. ПожалуйÑта, отметьте опцию \"раÑкрыть личноÑÑ‚ÑŒ\" или перезагрузите "
+"Ñту Ñтраницу и попробуйте отредактировать Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñнова."
-#: forms.py:886
-#, fuzzy
+#: forms.py:856
msgid "this email will be linked to gravatar"
msgstr "Этот Ð°Ð´Ñ€ÐµÑ Ð°ÑÑоциирован Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ аватаром (gravatar)"
-#: forms.py:893
+#: forms.py:863 forms.py:888
msgid "Real name"
msgstr "ÐаÑтоÑщее имÑ"
-#: forms.py:900
+#: forms.py:870 forms.py:895
msgid "Website"
-msgstr "ВебÑайт"
+msgstr ""
+"Веб-Ñтраница"
-#: forms.py:907
-#, fuzzy
+#: forms.py:877 forms.py:902
msgid "City"
-msgstr "Критик"
+msgstr "Город"
-#: forms.py:916
-#, fuzzy
+#: forms.py:886 forms.py:911
msgid "Show country"
-msgstr "Показывать подвал Ñтраницы."
+msgstr "Показать Ñтрану"
-#: forms.py:921
+#: forms.py:891 forms.py:916
msgid "Date of birth"
-msgstr "День рождениÑ"
+msgstr ""
+"Дата рождениÑ"
-#: forms.py:922
+#: forms.py:892 forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "показываетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ возраÑÑ‚, формат ГГГГ-ММ-ДД"
-#: forms.py:928
+#: forms.py:898 forms.py:923
msgid "Profile"
msgstr "Профиль"
-#: forms.py:937
+#: forms.py:907 forms.py:932
msgid "Screen name"
-msgstr "Ðазвание Ñкрана"
+msgstr ""
+"ПÑевдоним"
-#: forms.py:968 forms.py:969
+#: forms.py:938 forms.py:939 forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
-msgstr "Ñтот Ð°Ð´Ñ€ÐµÑ ÑƒÐ¶Ðµ зарегиÑтрирован, пожалуйÑта введите другой"
+msgstr ""
+"Ñтот Ð°Ð´Ñ€ÐµÑ ÑƒÐ¶Ðµ зарегиÑтрирован, пожалуйÑта введите другой"
-#: forms.py:976
+#: forms.py:946 forms.py:971
msgid "Choose email tag filter"
msgstr "Выберите тип фильтра по темам (ключевым Ñловам)"
-#: forms.py:1023
+#: forms.py:993 forms.py:1018
msgid "Asked by me"
msgstr "Заданные мной"
-#: forms.py:1026
+#: forms.py:996 forms.py:1021
msgid "Answered by me"
msgstr "Отвеченные мной"
-#: forms.py:1029
+#: forms.py:999 forms.py:1024
msgid "Individually selected"
-msgstr "Выбранные индивидуально"
+msgstr ""
+"Выбранные мной"
-#: forms.py:1032
+#: forms.py:1002 forms.py:1027
msgid "Entire forum (tag filtered)"
-msgstr "ВеÑÑŒ форум (фильтрованный по темам)"
+msgstr ""
+"ВеÑÑŒ форум (фильтрованный по Ñ‚Ñгам)"
-#: forms.py:1036
+#: forms.py:1006 forms.py:1031
msgid "Comments and posts mentioning me"
-msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ упоминают моё имÑ"
+msgstr ""
+"Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² которых упоминаетÑÑ Ð¼Ð¾Ñ‘ имÑ"
-#: forms.py:1115
+#: forms.py:1085 forms.py:1115
msgid "okay, let's try!"
msgstr "хорошо - попробуем!"
-#: forms.py:1116
+#: forms.py:1086
msgid "no community email please, thanks"
msgstr "ÑпаÑибо - не надо"
-#: forms.py:1120
+#: forms.py:1090 forms.py:1112
msgid "please choose one of the options above"
msgstr "пожалуйÑта Ñделайте Ваш выбор (Ñм. выше)"
-#: urls.py:57
+#: urls.py:41
msgid "about/"
-msgstr ""
+msgstr "o-nas/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
-msgstr ""
+msgstr "faq/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
-msgstr ""
+msgstr "politika-informacii/"
-#: urls.py:61 urls.py:66
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "otvety/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
-msgstr ""
+msgstr "redaktirovat/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
-msgstr ""
+msgstr "versii/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "voprosy/"
#: urls.py:82
msgid "ask/"
-msgstr "sprashivaem/"
+msgstr "sprosit/"
-#: urls.py:92
+#: urls.py:89 urls.py:92
msgid "retag/"
-msgstr "izmenyaem-temy/"
+msgstr ""
+"smenit-tag/"
-#: urls.py:97
+#: urls.py:94 urls.py:97
msgid "close/"
-msgstr "zakryvaem/"
+msgstr ""
+"zakryt/"
-#: urls.py:102
+#: urls.py:99 urls.py:102
msgid "reopen/"
-msgstr "otkryvaem-zanovo/"
+msgstr ""
+"otkryt-snova/"
#: urls.py:107
msgid "answer/"
@@ -393,64 +429,62 @@ msgstr "otvet/"
#: urls.py:112
msgid "vote/"
-msgstr "golosuem/"
+msgstr "zolosovat/"
-#: urls.py:153
+#: urls.py:158
msgid "tags/"
-msgstr "temy/"
+msgstr "tegi/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "podpisatsya-na-tagi/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
-msgstr "lyudi/"
+msgstr "polzovateli/"
-#: urls.py:214
+#: urls.py:211 urls.py:219
msgid "subscriptions/"
-msgstr "подпиÑки/"
+msgstr "podpiski/"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "polzovateli/obnovlenie_so_svoim_avatarom/"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "nagrady/"
-#: urls.py:241
+#: urls.py:238 urls.py:246
msgid "messages/"
-msgstr "soobsheniya/"
+msgstr ""
+"soobscheniya/"
-#: urls.py:241
+#: urls.py:238 urls.py:246
msgid "markread/"
-msgstr "otmechaem-prochitannoye/"
+msgstr ""
+"pometit-kak-prochitanoe/"
-#: urls.py:257
+#: urls.py:254 urls.py:262
msgid "upload/"
-msgstr "zagruzhaem-file/"
+msgstr ""
+"zagruzit/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
-msgstr "obratnaya-svyaz/"
+msgstr "otziv/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "vopros/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:304 setup_templates/settings.py:203
+#: skins/default/templates/authopenid/providers_javascript.html:7 urls.py:312
+#: setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
-msgstr "account/"
-
-#: conf/access_control.py:8
-#, fuzzy
-msgid "Access control settings"
-msgstr "ÐаÑтройка политики пользователей"
-
-#: conf/access_control.py:17
-msgid "Allow only registered user to access the forum"
msgstr ""
+"polzovatel/"
#: conf/badges.py:13
msgid "Badge settings"
@@ -474,7 +508,8 @@ msgstr "Хороший ответ: минимум голоÑов за ответ
#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr " Замечательный ответ: минимум голоÑов за ответ"
+msgstr ""
+"Замечательный ответ: минимум голоÑов за ответ"
#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
@@ -538,19 +573,24 @@ msgstr "ПопулÑрный вопроÑ: минимальное количеÑ
#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
-msgstr "Гениальный вопроÑ: минимальное количеÑтво закладок"
+msgstr ""
+"Гениальный вопроÑ: минимальное количеÑтво закладок"
#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "Комментатор: минимум комментариев"
#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "ТакÑономиÑÑ‚: минимальное чиÑло иÑпользованных Ñ‚Ñгов"
#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "ЭнтузиаÑÑ‚: минимум дней"
+
+#: conf/banners.py:15
+msgid "Banners"
+msgstr "Баннеры"
#: conf/email.py:15
msgid "Email and email alert settings"
@@ -558,312 +598,328 @@ msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° и ÑиÑтема оповещений
#: conf/email.py:24
msgid "Prefix for the email subject line"
-msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ñлектронной почты в Ñтроке темы"
+msgstr ""
+"ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ñлектронной почты в Ñтроке темы"
#: conf/email.py:26
msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"Эта наÑтройка по-умолчанию Ñовпадает Ñ Ð½Ð°Ñтройкой DJango "
+"EMAIL_SUBJECT_PREFIX. Введенное значение изменит наÑтройки по-умолчанию."
-#: conf/email.py:38
+#: conf/email.py:38 conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr "МакÑимальное количеÑтво новоÑтей в оповеÑтительном Ñообщении"
+msgstr ""
+"МакÑимальное количеÑтво новоÑтей в Ñообщении на email"
-#: conf/email.py:48
-#, fuzzy
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
+msgstr "ЧаÑтота ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñех вопроÑов по-умолчанию"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° чаÑтоты обновлений, отправлÑемых через E-mail длÑ: вÑех "
+"вопроÑов."
-#: conf/email.py:62
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
+msgstr "ЧаÑтота ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов, которые задал пользователь"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° чаÑтоты обновлений, отправлÑемых через email длÑ: вопроÑов, "
+"которые задал пользователь."
-#: conf/email.py:76
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
+msgstr "ЧаÑтота ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов, на которые ответил пользователь"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° чаÑтоты обновлений, отправлÑемых через E-mail длÑ: "
+"вопроÑов, на которые ответил пользователь."
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
-msgstr ""
+msgstr "ЧаÑтота ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов, которые выбрал пользователь"
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° чаÑтоты обновлений, отправлÑемых через E-mail длÑ: "
+"вопроÑов, которые выбрал пользователь."
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
-msgstr ""
+msgstr "ЧаÑтота ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ð¹ и комментариев"
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° чаÑтоты обновлений, отправлÑемых через E-mail длÑ: "
+"упоминаний и комментариев."
-#: conf/email.py:119
-#, fuzzy
+#: conf/email.py:119 conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr "Ðеотвеченных вопроÑов нет"
+msgstr ""
+"ПериодичеÑки напоминать о неотвеченных вопроÑах"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
+"ПРИМЕЧÐÐИЕ: Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы иÑпользовать Ñту функцию, необходимо периодичеÑки "
+"запуÑкать команду ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"send_unanswered_question_reminders"
+"\" (например, уÑтановив задачу в cron c заданной чаÑтотой)"
-#: conf/email.py:134
-#, fuzzy
+#: conf/email.py:134 conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "Ðеотвеченных вопроÑов нет"
+msgstr ""
+"Дней до начала раÑÑылки напоминаний о неотвеченных вопроÑах"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
+"Как чаÑто поÑылать Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¾ неотвеченных вопроÑах (дней между "
+"напоминаниÑми)."
-#: conf/email.py:157
-#, fuzzy
+#: conf/email.py:157 conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
-msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
+msgstr ""
+"МакÑимальное чиÑло напоминаний о неотвеченных вопроÑах"
-#: conf/email.py:168
-#, fuzzy
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
-msgstr "Ðеотвеченных вопроÑов нет"
+msgstr "ПоÑылать периодичеÑкие Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° лучшего ответа"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
+"ПРИМЕЧÐÐИЕ: Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы иÑпользовать Ñту функцию, необходимо периодичеÑки "
+"запуÑкать команду ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"send_accept_answer_reminders\" (например, "
+"уÑтановив задачу в cron c заданной чаÑтотой)"
-#: conf/email.py:183
-#, fuzzy
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
-msgstr "Ðеотвеченных вопроÑов нет"
+msgstr "Дней перед началом отправки уведомлений Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
+"Как чаÑто поÑылать Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° ответа (в днÑÑ… между отправлÑемыми "
+"напоминаниÑми)"
-#: conf/email.py:206
-#, fuzzy
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
-msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
+msgstr "МакÑ. чиÑло отоÑланных напоминаний Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° наилучшего ответа"
-#: conf/email.py:218
+#: conf/email.py:218 conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-"Требовать Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты перед публикацией Ñообщений"
+"Требовать Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ email-адреÑа перед публикацией Ñообщений"
-#: conf/email.py:219
+#: conf/email.py:219 conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
"Подтверждение адреÑа Ñлектронной почты оÑущеÑтвлÑетÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¾Ð¹ ключа "
"проверки на email"
-#: conf/email.py:228
+#: conf/email.py:228 conf/email.py:237
msgid "Allow only one account per email address"
-msgstr "Позволить только один аккаунт на каждый Ñлектронный почтовый адреÑ"
+msgstr ""
+"Разрешить только один аккаунт на каждый email-адреÑ"
-#: conf/email.py:237
+#: conf/email.py:237 conf/email.py:246
msgid "Fake email for anonymous user"
-msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
+msgstr ""
+"Поддельный email-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: conf/email.py:238
+#: conf/email.py:238 conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-"ИÑпользуйте Ñту уÑтановку Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð° пользователей которые не ввели Ð°Ð´Ñ€ÐµÑ "
-"Ñлектронной почты."
+"Эта уÑтановка предназначена Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð¾Ð¼ пользователей которые не "
+"ввели email-адреÑ."
-#: conf/email.py:247
-#, fuzzy
+#: conf/email.py:247 conf/email.py:256
msgid "Allow posting questions by email"
msgstr ""
-"<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾</"
-"span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на Ñтраницу "
-"авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет опубликован "
-"как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш форум очень легко. "
-"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
-"одну минуту."
+"Разрешить задавать вопроÑÑ‹ по email"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Прежде чем включать Ñту наÑтройку, пожалуйÑта, заполните блок наÑтроек IMAP "
+"в файле settings.py"
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "Заменить пробелы на тире в Ñ‚Ñгах, приÑланных по email."
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"Эта наÑтройка применÑетÑÑ Ðº Ñ‚Ñгам, запиÑанным в поле \"Тема\" вопроÑов, "
+"приÑланных по email."
#: conf/external_keys.py:11
-#, fuzzy
msgid "Keys for external services"
-msgstr "URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
+msgstr "Ключи Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ñ… ÑервиÑов"
#: conf/external_keys.py:19
msgid "Google site verification key"
-msgstr "Идентификационный ключ Google"
+msgstr ""
+"Идентификационный ключ Ð´Ð»Ñ Google"
#: conf/external_keys.py:21
-#, fuzzy, python-format
+#, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
-"Этот ключ поможет поиÑковику Google индекÑировать Ваш форум, пожалуйÑта "
-"получите ключ на <a href=\"%(google_webmasters_tools_url)s\">инÑтрументарии "
-"Ð´Ð»Ñ Ð²ÐµÐ±Ð¼Ð°Ñтеров</a> от Google"
+"Этот ключ помогает Google индекÑировать ваш Ñайт, пожалуйÑта, получите его "
+"на <a href=\"%(url)s?hl=%(lang)s\">Ñтранице инÑтрументов Ð´Ð»Ñ Ð²ÐµÐ±Ð¼Ð°Ñтеров "
+"Google</a>"
#: conf/external_keys.py:36
msgid "Google Analytics key"
-msgstr "Ключ Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ ÑервиÑа \"Google-Analytics\""
+msgstr ""
+"Ключ Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ ÑервиÑа \"Google Analytics\""
#: conf/external_keys.py:38
-#, fuzzy, python-format
+#, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
-"Получите ключ <a href=\"%(ga_site)s\">по Ñтой ÑÑылке</a>, еÑли Ð’Ñ‹ "
-"ÑобираетеÑÑŒ пользоватьÑÑ Ð¸Ð½Ñтрументом Google-Analytics"
+"Получите его на <a href=\"%(url)s\">Ñтранице Google Analytics</a>, еÑли "
+"хотите иÑпользовать Google Analytics Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸Ñ‚Ð¾Ñ€Ð¸Ð½Ð³Ð° Вашего Ñайта"
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr "Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:60 conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Публичный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:68 conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Секретный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:70
-#, fuzzy, python-format
+#: conf/external_keys.py:72
+#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
-"Recaptcha Ñто ÑредÑтво, которое помогает отличить живых людей от надоедливых "
-"Ñпам-роботов. ПожалуйÑта получите необходимые ключи на Ñайте <a href="
-"\"http://recaptcha.net\">recaptcha.net</a>"
+"Recaptcha - Ñто инÑтрумент, который помогает отличить реальных людей от "
+"назойливых Ñпам-ботов. ПожалуйÑта, получите Ñтот и публичный ключ на <a href="
+"\"%(url)s\">%(url)s</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:82 conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Facebook API"
-#: conf/external_keys.py:84
-#, fuzzy, python-format
+#: conf/external_keys.py:86
+#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
"\">facebook create app</a> site"
msgstr ""
-"Пара ключей Ð´Ð»Ñ Facebook API позволит пользователÑм Вашего форума "
-"авторизоватьÑÑ Ñ‡ÐµÑ€ÐµÐ· их аккаунт на Ñоциальной Ñети Facebook. Оба ключа можно "
-"получить <a href=\"http://www.facebook.com/developers/createapp.php\">здеÑÑŒ</"
-"a>"
+"Ключ Facebook API и Ñекретный ключ Facebook позволÑÑŽÑ‚ иÑпользовать Facebook "
+"Connect Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° на Ваш Ñайт. ПожалуйÑта, получите Ñти ключи на <a href="
+"\"%(url)s\">Ñтранице ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Facebook</a> site"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:97 conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Секретный ключ Ð´Ð»Ñ Facebook"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:105 conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer key)"
-#: conf/external_keys.py:107
-#, fuzzy, python-format
+#: conf/external_keys.py:109
+#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
-"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
-"Twitter API</a>"
+"ПожалуйÑта, зарегиÑтрируйте Ñвой форум на <a href=\"%(url)s\">Ñтранице "
+"приложений Twitter</a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:118 conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr "Секретный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer secret)"
+msgstr ""
+"Секретный ключ Twitter API (consumer secret)"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:126 conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr "Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
-#: conf/external_keys.py:128
-#, fuzzy, python-format
+#: conf/external_keys.py:130
+#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
-"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
-"Twitter API</a>"
+"ПожалуйÑта, зарегиÑтрируйте Ñвой форум на <a href=\"%(url)s\">Ñтранице "
+"разработчиков LinkedIn</a>"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:139 conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr "Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
-#: conf/external_keys.py:147
-#, fuzzy
+#: conf/external_keys.py:147 conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr "Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
+msgstr ""
+"Публичный ключ Ð´Ð»Ñ identi.ca"
-#: conf/external_keys.py:149
-#, fuzzy, python-format
+#: conf/external_keys.py:151
+#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
-"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
-"Twitter API</a>"
+"ПожалуйÑта, зарегиÑтрируйте Ñвой форум на <a href=\"%(url)s\">Ñтранице "
+"приложений Identi.ca</a>"
-#: conf/external_keys.py:160
-#, fuzzy
+#: conf/external_keys.py:160 conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr "Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
+msgstr ""
+"Секретный ключ Ð´Ð»Ñ identi.ca (consumer secret)"
-#: conf/external_keys.py:168
+#: conf/external_keys.py:168 conf/ldap.py:17
msgid "Use LDAP authentication for the password login"
msgstr ""
"ИÑпользовать протокол LDAP Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ через пароль и Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
@@ -878,7 +934,8 @@ msgstr "URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
#: conf/external_keys.py:193
msgid "Explain how to change LDAP password"
-msgstr "Об‎‎ъÑÑните, как изменить LDAP пароль"
+msgstr ""
+"Об‎‎ъÑÑните здеÑÑŒ, как изменить LDAP пароль"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
@@ -886,29 +943,29 @@ msgstr "ПроÑтые Ñтраницы - \"о наÑ\", \"политика о Ð
#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
-msgstr "О Ð½Ð°Ñ (в формате html)"
+msgstr ""
+"ТекÑÑ‚ Ñтраницы \"О наÑ\" форума (в формате html)"
#: conf/flatpages.py:22
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"about\" page to check your input."
msgstr ""
-"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
-"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
+"Сохраните, а затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
+"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти ввода."
#: conf/flatpages.py:32
-#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
-msgstr "О Ð½Ð°Ñ (в формате html)"
+msgstr ""
+"ТекÑÑ‚ Ñтраницы \"ЧаÑто задаваемые вопроÑÑ‹/FAQ\" (в формате html)"
#: conf/flatpages.py:35
-#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
-"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
-"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
+"Сохраните, а затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML-"
+"валидатор</a> на Ñтранице FAQ, чтобы проверить введенные данные."
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
@@ -920,12 +977,11 @@ msgid ""
"the \"privacy\" page to check your input."
msgstr ""
"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
-"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
+"валидатор</a> на Ñтранице \"О наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
#: conf/forum_data_rules.py:12
-#, fuzzy
msgid "Data entry and display rules"
-msgstr "Ввод и отображение данных"
+msgstr "Правила Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
#: conf/forum_data_rules.py:22
#, python-format
@@ -937,29 +993,24 @@ msgstr ""
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
-"Отметьте, еÑли Ð’Ñ‹ хотите иÑпользовать функцию \"общее вики\" Ð´Ð»Ñ Ñообщений "
-"на форуме"
+"Отметьте, еÑли Ð’Ñ‹ хотите иÑпользовать функцию \"Вики ÑообщеÑтва\""
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Разрешить задавать вопроÑÑ‹ анонимно"
#: conf/forum_data_rules.py:44
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"Пользователи на получают репутацию за анонимные вопроÑÑ‹ и их личноÑÑ‚ÑŒ не "
+"будет раÑкрыта, пока они не изменÑÑ‚ Ñвоего мнениÑ"
#: conf/forum_data_rules.py:56
-#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
-"<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾</"
-"span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на Ñтраницу "
-"авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет опубликован "
-"как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш форум очень легко. "
-"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
-"одну минуту."
+"Разрешить оÑтавлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ входа на Ñайт"
#: conf/forum_data_rules.py:58
msgid ""
@@ -968,123 +1019,149 @@ msgid ""
"to check for pending posts every time the user logs in. The builtin Askbot "
"login system supports this feature."
msgstr ""
+"Отметьте, еÑли хотите чтобы пользователи могли начать задавать вопроÑÑ‹ до "
+"того как войдут на Ñайт. Включение Ñтой опции может потребовать "
+"дополнительной наÑтройки ÑиÑтемы входа пользователей Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ готовых к "
+"отправке вопроÑов каждый раз когда пользователь входит на Ñайт. Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ "
+"ÑиÑтема Askbot Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° на Ñайт поддерживает Ñту функцию."
#: conf/forum_data_rules.py:73
-#, fuzzy
msgid "Allow swapping answer with question"
-msgstr "Ответить на вопроÑ"
+msgstr ""
+"Разрешить перемену меÑтами вопроÑов и ответов"
#: conf/forum_data_rules.py:75
msgid ""
"This setting will help import data from other forums such as zendesk, when "
"automatic data import fails to detect the original question correctly."
msgstr ""
+"Эта наÑтройка поможет импортировать данные из других форумов таких как "
+"Zendesk, когда автоматичеÑкий импорт не позволÑет определить Ð²Ð¾Ð¿Ñ€Ð¾Ñ "
+"правильно."
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
-msgstr "МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
+msgstr ""
+"МакÑимальное количеÑтво букв в Ñ‚Ñге"
-#: conf/forum_data_rules.py:95
-#, fuzzy
+#: conf/forum_data_rules.py:95 conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "обновленные Ñ‚Ñги "
+msgstr ""
+"ОбÑзательные Ñ‚Ñги"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
+"Ð¥Ð¾Ñ‚Ñ Ð±Ñ‹ один из Ñтих Ñ‚Ñгов будет необходим Ð´Ð»Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ нового или "
+"отредактированного вопроÑа. ОбÑзательный Ñ‚Ñг может быть Ñо \"звездочкой\", "
+"еÑли Ñ‚Ñги Ñо \"звездочкой\" включены."
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "Принудительно перевеÑти Ñ‚Ñги в нижний региÑÑ‚Ñ€"
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
+"Внимание: поÑле того как отметите Ñту опцию, пожалуйÑта, зарезервируйте Ñвою "
+"базу данных и запуÑтите команду: <code>python manage.py fix_question_tags</"
+"code> чтобы глобально переименовать Ñ‚Ñги"
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "Формат ÑпиÑка Ñ‚Ñгов"
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
+"Выберите формат, в котором будут отображатьÑÑ Ñ‚Ñги: обычный ÑпиÑок или "
+"\"облако\" Ñ‚Ñгов"
-#: conf/forum_data_rules.py:140
-#, fuzzy
+#: conf/forum_data_rules.py:140 conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr "Ñмотреть вÑе темы"
+msgstr ""
+"Разрешить иÑпользование макро-тегов (Ñо звездочкой)"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
+"ТÑги Ñо \"звездочкой\" могут быть иÑпользованы чтобы выбрать или отменить "
+"выбор многих Ñ‚Ñгов за раз, у правильного Ñ‚Ñга Ñо \"звездочкой\" еÑÑ‚ÑŒ только "
+"одна \"звездочка\" в Ñамом конце"
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:155 conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr "ЧиÑло комментариев по-умолчанию, которое показываетÑÑ Ð¿Ð¾Ð´ ÑообщениÑми"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:166 conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
"МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð½Ðµ должна превышать %(max_len)s Ñимволов"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "Ограничить Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° редактирование комментариев"
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
+"ЕÑли галочка ÑнÑта, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° редактирование комментариев не будет ограничено"
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° редактирование ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð² минутах"
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "Чтобы включить Ñту наÑтройку также включите предыдущую"
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "СохранÑÑ‚ÑŒ комментарий нажатием клавиши <Enter>"
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:208 conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° поиÑкового запроÑа в AJAX поиÑке"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:209 conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
"Значение должно равнÑÑ‚ÑŒÑÑ ÑоответÑтвующей уÑтановке в Вашей базе данных"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "Ðе позволÑÑ‚ÑŒ запроÑу \"прилипать\" к поиÑковой Ñтроке"
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
+"Отметьте чтобы отключить \"залипание\" в поиÑковой Ñтроке. Это может быть "
+"полезно, еÑли вы хотите Ñдвинуть поиÑковую Ñтроку Ñ ÐµÐµ обычного Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ "
+"или вам не нравитÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ðµ \"залипание\" поиÑкового запроÑа."
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:233 conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
-msgstr "Ðаибольшее разрешенное количеÑтво ключевых Ñлов (тегов) на вопроÑ"
+msgstr ""
+"МакÑимум Ñ‚Ñгов на один вопроÑ"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:245 conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
-msgstr "КоличеÑтво вопроÑов отображаемых на главной Ñтранице"
+msgstr ""
+"КоличеÑтво вопроÑов отображаемых на главной Ñтранице"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:255 conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "Что должен означать \"неотвеченный вопроÑ\"?"
@@ -1094,96 +1171,103 @@ msgstr ""
#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "Показывать информацию о лицензии в футере"
#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "Краткое название лицензии"
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "Полное название лицензии"
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution Share Alike 3.0"
#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "Добавить ÑÑылку на Ñтраницу лицензии"
#: conf/license.py:57
-#, fuzzy
msgid "License homepage"
-msgstr "вернутьÑÑ Ð½Ð° главную"
+msgstr "Страница лицензии"
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "URL официальной Ñтраницы лицензии Ñо вÑеми положениÑми лицензии"
#: conf/license.py:69
-#, fuzzy
msgid "Use license logo"
-msgstr "логотип %(site)s"
+msgstr "ИÑпользовать логотип лицензии"
#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "Логотип лицензии"
#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "ÐаÑтройки провайдеров входа"
#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgstr "Показывать альтернативных провайдеров входа на Ñтранице входа."
#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
-msgstr ""
+msgstr "Ð’Ñегда показывать \"локальную\" форму входа и Ñкрыть кнопку \"Askbot\""
#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
-msgstr ""
+msgstr "Включить логин через ÑобÑтвенный Ñайт на движке Wordpress"
#: conf/login_providers.py:41
msgid ""
"to activate this feature you must fill out the wordpress xml-rpc setting "
"bellow"
msgstr ""
+"чтобы включить Ñту функцию, вы должны указать Ð°Ð´Ñ€ÐµÑ xml-rpc из наÑтроек "
+"Wordpress ниже"
#: conf/login_providers.py:50
msgid ""
"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
"xmlrpc.php"
msgstr ""
+"Ð’Ñтавьте в Ñто поле Ð°Ð´Ñ€ÐµÑ XML-RPC Ñвоего Ñайта на движке Wordpress, обычно "
+"Ñто http://mysite.com/xmlrpc.php"
#: conf/login_providers.py:51
msgid ""
"To enable, go to Settings->Writing->Remote Publishing and check the box for "
"XML-RPC"
msgstr ""
+"Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ñту опцию, зайдите в Settings->Writing->Remote Publishing и "
+"проверьте Ñодержимое Ð¿Ð¾Ð»Ñ XML-RPC"
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "Загрузите Ваше изображение"
-#: conf/login_providers.py:92
-#, fuzzy, python-format
+#: conf/login_providers.py:92 conf/login_providers.py:90
+#, python-format
msgid "Activate %(provider)s login"
-msgstr "Вход при помощи %(provider)s работает отлично"
+msgstr ""
+"Включить вход через %(provider)s"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
"need to be set in the \"External keys\" section"
msgstr ""
+"Примечание: чтобы дейÑтвительно включить вход через %(provider)s, вы должны "
+"указать некоторые дополнительные данные в разделе \"Внешние ключи\""
#: conf/markup.py:15
msgid "Markup in posts"
-msgstr ""
+msgstr "Разметка в ÑообщениÑÑ…"
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
@@ -1207,13 +1291,13 @@ msgid "Mathjax support (rendering of LaTeX)"
msgstr "Поддержка MathJax (LaTeX) Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких формул"
#: conf/markup.py:60
-#, fuzzy, python-format
+#, python-format
msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
msgstr ""
-"ЕÑли вы включите Ñту функцию, <a href=\"%(url)s\">mathjax</a> должен быть "
-"уÑтановлен в каталоге %(dir)s"
+"Когда вы включаете Ñту функцию, <a href=\"%(url)s\">mathjax</a> должен быть "
+"уÑтановлен на вашем Ñервере в ÑобÑтвенную папку."
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
@@ -1226,22 +1310,25 @@ msgid ""
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
"Примечание - <strong>MathJax не входит в askbot</strong> - вы должны "
-"размеÑтить его лично, желательно на отдельном домене и ввеÑти URL, "
+"подключить его ÑамоÑтоÑтельно, желательно на отдельном домене и ввеÑти URL, "
"указывающий на \"mathjax\" каталог (например: http://mysite.com/mathjax)"
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
msgstr ""
+"Включить автоматичеÑкое Ñоздание ÑÑылок Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ñ‹Ñ… поÑледовательноÑтей"
#: conf/markup.py:93
msgid ""
"If you enable this feature, the application will be able to detect patterns "
"and auto link to URLs"
msgstr ""
+"ЕÑли вы включите Ñту функцию, приложение Ñможет определÑÑ‚ÑŒ "
+"поÑледовательноÑти и автоматичеÑки привÑзывать их к URL-адреÑам"
#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "РегулÑрные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледовательноÑтей"
#: conf/markup.py:108
msgid ""
@@ -1251,10 +1338,16 @@ msgid ""
"to the link url template. Please look up more information about regular "
"expressions elsewhere."
msgstr ""
+"Введите правильное регулÑрное выражение Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти, одно на "
+"линию. Ðапример, чтобы определить поÑледовательноÑÑ‚ÑŒ #bug123, иÑпользуйте "
+"Ñледующее регулÑрное выражение: #bug(\\d+). ЧиÑла, которые будут определены "
+"в поÑледовательноÑти, будут переданы в шаблон ÑÑылки. ПожалуйÑта, "
+"ознакомьтеÑÑŒ Ñ Ð±Ð¾Ð»ÐµÐµ подробной информацией по регулÑрным выражениÑм на "
+"других реÑурÑах."
#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "URL-адреÑа Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑылок"
#: conf/markup.py:129
msgid ""
@@ -1265,10 +1358,16 @@ msgid ""
"shown above and the entry in the post #123 will produce link to the bug 123 "
"in the redhat bug tracker."
msgstr ""
+"ПожалуйÑта, введите здеÑÑŒ шаблоны URL-адреÑов, введенные в предыдущей "
+"наÑтройке, по одному шаблону на линию. <strong>УбедитеÑÑŒ, что количеÑтво "
+"линиц в Ñтой наÑтройке Ñовпадает Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтвом линий в предыдущей.</strong> "
+"Ðапример, шаблон https://bugzilla.redhat.com/show_bug.cgi?id=\\1 вмеÑте Ñ "
+"шаблоном, который показан выше и введенным #123 в текÑте вопроÑа будут "
+"преобразованы в ÑÑылку на ошибку â„–123 на трекере ошибок RedHat."
#: conf/minimum_reputation.py:12
msgid "Karma thresholds"
-msgstr ""
+msgstr "Предельные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸"
#: conf/minimum_reputation.py:22
msgid "Upvote"
@@ -1279,46 +1378,54 @@ msgid "Downvote"
msgstr "ГолоÑовать \"против\""
#: conf/minimum_reputation.py:40
-#, fuzzy
msgid "Answer own question immediately"
-msgstr "Ответьте на ÑобÑтвенный вопроÑ"
+msgstr ""
+"Отвечать на ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð² любое времÑ"
#: conf/minimum_reputation.py:49
-#, fuzzy
msgid "Accept own answer"
-msgstr "редактировать любой ответ"
+msgstr ""
+"Принимать ÑобÑтвенный ответ"
#: conf/minimum_reputation.py:58
msgid "Flag offensive"
-msgstr "Пометить как Ñпам"
+msgstr ""
+"Помечать Ñпам"
#: conf/minimum_reputation.py:67
msgid "Leave comments"
-msgstr "Добавить комментарии"
+msgstr ""
+"ДобавлÑÑ‚ÑŒ комментарии"
#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
-msgstr "Удалить чужие комментарии"
+msgstr ""
+"УдалÑÑ‚ÑŒ чужие комментарии"
#: conf/minimum_reputation.py:85
msgid "Delete questions and answers posted by others"
-msgstr "Удалить любые вопроÑÑ‹ или ответы"
+msgstr ""
+"УдалÑÑ‚ÑŒ чужие вопроÑÑ‹ или ответы"
#: conf/minimum_reputation.py:94
msgid "Upload files"
-msgstr "Загрузить файлы"
+msgstr ""
+"Загружать файлы"
#: conf/minimum_reputation.py:103
msgid "Close own questions"
-msgstr "Закрыть ÑобÑтвенные вопроÑÑ‹"
+msgstr ""
+"Закрывать ÑобÑтвенные вопроÑÑ‹"
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
-msgstr "Изменить теги вопроÑов, заданных другими"
+msgstr ""
+"ИзменÑÑ‚ÑŒ Ñ‚Ñги чужих вопроÑов"
#: conf/minimum_reputation.py:121
msgid "Reopen own questions"
-msgstr "Заново открыть Ñвои вопроÑÑ‹"
+msgstr ""
+"Заново открывать Ñвои вопроÑÑ‹"
#: conf/minimum_reputation.py:130
msgid "Edit community wiki posts"
@@ -1326,34 +1433,38 @@ msgstr "Редактировать ÑообщениÑ, помеченные ка
#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
-msgstr "Править чужие ÑообщениÑ"
+msgstr ""
+"Править чужие ÑообщениÑ"
#: conf/minimum_reputation.py:148
msgid "View offensive flags"
-msgstr "ПроÑмотреть отметки неумеÑтного контента"
+msgstr ""
+"ПроÑматривать отметки о неумеÑтном контенте"
#: conf/minimum_reputation.py:157
msgid "Close questions asked by others"
-msgstr "Закрыть чужие вопроÑÑ‹"
+msgstr ""
+"Закрывать чужие вопроÑÑ‹"
#: conf/minimum_reputation.py:166
msgid "Lock posts"
-msgstr "Заблокировать поÑÑ‚Ñ‹"
+msgstr "Блокировать ÑообщениÑ"
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "Удалить ключ rel=nofollow из адреÑа домашней Ñтраницы"
#: conf/minimum_reputation.py:177
msgid ""
"When a search engine crawler will see a rel=nofollow attribute on a link - "
"the link will not count towards the rank of the users personal site."
msgstr ""
+"Когда поиÑковый робот увидит аттрибут rel=nofollow на ÑÑылке, Ñ‚Ð°ÐºÐ°Ñ ÑÑылка "
+"не будет учитыватьÑÑ Ð´Ð»Ñ Ñ€Ð°ÑÑчета рейтинга Ñайта."
#: conf/reputation_changes.py:13
-#, fuzzy
msgid "Karma loss and gain rules"
-msgstr "Правила Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸"
+msgstr "Правила ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¸ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸"
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
@@ -1361,68 +1472,78 @@ msgstr "МакÑимальный роÑÑ‚ репутации пользоватÐ
#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
-msgstr "Увeличение репутации за положительный голоÑ"
+msgstr ""
+"Увеличение репутации за положительный голоÑ"
#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
-msgstr "Увeличение репутации Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° принÑтого ответа"
+msgstr ""
+"Увеличение репутации Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° принÑтого ответа"
#: conf/reputation_changes.py:50
msgid "Gain for accepting best answer"
-msgstr "Увeличение репутации за пометку лучшего ответа"
+msgstr ""
+"Увеличение репутации за пометку лучшего ответа"
#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
-msgstr "Увeличение репутации автора ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене отрицательного голоÑа"
+msgstr ""
+"Увеличение репутации автора ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене отрицательного голоÑа"
#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
-msgstr "Увeличение репутации голоÑующего при отмене голоÑа \"против\""
+msgstr ""
+"Увеличение репутации голоÑующего при отмене отрицательного голоÑа"
#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего при отмене выбора лучшего ответа "
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего при отмене выбора лучшего ответа "
#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене выбора лучшего ответа"
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене выбора лучшего ответа"
#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего \"против\""
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего \"против\""
-#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое"
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неумеÑтное"
#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение получило Ð³Ð¾Ð»Ð¾Ñ \"против\""
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение получило отрицательный голоÑ"
#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
msgstr ""
-"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое трижды на "
-"одну и ту же правку"
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неумеÑтное "
+"трижды на одну и ту же правку"
#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
msgstr ""
-"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое пÑÑ‚ÑŒ раз на "
-"одну и ту же правку"
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неумеÑтное пÑÑ‚ÑŒ "
+"раз на одну и ту же правку"
#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
-msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение потерÑло Ð³Ð¾Ð»Ð¾Ñ \"за\""
+msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение потерÑло положительный голоÑ"
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
-msgstr ""
+msgstr "Ð‘Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ главной Ñтраницы"
#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "Заголовок перÑональной боковой панели"
#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
#: conf/sidebar_question.py:22
@@ -1432,44 +1553,52 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"ИÑпользуйте Ñту облаÑÑ‚ÑŒ чтобы задать Ñодержимое ВЕРХÐЕЙ чаÑти боковой панели "
+"в формате HTML. При иÑпользовании Ñтой наÑтройки (так же, как и Ð´Ð»Ñ Ñ„ÑƒÑ‚ÐµÑ€Ð° "
+"боковой панели), пожалуйÑта, иÑпользуйте ÑÐµÑ€Ð²Ð¸Ñ HTML-валидации, чтобы "
+"убедитьÑÑ, что введенные вами данные дейÑтвительны и будут нормально "
+"отображатьÑÑ Ð²Ð¾ вÑех браузерах."
#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "Показать блок Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð¾Ð¼ в боковой панели"
#: conf/sidebar_main.py:38
-#, fuzzy
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
msgstr ""
-"Отметьте, еÑли вы хотите, чтобы подвал отображалÑÑ Ð½Ð° каждой Ñтранице форума"
+"Снимите галочку, еÑли хотите Ñкрыть блок аватара Ñ Ð±Ð¾ÐºÐ¾Ð²Ð¾Ð¹ панели"
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "Ограничить чиÑло аватаров, отображаемых на боковой панели"
#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "Показывать выбор Ñ‚Ñгов в боковой панели"
#: conf/sidebar_main.py:61
msgid ""
"Uncheck this if you want to hide the options for choosing interesting and "
"ignored tags "
msgstr ""
+"Снимите галочку, еÑли хотите Ñкрыть опции выбора интереÑующих и игнорируемых "
+"Ñ‚Ñгов"
#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "Показывать ÑпиÑок/\"облако\" Ñ‚Ñгов в боковой панели"
#: conf/sidebar_main.py:74
msgid ""
"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
msgstr ""
+"Снимите галочку, еÑли хотите Ñкрыть \"облако\" или ÑпиÑок Ñ‚Ñгов Ñ Ð±Ð¾ÐºÐ¾Ð²Ð¾Ð¹ "
+"панели"
#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "Футер перÑональной боковой панели"
#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
#: conf/sidebar_question.py:78
@@ -1479,52 +1608,57 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"ИÑпользуйте Ñту облаÑÑ‚ÑŒ чтобы задать Ñодержимое ÐИЖÐЕЙ чаÑти боковой панели "
+"в формате HTML. При иÑпользовании Ñтой наÑтройки (так же, как и Ð´Ð»Ñ Ñ„ÑƒÑ‚ÐµÑ€Ð° "
+"боковой панели), пожалуйÑта, иÑпользуйте ÑÐµÑ€Ð²Ð¸Ñ HTML-валидации, чтобы "
+"убедитьÑÑ, что введенные вами данные дейÑтвительны и будут нормально "
+"отображатьÑÑ Ð²Ð¾ вÑех браузерах."
#: conf/sidebar_profile.py:12
-#, fuzzy
msgid "User profile sidebar"
-msgstr "Профиль пользователÑ"
+msgstr "Войти как пользователь"
#: conf/sidebar_question.py:11
-#, fuzzy
msgid "Question page sidebar"
-msgstr "Теги вопроÑа"
+msgstr "ТÑги"
#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "Показать Ñ‚Ñги на боковой панели"
#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "Снимите галочку, еÑли вы хотите Ñкрыть ÑпиÑок Ñ‚Ñгов Ñ Ð±Ð¾ÐºÐ¾Ð²Ð¾Ð¹ панели"
#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "Показывать мета-информацию в боковой панели"
#: conf/sidebar_question.py:50
msgid ""
"Uncheck this if you want to hide the meta information about the question "
"(post date, views, last updated). "
msgstr ""
+"Снимите галочку, еÑли вы хотите Ñкрыть мета-информацию о вопроÑе (дата "
+"Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñа, количеÑтво проÑмотров, дата поÑледнего обновлениÑ)"
#: conf/sidebar_question.py:62
-#, fuzzy
msgid "Show related questions in sidebar"
-msgstr "похожие вопроÑÑ‹:"
+msgstr ""
+"Показывать похожие вопроÑÑ‹ в боковой панели"
#: conf/sidebar_question.py:64
-#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr "нажмите, чтобы поÑмотреть поÑледние обновленные вопроÑÑ‹"
+msgstr ""
+"Снимите галочку, еÑли хотите Ñкрыть ÑпиÑок похожих вопроÑов."
#: conf/site_modes.py:64
msgid "Bootstrap mode"
-msgstr ""
+msgstr "\"Стартовый\" режим"
#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "Включить \"Стартовый\" режим"
#: conf/site_modes.py:76
msgid ""
@@ -1533,10 +1667,14 @@ msgid ""
"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
"changed after you modify this setting."
msgstr ""
+"\"Стартовый\" режим понижает границы репутации и некоторых наград до "
+"значений, которые более приемлемы Ð´Ð»Ñ Ð¼Ð°Ð»Ñ‹Ñ… ÑообщеÑтв. <strong>ОСТОРОЖÐО:</"
+"strong> ваши текущие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ репутации, ÐаÑтроек наград и "
+"Правил голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ изменены поÑле того как вы включите Ñту наÑтройку."
#: conf/site_settings.py:12
msgid "URLS, keywords & greetings"
-msgstr ""
+msgstr "URL-адреÑа, ключевые Ñлова и приветÑтвиÑ"
#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
@@ -1548,7 +1686,8 @@ msgstr "Ключевые Ñлова Ð´Ð»Ñ Ñайта, через запÑтую
#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
-msgstr "Сообщение о праве ÑобÑтвенноÑти (показываетÑÑ Ð² нижней чаÑти Ñтраницы)"
+msgstr ""
+"Сообщение о праве ÑобÑтвенноÑти, которое показываетÑÑ Ð² футере"
#: conf/site_settings.py:49
msgid "Site description for the search engines"
@@ -1558,147 +1697,37 @@ msgstr "ОпиÑание Ñайта Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков"
msgid "Short name for your Q&A forum"
msgstr "Краткое название форума"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:68 conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ URL форума (должна начинатьÑÑ Ñ http или https)"
-#: conf/site_settings.py:79
-#, fuzzy
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
+msgstr "Включить приветÑтвие Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ‹Ñ… пользователей"
-#: conf/site_settings.py:90
-#, fuzzy
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-"СÑылка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² приветÑтвии неавторизованному поÑетителю"
+"ТекÑÑ‚, который показываетÑÑ Ð² приветÑтвенном Ñообщении Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ "
+"пользователÑ"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "ИÑпользовать HTML Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑообщениÑ"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:103 conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "СÑылка на Ñайт Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑвÑзи"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:105 conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
"ЕÑли оÑтавите Ñто поле пуÑтым, то Ð´Ð»Ñ Ð¿Ð¾Ñылки обратной ÑвÑзи будет "
"иÑпользоватьÑÑ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
-#: conf/skin_counter_settings.py:11
-msgid "Skin: view, vote and answer counters"
-msgstr "Скин: Ñчетчики проÑмотров, голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ответов"
-
-#: conf/skin_counter_settings.py:19
-msgid "Vote counter value to give \"full color\""
-msgstr "Значение Ñчетчика голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
-
-#: conf/skin_counter_settings.py:29
-msgid "Background color for votes = 0"
-msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = 0"
-
-#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
-#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
-#: conf/skin_counter_settings.py:72 conf/skin_counter_settings.py:85
-#: conf/skin_counter_settings.py:106 conf/skin_counter_settings.py:117
-#: conf/skin_counter_settings.py:128 conf/skin_counter_settings.py:138
-#: conf/skin_counter_settings.py:148 conf/skin_counter_settings.py:163
-#: conf/skin_counter_settings.py:186 conf/skin_counter_settings.py:196
-#: conf/skin_counter_settings.py:206 conf/skin_counter_settings.py:216
-#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
-#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
-msgid "HTML color name or hex value"
-msgstr "Ð˜Ð¼Ñ Ñ†Ð²ÐµÑ‚Ð° HTML или шеÑтнадцатиричное значение"
-
-#: conf/skin_counter_settings.py:40
-msgid "Foreground color for votes = 0"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = 0"
-
-#: conf/skin_counter_settings.py:51
-msgid "Background color for votes"
-msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа"
-
-#: conf/skin_counter_settings.py:61
-msgid "Foreground color for votes"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа"
-
-#: conf/skin_counter_settings.py:71
-msgid "Background color for votes = MAX"
-msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = MAX"
-
-#: conf/skin_counter_settings.py:84
-msgid "Foreground color for votes = MAX"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = MAX"
-
-#: conf/skin_counter_settings.py:95
-msgid "View counter value to give \"full color\""
-msgstr "ПоÑмотреть значение Ñчетчика Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
-
-#: conf/skin_counter_settings.py:105
-msgid "Background color for views = 0"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = 0"
-
-#: conf/skin_counter_settings.py:116
-msgid "Foreground color for views = 0"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = 0"
-
-#: conf/skin_counter_settings.py:127
-msgid "Background color for views"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
-
-#: conf/skin_counter_settings.py:137
-msgid "Foreground color for views"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
-
-#: conf/skin_counter_settings.py:147
-msgid "Background color for views = MAX"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = MAX"
-
-#: conf/skin_counter_settings.py:162
-msgid "Foreground color for views = MAX"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = MAX"
-
-#: conf/skin_counter_settings.py:173
-msgid "Answer counter value to give \"full color\""
-msgstr "Значение Ñчетчика ответов Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
-
-#: conf/skin_counter_settings.py:185
-msgid "Background color for answers = 0"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = 0"
-
-#: conf/skin_counter_settings.py:195
-msgid "Foreground color for answers = 0"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = 0"
-
-#: conf/skin_counter_settings.py:205
-msgid "Background color for answers"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð²"
-
-#: conf/skin_counter_settings.py:215
-msgid "Foreground color for answers"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð²"
-
-#: conf/skin_counter_settings.py:227
-msgid "Background color for answers = MAX"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = MAX"
-
-#: conf/skin_counter_settings.py:238
-msgid "Foreground color for answers = MAX"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = MAX"
-
-#: conf/skin_counter_settings.py:251
-msgid "Background color for accepted"
-msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ…"
-
-#: conf/skin_counter_settings.py:261
-msgid "Foreground color for accepted answer"
-msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ… ответов"
-
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
-msgstr ""
+msgstr "Логотипы и HTML-теги <head>"
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
@@ -1707,24 +1736,25 @@ msgstr "Главный логотип"
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-"Чтобы заменить логотип, выберите новый файл затем нажмите кнопку \"Ñохранить"
-"\""
+"Чтобы Ñменить логотип, выберите новый файл затем нажмите кнопку \"Сохранить\""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:39 conf/skin_general_settings.py:37
msgid "Show logo"
msgstr "Показывать логотип"
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:41 conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
-msgstr "Отметьте еÑли Ð’Ñ‹ хотите иÑпользовать логотип в головной чаÑти форум"
+msgstr ""
+"Отметьте еÑли Ð’Ñ‹ хотите иÑпользовать логотип в головной чаÑти форум"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:53 conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr "Фавикон Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ Ñайта"
+msgstr ""
+"favicon Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ Ñайта"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:55 conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1735,11 +1765,11 @@ msgstr ""
"иÑпользуетÑÑ Ð² интерфейÑе браузеров. Ðа <a href=\"%(favicon_info_url)s"
"\">ЗдеÑÑŒ</a> еÑÑ‚ÑŒ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ favicon."
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:73 conf/skin_general_settings.py:69
msgid "Password login button"
msgstr "Кнопка Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼"
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:75 conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
@@ -1747,11 +1777,11 @@ msgstr ""
"Картинка размером 88x38, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸ÑпользуетÑÑ Ð² качеÑтве кнопки Ð´Ð»Ñ "
"авторизации Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и паролем."
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:90 conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr "Отображать вÑе функции пользовательÑкого интерфейÑа вÑем пользователÑм"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:92 conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
@@ -1762,19 +1792,19 @@ msgstr ""
"фактичеÑкий доÑтуп вÑÑ‘ равно будет завиÑить от репутации, правил "
"Ð¼Ð¾Ð´ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚.п."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:107 conf/skin_general_settings.py:101
msgid "Select skin"
msgstr "Выберите тему пользовательÑкого интерфейÑа"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "ПерÑонализировать HTML-Ñ‚Ñг <HEAD>"
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "Ваши дополнениÑ, внеÑенные в HTML-Ñ‚Ñг <HEAD>"
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1785,12 +1815,21 @@ msgid ""
"files into the footer. <strong>Note:</strong> if you do use this setting, "
"please test the site with the W3C HTML validator service."
msgstr ""
-
-#: conf/skin_general_settings.py:151
+"<strong>Чтобы иÑпользовать Ñту наÑтройку</strong>, включите наÑтройку "
+"\"ПерÑонализировать HTML-Ñ‚Ñг &lt;HEAD&gt;\". Содержимое Ñтого Ð¿Ð¾Ð»Ñ Ð±ÑƒÐ´ÐµÑ‚ "
+"включено в тег &lt;HEAD&gt; и в нем могут задаватьÑÑ Ñ‚Ð°ÐºÐ¸Ðµ Ñлементы как &lt;"
+"script&gt;, &lt;link&gt;, &lt;meta&gt;. ПожалуйÑта, имейте в виду, что "
+"добавление внешнего javascript-кода в &lt;HEAD&gt; не рекомендуетÑÑ, "
+"поÑкольку Ñто замедлит загрузку Ñтраниц. ВмеÑто Ñтого будет более "
+"Ñффективным помеÑтить ÑÑылки на javascript-файлы в нижнюю чаÑÑ‚ÑŒ Ñтраницы.\n"
+"<strong>Примечание:</strong> еÑли вы хотите иÑпользовать Ñту наÑтройку, "
+"пожалуйÑта проверьте Ñтраницу Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ валидатора HTML от W3C."
+
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "Ваши Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ðº заголовку Ñтраницы"
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1798,22 +1837,31 @@ msgid ""
"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
"sure that your input is valid and works well in all browsers."
msgstr ""
+"Заголовок Ñайта - Ñто Ð¾Ð±Ñ‰Ð°Ñ Ð´Ð»Ñ Ð²Ñех Ñтраниц Ñайта полоÑа вверху Ñтраницы, в "
+"которой ÑодержитÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ пользователе и ÑÑылки на Ñайт. ИÑпользуйте "
+"Ñту облаÑÑ‚ÑŒ чтобы ввеÑти Ñодержимое заголовка в формате HTML. Когда "
+"наÑтраиваете заголовок Ñайта (так же, как и в Ñлучае Ñ Ñ„ÑƒÑ‚ÐµÑ€Ð¾Ð¼ или HTML-"
+"Ñ‚Ñгом &lt;HEAD&gt;), иÑпользуйте ÑервиÑÑ‹ HTML-валидации, чтобы убедитьÑÑ, "
+"что введенные вами данные верны и будут работать во вÑех браузерах."
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "Режим футера"
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
+"Футер - Ñто нижнÑÑ Ñ‡Ð°ÑÑ‚ÑŒ Ñодержимого Ñтраницы, Ð¾Ð±Ñ‰Ð°Ñ Ð´Ð»Ñ Ð²Ñех Ñтраниц. Ð’Ñ‹ "
+"можете его отключить, наÑтроить ÑамоÑтоÑтельно или иÑпользовать Ñтандартный "
+"футер."
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "Футер Ñтраницы (в формате HTML)"
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1821,22 +1869,30 @@ msgid ""
"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
"that your input is valid and works well in all browsers."
msgstr ""
+"<strong>Чтобы включить Ñту функцию</strong>, пожалуйÑта, выберите "
+"'customize' в наÑтройке \"Site footer mode\". ИÑпользуйте Ñту облаÑÑ‚ÑŒ, чтобы "
+"ввеÑти Ñодержимое футера в формате HTML. Когда наÑтраиваете футер (так же, "
+"как и в Ñлучае Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð¼ Ñайта или HTML-Ñ‚Ñгом &lt;HEAD&gt;), иÑпользуйте "
+"ÑервиÑÑ‹ HTML-валидации, чтобы убедитьÑÑ, что введенные вами данные верны и "
+"будут работать во вÑех браузерах."
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "Добавить ÑобÑтвенный Ñтиль Ñтраницы (CSS)"
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
+"ПоÑтавьте галочку, еÑли вы хотите изменить вид форм вашего Ñайта, добавив "
+"ÑобÑтвенные правила ÑÑ‚Ð¸Ð»Ñ Ñтраницы (пожалуйÑта, взглÑните на Ñледующую опцию)"
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "Ваш ÑобÑтвенный Ñтиль Ñтраницы (CSS)"
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1844,20 +1900,27 @@ msgid ""
"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
+"<strong>Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтой функции</strong>, включите наÑтройку "
+"\"ПрименÑÑ‚ÑŒ ÑобÑтвенный Ñтиль Ñтраницы\". Правила CSS, которые добавлены в "
+"Ñтом окне будут применены поÑле Ñтандартных правил Ñтилей Ñтраницы. Ваши "
+"ÑобÑтвенные Ñтили Ñтраницы будут добавлÑÑ‚ÑŒÑÑ Ð¿Ð¾ ÑÑылке \"&lt;forum url&gt;/"
+"custom.css\", где чаÑÑ‚ÑŒ ÑÑылки \"&lt;forum url&gt;\" (по-умолчанию Ñто "
+"пуÑÑ‚Ð°Ñ Ñтрока) завиÑит от наÑтроек в файле urls.py."
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "Добавить ÑобÑтвенный javascript-код"
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
+"ПоÑтавьте галочку чтобы включить javascript-код, введенный в Ñледующее поле"
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "СобÑтвенный javascript-код"
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1867,136 +1930,146 @@ msgid ""
"enable your custom code</strong>, check \"Add custom javascript\" option "
"above)."
msgstr ""
+"Введите или вÑтавьте javascript-код, который хотите задейÑтвовать на Ñвоем "
+"Ñайте. СÑылка на Ñкрипт будет включена в нижнюю чаÑÑ‚ÑŒ HTML-вывода и будет "
+"выглÑдеть как URL-Ð°Ð´Ñ€ÐµÑ \"&lt;forum url&gt;/custom.js\". ПожалуйÑта, имейте "
+"в виду, что ваш javascript-код может быть неÑовмеÑтим Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ "
+"браузерами (<strong>чтобы включить ваш ÑобÑтвенный javascript-код</strong>, "
+"отметьте галочку наÑтройки \"ДобавлÑÑ‚ÑŒ ÑобÑтвенный javascript-код\")"
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:269 conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr "Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ð¼ÐµÐ´Ð¸Ð°-файлов Ñкина"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ наÑтроена автоматичеÑки, но вы Ñможете изменить ее, еÑли Ñто "
+"будет необходимо."
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
-msgstr ""
+msgstr "Ð¥Ñш Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° ревизии медиа-файлов"
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
+"ÐžÐ¿Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ уÑтановлена автоматичеÑки, нет необходимоÑти изменÑÑ‚ÑŒ ее вручную."
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr "РаÑпроÑтранение информации по Ñоциальным ÑетÑм"
#: conf/social_sharing.py:20
-#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
-msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
+msgstr ""
+"ПоÑтавьте галочку, чтобы включить публикацию вопроÑов в Twitter"
#: conf/social_sharing.py:29
-#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
-msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
+msgstr ""
+"ПоÑтавьте галочку, чтобы включить публикацию вопроÑов в Facebook"
#: conf/social_sharing.py:38
-#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
+msgstr ""
+"ПоÑтавьте галочку, чтобы включить публикацию вопроÑов в LinkedIn"
#: conf/social_sharing.py:47
-#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
+msgstr ""
+"ПоÑтавьте галочку, чтобы включить публикацию вопроÑов в Identi.ca"
#: conf/social_sharing.py:56
-#, fuzzy
msgid "Check to enable sharing of questions on Google+"
-msgstr "Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
+msgstr ""
+"ПоÑтавьте галочку, чтобы включить публикацию вопроÑов в Google+"
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
-msgstr ""
+msgstr "Защита от Ñпама Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Akismet"
#: conf/spam_and_moderation.py:18
-#, fuzzy
msgid "Enable Akismet spam detection(keys below are required)"
-msgstr "Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
+msgstr "Включить защиту от Ñпама Akismet (необходим ключ в поле ниже)"
#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
msgstr ""
+"Чтобы получить ключ Akismet, пожалуйÑта поÑетите <a href=\"%(url)s"
+"\">Ñтраницу разработчиков</a>"
#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "Ключ инÑтрумента Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñпама Akismet"
#: conf/super_groups.py:5
msgid "Reputation, Badges, Votes & Flags"
-msgstr ""
+msgstr "РепутациÑ, Ðаграды, ГолоÑа и Флаги"
#: conf/super_groups.py:6
msgid "Static Content, URLS & UI"
-msgstr ""
+msgstr "СтатичеÑкий контент, URL-адреÑа и интерфейÑ"
#: conf/super_groups.py:7
-#, fuzzy
msgid "Data rules & Formatting"
-msgstr "Разметка текÑта"
+msgstr "Правила Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… и Форматирование"
#: conf/super_groups.py:8
-#, fuzzy
msgid "External Services"
-msgstr "Прочие уÑлуги"
+msgstr "Внешние Ñлужбы"
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
-msgstr ""
+msgstr "Вход на Ñайт, Пользователи и СвÑзь"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:12 conf/user_settings.py:14
msgid "User settings"
-msgstr "ÐаÑтройка политики пользователей"
+msgstr ""
+"ÐаÑтройки Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:21 conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr "Позволить пользователÑм изменÑÑ‚ÑŒ имена"
-#: conf/user_settings.py:30
-#, fuzzy
+#: conf/user_settings.py:30 conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr "Email Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° выÑлан"
+msgstr ""
+"ВоÑÑтановление аккаунта по Ñлектронной почте"
-#: conf/user_settings.py:39
-#, fuzzy
+#: conf/user_settings.py:39 conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
-"два или больше методов тоже можно."
+"Разрешить добавление и удаление методов входа"
-#: conf/user_settings.py:49
+#: conf/user_settings.py:49 conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "Минимальное количеÑтво букв в именах пользователей"
-#: conf/user_settings.py:59
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
-msgstr ""
+msgstr "Стандартный тип аватара Gravatar"
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
+"Эта наÑтройка позволÑет вам уÑтановить Ñтандартный тип аватара Ð´Ð»Ñ E-mail "
+"адреÑов, которые не ÑвÑзаны Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð°Ð¼Ð¸ Gravatar. Ð”Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной "
+"информации, пожалуйÑта, поÑетите <a href=\"http://en.gravatar.com/site/"
+"implement/images/\">Ñту Ñтраницу</a>."
-#: conf/user_settings.py:71
-#, fuzzy
+#: conf/user_settings.py:71 conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
+msgstr ""
+"ПÑевдоним Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
-msgstr ""
+msgstr "ГолоÑование и границы флагов"
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
@@ -2008,31 +2081,26 @@ msgstr "МакÑимальное количеÑтво меток на одног
#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr "Порог Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± оÑтавшихÑÑ ÐµÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ñ‹Ñ… голоÑах "
+msgstr ""
+"Порог Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± оÑтавшихÑÑ Ð·Ð° день голоÑах "
#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
-msgstr "КоличеÑтво дней, в течение которых можно отменить голоÑ"
+msgstr ""
+"ЧиÑло дней, в течение которых можно отменить голоÑ"
#: conf/vote_rules.py:60
-#, fuzzy
msgid "Number of days required before answering own question"
-msgstr "КоличеÑтво дней, в течение которых можно отменить голоÑ"
+msgstr ""
+"КоличеÑтво дней до поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñти ответа на Ñвой ÑобÑтвенный вопроÑ"
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
msgstr "ЧиÑло Ñигналов, требуемое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñообщений"
#: conf/vote_rules.py:78
-#, fuzzy
msgid "Number of flags required to automatically delete posts"
-msgstr "КоличеÑтво меток требуемое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений"
-
-#: conf/vote_rules.py:87
-msgid ""
-"Minimum days to accept an answer, if it has not been accepted by the "
-"question poster"
-msgstr ""
+msgstr "КоличеÑтво флагов, необходимое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñа"
#: const/__init__.py:10
msgid "duplicate question"
@@ -2070,158 +2138,173 @@ msgstr "Ñпам или реклама"
msgid "too localized"
msgstr "Ñлишком Ñпециализированный"
-#: const/__init__.py:41
+#: const/__init__.py:41 const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "новые"
-#: const/__init__.py:42
+#: const/__init__.py:42 skins/default/templates/users.html:26
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
-msgstr "Ñтарые"
+msgstr ""
+"Ñтарые"
-#: const/__init__.py:43
+#: const/__init__.py:43 const/__init__.py:45
msgid "active"
msgstr "активные"
-#: const/__init__.py:44
+#: const/__init__.py:44 const/__init__.py:46
msgid "inactive"
msgstr "неактивные"
-#: const/__init__.py:45
-#, fuzzy
+#: const/__init__.py:47
msgid "hottest"
-msgstr "больше ответов"
+msgstr "Ñамые горÑчие"
-#: const/__init__.py:46
-#, fuzzy
+#: const/__init__.py:48
msgid "coldest"
-msgstr "меньше ответов"
+msgstr "Ñамые холодные"
-#: const/__init__.py:47
+#: const/__init__.py:47 const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
-msgstr "больше голоÑов"
+msgstr ""
+"больше голоÑов"
-#: const/__init__.py:48
+#: const/__init__.py:48 const/__init__.py:50
msgid "least voted"
msgstr "меньше голоÑов"
-#: const/__init__.py:49
+#: const/__init__.py:49 const/__init__.py:51
msgid "relevance"
msgstr "умеÑтноÑÑ‚ÑŒ"
-#: const/__init__.py:57
+#: const/__init__.py:57 skins/default/templates/main_page/tab_bar.html:71
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "вÑе"
-#: const/__init__.py:58
+#: const/__init__.py:58 skins/default/templates/main_page/tab_bar.html:76
+#: const/__init__.py:64
msgid "unanswered"
msgstr "неотвеченные"
-#: const/__init__.py:59
+msgid "Unanswered"
+msgstr "неотвеченные"
+
+#: const/__init__.py:59 skins/default/templates/main_page/tab_bar.html:82
+#: const/__init__.py:65
msgid "favorite"
msgstr "закладки"
-#: const/__init__.py:64
-#, fuzzy
+msgid "Followed"
+msgstr "закладки"
+
+#: const/__init__.py:70
msgid "list"
-msgstr "СпиÑок тегов"
+msgstr "ТÑги"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "облако"
-#: const/__init__.py:78
+#: const/__init__.py:78 const/__init__.py:79
msgid "Question has no answers"
msgstr "Ðет ни одного ответа"
-#: const/__init__.py:79
+#: const/__init__.py:79 const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "Ðет принÑтого ответа"
-#: const/__init__.py:122
+#: const/__init__.py:122 const/__init__.py:125
msgid "asked a question"
msgstr "задан вопроÑ"
-#: const/__init__.py:123
+#: const/__init__.py:123 const/__init__.py:126
msgid "answered a question"
-msgstr "дан ответ"
+msgstr ""
+"дан ответ"
-#: const/__init__.py:124
+#: const/__init__.py:124 const/__init__.py:127 const/__init__.py:203
msgid "commented question"
-msgstr "прокомментированный вопроÑ"
+msgstr ""
+"прокомментирован вопроÑ"
-#: const/__init__.py:125
+#: const/__init__.py:125 const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
-msgstr "прокомментированный ответ"
+msgstr ""
+"прокомментирован ответ"
-#: const/__init__.py:126
+#: const/__init__.py:126 const/__init__.py:129
msgid "edited question"
-msgstr "отредактированный вопроÑ"
+msgstr ""
+"отредактирован вопроÑ"
-#: const/__init__.py:127
+#: const/__init__.py:127 const/__init__.py:130
msgid "edited answer"
-msgstr "отредактированный ответ"
+msgstr ""
+"отредактирован ответ"
#: const/__init__.py:128
msgid "received award"
msgstr "получена награда"
-#: const/__init__.py:129
+#: const/__init__.py:129 const/__init__.py:132
msgid "marked best answer"
msgstr "отмечен как лучший ответ"
-#: const/__init__.py:130
+#: const/__init__.py:130 const/__init__.py:133
msgid "upvoted"
msgstr "проголоÑовали \"за\""
-#: const/__init__.py:131
+#: const/__init__.py:131 const/__init__.py:134
msgid "downvoted"
msgstr "проголоÑовали \"против\""
-#: const/__init__.py:132
+#: const/__init__.py:132 const/__init__.py:135
msgid "canceled vote"
msgstr "отмененный голоÑ"
-#: const/__init__.py:133
+#: const/__init__.py:133 const/__init__.py:136
msgid "deleted question"
msgstr "удаленный вопроÑ"
-#: const/__init__.py:134
+#: const/__init__.py:134 const/__init__.py:137
msgid "deleted answer"
msgstr "удаленный ответ"
-#: const/__init__.py:135
+#: const/__init__.py:135 const/__init__.py:138
msgid "marked offensive"
msgstr "отметка неумеÑтного ÑодержаниÑ"
-#: const/__init__.py:136
+#: const/__init__.py:136 const/__init__.py:139
msgid "updated tags"
msgstr "обновленные Ñ‚Ñги "
-#: const/__init__.py:137
-#, fuzzy
+#: const/__init__.py:140
msgid "selected favorite"
-msgstr "занеÑено в избранное "
+msgstr "выбран избранным"
-#: const/__init__.py:138
-#, fuzzy
+#: const/__init__.py:141
msgid "completed user profile"
-msgstr "завершенный профиль пользователÑ"
+msgstr "заполненный профиль пользователÑ"
-#: const/__init__.py:139
+#: const/__init__.py:139 const/__init__.py:142
msgid "email update sent to user"
msgstr "Ñообщение выÑлано по Ñлектронной почте"
-#: const/__init__.py:142
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
+msgstr "напоминание о неотвеченных вопроÑах выÑлано"
-#: const/__init__.py:146
-#, fuzzy
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr "Увeличение репутации за пометку лучшего ответа"
+msgstr "напоминание о принÑтии лучшего ответа отправлено"
-#: const/__init__.py:148
+#: const/__init__.py:148 const/__init__.py:151
msgid "mentioned in the post"
msgstr "упомÑнуто в текÑте ÑообщениÑ"
@@ -2241,170 +2324,192 @@ msgstr "answer_commented"
msgid "answer_accepted"
msgstr "answer_accepted"
-#: const/__init__.py:206
+#: const/__init__.py:206 const/__init__.py:209
msgid "[closed]"
msgstr "[закрыт]"
-#: const/__init__.py:207
+#: const/__init__.py:207 const/__init__.py:210
msgid "[deleted]"
msgstr "[удален]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:208 views/readers.py:613 const/__init__.py:211
+#: views/readers.py:566
msgid "initial version"
msgstr "Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ"
-#: const/__init__.py:209
+#: const/__init__.py:209 const/__init__.py:212
msgid "retagged"
msgstr "теги изменены"
-#: const/__init__.py:217
+#: const/__init__.py:217 const/__init__.py:220
msgid "off"
msgstr "отключить"
-#: const/__init__.py:218
+msgid "show all tags"
+msgstr "отключить"
+
+#: const/__init__.py:218 const/__init__.py:221
msgid "exclude ignored"
msgstr "иÑключить игнорируемые"
-#: const/__init__.py:219
+msgid "exclude ignored tags"
+msgstr "иÑключить игнорируемые"
+
+#: const/__init__.py:219 const/__init__.py:222
msgid "only selected"
msgstr "только избранные"
-#: const/__init__.py:223
+msgid "only interesting tags"
+msgstr "только избранные"
+
+#: const/__init__.py:223 const/__init__.py:226
msgid "instantly"
-msgstr "немедленно "
+msgstr ""
+"немедленно"
-#: const/__init__.py:224
+#: const/__init__.py:224 const/__init__.py:227
msgid "daily"
msgstr "ежедневно"
-#: const/__init__.py:225
+#: const/__init__.py:225 const/__init__.py:228
msgid "weekly"
msgstr "еженедельно"
-#: const/__init__.py:226
+#: const/__init__.py:226 const/__init__.py:229
msgid "no email"
-msgstr "не поÑылать email"
+msgstr ""
+"не Ñлать email"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identicon"
-#: const/__init__.py:234
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "вчера"
+msgstr "mystery-man"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "monsterid"
-#: const/__init__.py:236
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "что такое Gravatar"
+msgstr "Как Ñменить мой аватар (Gravatar) и что Ñто такое?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "retro"
-#: const/__init__.py:284
+#: const/__init__.py:284 const/__init__.py:287
+#: skins/default/templates/badges.html:38
msgid "gold"
msgstr "золотаÑ"
-#: const/__init__.py:285
+#: const/__init__.py:285 const/__init__.py:288
+#: skins/default/templates/badges.html:48
msgid "silver"
msgstr "ÑеребрÑнаÑ"
-#: const/__init__.py:286
+#: const/__init__.py:286 const/__init__.py:289
+#: skins/default/templates/badges.html:55
msgid "bronze"
msgstr "Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ "
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "Ðичего"
-#: const/__init__.py:299
-#, fuzzy
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr "что такое Gravatar"
+msgstr "Как Ñменить мой аватар (Gravatar) и что Ñто такое?"
-#: const/__init__.py:300
-#, fuzzy
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr "что такое Gravatar"
+msgstr "Как Ñменить мой аватар (Gravatar) и что Ñто такое?"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:15 const/message_keys.py:21
msgid "most relevant questions"
-msgstr "ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоответÑтвовать тематике ÑообщеÑтва"
+msgstr ""
+"наиболее похожие вопроÑÑ‹"
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:16 const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "нажмите, чтобы проÑмотреть вопроÑÑ‹ Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ чиÑлом голоÑов"
+msgstr ""
+"нажмите чтобы увидеть наиболее похожие вопроÑÑ‹"
-#: const/message_keys.py:17
-#, fuzzy
+#: const/message_keys.py:17 const/message_keys.py:23
msgid "by relevance"
-msgstr "умеÑтноÑÑ‚ÑŒ"
+msgstr ""
+"ÑхожеÑÑ‚ÑŒ"
-#: const/message_keys.py:18
+#: const/message_keys.py:18 const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "нажмите, чтобы увидеть Ñтарые вопроÑÑ‹"
-#: const/message_keys.py:19
+#: const/message_keys.py:19 const/message_keys.py:25
msgid "by date"
-msgstr "дата"
+msgstr ""
+"дата"
-#: const/message_keys.py:20
+#: const/message_keys.py:20 const/message_keys.py:26
msgid "click to see the newest questions"
-msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
+msgstr ""
+"нажмите, чтобы увидеть Ñамые новые вопроÑÑ‹"
-#: const/message_keys.py:21
+#: const/message_keys.py:21 const/message_keys.py:27
msgid "click to see the least recently updated questions"
-msgstr "нажмите, чтобы поÑмотреть поÑледние обновленные вопроÑÑ‹"
+msgstr ""
+"нажмите, чтобы поÑмотреть недавно обновленные вопроÑÑ‹"
-#: const/message_keys.py:22
+#: const/message_keys.py:22 const/message_keys.py:28
msgid "by activity"
-msgstr "активноÑÑ‚ÑŒ"
+msgstr ""
+"активноÑÑ‚ÑŒ"
-#: const/message_keys.py:23
+#: const/message_keys.py:23 const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "нажмите, чтобы поÑмотреть недавно обновленные вопроÑÑ‹"
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:24 const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "нажмите, чтобы увидеть Ñтарые вопроÑÑ‹"
+msgstr ""
+"нажмите чтобы увидеть вопроÑÑ‹ Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑŒÑˆÐ¸Ð¼ чиÑлом ответов"
-#: const/message_keys.py:25
+#: const/message_keys.py:25 const/message_keys.py:31
msgid "by answers"
-msgstr "ответы"
+msgstr ""
+"ответы"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:26 const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
+msgstr ""
+"нажмите чтобы проÑмотреть вопроÑÑ‹ Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ чиÑлом ответов"
-#: const/message_keys.py:27
+#: const/message_keys.py:27 const/message_keys.py:33
msgid "click to see least voted questions"
-msgstr "нажмите, чтобы проÑмотреть поÑледние отмеченные голоÑами вопроÑÑ‹"
+msgstr ""
+"нажмите, чтобы проÑмотреть вопроÑÑ‹, за которые голоÑовали менее вÑего"
-#: const/message_keys.py:28
+#: const/message_keys.py:28 const/message_keys.py:34
msgid "by votes"
-msgstr "голоÑа"
+msgstr ""
+"голоÑа"
-#: const/message_keys.py:29
+#: const/message_keys.py:29 const/message_keys.py:35
msgid "click to see most voted questions"
-msgstr "нажмите, чтобы проÑмотреть вопроÑÑ‹ Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ чиÑлом голоÑов"
+msgstr ""
+"нажмите, чтобы проÑмотреть вопроÑÑ‹ Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ чиÑлом голоÑов"
-#: deps/django_authopenid/backends.py:88
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
+"ПриветÑтвуем! ПожалуйÑта добавьте email Ð°Ð´Ñ€ÐµÑ (Ñто важно!) в Ñвой профиль "
+"Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ измените отображаемое имÑ, еÑли Ñто необходимо."
#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-names не поддерживаютÑÑ"
@@ -2432,7 +2537,8 @@ msgstr "Пароли не подходÑÑ‚"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr "ПожалуйÑта, выберите пароль > %(len)s Ñимволов"
+msgstr ""
+"ПожалуйÑта, введите пароль > %(len)s Ñимволов"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
@@ -2457,7 +2563,8 @@ msgid "Incorrect username."
msgstr "Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ."
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:203
+#: setup_templates/settings.py:210
msgid "signin/"
msgstr "vhod/"
@@ -2483,7 +2590,7 @@ msgstr "noviy-account/"
#: deps/django_authopenid/urls.py:25
msgid "logout/"
-msgstr ""
+msgstr "logout/"
#: deps/django_authopenid/urls.py:30
msgid "recover/"
@@ -2495,6 +2602,7 @@ msgid "%(site)s user name and password"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль на %(site)s"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr "Создайте новый аккаунт Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и паролем"
@@ -2579,13 +2687,14 @@ msgstr "Заходите Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ паролÐ
msgid "Sign in with your %(provider)s account"
msgstr "Заходите через Ваш аккаунт на %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:158 deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s недейÑтвителен"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:416
+#: deps/django_authopenid/views.py:444 deps/django_authopenid/views.py:261
+#: deps/django_authopenid/views.py:408 deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
@@ -2594,68 +2703,70 @@ msgstr ""
"К Ñожалению, возникла проблема при Ñоединении Ñ %(provider)s, пожалуйÑта "
"попробуйте ещё раз или зайдите через другого провайдера"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:366 deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr "Ваш новый пароль Ñохранен"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "ÐšÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð±Ñ‹Ð»Ð° неверной"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:574 deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr "Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:576 deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr "Email Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° выÑлан"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:579 deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
"два или больше методов тоже можно."
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:581 deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr "ЗдеÑÑŒ можно изменить пароль и проверить текущие методы авторизации"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:583 deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
"ПожалуйÑта, подождите Ñекунду! Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ воÑÑтанавлена, но ..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:585 deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr "К Ñожалению, Ñтот ключ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтек или не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:658 deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "Метод входа %(provider_name) s не ÑущеÑтвует"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:664 deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr "УпÑ, извините, произошла ошибка - пожалуйÑта, попробуйте ещё раз"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:755 deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "Вход при помощи %(provider)s работает отлично"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1066 deps/django_authopenid/views.py:1072
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"пожалуйÑта подтвердите ваш email, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ (<a href="
"\"%(details_url)s\">здеÑÑŒ</a>)"
-#: deps/django_authopenid/views.py:1098
-#, fuzzy, python-format
+#: deps/django_authopenid/views.py:1093 deps/django_authopenid/views.py:1083
+#, python-format
msgid "Recover your %(site)s account"
-msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
+msgstr ""
+"ВоÑÑтановить ваш аккаунт на %(site)s"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1163 deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr "ПожалуйÑта, проверьте Ñвой email и пройдите по вложенной ÑÑылке."
@@ -2663,46 +2774,117 @@ msgstr "ПожалуйÑта, проверьте Ñвой email и пройдиÑ
msgid "Site"
msgstr "Сайт"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "ГлавнаÑ"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:127 deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr "Базовые наÑтройки"
+msgstr ""
+"ОÑновные наÑтройки"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:234 deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Значение по умолчанию:\"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:241 deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Значение по умолчанию:"
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:244 deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Значение по умолчанию: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:622 deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr "ДопуÑтимые типы файлов изображений: %(types)s"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr ""
+"Сайты"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "ДокументациÑ"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/default/templates/authopenid/signin.html:117
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr ""
+"Изменить пароль"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Выйти"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "ГлавнаÑ"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr ""
+"Редактировать наÑтройки групп"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+"ПожалуйÑта иÑправте ошибку ниже."
+msgstr[1] ""
+"ПожалуйÑта иÑправте ошибки ниже."
+msgstr[2] ""
+"ПожалуйÑта иÑправте ошибки ниже."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
+msgstr ""
+"ÐаÑтройки включены в %(name)s."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° изменение значений."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr ""
+"Редактировать наÑтройки Ñайта"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Livesettings отключены Ð´Ð»Ñ Ñтого Ñайта."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+"Ð’Ñе параметры конфигурации должны быть изменены в файле settings.py"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, python-format
+msgid "Group settings: %(name)s"
+msgstr ""
+"ÐаÑтройки группы: %(name)s"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Развернуть вÑе"
+
#: importers/stackexchange/management/commands/load_stackexchange.py:141
msgid "Congratulations, you are now an Administrator"
msgstr "ПоздравлÑем, теперь Ð’Ñ‹ админиÑтратор на нашем форуме"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
-
-#: management/commands/post_emailed_questions.py:35
+#: utils/mail.py:147
msgid ""
"<p>To ask by email, please:</p>\n"
"<ul>\n"
@@ -2712,43 +2894,67 @@ msgid ""
"<p>Note that tags may consist of more than one word, and tags\n"
"may be separated by a semicolon or a comma</p>\n"
msgstr ""
+"<p>Чтобы задавать вопроÑÑ‹ по email, пожалуйÑта:</p>\n"
+"<ul>\n"
+" <li>Отформатируйте поле темы как: [ТÑг1; ТÑг2] Заголовок вопроÑа</li>\n"
+" <li>Введите Ñодержимое Ñвоего вопроÑа в теле пиÑьма</li>\n"
+"</ul>\n"
+"<p>Учтите, что Ñ‚Ñги могут Ñодержать более одного Ñлова и могут быть отделены "
+"друг-от-друга запÑтой или точкой Ñ Ð·Ð°Ð¿Ñтой</p>\n"
-#: management/commands/post_emailed_questions.py:55
+#: utils/mail.py:167
#, python-format
msgid ""
"<p>Sorry, there was an error posting your question please contact the "
"%(site)s administrator</p>"
msgstr ""
+"<p>Извините, произошла ошибка при добавлении вашего вопроÑа, пожалуйÑта "
+"ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором Ñайта %(site)s</p>"
-#: management/commands/post_emailed_questions.py:61
+#: utils/mail.py:173
#, python-format
msgid ""
"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
"\"%(url)s\">register first</a></p>"
msgstr ""
+"<p>Извините, чтобы отправлÑÑ‚ÑŒ вопроÑÑ‹ на Ñайт %(site)s через E-mail, "
+"пожалуйÑта <a href=\"%(url)s\">Ñначала зарегиÑтрируйтеÑÑŒ</a></p>"
-#: management/commands/post_emailed_questions.py:69
+#: utils/mail.py:181
msgid ""
"<p>Sorry, your question could not be posted due to insufficient privileges "
"of your user account</p>"
msgstr ""
+"<p>Извините, ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ добавить, поÑкольку у вашей учетной "
+"запиÑи недоÑтаточно прав</p>"
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
-msgstr ""
+msgstr "ПринÑÑ‚ÑŒ лучший ответ Ð´Ð»Ñ %(question_count)d ваших вопроÑов"
-#: management/commands/send_accept_answer_reminders.py:62
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr "Будьте первым, кто ответ на Ñтот вопроÑ!"
+msgstr ""
+"<span class='big strong'>ПожалуйÑта, ÑтарайтеÑÑŒ давать ответы по-ÑущеÑтву</"
+"span>. ЕÑли вы хотите обÑудить Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ, <strong>иÑпользуйте "
+"комментирование</strong>. ПожалуйÑта, помните, что вы вÑегда можете "
+"<strong>переÑмотреть Ñвой вопроÑ</strong> - нет нужды задавать один и тот же "
+"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð²Ð°Ð¶Ð´Ñ‹. Кроме того, пожалуйÑта, <strong>не забывайте голоÑовать</"
+"strong> - Ñто дейÑтвительно помогает выбрать лучшие вопроÑÑ‹ и ответы!"
-#: management/commands/send_accept_answer_reminders.py:64
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr "нажмите, чтобы увидеть Ñтарые вопроÑÑ‹"
+msgstr ""
+"<span class='big strong'>ПожалуйÑта, ÑтарайтеÑÑŒ давать ответы по-ÑущеÑтву</"
+"span>. ЕÑли вы хотите обÑудить Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ, <strong>иÑпользуйте "
+"комментирование</strong>. ПожалуйÑта, помните, что вы вÑегда можете "
+"<strong>переÑмотреть Ñвой вопроÑ</strong> - нет нужды задавать один и тот же "
+"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð²Ð°Ð¶Ð´Ñ‹. Кроме того, пожалуйÑта, <strong>не забывайте голоÑовать</"
+"strong> - Ñто дейÑтвительно помогает выбрать лучшие вопроÑÑ‹ и ответы!"
#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
@@ -2765,6 +2971,7 @@ msgstr[1] "%(name)s, в Ñтих %(num)d вопроÑах еÑÑ‚ÑŒ новоÑÑ‚Ð
msgstr[2] "%(name)s, в Ñтих %(num)d вопроÑах еÑÑ‚ÑŒ новоÑти"
#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "новый вопроÑ"
@@ -2815,19 +3022,18 @@ msgstr ""
"админиÑтратором форума по %(admin_email)s."
#: management/commands/send_unanswered_question_reminders.py:56
-#, fuzzy, python-format
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
-msgstr[0] "%(question_count)d Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½ в %(topics)s"
-msgstr[1] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
-msgstr[2] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
-
-#: middleware/forum_mode.py:31
-#, fuzzy, python-format
-msgid "Please log in to use %s"
-msgstr "пожалуйÑта, выполнить вход"
+msgstr[0] ""
+"%(question_count)d неотвеченный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð½Ð° тему %(topics)s"
+msgstr[1] ""
+"%(question_count)d неотвеченных вопроÑа на тему %(topics)s"
+msgstr[2] ""
+"%(question_count)d неотвеченных вопроÑов на тему %(topics)s"
-#: models/__init__.py:317
+#: models/__init__.py:316 models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
@@ -2835,7 +3041,7 @@ msgstr ""
"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:321
+#: models/__init__.py:320 models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
@@ -2843,78 +3049,71 @@ msgstr ""
"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:334
-#, fuzzy, python-format
+#: models/__init__.py:333 models/__init__.py:337
+#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ ваш ÑобÑтвенный ответ на "
-"ваш вопроÑ"
+">%(points)s очков необходимо чтобы принÑÑ‚ÑŒ или отклонить ваш ÑобÑтвенный "
+"ответ на ваш ÑобÑтвенный вопроÑ"
-#: models/__init__.py:353
+#: models/__init__.py:347
#, python-format
msgid ""
-"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
-msgstr ""
-
-#: models/__init__.py:361
-#, fuzzy, python-format
-msgid ""
-"Sorry, only moderators or original author of the question - %(username)s - "
-"can accept or unaccept the best answer"
+"Sorry, only original author of the question - %(username)s - can accept or "
+"unaccept the best answer"
msgstr ""
-"К Ñожалению, только первый автор вопроÑа - %(username)s - может принÑÑ‚ÑŒ "
-"лучший ответ"
+"К Ñожалению, только автор вопроÑа - %(username)s - может принÑÑ‚ÑŒ лучший ответ"
-#: models/__init__.py:389
+#: models/__init__.py:375
msgid "cannot vote for own posts"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð³Ð¾Ð»Ð¾Ñовать за ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:392
+#: models/__init__.py:378 models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:397
+#: models/__init__.py:383 models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:407
+#: models/__init__.py:393 models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов "
-#: models/__init__.py:413
+#: models/__init__.py:399 models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов"
-#: models/__init__.py:428
+#: models/__init__.py:414 models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "К Ñожалению, заблокированные пользователи не могут загружать файлы"
-#: models/__init__.py:429
+#: models/__init__.py:415 models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr ""
"К Ñожалению, временно блокированные пользователи не могут загружать файлы"
-#: models/__init__.py:431
+#: models/__init__.py:417
#, python-format
msgid ""
"uploading images is limited to users with >%(min_rep)s reputation points"
msgstr ""
"загрузка изображений доÑтупна только пользователÑм Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸ÐµÐ¹ > %(min_rep)s"
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
+#: models/__init__.py:436 models/__init__.py:503 models/__init__.py:918
msgid "blocked users cannot post"
msgstr "заблокированные пользователи не могут размещать ÑообщениÑ"
-#: models/__init__.py:451 models/__init__.py:935
+#: models/__init__.py:437 models/__init__.py:921
msgid "suspended users cannot post"
msgstr "временно заблокированные пользователи не могут размещать ÑообщениÑ"
-#: models/__init__.py:478
-#, fuzzy, python-format
+#: models/__init__.py:464 models/__init__.py:482
+#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minute from posting"
@@ -2922,38 +3121,38 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
-"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
-"только в течение 10 минут"
+"Извините, комментарии (кроме поÑледнего) можно редактировать только "
+"%(minutes)s минуту поÑле добавлениÑ"
msgstr[1] ""
-"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
-"только в течение 10 минут"
+"Извините, комментарии (кроме поÑледнего) можно редактировать только "
+"%(minutes)s минуты поÑле добавлениÑ"
msgstr[2] ""
-"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
-"только в течение 10 минут"
+"Извините, комментарии (кроме поÑледнего) можно редактировать только "
+"%(minutes)s минут поÑле добавлениÑ"
-#: models/__init__.py:490
+#: models/__init__.py:476 models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
"К Ñожалению, только владелец или модератор может редактировать комментарий"
-#: models/__init__.py:503
+#: models/__init__.py:489 models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
"К Ñожалению, так как ваш аккаунт приоÑтановлен вы можете комментировать "
"только Ñвои ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:507
+#: models/__init__.py:493 models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
"К Ñожалению, Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ %(min_rep)s "
-"балов кармы. Ð’Ñ‹ можете комментировать только Ñвои ÑобÑтвенные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ "
-"ответы на ваши вопроÑÑ‹"
+"баллов репутации. Ð’Ñ‹ можете комментировать только Ñвои ÑобÑтвенные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+"и ответы на ваши вопроÑÑ‹"
-#: models/__init__.py:535
+#: models/__init__.py:521 models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
@@ -2961,7 +3160,7 @@ msgstr ""
"Этот поÑÑ‚ был удален, его может увидеть только владелец, админиÑтраторы "
"Ñайта и модераторы"
-#: models/__init__.py:552
+#: models/__init__.py:538 models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
@@ -2969,19 +3168,19 @@ msgstr ""
"Извините, только модераторы, админиÑтраторы Ñайта и владельцы ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
"могут редактировать удаленные ÑообщениÑ"
-#: models/__init__.py:567
+#: models/__init__.py:553 models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
"К Ñожалению, так как Ваш ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете "
"редактировать ÑообщениÑ"
-#: models/__init__.py:571
+#: models/__init__.py:557 models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
"К Ñожалению, так как ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете "
"редактировать только ваши ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:576
+#: models/__init__.py:562 models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
@@ -2989,7 +3188,7 @@ msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸ÐºÐ¸ Ñообщений, требуетÑÑ %(min_rep)s баллов "
"кармы"
-#: models/__init__.py:583
+#: models/__init__.py:569 models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
@@ -2998,7 +3197,7 @@ msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
"%(min_rep)s балов кармы"
-#: models/__init__.py:646
+#: models/__init__.py:632 models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -3015,20 +3214,20 @@ msgstr[2] ""
"К Ñожалению, Ð’Ñ‹ не может удалить ваш вопроÑ, поÑкольку на него ответили "
"другие пользователи и их ответы получили положительные голоÑа"
-#: models/__init__.py:661
+#: models/__init__.py:647 models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"ÑообщениÑ"
-#: models/__init__.py:665
+#: models/__init__.py:651 models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"ÑообщениÑ"
-#: models/__init__.py:669
+#: models/__init__.py:655 models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
@@ -3037,19 +3236,19 @@ msgstr ""
"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений других пользователей, требуетÑÑ "
"%(min_rep)s балов кармы"
-#: models/__init__.py:689
+#: models/__init__.py:675 models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете закрыть "
"вопроÑÑ‹"
-#: models/__init__.py:693
+#: models/__init__.py:679 models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы не можете закрыть "
"вопроÑÑ‹"
-#: models/__init__.py:697
+#: models/__init__.py:683 models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
@@ -3058,14 +3257,14 @@ msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
"%(min_rep)s балов кармы"
-#: models/__init__.py:706
+#: models/__init__.py:692 models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñвоего вопроÑа, требуетÑÑ %(min_rep)s балов кармы"
-#: models/__init__.py:730
+#: models/__init__.py:716 models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
@@ -3074,7 +3273,7 @@ msgstr ""
"К Ñожалению, только админиÑтраторы, модераторы или владельцы Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ >"
"%(min_rep)s может открыть вопроÑ"
-#: models/__init__.py:736
+#: models/__init__.py:722 models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
@@ -3082,29 +3281,29 @@ msgstr ""
"К Ñожалению, чтобы вновь открыть ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ %(min_rep)s "
"баллов кармы"
-#: models/__init__.py:756
+#: models/__init__.py:742
msgid "cannot flag message as offensive twice"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑ‚Ð¸Ñ‚ÑŒ Ñообщение как оÑкорбительное дважды"
-#: models/__init__.py:761
+#: models/__init__.py:747
msgid "blocked users cannot flag posts"
msgstr "заблокированные пользователи не могут помечать ÑообщениÑ"
-#: models/__init__.py:763
+#: models/__init__.py:749
msgid "suspended users cannot flag posts"
msgstr "приоÑтановленные пользователи не могут помечать ÑообщениÑ"
-#: models/__init__.py:765
+#: models/__init__.py:751
#, python-format
msgid "need > %(min_rep)s points to flag spam"
msgstr "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
-#: models/__init__.py:784
+#: models/__init__.py:770
#, python-format
msgid "%(max_flags_per_day)s exceeded"
msgstr "%(max_flags_per_day)s превышен"
-#: models/__init__.py:799
+#: models/__init__.py:785 models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
@@ -3112,177 +3311,197 @@ msgstr ""
"К Ñожалению, только владельцы, админиÑтраторы Ñайта и модераторы могут "
"менÑÑ‚ÑŒ теги к удаленным вопроÑам"
-#: models/__init__.py:806
+#: models/__init__.py:792 models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете поменÑÑ‚ÑŒ "
"теги вопроÑа "
-#: models/__init__.py:810
+#: models/__init__.py:796 models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете менÑÑ‚ÑŒ "
"теги только на Ñвои вопроÑÑ‹"
-#: models/__init__.py:814
+#: models/__init__.py:800 models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
-#: models/__init__.py:833
+#: models/__init__.py:819 models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
"комментарий"
-#: models/__init__.py:837
+#: models/__init__.py:823 models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете удалÑÑ‚ÑŒ "
"только ваши ÑобÑтвенные комментарии"
-#: models/__init__.py:841
+#: models/__init__.py:827 models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ² требуетÑÑ %(min_rep)s баллов кармы"
+"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ² требуетÑÑ %(min_rep)s баллов репутации"
-#: models/__init__.py:864
+#: models/__init__.py:850
msgid "cannot revoke old vote"
msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð½Ðµ может быть отозван"
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1325 utils/functions.py:70 models/__init__.py:1469
+#: utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "%(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1327 models/__init__.py:1471
msgid "in two days"
msgstr ""
+"поÑлезавтра"
-#: models/__init__.py:1343
+#: models/__init__.py:1329 models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "завтра"
-#: models/__init__.py:1345
-#, fuzzy, python-format
+#: models/__init__.py:1331 models/__init__.py:1475
+#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
-msgstr[0] "%(hr)d Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´"
-msgstr[1] "%(hr)d чаÑов назад"
-msgstr[2] "%(hr)d чаÑа назад"
+msgstr[0] "через %(hr)d чаÑ"
+msgstr[1] "через %(hr)d чаÑа"
+msgstr[2] "через %(hr)d чаÑов"
-#: models/__init__.py:1347
-#, fuzzy, python-format
+#: models/__init__.py:1333 models/__init__.py:1477
+#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
-msgstr[0] "%(min)d минуту назад"
-msgstr[1] "%(min)d минут назад"
-msgstr[2] "%(min)d минуты назад"
+msgstr[0] ""
+"через %(min)d минуту"
+msgstr[1] ""
+"через %(min)d минуты"
+msgstr[2] ""
+"через %(min)d минут"
-#: models/__init__.py:1348
+#: models/__init__.py:1334 models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%(days)d день"
+msgstr[1] "%(days)d днÑ"
+msgstr[2] "%(days)d дней"
-#: models/__init__.py:1350
+#: models/__init__.py:1336 models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
+"Ðовые пользователи должны подождать %(days)s дней прежде чем получат "
+"возможноÑÑ‚ÑŒ ответить на Ñвой ÑобÑтвенный вопроÑ. Ð’Ñ‹ можете ответить через "
+"%(left)s"
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
-#, fuzzy
+#: models/__init__.py:1502 models/__init__.py:1653
+#: skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
-msgstr "анонимный"
+msgstr ""
+"Ðноним"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1598 views/users.py:435 models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "ÐдминиÑтратор Ñайта"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1600 views/users.py:437 models/__init__.py:1751
msgid "Forum Moderator"
msgstr "С уважением, Модератор форума"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1602 views/users.py:439 models/__init__.py:1753
msgid "Suspended User"
msgstr "ПриоÑтановленный пользователь "
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1604 views/users.py:441 models/__init__.py:1755
msgid "Blocked User"
msgstr "Заблокированный пользователь"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1606 views/users.py:443 models/__init__.py:1757
msgid "Registered User"
msgstr "ЗарегиÑтрированный пользователь"
-#: models/__init__.py:1622
+#: models/__init__.py:1608 models/__init__.py:1759
msgid "Watched User"
msgstr "Видный пользователь"
-#: models/__init__.py:1624
+#: models/__init__.py:1610 models/__init__.py:1761
msgid "Approved User"
-msgstr "Утвержденный Пользователь"
+msgstr ""
+"Утвержденный Пользователь"
-#: models/__init__.py:1733
+#: models/__init__.py:1719 models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr "%(reputation)s кармы %(username)s "
+msgstr ""
+"Ð ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s равна %(reputation)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1729 models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] "<span class=\"hidden\">%(count)d</span>Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ"
-msgstr[1] "%(count)d золотых медалей"
-msgstr[2] "%(count)d золотых медалей"
+msgstr[0] ""
+"%(count)d Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°"
+msgstr[1] ""
+"%(count)d золотых наград"
+msgstr[2] ""
+"%(count)d золотых наград"
-#: models/__init__.py:1750
+#: models/__init__.py:1736 models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
-msgstr[0] "<span class=\"hidden\">%(count)d</span>ÑеребрÑÐ½Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ"
-msgstr[1] "%(count)d ÑеребрÑных медалей"
-msgstr[2] "%(count)d ÑеребрÑных медалей"
+msgstr[0] ""
+"%(count)d ÑеребрÑÐ½Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°"
+msgstr[1] ""
+"%(count)d ÑеребрÑных наград"
+msgstr[2] ""
+"%(count)d ÑеребрÑных медалей"
-#: models/__init__.py:1757
+#: models/__init__.py:1743 models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
-msgstr[0] "<span class=\"hidden\">%(count)d</span>Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ"
-msgstr[1] "%(count)d бронзовых медалей"
-msgstr[2] "%(count)d бронзовых медалей"
+msgstr[0] ""
+"%(count)d Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°"
+msgstr[1]
+"%(count)d бронзовых медалей"
+msgstr[2]
+"%(count)d бронзовых медалей"
-#: models/__init__.py:1768
+#: models/__init__.py:1754 models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s и %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1758 models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr "%(user)s имеет %(badges)s"
+msgstr ""
+"У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(user)s - %(badges)s наград"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2165 models/__init__.py:2171 models/__init__.py:2176
+#: models/__init__.py:2181
#, python-format
msgid "Re: \"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2200 models/__init__.py:2205
+#: models/__init__.py:2186 models/__init__.py:2191
#, python-format
msgid "Question: \"%(title)s\""
msgstr "ВопроÑ: \"%(title)s\""
-#: models/__init__.py:2386
+#: models/__init__.py:2372 models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3291,9 +3510,23 @@ msgstr ""
"ПоздравлÑем, вы получили '%(badge_name)s'. Проверьте Ñвой <a href="
"\"%(user_profile)s\">профиль</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2551 views/commands.py:395 models/__init__.py:2745
+#: views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
+"Ваша подпиÑка на Ñ‚Ñги была Ñохранена"
+
+#: models/answer.py:105 models/post.py:1087
+msgid ""
+"Sorry, the answer you are looking for is no longer available, because the "
+"parent question has been removed"
+msgstr ""
+"К Ñожалению, ответ который вы ищете больше не доÑтупен, потому что Ð²Ð¾Ð¿Ñ€Ð¾Ñ "
+"был удален"
+
+#: models/answer.py:112 models/post.py:1094
+msgid "Sorry, this answer has been removed and is no longer accessible"
+msgstr "К Ñожалению, Ñтот ответ был удален и больше не доÑтупен"
#: models/badges.py:129
#, python-format
@@ -3323,9 +3556,9 @@ msgid "Teacher"
msgstr "Учитель"
#: models/badges.py:218
-#, fuzzy
msgid "Supporter"
-msgstr "Фанат"
+msgstr ""
+"Помощник"
#: models/badges.py:219
msgid "First upvote"
@@ -3463,14 +3696,14 @@ msgid "First flagged post"
msgstr "Первое отмеченное Ñообщение"
#: models/badges.py:563
-#, fuzzy
msgid "Cleanup"
-msgstr "Уборщик"
+msgstr ""
+"Уборщик"
#: models/badges.py:566
-#, fuzzy
msgid "First rollback"
-msgstr "Первый откат "
+msgstr ""
+"Первый откат"
#: models/badges.py:577
msgid "Pundit"
@@ -3485,9 +3718,9 @@ msgid "Editor"
msgstr "Редактор"
#: models/badges.py:615
-#, fuzzy
msgid "First edit"
-msgstr "Первое иÑправление "
+msgstr ""
+"Первое редактирование"
#: models/badges.py:623
msgid "Associate Editor"
@@ -3503,9 +3736,9 @@ msgid "Organizer"
msgstr "Организатор"
#: models/badges.py:637
-#, fuzzy
msgid "First retag"
-msgstr "Первое изменение Ñ‚Ñгов "
+msgstr ""
+"Первое изменение Ñ‚Ñгов"
#: models/badges.py:644
msgid "Autobiographer"
@@ -3533,53 +3766,40 @@ msgid "Enthusiast"
msgstr "ЭнтузиаÑÑ‚"
#: models/badges.py:714
-#, fuzzy, python-format
+#, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr "ПоÑещал Ñайт каждый день в течение 30 дней подрÑд"
+msgstr ""
+"ПоÑещал Ñайт каждый день подрÑд %(num)s дней"
#: models/badges.py:732
msgid "Commentator"
msgstr "Комментатор"
#: models/badges.py:736
-#, fuzzy, python-format
+#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr "(один комментарий)"
+msgstr ""
+"ОÑтавил %(num_comments)s комментариев"
#: models/badges.py:752
msgid "Taxonomist"
msgstr "ТакÑономиÑÑ‚"
#: models/badges.py:756
-#, fuzzy, python-format
+#, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr "Создал тег, иÑпользованный в 50 вопроÑах"
+msgstr ""
+"Создал Ñ‚Ñг, который иÑпользуетÑÑ Ð² %(num)s вопроÑах"
-#: models/badges.py:776
+#: models/badges.py:776 models/badges.py:774
msgid "Expert"
msgstr "ЭкÑперт"
-#: models/badges.py:779
+#: models/badges.py:779 models/badges.py:777
msgid "Very active in one tag"
msgstr "Очень активны в одном теге"
-#: models/content.py:549
-msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr "Извините, Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½ и более не доÑтупен"
-
-#: models/content.py:565
-msgid ""
-"Sorry, the answer you are looking for is no longer available, because the "
-"parent question has been removed"
-msgstr ""
-"К Ñожалению, ответ который вы ищете больше не доÑтупен, потому что Ð²Ð¾Ð¿Ñ€Ð¾Ñ "
-"был удален"
-
-#: models/content.py:572
-msgid "Sorry, this answer has been removed and is no longer accessible"
-msgstr "К Ñожалению, Ñтот ответ был удален и больше не доÑтупен"
-
-#: models/meta.py:116
+#: models/meta.py:112 models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
@@ -3587,7 +3807,7 @@ msgstr ""
"К Ñожалению, комментарии который вы ищете больше не доÑтупны, потому что "
"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» удален"
-#: models/meta.py:123
+#: models/meta.py:119 models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
@@ -3595,47 +3815,52 @@ msgstr ""
"К Ñожалению, комментарий который Ð’Ñ‹ ищете больше не доÑтупен, потому что "
"ответ был удален"
-#: models/question.py:63
+#: models/question.py:72 models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr "\" и \"%s\""
-#: models/question.py:66
-#, fuzzy
+#: models/question.py:75 models/question.py:57
msgid "\" and more"
-msgstr "Узнать больше"
+msgstr ""
+"\" и др."
+
+#: models/question.py:494 models/post.py:1071
+msgid "Sorry, this question has been deleted and is no longer accessible"
+msgstr ""
+"Извините, Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½ и больше не доÑтупен"
-#: models/question.py:806
+#: models/question.py:950
#, python-format
msgid "%(author)s modified the question"
msgstr "%(author)s отредактировали вопроÑ"
-#: models/question.py:810
+#: models/question.py:954
#, python-format
msgid "%(people)s posted %(new_answer_count)s new answers"
msgstr "%(people)s задали новых %(new_answer_count)s вопроÑов"
-#: models/question.py:815
+#: models/question.py:959
#, python-format
msgid "%(people)s commented the question"
msgstr "%(people)s оÑтавили комментарии"
-#: models/question.py:820
+#: models/question.py:964
#, python-format
msgid "%(people)s commented answers"
msgstr "%(people)s комментировали вопроÑÑ‹"
-#: models/question.py:822
+#: models/question.py:966
#, python-format
msgid "%(people)s commented an answer"
msgstr "%(people)s комментировали ответы"
-#: models/repute.py:142
+#: models/repute.py:142 models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>Изменено модератором. Причина:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:153 models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
@@ -3643,7 +3868,7 @@ msgid ""
msgstr ""
"%(points)s было добавлено за вклад %(username)s к вопроÑу %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:158 models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
@@ -3652,2336 +3877,4842 @@ msgstr ""
"%(points)s было отобрано у %(username)s's за учаÑтие в вопроÑе "
"%(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:151 models/tag.py:106
msgid "interesting"
msgstr "интереÑные"
-#: models/tag.py:151
+#: models/tag.py:151 models/tag.py:106
msgid "ignored"
msgstr "игнорируемые"
-#: models/user.py:264
+#: models/user.py:264 models/user.py:266
msgid "Entire forum"
msgstr "ВеÑÑŒ форум"
-#: models/user.py:265
+#: models/user.py:265 models/user.py:267
msgid "Questions that I asked"
msgstr "ВопроÑÑ‹ заданные мной"
-#: models/user.py:266
+#: models/user.py:266 models/user.py:268
msgid "Questions that I answered"
msgstr "ВопроÑÑ‹ отвеченные мной"
-#: models/user.py:267
+#: models/user.py:267 models/user.py:269
msgid "Individually selected questions"
msgstr "Индивидуально избранные вопроÑÑ‹"
-#: models/user.py:268
+#: models/user.py:268 models/user.py:270
msgid "Mentions and comment responses"
msgstr "Ð£Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¸ комментарии ответов"
-#: models/user.py:271
+#: models/user.py:271 models/user.py:273
msgid "Instantly"
msgstr "Мгновенно"
-#: models/user.py:272
+#: models/user.py:272 models/user.py:274
msgid "Daily"
msgstr "Раз в день"
-#: models/user.py:273
+#: models/user.py:273 models/user.py:275
msgid "Weekly"
msgstr "Раз в неделю"
-#: models/user.py:274
+#: models/user.py:274 models/user.py:276
msgid "No email"
msgstr "Отменить"
-#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
-msgid "Thank you for registering at our Q&A forum!"
-msgstr "Благодарим Ð²Ð°Ñ Ð·Ð° региÑтрацию на нашем Q/A форуме!"
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Страница не найдена"
-#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
-msgid "Your account details are:"
-msgstr "ПодробноÑти вашей учетной запиÑи:"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Извините, но запрошенный Вами документ не был найден."
-#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
-msgid "Username:"
-msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Это могло произойти по Ñледующим причинам:"
-#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
-msgid "Password:"
-msgstr "Пароль:"
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ был удалён;"
-#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
-msgid "Please sign in here:"
-msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» неверен - пожалуйÑта проверьте;"
-#: skins/common/templates/authopenid/confirm_email.txt:11
-#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#: skins/default/templates/404.jinja.html:19
msgid ""
-"Sincerely,\n"
-"Forum Administrator"
-msgstr "С уважением, админиÑтратор форума"
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"документ который Ð’Ñ‹ запроÑили защищён или у Ð’Ð°Ñ Ð½Ðµ хватает \"репутации\", "
+"пожалуйÑта поÑмотрите"
-#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
-msgid "Greetings from the Q&A forum"
-msgstr "Ð’Ð°Ñ Ð¿Ñ€Ð¸Ð²ÐµÑ‚Ñтвует Q/A форум"
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/blocks/footer.html:5
+#: skins/default/templates/blocks/header_meta_links.html:12
+#: skins/default/templates/blocks/question_edit_tips.html:10
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+"ЧаÑто задаваемые вопроÑÑ‹"
-#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
-msgid "To make use of the Forum, please follow the link below:"
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
msgstr ""
-"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы воÑпользоватьÑÑ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð¼, пожалуйÑта, перейдите по ÑÑылке ниже:"
+"еÑли Ð’Ñ‹ Ñчитаете что Ñта ошибка 404 показана неверно, пожалуйÑта"
-#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
-msgid "Following the link above will help us verify your email address."
-msgstr "ÐŸÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке выше, вы поможете нам проверить ваш email."
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "Ñообщите об Ñтой проблеме"
-#: skins/common/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "вернутьÑÑ Ð½Ð° предыдущую Ñтраницу"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/main_page/tab_bar.html:70
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "Ñмотреть вÑе вопроÑÑ‹"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr ""
+"Ñмотреть вÑе теги"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñервера"
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"об Ñтой ошибке была Ñделана запиÑÑŒ в журнале и ÑоответÑтвующие иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ "
+"будут вÑкоре Ñделаны"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+"пожалуйÑта Ñообщите об ошибке админиÑтратору Ñайта"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "Ñмотреть Ñамые новые вопроÑÑ‹"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr ""
+"Ñмотреть теги"
+
+#: skins/default/templates/about.html:3 skins/default/templates/about.html:5
+#, python-format
+msgid "About %(site_name)s"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Править ответ"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "назад"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "верÑÐ¸Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "выбрать верÑию"
+
+#: skins/default/templates/answer_edit.html:21
+#: skins/default/templates/question_edit.html:27
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Сохранить"
+
+#: skins/default/templates/answer_edit.html:22
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:42
+#: skins/default/templates/question_edit.html:28
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/authopenid/changeemail.html:38
+#: skins/default/templates/user_profile/user_edit.html:84
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Отменить"
+
+#: skins/default/templates/answer_edit.html:60
+#: skins/default/templates/answer_edit.html:63
+#: skins/default/templates/ask.html:51 skins/default/templates/ask.html:54
+#: skins/default/templates/macros.html:698
+#: skins/default/templates/question.html:576
+#: skins/default/templates/question.html:579
+#: skins/default/templates/question_edit.html:72
+#: skins/default/templates/question_edit.html:75
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "Ñкрыть предварительный проÑмотр"
+
+#: skins/default/templates/answer_edit.html:63
+#: skins/default/templates/ask.html:54
+#: skins/default/templates/question.html:579
+#: skins/default/templates/question_edit.html:75
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "показать предварительный проÑмотр"
+
+#: skins/default/templates/ask.html:4
+msgid "Ask a question"
+msgstr "СпроÑить"
+
+#: skins/default/templates/badge.html:4 skins/default/templates/badge.html:8
+#: skins/default/templates/user_profile/user_recent.html:18
+#: skins/default/templates/user_profile/user_stats.html:172
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: skins/default/templates/badge.html:4 skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Ðаграда"
+
+#: skins/default/templates/badge.html:6 skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+"Ðаграда \"%(name)s\""
+
+#: skins/default/templates/badge.html:8
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:170
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr "%(description)s"
+
+#: skins/default/templates/badge.html:13 skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+"пользователь, получивший Ñтот значок:"
+msgstr[1] ""
+"пользователÑ, получивших Ñтот значок:"
+msgstr[2] ""
+"пользователей, получивших Ñтот значок:"
+
+#: skins/default/templates/badges.html:3
+msgid "Badges summary"
+msgstr ""
+"Ðаграды"
+
+#: skins/default/templates/badges.html:5
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr ""
+"Уровни наград"
+
+#: skins/default/templates/badges.html:10
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+"Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: выÑÐ¾ÐºÐ°Ñ Ñ‡ÐµÑÑ‚ÑŒ и очень Ñ€ÐµÐ´ÐºÐ°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð° "
+
+#: skins/default/templates/badges.html:11
+msgid "gold badge description"
+msgstr ""
+"Ð—Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð° - выÑÑˆÐ°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð° ÑообщеÑтва. Ð”Ð»Ñ ÐµÐµ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ показать "
+"глубокие Ð·Ð½Ð°Ð½Ð¸Ñ Ð¸ ÑпоÑобноÑти в дополнение к активному учаÑтию."
+
+#: skins/default/templates/badges.html:14
+#: skins/default/templates/badges.html:47
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
-"for any inconvenience"
+"silver badge: occasionally awarded for the very high quality contributions"
msgstr ""
-"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
-"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
-"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
+"ÑеребрÑÐ½Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°: как правило, приÑуждаетÑÑ Ð·Ð° большой вклад"
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, fuzzy, python-format
+#: skins/default/templates/badges.html:15
+msgid "silver badge description"
+msgstr "ÑеребрÑÐ½Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°: как правило, приÑуждаетÑÑ Ð·Ð° большой вклад"
+
+#: skins/default/templates/badges.html:18
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+"Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°: чаÑто даётÑÑ Ð·Ð° оÑобые заÑлуги"
+
+#: skins/default/templates/badges.html:19
+msgid "bronze badge description"
+msgstr ""
+"Ð±Ñ€Ð¾Ð½Ð·Ð¾Ð²Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°: чаÑто даётÑÑ ÐºÐ°Ðº оÑобые заÑлуги"
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Закрыть вопроÑ"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Закрыть вопроÑ"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Причины"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "OK, чтобы закрыть"
+
+#: skins/default/templates/faq.html:3 skins/default/templates/faq.html.py:5
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq.html:5
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "ЧаÑто задаваемые вопроÑÑ‹"
+
+#: skins/default/templates/faq.html:6
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Какие вопроÑÑ‹ Ñ Ð¼Ð¾Ð³Ñƒ задать здеÑÑŒ?"
+
+#: skins/default/templates/faq.html:7
+#: skins/default/templates/faq_static.html:7
msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
msgstr ""
-"\n"
-"ЗдравÑтвуйте, Ñто Ñообщение обратной ÑвÑзи Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°: %(site_title)s\n"
+"Самое главное - вопроÑÑ‹ должны <strong>ÑоответÑтвовать теме</strong> "
+"ÑообщеÑтва."
-#: skins/old/templates/authopenid/email_validation.txt:9
-#, fuzzy
+#: skins/default/templates/faq.html:8
+#: skins/default/templates/faq_static.html:8
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"Before asking the question - please make sure to use search to see whether "
+"your question has alredy been answered."
msgstr ""
-"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
-"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
-"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
+"Перед тем как задать Ð²Ð¾Ð¿Ñ€Ð¾Ñ - пожалуйÑта, не забудьте иÑпользовать поиÑк, "
+"чтобы убедитьÑÑ, что ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐµÑ‰Ðµ не имеет ответа."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "нет"
+#: skins/default/templates/faq.html:10
+#: skins/default/templates/faq_static.html:10
+msgid "What questions should I avoid asking?"
+msgstr "Каких вопроÑов мне Ñледует избегать?"
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr "%(username)s Gravatar"
+#: skins/default/templates/faq.html:11
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"ПроÑьба не задавать вопроÑÑ‹, которые не ÑоответÑтвуют теме Ñтого Ñайта, "
+"Ñлишком Ñубъективны или очевидны."
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr "Извините, произошла ошибка!"
+#: skins/default/templates/faq.html:13
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Чего Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ избегать в Ñвоих ответах?"
-#: utils/decorators.py:109
-#, fuzzy
-msgid "Please login to post"
-msgstr "пожалуйÑта, выполнить вход"
+#: skins/default/templates/faq.html:14
+#: skins/default/templates/faq_static.html:14
+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 ""
+"ÑвлÑетÑÑ Ð¼ÐµÑтом <strong>ответов/вопроÑов, а не группой обÑуждениÑ</strong>. "
+"ПоÑтому - пожалуйÑта, избегайте обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² Ñвоих ответах. Комментарии "
+"позволÑÑŽÑ‚ лишь краткое обÑуждение."
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/default/templates/faq.html:15
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Кто модерирует Ñто ÑообщеÑтво?"
+
+#: skins/default/templates/faq.html:16
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Ответ краток: <strong>вы.</strong>"
+
+#: skins/default/templates/faq.html:17
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
msgstr ""
+"Этот Ñайт управлÑетÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми."
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "Ñто поле обÑзательное"
+#: skins/default/templates/faq.html:18
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"The reputation system allows users earn the authorization to perform a "
+"variety of moderation tasks."
+msgstr ""
+"СиÑтема репутации (кармы) позволÑет пользователÑм приобретать различные "
+"управленчеÑкие права."
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "выбрать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+#: skins/default/templates/faq.html:20
+#: skins/default/templates/faq_static.html:20
+msgid "How does reputation system work?"
+msgstr "Как работает карма?"
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾Ð±Ñзательно"
+#: skins/default/templates/faq.html:21
+#: skins/default/templates/faq_static.html:21
+msgid "Rep system summary"
+msgstr ""
+"Когда за Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ голоÑуют, пользователь который оÑтавил Ñто "
+"Ñообщение, получит некоторое количеÑтво баллов, которые называютÑÑ \"очки "
+"репутации\". Эти балы Ñлужат грубой мерой Ð´Ð¾Ð²ÐµÑ€Ð¸Ñ ÑообщеÑтва Ñтому "
+"пользователю и предоÑтавлÑÑŽÑ‚ ему различные права модератора."
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "к Ñожалению, Ñто Ð¸Ð¼Ñ Ð¸ÑпользуетÑÑ, выберите другое"
+#: skins/default/templates/faq.html:22
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Ðапример, еÑли вы задали интереÑный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ дали полезный ответ, ваш "
+"вклад будет оценен положительно. С другой Ñтороны, еÑли ответ будет вводить "
+"в заблуждение - Ñто будет оценено отрицательно. Каждый Ð³Ð¾Ð»Ð¾Ñ Ð² пользу будет "
+"добавлÑÑ‚ÑŒ <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> балов "
+"репутации, каждый Ð³Ð¾Ð»Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² - будет отнимать <strong>"
+"%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> балов репутации. СущеÑтвует "
+"лимит <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> репутации, который "
+"может быть набран за Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ за день. Ð’ таблице ниже предÑтавлены "
+"вÑе Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº репутации Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ типа модерированиÑ."
+
+#: skins/default/templates/faq.html:32
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "проголоÑовать \"за\""
+
+#: skins/default/templates/faq.html:37
+#: skins/default/templates/faq_static.html:37
+msgid "use tags"
+msgstr "иÑпользовать теги"
+
+#: skins/default/templates/faq.html:42
+#: skins/default/templates/faq_static.html:42
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "добавить комментарии"
+
+#: skins/default/templates/faq.html:46
+#: skins/default/templates/faq_static.html:46
+#: skins/default/templates/user_profile/user_votes.html:15
+#: skins/default/templates/faq_static.html:40
+msgid "downvote"
+msgstr "проголоÑовать \"против\""
+
+#: skins/default/templates/faq.html:49
+#: skins/default/templates/faq_static.html:53
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr ""
+"открыть и закрыть ÑобÑтвенные вопроÑÑ‹"
+
+#: skins/default/templates/faq.html:53
+#: skins/default/templates/faq_static.html:57
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "изменÑÑ‚ÑŒ теги других вопроÑов"
+
+#: skins/default/templates/faq.html:58
+#: skins/default/templates/faq_static.html:62
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr ""
+"редактировать вопроÑÑ‹ в вики ÑообщеÑтва"
+
+#: skins/default/templates/faq.html:63
+#: skins/default/templates/faq_static.html:67
+msgid "\"edit any answer"
+msgstr "редактировать любой ответ"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "к Ñожалению, Ñто Ð¸Ð¼Ñ Ð½Ðµ разрешено, выберите другое"
+#: skins/default/templates/faq.html:67
+#: skins/default/templates/faq_static.html:71
+msgid "\"delete any comment"
+msgstr "удалÑÑ‚ÑŒ любые комментарии"
+
+#: skins/default/templates/faq.html:70
+#: skins/default/templates/faq_static.html:74
+msgid "what is gravatar"
+msgstr ""
+"Как изменить мою картинку (gravatar) и что такое gravatar?"
+
+#: skins/default/templates/faq.html:71
+#: skins/default/templates/faq_static.html:75
+msgid "gravatar faq info"
+msgstr ""
+"<p>Картинка ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ÑвлÑетÑÑ Ð² профиле Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ "
+"<strong>gravatar</strong> (<strong>\"g\"</strong> значит глобальный "
+"<strong>аватар</strong>).</p><p> Как Ñто работает? \n"
+"<strong>КриптографичеÑкий ключ</strong> вычиÑлÑетÑÑ Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ email адреÑа. "
+"Ð’Ñ‹ загружаете вашу любимую картинку (или картинку вашего второго Ñ) на Ñайт "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> откуда мы "
+"потом получим вашу картинку иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ»ÑŽÑ‡.</p><p>Таким образом вÑе Ñайты "
+"которым вы доверÑете могут показывать ваш аватар Ñ€Ñдом Ñ Ð²Ð°ÑˆÐ¸Ð¼Ð¸ ÑообщениÑми "
+"при Ñтом email Ð°Ð´Ñ€ÐµÑ Ð±ÑƒÐ´ÐµÑ‚ оÑтаватьÑÑ Ð·Ð°Ñекреченным.</p><p>ПожалуйÑта "
+"<strong>приукраÑьте вашу учётную запиÑÑŒ</strong> картинкой &mdash; проÑто "
+"зарегиÑтрируйтеÑÑŒ на <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> (иÑпользуйте тот-же email Ð°Ð´Ñ€ÐµÑ Ñ‡Ñ‚Ð¾ и при региÑтрации на нашем "
+"Ñайте). Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ отображаютÑÑ Ð¿Ð¾ умолчанию генерируютÑÑ "
+"автоматичеÑки.</p>"
+
+#: skins/default/templates/faq.html:72
+#: skins/default/templates/faq_static.html:76
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+"Ðеобходимо ли иÑпользовать новый пароль, чтобы зарегиÑтрироватьÑÑ?"
+
+#: skins/default/templates/faq.html:73
+#: skins/default/templates/faq_static.html:77
+#: skins/default/templates/faq_static.html:72
+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, AOL и т.д."
+
+#: skins/default/templates/faq.html:74
+#: skins/default/templates/faq_static.html:78
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr ""
+"\"Войти ÑейчаÑ!\""
+
+#: skins/default/templates/faq.html:76
+#: skins/default/templates/faq_static.html:80
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Почему другие люди могут изменÑÑ‚ÑŒ мои вопроÑÑ‹ / ответы?"
+
+#: skins/default/templates/faq.html:77
+#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Цель Ñтого Ñайта ..."
+
+#: skins/default/templates/faq.html:77
+#: skins/default/templates/faq_static.html:81
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Таким образом, более опытные пользователи могут редактировать вопроÑÑ‹ и "
+"ответы как Ñтраницы вики, что в Ñвою очередь улучшает качеÑтво ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ "
+"базы данных вопроÑов/ответов."
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "к Ñожалению, Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем не ÑущеÑтвует"
+#: skins/default/templates/faq.html:78
+#: skins/default/templates/faq_static.html:82
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "ЕÑли Ñтот подход не Ð´Ð»Ñ Ð²Ð°Ñ, мы уважаем ваш выбор."
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
+#: skins/default/templates/faq.html:80
+#: skins/default/templates/faq_static.html:84
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
msgstr ""
-"к Ñожалению, у Ð½Ð°Ñ ÐµÑÑ‚ÑŒ ÑÐµÑ€ÑŒÐµÐ·Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° - Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ÑпользуетÑÑ "
-"неÑколькими пользователÑми"
+"ОÑталиÑÑŒ вопроÑÑ‹?"
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
+#: skins/default/templates/faq.html:81
+#: skins/default/templates/faq_static.html:85
+#, python-format
+msgid ""
+"Please ask your question at %(ask_question_url)s, help make our community "
+"better!"
msgstr ""
-"Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ ÑоÑтоÑÑ‚ÑŒ только из букв, пробелов и подчеркиваний"
+"Задайте Ñвой Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð² %(ask_question_url)s, помогите Ñделать наше ÑообщеÑтво "
+"лучше!"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "ваш email"
+#: skins/default/templates/faq_static.html:49
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr ""
+"принÑÑ‚ÑŒ Ñвой ответ на ÑобÑтвенные вопроÑÑ‹"
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "email обÑзательное"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь"
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Ð’Ñ‹Ñкажите Ñвое мнение!"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
-msgstr "Ñтот email уже иÑпользуетÑÑ ÐºÐµÐ¼-то еще, пожалуйÑта, выберите другой"
+#: skins/default/templates/feedback.html:9
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Уважаемый %(user_name)s,</span> мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ "
+"ждем ваших отзывов.\n"
+" ПожалуйÑта напишите Ваш отзыв ниже.\n"
+" "
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "выбрать пароль"
+#: skins/default/templates/feedback.html:16
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Уважаемый гоÑÑ‚ÑŒ</span>, мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем ваших "
+"отзывов.\n"
+" ПожалуйÑта напишите Ваш отзыв ниже.\n"
+" "
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "пароль обÑзателен"
+#: skins/default/templates/feedback.html:25
+msgid "(please enter a valid email)"
+msgstr "(пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "введите пароль еще раз"
+#: skins/default/templates/feedback.html:33
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(Ñто поле обÑзательно)"
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "пожалуйÑта, повторите Ñвой пароль"
+#: skins/default/templates/feedback.html:41
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+"Отправить"
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
-msgstr "к Ñожалению, пароли не Ñовпадают, попробуйте еще раз"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "Импорт данных StackExchange"
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "2 Ð´Ð½Ñ Ð½Ð°Ð·Ð°Ð´"
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Внимание:</em> еÑли ваша база данных не пуÑта , пожалуйÑта Ñделайте "
+"резервную копию перед тем как подтверждать Ñту операцию."
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "вчера"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Загрузите Ваш stackexchange дамп .zip файл, поÑле подождите пока\n"
+" завершитÑÑ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚ данных. Этот процеÑÑ Ð¼Ð¾Ð¶ÐµÑ‚ занÑÑ‚ÑŒ неÑколько "
+"минут..\n"
+" ПожалуйÑта, обратите внимание, что Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь будет напечатан в "
+"текÑтовом формате.\n"
+" "
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "Импорт данных"
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"Ð’ Ñлучае еÑли вы иÑпользуете трудноÑти в иÑпользовании Ñтого инÑтрумента "
+"импорта , пожалуйÑта попробуйте импортировать Ваши данные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ "
+"командной Ñтроки: <code>python manage.py load_stackexchange path/to/your-"
+"data.zip</code>"
-#: utils/functions.py:79
+#: skins/default/templates/instant_notification.html:1
#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] "%(hr)d Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´"
-msgstr[1] "%(hr)d чаÑов назад"
-msgstr[2] "%(hr)d чаÑа назад"
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Уважаемый %(receiving_user_name)s,</p>"
-#: utils/functions.py:85
+#: skins/default/templates/instant_notification.html:3
#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] "%(min)d минуту назад"
-msgstr[1] "%(min)d минут назад"
-msgstr[2] "%(min)d минуты назад"
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s оÑтавить <a href=\"%(post_url)s\">новый "
+"комментарий</a>:</p>\n"
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
msgstr ""
+"\n"
+"<p>%(update_author_name)s оÑтавить <a href=\"%(post_url)s\">новый "
+"комментарий</a></p>\n"
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
+"\n"
+"<p>%(update_author_name)s ответил на вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
msgstr ""
+"\n"
+"<p>%(update_author_name)s задал новый вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "неавторизированные пользователи не могут голоÑовать "
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s обновил ответ на вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+"\n"
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
-msgstr "Извините, вы иÑчерпали лимит голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð° ÑегоднÑ"
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s обновил вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#: views/commands.py:65
+#: skins/default/templates/instant_notification.html:37
#, python-format
-msgid "You have %(votes_left)s votes left for today"
-msgstr "Ð’Ñ‹ можете голоÑовать ÑÐµÐ³Ð¾Ð´Ð½Ñ ÐµÑ‰Ñ‘ %(votes_left)s раз"
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Обратите внимание - вы можете <a href="
+"\"%(user_subscriptions_url)s\">изменить</a>\n"
+"уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑÑылки или отпиÑатьÑÑ Ð²Ð¾Ð²Ñе. СпаÑибо за ваш Ð¸Ð½Ñ‚ÐµÑ€ÐµÑ Ðº нашему "
+"форуму!</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>С уважением,<br/>ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¤Ð¾Ñ€ÑƒÐ¼Ð°</p>"
+
+#: skins/default/templates/macros.html:25
+#: skins/default/templates/macros.html:5
+#, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+"ПоделитьÑÑ Ñтим вопроÑом на %(site)s"
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "неавторизированные пользователи не имеют доÑтупа к папке \"входÑщие\""
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "подпиÑатÑÑ %(alias)s"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
-msgstr "Извините, что-то не здеÑÑŒ..."
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "отменить подпиÑку %(alias)s"
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "подпиÑан %(alias)s"
+
+#: skins/default/templates/macros.html:63
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+"карма:"
+
+#: skins/default/templates/macros.html:67
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr ""
+"награды:"
+
+#: skins/default/templates/macros.html:143
+#: skins/default/templates/macros.html:144
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "предыдущаÑ"
+
+#: skins/default/templates/macros.html:155
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница"
+
+#: skins/default/templates/macros.html:157
+#: skins/default/templates/macros.html:164
+#, python-format
+msgid "page number %(num)s"
+msgstr "Ñтраница номер %(num)s"
+
+#: skins/default/templates/macros.html:168
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница"
+
+#: skins/default/templates/macros.html:179
+msgid "posts per page"
+msgstr "Ñообщений на Ñтранице"
+
+#: skins/default/templates/macros.html:211 templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:507
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "%(username)s Gravatar"
+
+#: skins/default/templates/macros.html:220
+#: skins/default/templates/macros.html:516
+#, python-format
+msgid "%(username)s's website is %(url)s"
msgstr ""
-"неавторизированные пользователи не могут отмечать ответы как правильные"
+"%(url)s - вебÑайт Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
-#: views/commands.py:288
+#: skins/default/templates/macros.html:232
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "анонимный пользователь"
+
+#: skins/default/templates/macros.html:260
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "поÑÑ‚ отмечен как вики ÑообщеÑтва"
+
+#: skins/default/templates/macros.html:263
+#: skins/default/templates/macros.html:82
#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr "подпиÑка Ñохранена, %(email)s требует проверки, Ñм. %(details_url)s"
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Этот поÑÑ‚ - вики. Любой Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ &gt;%(wiki_min_rep)s может улучшить его."
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "чаÑтота обновлений по email была уÑтановлена в ежедневную"
+#: skins/default/templates/macros.html:269
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "ÑпроÑил"
+
+#: skins/default/templates/macros.html:271
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "ответил"
-#: views/commands.py:400
+#: skins/default/templates/macros.html:273
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "опубликовал"
+
+#: skins/default/templates/macros.html:304
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "обновил"
+
+#: skins/default/templates/macros.html:380
+#: skins/default/templates/macros.html:202
#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgid "see questions tagged '%(tag)s'"
msgstr ""
+"Ñмотри вопроÑÑ‹ Ñ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ '%(tag)s' "
-#: views/commands.py:409
-#, fuzzy, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
-msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
+#: skins/default/templates/macros.html:425 views/readers.py:238
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+"проÑм."
+msgstr[1] ""
+"проÑм."
+msgstr[2] ""
+"проÑм."
+
+#: skins/default/templates/macros.html:442 views/readers.py:235
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "ответ"
+msgstr[1] "ответа"
+msgstr[2] "ответов"
+
+#: skins/default/templates/macros.html:453 views/readers.py:232
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "голоÑ"
+msgstr[1] "голоÑа"
+msgstr[2] "голоÑов"
+
+#: skins/default/templates/macros.html:488
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "удалить Ñтот комментарий"
+
+#: skins/default/templates/macros.html:499
+#: skins/default/templates/question.html:80
+#: skins/default/templates/question.html:242
+#: skins/default/templates/revisions.html:37
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "редактировать"
+
+#: skins/default/templates/macros.html:517
+#: skins/default/templates/macros.html:525
+#: skins/default/templates/question.html:511
+msgid "add comment"
+msgstr "добавить"
+
+#: skins/default/templates/macros.html:518
+#, python-format
+msgid "see <strong>%(counter)s</strong> more"
+msgid_plural "see <strong>%(counter)s</strong> more"
+msgstr[0] "Ñмотреть еще <strong>%(counter)s</strong>"
+msgstr[1] "Ñмотреть еще <strong>%(counter)s</strong>"
+msgstr[2] "Ñмотреть еще <strong>%(counter)s</strong>"
-#: views/commands.py:542
-#, fuzzy
-msgid "Please sign in to vote"
-msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
+#: skins/default/templates/macros.html:520
+#, python-format
+msgid "see <strong>%(counter)s</strong> more comment"
+msgid_plural ""
+"see <strong>%(counter)s</strong> more comments\n"
+" "
+msgstr[0] ""
+"Ñмотреть ещё <strong>%(counter)s</strong> комментарий"
+msgstr[1] ""
+"Ñмотреть ещё <strong>%(counter)s</strong> комментариÑ"
+msgstr[2] ""
+"Ñмотреть ещё <strong>%(counter)s</strong> комментариев"
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь"
+#: skins/default/templates/macros.html:660
+msgid "one of these is required"
+msgstr "необходим Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один из"
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "СпаÑибо за отзыв!"
+#: skins/default/templates/macros.html:672
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(обÑзательно)"
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr "Мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем ваших отзывов!"
+#: skins/default/templates/macros.html:696
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Включить/выключить предварительный проÑмотр текÑта"
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "%(q_num)s вопроÑ"
-msgstr[1] "%(q_num)s вопроÑа"
-msgstr[2] "%(q_num)s вопроÑов"
+#: skins/default/templates/macros.html:708
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "ответы пользователю %(username)s"
-#: views/readers.py:159
+#: skins/default/templates/macros.html:711
#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s вопроÑ"
-msgstr[1] "%(q_num)s вопроÑа"
-msgstr[2] "%(q_num)s вопроÑов"
+msgid "you have a new response"
+msgid_plural "you nave %(response_count)s new responses"
+msgstr[0] "У Ð²Ð°Ñ %(response_count)s новое Ñообщение"
+msgstr[1] "У Ð²Ð°Ñ %(response_count)s новых ÑообщениÑ"
+msgstr[2] "У Ð²Ð°Ñ %(response_count)s новых Ñообщений"
+
+#: skins/default/templates/macros.html:714
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "новых ответов нет"
+
+#: skins/default/templates/macros.html:729
+#: skins/default/templates/macros.html:730
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+"%(new)s новых помеченых Ñообщений и %(seen)s предыдущих"
-#: views/readers.py:199
+#: skins/default/templates/macros.html:732
+#: skins/default/templates/macros.html:733
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s медаль"
-msgstr[1] "%(badge_count)d %(badge_level)s медали"
-msgstr[2] "%(badge_count)d %(badge_level)s медалей"
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s новых неумеÑтных Ñообщений"
-#: views/readers.py:415
+#: skins/default/templates/macros.html:738
+#: skins/default/templates/macros.html:739
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "%(seen)s неумеÑтных Ñообщений"
+
+#: skins/default/templates/main_page.html:11
+#: skins/default/templates/main_page/headline.html:2
+#: skins/default/templates/main_page/headline.html:18
+msgid "Questions"
+msgstr "вопроÑÑ‹"
+
+#: skins/default/templates/privacy.html:3
+#: skins/default/templates/privacy.html:5 views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+"Политика конфиденциальноÑти"
+
+#: skins/default/templates/question.html:27
+#: skins/default/templates/question.html:28
+#: skins/default/templates/question.html:43
+#: skins/default/templates/question.html:45
+msgid "i like this post (click again to cancel)"
+msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
+
+#: skins/default/templates/question.html:30
+#: skins/default/templates/question.html:47
+#: skins/default/templates/question.html:193
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "текущее чиÑло голоÑов"
+
+#: skins/default/templates/question.html:39
+#: skins/default/templates/question.html:40
+#: skins/default/templates/question.html:52
+#: skins/default/templates/question.html:53
+msgid "i dont like this post (click again to cancel)"
+msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+
+#: skins/default/templates/question.html:83
+#: skins/default/templates/question.html:89
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "изменить тег"
+
+#: skins/default/templates/question.html:96
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "переоткрыть"
+
+#: skins/default/templates/question.html:100
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "закрыть"
+
+#: skins/default/templates/question.html:105
+#: skins/default/templates/question.html:246
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "Извините, но запрашиваемый комментарий был удалён"
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"Ñообщить о Ñпаме (Ñ‚.е. ÑообщениÑÑ… Ñодержащих Ñпам, рекламу, вредоноÑные "
+"ÑÑылки и Ñ‚.д.)"
+
+#: skins/default/templates/question.html:106
+#: skins/default/templates/question.html:247
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "Ñпам"
+
+#: skins/default/templates/question.html:113
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "воÑÑтановить"
+
+#: skins/default/templates/question.html:113
+#: skins/default/templates/authopenid/signin.html:162
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "удалить"
+
+#: skins/default/templates/question.html:150
+#, python-format
+msgid ""
+"The question has been closed for the following reason \"%(close_reason)s\" by"
+msgstr "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
-#: views/users.py:211
-msgid "moderate this user"
-msgstr "Модерировать Ñтого пользователÑ"
+#: skins/default/templates/question.html:152
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "дата закрытиÑ: %(closed_at)s"
-#: views/users.py:212
-msgid "moderate user"
-msgstr "модерировать пользователÑ"
+#: skins/default/templates/question.html:158
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer:\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers:\n"
+" "
+msgstr[0] ""
+"\n"
+"%(counter)s Ответ:\n"
+" "
+msgstr[1] ""
+"\n"
+"%(counter)s Ответа:"
+msgstr[2] ""
+"\n"
+"%(counter)s Ответов:"
-#: views/users.py:386
-msgid "user profile"
-msgstr "профиль пользователÑ"
+#: skins/default/templates/question.html:166
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr ""
+"Ñамые Ñтарые ответы будут показаны первыми"
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "обзор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+#: skins/default/templates/question.html:166
+msgid "oldest answers"
+msgstr ""
+"Ñамые Ñтарые ответы"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "поÑледние данные по активноÑти пользователÑ"
+#: skins/default/templates/question.html:168
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr ""
+"Ñамые новые ответы будут показаны первыми"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "профиль - поÑледние данные по активноÑти"
+#: skins/default/templates/question.html:168
+msgid "newest answers"
+msgstr ""
+"Ñамые новые ответы"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "комментарии и ответы на другие вопроÑÑ‹"
+#: skins/default/templates/question.html:170
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr ""
+"ответы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ чиÑлом голоÑов будут показаны первыми"
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "профиль - ответы"
+#: skins/default/templates/question.html:170
+msgid "popular answers"
+msgstr ""
+"популÑрные ответы"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+#: skins/default/templates/question.html:191
+#: skins/default/templates/question.html:192
+msgid "i like this answer (click again to cancel)"
+msgstr "мне нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "профиль - голоÑа"
+#: skins/default/templates/question.html:202
+#: skins/default/templates/question.html:203
+msgid "i dont like this answer (click again to cancel)"
+msgstr "мне не нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑообщеÑтве"
+#: skins/default/templates/question.html:211
+#: skins/default/templates/question.html:212
+msgid "mark this answer as favorite (click again to undo)"
+msgstr "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "профиль - карма пользователÑ"
+#: skins/default/templates/question.html:237
+msgid "answer permanent link"
+msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка на ответ"
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "избранные вопроÑÑ‹ пользователей"
+#: skins/default/templates/question.html:238
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка"
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "профиль - избранные вопроÑÑ‹"
+#: skins/default/templates/question.html:255
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr ""
+"поменÑÑ‚ÑŒ меÑтами Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñом"
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
+#: skins/default/templates/question.html:295
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+"Знаете кого-то кто может ответить? ПоделитеÑÑŒ <a href=\"%(question_url)s"
+"\">ÑÑылкой</a> на Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‡ÐµÑ€ÐµÐ·"
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email отменены"
+#: skins/default/templates/question.html:301
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+" или"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "наÑтройки подпиÑки по Ñлектронной почте"
+#: skins/default/templates/question.html:303
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr ""
+"email"
-#: views/users.py:974
-msgid "profile - email subscriptions"
-msgstr "профиль - подпиÑки"
+#: skins/default/templates/question.html:318
+#: skins/default/templates/question.html:320
+msgid "Notify me once a day when there are any new answers"
+msgstr ""
+"<strong>Информировать менÑ</strong> раз в день, еÑли еÑÑ‚ÑŒ новые ответы"
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "неавторизированные пользователи не могут загружать файлы"
+#: skins/default/templates/question.html:322
+msgid "Notify me weekly when there are any new answers"
+msgstr "Еженедельно информировать о новых ответах"
-#: views/writers.py:68
-#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr "допуÑтимые типы файлов: '%(file_types)s'"
+#: skins/default/templates/question.html:324
+msgid "Notify me immediately when there are any new answers"
+msgstr ""
+"<strong>Информировать менÑ</strong> немедленно, еÑли еÑÑ‚ÑŒ новый ответ"
-#: views/writers.py:91
-#, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "макÑимальный размер загружаемого файла - %(file_size)s K"
+#: skins/default/templates/question.html:331
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>ЗдеÑÑŒ</span> (когда Ð’Ñ‹ авторизированы) Ð’Ñ‹ можете "
+"подпиÑатÑÑ Ð½Ð° переодичеÑкие почтовые Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ Ñтом вопроÑе"
-#: views/writers.py:99
-msgid "Error uploading file. Please contact the site administrator. Thank you."
+#: skins/default/templates/question.html:341
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
msgstr ""
-"Ошибка при загрузке файла. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтрацией Ñайта."
+"Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "Ð’Ñ‹ вÑегда можете задать Ñвой вопроÑ!"
+#: skins/default/templates/question.html:349
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Ваш ответ"
-#: views/writers.py:492
-#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Будьте первым, кто ответит на Ñтот вопроÑ!"
-#: views/writers.py:598
+#: skins/default/templates/question.html:357
+msgid "you can answer anonymously and then login"
+msgstr ""
+"<span class='strong big'>Вы можете ответить анонимно</span> - ваш ответ "
+"будет Ñохранён within вмеÑте Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ ÑеÑÑией и опубликуетÑÑ Ð¿Ð¾Ñле того как "
+"вы войдёте или зарегиÑтрируетеÑÑŒ. ПожалуйÑта поÑтарайтеÑÑŒ дать "
+"<strong>полезный ответ</strong>, Ð´Ð»Ñ Ð´Ð¸ÑкуÑÑи, <strong>пожалуйÑта "
+"иÑпользуйте кометарии</strong> и <strong>и не забывайте о голоÑовании</"
+"strong> (поÑле того как вы войдёте)!"
+
+#: skins/default/templates/question.html:361
+msgid "answer your own question only to give an answer"
+msgstr ""
+"<span class='big strong'>Ð’Ñ‹ конечно можете ответить на Ñвой вопроÑ</span>, "
+"но пожалуйÑта убедитеÑÑŒ что вы<strong>ответили</strong>. Помните что вы "
+"вÑегда можете <strong>переÑмотреть Ñвой ​​вопроÑ</strong>. ПожалуйÑта "
+"<strong>иÑпользуйте комментарии Ð´Ð»Ñ Ð¾Ð±ÑуждениÑ</strong> и <strong>и не "
+"забывайте голоÑовать</strong> за те ответы что вам понравилиÑÑŒ или те "
+"что не понравилиÑÑŒ! "
+
+#: skins/default/templates/question.html:363
+msgid "please only give an answer, no discussions"
+msgstr ""
+"<span class='big strong'>ПожалуйÑта ÑтарайтеÑÑŒ дать ÑущеÑтвенный ответ</"
+"span>. ЕÑли вы хотите напиÑать комментарий на Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ, тогда "
+"<strong>иÑпользуйте комментарии</strong>. ПожалуйÑта помните что вы вÑегда "
+"можете <strong>переÑмотреть ваши ответы</strong> &mdash; не надо отвечать на "
+"один Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð²Ð°Ð¶Ð´Ñ‹. Также, пожалуйÑта <strong>не забывайте голоÑовать</"
+"strong> &mdash; Ñто дейÑтвительно помогает найти лучшие ответы и вопроÑÑ‹!"
+
+#: skins/default/templates/question.html:370
+msgid "Login/Signup to Post Your Answer"
+msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
+
+#: skins/default/templates/question.html:373
+#: skins/default/templates/question.html:387
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Ответьте на ÑобÑтвенный вопроÑ"
+
+#: skins/default/templates/question.html:375
+msgid "Answer the question"
+msgstr "Ответить на вопроÑ"
+
+#: skins/default/templates/question.html:395
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr "Закладки и информациÑ"
+
+#: skins/default/templates/question.html:398
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr ""
+"нажмите чтобы прекратить Ñледить за Ñтим вопроÑом"
+
+#: skins/default/templates/question.html:399
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr ""
+"ЕÑÑ‚ÑŒ закладка!"
+
+#: skins/default/templates/question.html:400
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr ""
+"СнÑÑ‚ÑŒ закладку"
+
+#: skins/default/templates/question.html:404
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr ""
+"нажмите, чтобы добавить закладку"
+
+#: skins/default/templates/question.html:405
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr ""
+"Добавить закладку"
+
+#: skins/default/templates/question.html:412
+#: skins/default/templates/question/sidebar.html:23
#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+"%(count)s закладка"
+msgstr[1] ""
+"%(count)s закладки"
+msgstr[2] ""
+"%(count)s закладок"
+
+#: skins/default/templates/question.html:418
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr ""
+"получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
+
+#: skins/default/templates/question.html:421
+#: skins/default/templates/question/sidebar.html:32
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
msgstr ""
-"Извините, вы не вошли, поÑтому не можете оÑтавлÑÑ‚ÑŒ комментарии. <a href="
-"\"%(sign_in_url)s\">Войдите</a>."
+"получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
-#: views/writers.py:646
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "неавторизированные пользователи не могут иÑправлÑÑ‚ÑŒ комментарии"
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "ПодпиÑатьÑÑ Ð½Ð° rss канал Ñтого вопроÑа"
+
+#: skins/default/templates/question.html:427
+msgid "subsribe to rss feed"
+msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
+
+#: skins/default/templates/question.html:436
+msgid "Question tags"
+msgstr "ВопроÑÑ‹"
+
+#: skins/default/templates/question.html:458
+msgid "Stats:"
+msgstr "СтатиÑтика"
+
+#: skins/default/templates/question.html:460
+msgid "question asked"
+msgstr ""
+"Задан"
+
+#: skins/default/templates/question.html:463
+msgid "question was seen"
+msgstr ""
+"ПроÑмотрен"
-#: views/writers.py:654
+#: skins/default/templates/question.html:463
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "раз"
+
+#: skins/default/templates/question.html:466
+msgid "last updated"
+msgstr "поÑледнее обновление"
+
+#: skins/default/templates/question.html:477
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr ""
+"Похожие вопроÑÑ‹:"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Изменить вопроÑ"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+msgid "Change tags"
+msgstr "Измененить Ñ‚Ñги"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "изменить теги"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Зачем иÑпользовать и изменÑÑ‚ÑŒ теги?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+"ТÑги помагают организовать Ñодержание и делать его более легким Ð´Ð»Ñ "
+"поиÑка"
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+"редакторы тегов получат Ñпециальные награды от ÑообщеÑтва"
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "до 5 тегов, менее 20 Ñимволов каждый"
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Переоткрыть вопроÑ"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+"Заголовок"
+
+#: skins/default/templates/reopen.html:11
#, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
msgstr ""
-"Извините, вы не вошли, поÑтому не можете удалÑÑ‚ÑŒ комментарии. <a href="
-"\"%(sign_in_url)s\">Войдите</a>."
+"Этот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт пользователем\n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкие проблемы."
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "Закрыт по причине:"
-#~ msgid "Sites"
-#~ msgstr "Сайт"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Когда:"
-#~ msgid "Documentation"
-#~ msgstr "ДокументациÑ"
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "Открыть повторно Ñтот вопроÑ?"
-#~ msgid "Change password"
-#~ msgstr "Сменить пароль"
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Открыть повторно Ñтот вопроÑ"
-#~ msgid "Log out"
-#~ msgstr "Выйти"
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹"
-#~ msgid "Home"
-#~ msgstr "ГлавнаÑ"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "нажмите, чтобы Ñкрыть/показать верÑии"
-#~ msgid "Edit Group Settings"
-#~ msgstr "Изменить наÑтройки групп"
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "верÑÐ¸Ñ %(number)s"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "ПожалуйÑта, иÑправьте ошибку, указанную ниже:"
-#~ msgstr[1] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
-#~ msgstr[2] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "ПодпиÑатьÑÑ Ð½Ð° теги"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "ÐаÑтройки включены в %(name)s ."
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+"ПожалуйÑта, подпишитеÑÑŒ на теги:"
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° изменение значений."
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "ПодпиÑатьÑÑ"
-#~ msgid "Edit Site Settings"
-#~ msgstr "Изменить наÑтройки Ñайта"
+#: skins/default/templates/tags.html:4 skins/default/templates/tags.html:11
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "СпиÑок тегов"
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "Livesettings отключены Ð´Ð»Ñ Ñтого Ñайта."
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "Теги, ÑоответÑвуют \"%(stag)s\""
-#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
-#~ msgstr ""
-#~ "Ð’Ñе параметры конфигурации должны быть изменены в файле settings.py "
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+"Ñортировать в алфавитном порÑдке"
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "ÐаÑтройки групп: %(name)s"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+"по имени"
-#~ msgid "Uncollapse all"
-#~ msgstr "Развернуть вÑе"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+"отÑортировано по чаÑтоте иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð²"
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваше <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span>, затем войдите"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr ""
+"по популÑрноÑти"
-#~ msgid "(or select another login method above)"
-#~ msgstr "(или выберите один из методов входа выше)"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:57
+#: skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Ðичего не найдено"
-#~ msgid "Sign in"
-#~ msgstr "Войти"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:7
+#: skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Пользователи"
-#~ msgid "Change email"
-#~ msgstr "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "показать пользователей Ñ Ð½Ð°Ð¸Ð²Ñ‹Ñшим рейтингом"
-#~ msgid "Save your email address"
-#~ msgstr "Сохранить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+#: skins/default/templates/users.html:14
+#: skins/default/templates/user_profile/user_info.html:30
+msgid "reputation"
+msgstr ""
+"карма"
-#~ msgid "change %(email)s info"
-#~ msgstr "измененить %(email)s"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "поÑмотреть пользователей которые приÑоединилиÑÑŒ недавно"
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "вот почему требуетÑÑ Ñлектронной почты, Ñм. %(gravatar_faq_url)s"
+#: skins/default/templates/users.html:20 skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+"новички"
-#~ msgid "Your new Email"
-#~ msgstr "Ваш новый Email"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "поÑмотреть пользователей которые приÑоединилиÑÑŒ раньше"
-#~ msgid "Your Email"
-#~ msgstr "Ваш E-mail"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "показать пользователей отÑортированными по имени"
-#~ msgid "Save Email"
-#~ msgstr "Сохранить Email"
+#: skins/default/templates/users.html:32 skins/default/templates/users.html:33
+msgid "by username"
+msgstr ""
+"по имени"
-#~ msgid "Cancel"
-#~ msgstr "Отменить"
+#: skins/default/templates/users.html:37 skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "пользователей, ÑоответÑтвующих запроÑу, %(suser)s:"
-#~ msgid "Validate email"
-#~ msgstr "Проверить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+#: skins/default/templates/users.html:40 skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Ðичего не найдено."
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr ""
-#~ "Проверить информацию о %(email)s или перейти на %(change_email_url)s"
+#: skins/default/templates/authopenid/changeemail.html:2
+#: skins/default/templates/authopenid/changeemail.html:8
+#: skins/default/templates/authopenid/changeemail.html:36
+msgid "Change email"
+msgstr "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-#~ msgid "Email not changed"
-#~ msgstr "Email не изменилÑÑ"
+#: skins/default/templates/authopenid/changeemail.html:10
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "Сохранить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr ""
-#~ "Ñтарый %(email)s Ñохранен, при желании можно изменить тут "
-#~ "%(change_email_url)s"
+#: skins/default/templates/authopenid/changeemail.html:15
+#, python-format
+msgid "change %(email)s info"
+msgstr ""
+"<span class=\"strong big\">Введите ваш новый email в поле ввода ниже</span> "
+"еÑли вы хотите иÑпользовать другой email Ð´Ð»Ñ <strong>почтовых уведомлений</"
+"strong>.<br>Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ‹ иÑпользуете <strong>%(email)s</strong>"
-#~ msgid "Email changed"
-#~ msgstr "Email изменен"
+#: skins/default/templates/authopenid/changeemail.html:17
+#, python-format
+msgid "here is why email is required, see %(gravatar_faq_url)s"
+msgstr ""
+"<span class='strong big'>ПожалуйÑта введите ваш email в поле ввода ниже.</"
+"span> Правильный email нужен на Ñтом форуме ВопроÑов и Ответов. ЕÑли вы "
+"хотите, вы можете <strong>получать обновлениÑ</strong> интереÑных вопроÑов "
+"или вÑего форума через email. Также, ваш email иÑпользуетÑÑ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы "
+"Ñоздать уникальный <a href='%(gravatar_faq_url)s'><strong>аватар</strong></"
+"a>, картинку Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учётной запиÑи. Email никогда не показываетÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ "
+"пользователÑм или ещё кому-то другому."
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "текущий %(email)s может быть иÑпользован Ð´Ð»Ñ Ñтого"
+#: skins/default/templates/authopenid/changeemail.html:29
+msgid "Your new Email"
+msgstr ""
+"Ваш новый Email"
-#~ msgid "Email verified"
-#~ msgstr "Email проверен"
+#: skins/default/templates/authopenid/changeemail.html:29
+msgid "Your Email"
+msgstr "Ваш E-mail"
-#~ msgid "thanks for verifying email"
-#~ msgstr "ÑпаÑибо за проверку email"
+#: skins/default/templates/authopenid/changeemail.html:36
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "Сохранить Email"
-#~ msgid "email key not sent"
-#~ msgstr "email ключ не отоÑлан"
+#: skins/default/templates/authopenid/changeemail.html:45
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr ""
+"Проверить email-адреÑ"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr ""
-#~ "email ключ не отоÑлан на %(email)s, изменить email здеÑÑŒ %(change_link)s"
+#: skins/default/templates/authopenid/changeemail.html:48
+#, python-format
+msgid "validate %(email)s info or go to %(change_email_url)s"
+msgstr ""
+"<span class=\"strong big\">Email Ñ ÑÑылкой Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½ "
+"%(email)s.</span> ПожалуйÑта <strong>перейдите по ÑÑылки в пиÑьме</strong> в "
+"вашем браузере. Проверка Ñлектронной почты необходима Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы "
+"убедитьÑÑ Ð² правильноÑти email на форуме <span class=\"orange\">ВопроÑов&amp;"
+"Ответов</span>. ЕÑли вы желаете иÑпользовать <strong>другой email</strong>, "
+"пожалуйÑта <a href='%(change_email_url)s'><strong>измените его Ñнова</"
+"strong></a>."
+
+#: skins/default/templates/authopenid/changeemail.html:52
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "Email не изменилÑÑ"
+
+#: skins/default/templates/authopenid/changeemail.html:55
+#, python-format
+msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+msgstr ""
+"<span class=\"strong big\">Ваш email Ð°Ð´Ñ€ÐµÑ %(email)s не изменилÑÑ.</span> "
+"ЕÑли вы решите изменить его позже - вы вÑегда можете Ñделать Ñто "
+"отредактировав ваш профиль или иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ <a "
+"href='%(change_email_url)s'><strong>предыдущую форму</strong></a> Ñнова."
-#~ msgid "Registration"
-#~ msgstr "РегиÑтрациÑ"
+#: skins/default/templates/authopenid/changeemail.html:59
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "Email изменен"
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "зарегиÑтрировать нового провайдера %(provider)s к учетной запиÑи, "
-#~ "Ñмотрите %(gravatar_faq_url)s"
+#: skins/default/templates/authopenid/changeemail.html:62
+#, python-format
+msgid "your current %(email)s can be used for this"
+msgstr ""
+"<span class='big strong'>Ваш email Ð°Ð´Ñ€ÐµÑ Ñ‚ÐµÐ¿ÐµÑ€ÑŒ уÑтановлен в %(email)s.</"
+"span> ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð² тех вопроÑах что вам нравÑÑ‚ÑÑ Ð±ÑƒÐ´ÑƒÑ‚ идти туда. Почтовые "
+"ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ÑÑ Ñ€Ð°Ð· в день или реже - только тогда когда еÑÑ‚ÑŒ "
+"новоÑти."
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "%(username)s уже ÑущеÑтвует, выберите другое Ð¸Ð¼Ñ Ð´Ð»Ñ %(provider)s. Email "
-#~ "так же требуетÑÑ Ñ‚Ð¾Ð¶Ðµ, Ñмотрите %(gravatar_faq_url)s"
+#: skins/default/templates/authopenid/changeemail.html:66
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Email проверен"
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ внешнего %(provider)s к учетной запиÑи, Ñмотрите "
-#~ "%(gravatar_faq_url)s"
+#: skins/default/templates/authopenid/changeemail.html:69
+msgid "thanks for verifying email"
+msgstr ""
+"<span class=\"big strong\">СпаÑибо за то что подтвердили email!</span> "
+"Теперь вы можете <strong>Ñпрашивать</strong> и <strong>отвечать</strong> на "
+"вопроÑÑ‹. Также еÑли вы найдёте очень интереÑный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð²Ñ‹ можете "
+"<strong>подпиÑатьÑÑ Ð½Ð° обновление</strong> - тогда Ð²Ð°Ñ Ð±ÑƒÐ´ÑƒÑ‚ уведомлÑÑ‚ÑŒ "
+"<strong>раз в день</strong> или реже."
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr ""
-#~ "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Facebook подключениÑ, Ñмотрите %(gravatar_faq_url)s"
+#: skins/default/templates/authopenid/changeemail.html:73
+msgid "email key not sent"
+msgstr ""
+"Email ключ не отоÑлан"
-#~ msgid "This account already exists, please use another."
-#~ msgstr "Эта ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже ÑущеÑтвует, пожалуйÑта, иÑпользуйте другую."
+#: skins/default/templates/authopenid/changeemail.html:76
+#, python-format
+msgid "email key not sent %(email)s change email here %(change_link)s"
+msgstr ""
+"email ключ не отоÑлан на %(email)s, изменить email здеÑÑŒ %(change_link)s"
-#~ msgid "Screen name label"
-#~ msgstr "Логин"
+#: skins/default/templates/authopenid/complete.html:21
+#: skins/default/templates/authopenid/complete.html:23
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "РегиÑтрациÑ"
-#~ msgid "Email address label"
-#~ msgstr "Email"
+#: skins/default/templates/authopenid/complete.html:27
+#, python-format
+msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+msgstr ""
+"<p><span class=\"big strong\">Ð’Ñ‹ впервые вошли Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(provider)s.</"
+"span> ПожалуйÑта, задайте <strong>отображаемое имÑ</strong> и Ñохраните Ñвой "
+"<strong>email</strong> адреÑ. Сохраненный email Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚ "
+"вам<strong>подпиÑыватьÑÑ Ð½Ð° изменениÑ</strong> наиболее интереÑных вопроÑов "
+"и будет иÑпользоватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñоздать и получать в дальнейшем уникальное "
+"изображение Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ аватара - <a "
+"href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "Получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте"
+#: skins/default/templates/authopenid/complete.html:30
+#, python-format
+msgid ""
+"%(username)s already exists, choose another name for \n"
+" %(provider)s. Email is required too, see "
+"%(gravatar_faq_url)s\n"
+" "
+msgstr ""
+"<p><span class='strong big'>К Ñожалению looks похоже что Ð¸Ð¼Ñ %(username)s "
+"иÑпользуетÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пользователем.</span></p><p>ПожалуйÑта выберите другое "
+"Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¼ÐµÑте Ñ Ð²Ð°ÑˆÐ¸Ð¼ %(provider)s логином. Также, правильный "
+"email Ð°Ð´Ñ€ÐµÑ Ð½ÑƒÐ¶ÐµÐ½ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° форуме <span "
+"class='orange'>ВопроÑов&amp;Ответов</span>. Ваш email Ð°Ð´Ñ€ÐµÑ Ð¸ÑпользуетÑÑ Ð´Ð»Ñ "
+"того чтобы Ñоздать уникальный <a href='%(gravatar_faq_url)s'><strong>аватар</"
+"strong></a>, картинку ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð°ÑÑоциируетÑÑ Ñ Ð²Ð°ÑˆÐµÐ¹ учётной запиÑью. ЕÑли вы "
+"хотите, вы можете <strong>получать уведомлениÑ</strong> о интереÑных "
+"вопроÑах или о вÑём форуме через email. Email Ð°Ð´Ñ€ÐµÑ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не показываетÑÑ "
+"кому-то ещё.</p>"
+
+#: skins/default/templates/authopenid/complete.html:34
+#, python-format
+msgid ""
+"register new external %(provider)s account info, see %(gravatar_faq_url)s"
+msgstr ""
+"<p><span class=\"big strong\">Ð’Ñ‹ впервые вошли Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(provider)s.</"
+"span> ПожалуйÑта, задайте <strong>отображаемое имÑ</strong> the same as your "
+"%(provider)s login name or choose some other nickname.</p><p>Also, please "
+"save a valid <strong>email</strong> address. With the email you can "
+"<strong>subscribe for the updates</strong> on the most interesting "
+"questions. Email address is also used to create and retrieve your unique "
+"avatar image - <a href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>."
+"</p>"
+
+#: skins/default/templates/authopenid/complete.html:37
+#, python-format
+msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+msgstr ""
+"<p><span class=\"big strong\">Ð’Ñ‹ впервые вошли Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Facebook.</span> "
+"ПожалуйÑта, задайте <strong>отображаемое имÑ</strong> и Ñохраните Ñвой "
+"<strong>email</strong> адреÑ. Сохраненный email Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚ "
+"вам<strong>подпиÑыватьÑÑ Ð½Ð° изменениÑ</strong> наиболее интереÑных вопроÑов "
+"и будет иÑпользоватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñоздать и получать в дальнейшем уникальное "
+"изображение Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ аватара - <a "
+"href='%(gravatar_faq_url)s'><strong>gravatar</strong></a>.</p>"
-#~ msgid "please select one of the options above"
-#~ msgstr "ПожалуйÑта, выберите один из вариантов"
+#: skins/default/templates/authopenid/complete.html:40
+msgid "This account already exists, please use another."
+msgstr ""
+"Эта ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже ÑущеÑтвует, пожалуйÑта иÑпользуйте другую."
-#~ msgid "Tag filter tool will be your right panel, once you log in."
-#~ msgstr ""
-#~ "Фильтр тегов будет в правой панели, поÑле того, как вы войдете в ÑиÑтему"
+#: skins/default/templates/authopenid/complete.html:59
+msgid "Screen name label"
+msgstr ""
+"<strong>Логин</strong>(<i>ваш ник, будет показан другим</i>)"
-#~ msgid "create account"
-#~ msgstr "зарегиÑтрироватьÑÑ"
+#: skins/default/templates/authopenid/complete.html:66
+msgid "Email address label"
+msgstr ""
+"<strong>Email адреÑ</strong> (<i><strong>не</strong> будет показан никому, "
+"должен быть правильным</i>)"
-#~ msgid "Logout"
-#~ msgstr "Выйти"
+#: skins/default/templates/authopenid/complete.html:72
+#: skins/default/templates/authopenid/signup_with_password.html:18
+msgid "receive updates motivational blurb"
+msgstr ""
+"<strong>Получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð° по email</strong> - Ñто поможет нашему "
+"ÑообщеÑтву раÑти и ÑтановитьÑÑ Ð±Ð¾Ð»ÐµÐµ полезным.<br/>По-умолчанию, <span "
+"class='orange'>Q&amp;A</span> форум отÑылает<strong> одно пиÑьмо Ñ "
+"изменениÑми в неделю</strong> - только, еÑли за Ñто Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾ÑвилиÑÑŒ "
+"обновлениÑ.<br/>ЕÑли хотите, измените Ñту наÑтройку ÑÐµÐ¹Ñ‡Ð°Ñ Ð¸Ð»Ð¸ в любое "
+"другое Ð²Ñ€ÐµÐ¼Ñ Ð² Ñвоей учетной запиÑи пользователÑ."
-#~ msgid "User login"
-#~ msgstr "Вход выполнен"
+#: skins/default/templates/authopenid/complete.html:76
+#: skins/default/templates/authopenid/signup_with_password.html:22
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+"пожалуйÑта, выберите один из вариантов выше"
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Ваш ответ на %(title)s / %(summary)s будет опубликован, как только вы "
-#~ "войдете"
+#: skins/default/templates/authopenid/complete.html:79
+msgid "Tag filter tool will be your right panel, once you log in."
+msgstr ""
+"Фильтр тегов будет в правой панели, поÑле того, как вы войдете в ÑиÑтему."
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ %(title)s / %(summary)s Ñ‹ будет опубликован поÑле того, как вы "
-#~ "войдёте"
+#: skins/default/templates/authopenid/complete.html:80
+msgid "create account"
+msgstr ""
+"зарегиÑтрироватьÑÑ"
-#~ msgid ""
-#~ "Take a pick of your favorite service below to sign in using secure OpenID "
-#~ "or similar technology. Your external service password always stays "
-#~ "confidential and you don't have to rememeber or create another one."
-#~ msgstr ""
-#~ "Выберите ваш ÑÐµÑ€Ð²Ð¸Ñ Ñ‡Ñ‚Ð¾Ð±Ñ‹ войти иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñную OpenID (или похожую) "
-#~ "технологию. Пароль к вашей внешней Ñлужбе вÑегда конфиденциален и нет "
-#~ "необходимоÑти Ñоздавать пароль при региÑтрации."
+#: skins/default/templates/authopenid/logout.html:3
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Выйти"
-#~ msgid ""
-#~ "It's a good idea to make sure that your existing login methods still "
-#~ "work, or add a new one. Please click any of the icons below to check/"
-#~ "change or add new login methods."
-#~ msgstr ""
-#~ "Ð’Ñегда Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð¸Ð´ÐµÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ работает ли ваш текущий метод входа, а "
-#~ "также добавить и другие методы. ПожалуйÑта, выберите любую иконку ниже "
-#~ "Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸/изменениÑ/Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² входа."
+#: skins/default/templates/authopenid/logout.html:5
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+"Ð’Ñ‹ уÑпешно вышли из ÑиÑтемы"
-#~ msgid ""
-#~ "Please add a more permanent login method by clicking one of the icons "
-#~ "below, to avoid logging in via email each time."
-#~ msgstr ""
-#~ "ПожалуйÑта, добавьте поÑтоÑнный метод входа кликнув по одной из иконок "
-#~ "ниже, чтобы не входить каждый раз через e-mail."
+#: skins/default/templates/authopenid/logout.html:7
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+"Тем не менее может Вам может понадобитьÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ выйти из ÑиÑтемы Ñайтов - "
+"провайдеров методов авторизации."
+
+#: skins/default/templates/authopenid/macros.html:53
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "ПожалуйÑта, введите ваше <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ</span>, затем войдите"
+
+#: skins/default/templates/authopenid/macros.html:54
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr "(или выберите один из методов входа выше)"
+
+#: skins/default/templates/authopenid/macros.html:56
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "Войти"
+
+#: skins/default/templates/authopenid/signin.html:4
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Вход выполнен"
+
+#: skins/default/templates/authopenid/signin.html:12
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Ваш ответ на </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">Ñохранён и будет "
+"опубликован, как только вы войдёте.</span>"
-#~ msgid ""
-#~ "Click on one of the icons below to add a new login method or re-validate "
-#~ "an existing one."
-#~ msgstr ""
-#~ "Кликние на одной из иконок ниже чтобы добавить метод входа или проверить "
-#~ "уже ÑущеÑтвующий."
+#: skins/default/templates/authopenid/signin.html:19
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Ваш вопроÑ</span> <i>\"<strong>%(title)s</strong> "
+"%(summary)s...\"</i> <span class=\"strong big\">Ñохранён и будет опубликован "
+"поÑле того, как вы войдёте.</span>"
-#~ msgid ""
-#~ "You don't have a method to log in right now, please add one or more by "
-#~ "clicking any of the icons below."
-#~ msgstr ""
-#~ "Ðа данный момент вами не выбран ни один из методов входа, добавьте Ñ…Ð¾Ñ‚Ñ "
-#~ "бы один кликнув по иконке ниже."
+#: skins/default/templates/authopenid/signin.html:27
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+"Ð¥Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð¸Ð´ÐµÑ ÑƒÐ±ÐµÐ´Ð¸Ñ‚ÑÑ Ñ‡Ñ‚Ð¾ текущий ÑпоÑоб авторизации вÑе еще работает , или "
+"добавить еще один новый. ПожалуйÑта нажмите на любую иконку раÑположеную "
+"ниже что бы проверить/изменить или добавить новый метод авторизации "
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr ""
-#~ "ПожалуйÑта, проверьте ваш email и пройдите по ÑÑылке чтобы вновь войти в "
-#~ "ваш аккаунт"
+#: skins/default/templates/authopenid/signin.html:29
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+"ПожалуйÑта, добавьте поÑтоÑнный метод входа кликнув по одной из иконок ниже, "
+"чтобы не входить каждый раз через e-mail."
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваши <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль</span>, затем "
-#~ "войдите"
+#: skins/default/templates/authopenid/signin.html:35
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+"Ðа данный момент вами не выбран ни один из методов входа, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ "
+"один кликнув по иконке ниже."
-#~ msgid "Login failed, please try again"
-#~ msgstr "Вход завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, попробуйте ещё раз"
+#: skins/default/templates/authopenid/signin.html:38
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+"ПожалуйÑта, проверьте ваш email и пройдите по ÑÑылке чтобы вновь войти в ваш "
+"аккаунт"
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "не поÑылать email"
+#: skins/default/templates/authopenid/signin.html:75
+msgid "Please enter your <span>user name and password</span>, then sign in"
+msgstr ""
+"ПожалуйÑта, введите ваши <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль</span>, затем "
+"войдите"
-#~ msgid "Password"
-#~ msgstr "Пароль"
+#: skins/default/templates/authopenid/signin.html:78
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "Вход завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, попробуйте ещё раз"
-#~ msgid "Login"
-#~ msgstr "Войти"
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr "Логин или email"
-#~ msgid ""
-#~ "To change your password - please enter the new one twice, then submit"
-#~ msgstr ""
-#~ "Чтобы изменить ваш пароль - пожалуйÑта, введите новый дважды и "
-#~ "подтвердите ввод"
+#: skins/default/templates/authopenid/signin.html:86
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Пароль"
-#~ msgid "New password"
-#~ msgstr "Ðовый пароль"
+#: skins/default/templates/authopenid/signin.html:91
+msgid "Login"
+msgstr "Войти"
-#~ msgid "Please, retype"
-#~ msgstr "пожалуйÑта, ещё раз"
+#: skins/default/templates/authopenid/signin.html:102
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+"Чтобы изменить ваш пароль, пожалуйÑта, введите новый дважды "
+"подтвердите ввод"
-#~ msgid "Here are your current login methods"
-#~ msgstr "Ваши текущие методы входа"
+#: skins/default/templates/authopenid/signin.html:106
+msgid "Enter new password"
+msgstr "Введите новый пароль"
-#~ msgid "provider"
-#~ msgstr "провайдер"
+#: skins/default/templates/authopenid/signin.html:111
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+"ПожалуйÑта, повторите"
-#~ msgid "last used"
-#~ msgstr "поÑледний иÑпользованный"
+#: skins/default/templates/authopenid/signin.html:122
+msgid "... or enter by clicking one of the buttons below"
+msgstr "... или войдите, нажав одну из кнопок ниже"
-#~ msgid "delete, if you like"
-#~ msgstr "удалите, еÑли хотите"
+#: skins/default/templates/authopenid/signin.html:142
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Ваши текущие методы входа"
-#~ msgid "delete"
-#~ msgstr "удалить"
+#: skins/default/templates/authopenid/signin.html:146
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "провайдер"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Ðккаунт удален."
+#: skins/default/templates/authopenid/signin.html:147
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr "поÑледний иÑпользованный"
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "По-прежнему проблемы Ñо входом ?"
+#: skins/default/templates/authopenid/signin.html:148
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "удалите, еÑли хотите"
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ и получите новый ключ"
+#: skins/default/templates/authopenid/signin.html:164
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr ""
+"не может быть удалено"
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr ""
-#~ "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ чтобы воÑÑтановить ваш аккаунт"
+#: skins/default/templates/authopenid/signin.html:177
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr "По-прежнему проблемы Ñо входом ?"
-#~ msgid "recover your account via email"
-#~ msgstr "ВоÑÑтановить ваш аккаунт по email"
+#: skins/default/templates/authopenid/signin.html:182
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ и получите новый ключ"
-#~ msgid "Send a new recovery key"
-#~ msgstr "ПоÑлать новый ключ воÑÑтановлениÑ"
+#: skins/default/templates/authopenid/signin.html:184
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+"ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ чтобы воÑÑтановить ваш аккаунт"
-#~ msgid "Recover your account via email"
-#~ msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
+#: skins/default/templates/authopenid/signin.html:187
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+"воÑÑтановить ваш аккаунт по email"
-#~ msgid "Why use OpenID?"
-#~ msgstr "ПлюÑÑ‹ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenID"
+#: skins/default/templates/authopenid/signin.html:198
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+"Отправить новый ключ воÑÑтановлениÑ"
-#~ msgid "with openid it is easier"
-#~ msgstr "С OpenID проще"
+#: skins/default/templates/authopenid/signin.html:200
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
-#~ msgid "reuse openid"
-#~ msgstr "ИÑпользуйте везде повторно"
+#: skins/default/templates/authopenid/signin.html:212
+msgid "Why use OpenID?"
+msgstr ""
+"ПлюÑÑ‹ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenID"
-#~ msgid "openid is widely adopted"
-#~ msgstr "OpenID широко раÑпроÑтранён"
+#: skins/default/templates/authopenid/signin.html:215
+msgid "with openid it is easier"
+msgstr ""
+"С OpenID вам не надо Ñоздавать новое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль."
-#~ msgid "openid is supported open standard"
-#~ msgstr "OpenID поддерживаемый открытый Ñтандарт"
+#: skins/default/templates/authopenid/signin.html:218
+msgid "reuse openid"
+msgstr ""
+"С OpenID вы можете иÑпользовать одну учётную запиÑÑŒ Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ… Ñайтов "
+"которые поддерживаю OpenID."
-#~ msgid "Find out more"
-#~ msgstr "Узнать больше"
+#: skins/default/templates/authopenid/signin.html:221
+msgid "openid is widely adopted"
+msgstr ""
+"Более 160 миллионов пользователей иÑпользует OpenID и более 10 Ñ‚Ñ‹ÑÑч Ñайтов "
+"его поддерживают."
-#~ msgid "Get OpenID"
-#~ msgstr "Получить OpenID"
+#: skins/default/templates/authopenid/signin.html:224
+msgid "openid is supported open standard"
+msgstr ""
+"OpenID оÑнован на открытом Ñтандарте, поддерживаемом многими организациÑми."
-#~ msgid "Signup"
-#~ msgstr "ЗарегиÑтрироватьÑÑ"
+#: skins/default/templates/authopenid/signin.html:228
+msgid "Find out more"
+msgstr "Узнать больше"
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Создайте Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
+#: skins/default/templates/authopenid/signin.html:229
+msgid "Get OpenID"
+msgstr "Получить OpenID"
-#~ msgid "or create a new user name and password here"
-#~ msgstr "или зайдите нажав одну из кнопок ниже"
+#: skins/default/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "ЗарегиÑтрироватьÑÑ"
-#~ msgid "Create login name and password"
-#~ msgstr "Создать Ð¸Ð¼Ñ Ð¸ пароль"
+#: skins/default/templates/authopenid/signup_with_password.html:9
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+"ПожалуйÑта, зарегиÑтрируйтеÑÑŒ, нажав на любую из иконок ниже"
-#~ msgid "Traditional signup info"
-#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ традиционной региÑтрации"
+#: skins/default/templates/authopenid/signup_with_password.html:26
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"ПожалуйÑта, перенаберите два Ñлова ниже, чтобы мы могли понÑÑ‚ÑŒ что вы "
+"человек."
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "ПожалуйÑта, прочтите и укажите два Ñлова ниже, чтобы помочь нам "
-#~ "предотвратить автоматизированные ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи."
+#: skins/default/templates/authopenid/signup_with_password.html:29
+msgid "Create Account"
+msgstr "Создать учетную запиÑÑŒ"
-#~ msgid "Create Account"
-#~ msgstr "Создать учетную запиÑÑŒ"
+#: skins/default/templates/authopenid/signup_with_password.html:31
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "или"
-#~ msgid "or"
-#~ msgstr "или"
+#: skins/default/templates/authopenid/signup_with_password.html:32
+msgid "return to login page"
+msgstr "вернутьÑÑ Ðº Ñтранице входа"
-#~ msgid "return to OpenID login"
-#~ msgstr "вернутьÑÑ Ðº Ñтарнице OpenID входа"
+#: skins/default/templates/authopenid/signup_with_password.html:37
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr ""
+"или Ñоздайте новый логин и пароль здеÑÑŒ"
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "что такое Gravatar"
+#: skins/default/templates/authopenid/signup_with_password.html:54
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Создать Ð¸Ð¼Ñ Ð¸ пароль"
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Измененить Ñ‚Ñги"
+#: skins/default/templates/authopenid/signup_with_password.html:55
+msgid "Traditional signup info"
+msgstr ""
+"<span class='strong big'>ЕÑли вы предпочитаете иÑпользовать традиционные "
+"методы входа Ñ Ð»Ð¾Ð³Ð¸Ð½Ð¾Ð¼ и паролем.</span> Ðо помните что мы также "
+"поддерживаем логин через <strong>OpenID</strong>. ВмеÑте Ñ <strong>OpenID</"
+"strong> вы можете легко иÑпользовать другие ваши учётные запиÑи (Ñ‚.к. Gmail "
+"или AOL) без надобноÑти делитьÑÑ Ð²Ð°ÑˆÐ¸Ð¼Ð¸ приватными данными или придумывать "
+"ещё один пароль."
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "ПодробноÑти вашей учетной запиÑи:"
+#: skins/default/templates/avatar/add.html:3
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "добавить аватар"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
+#: skins/default/templates/avatar/add.html:5
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr ""
+"Сменить аватар"
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "zagruzhaem-file/"
+#: skins/default/templates/avatar/add.html:6
+#: skins/default/templates/avatar/change.html:7
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "Ваш текущий аватар:"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "удаленный ответ"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "Ð’Ñ‹ ещё не загрузили аватар. ПожалуйÑта загрузите его."
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "удаленный ответ"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "Загрузить новое изображение"
-#~ msgid "answer permanent link"
-#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка на ответ"
+#: skins/default/templates/avatar/change.html:4
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr ""
+"ПоменÑÑ‚ÑŒ теги вопроÑа"
-#~ msgid "permanent link"
-#~ msgstr "поÑтоÑÐ½Ð½Ð°Ñ ÑÑылка"
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "Выберите новое умолчание"
-#~ msgid "edit"
-#~ msgstr "редактировать"
+#: skins/default/templates/avatar/change.html:22
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+"Загрузить"
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr ""
-#~ "Ñообщить о Ñпаме (Ñ‚.е. ÑообщениÑÑ… Ñодержащих Ñпам, рекламу, вредоноÑные "
-#~ "ÑÑылки и Ñ‚.д.)"
+#: skins/default/templates/avatar/confirm_delete.html:3
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "удалить аватар"
-#~ msgid "flag offensive"
-#~ msgstr "Ñпам"
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "ПожалуйÑта выберите аватары которые вы хотите удалить."
-#~ msgid "undelete"
-#~ msgstr "воÑÑтановить"
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+"У Ð²Ð°Ñ Ð½ÐµÑ‚Ñƒ аватаров Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ. ПожалуйÑта <a href=\"%(avatar_change_url)s"
+"\">загрузите один</a> ÑейчаÑ."
+
+#: skins/default/templates/avatar/confirm_delete.html:13
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+"Удалить выбранные"
+
+#: skins/default/templates/blocks/answer_edit_tips.html:3
+msgid "answer tips"
+msgstr ""
+"Советы"
+
+#: skins/default/templates/blocks/answer_edit_tips.html:6
+msgid "please make your answer relevant to this community"
+msgstr ""
+"пожалуйÑта поÑтарайтеÑÑŒ дать ответ который будет интереÑен коллегам по форуму"
+
+#: skins/default/templates/blocks/answer_edit_tips.html:9
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"поÑтарайтеÑÑŒ ответить, а не заниматьÑÑ Ð¾Ð±Ñуждением"
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Ответить на вопроÑ"
+#: skins/default/templates/blocks/answer_edit_tips.html:12
+msgid "please try to provide details"
+msgstr ""
+"включите детали в Ваш ответ"
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr ""
-#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
+#: skins/default/templates/blocks/answer_edit_tips.html:15
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть четким и лаконичным"
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "автор вопроÑа %(question_author)s выбрал Ñтот ответ правильным"
+#: skins/default/templates/blocks/answer_edit_tips.html:19
+#: skins/default/templates/blocks/question_edit_tips.html:10
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+"поÑмотрите на чаÑто задаваемые вопроÑÑ‹"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr ""
-#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+#: skins/default/templates/blocks/answer_edit_tips.html:25
+msgid "Markdown tips"
+msgstr "ПоддерживаетÑÑ Ñзык разметки - Markdown"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "дата закрытиÑ: %(closed_at)s"
+#: skins/default/templates/blocks/answer_edit_tips.html:29
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*курÑив*"
-#~ msgid "retag"
-#~ msgstr "изменить тег"
+#: skins/default/templates/blocks/answer_edit_tips.html:32
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+"**жирный шрифт**"
-#~ msgid "reopen"
-#~ msgstr "переоткрыть"
+#: skins/default/templates/blocks/answer_edit_tips.html:36
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*курÑив* или _курÑив_"
-#~ msgid "close"
-#~ msgstr "закрыть"
+#: skins/default/templates/blocks/answer_edit_tips.html:39
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**жирный шрифт** или __жирный шрифт__"
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "Ñто поле обÑзательное"
+#: skins/default/templates/blocks/answer_edit_tips.html:43
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "ÑÑылка"
-#~ msgid "(required)"
-#~ msgstr "(обÑзательно)"
+#: skins/default/templates/blocks/answer_edit_tips.html:43
+#: skins/default/templates/blocks/answer_edit_tips.html:47
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "текÑÑ‚"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Включить/выключить предварительный проÑмотр текÑта"
+#: skins/default/templates/blocks/answer_edit_tips.html:47
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "изображение"
-#~ msgid "hide preview"
-#~ msgstr "Ñкрыть предварительный проÑмотр"
+#: skins/default/templates/blocks/answer_edit_tips.html:51
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "пронумерованный ÑпиÑок:"
+
+#: skins/default/templates/blocks/answer_edit_tips.html:56
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr ""
+"оÑновные теги HTML также поддерживаютÑÑ"
+
+#: skins/default/templates/blocks/answer_edit_tips.html:60
+#: skins/default/templates/blocks/question_edit_tips.html:24
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+"Узнать больше о Markdown"
+
+#: skins/default/templates/blocks/ask_form.html:72
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾</"
+"span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на Ñтраницу "
+"авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет опубликован "
+"как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш форум очень легко. "
+"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
+"одну минуту."
-#~ msgid "Related tags"
-#~ msgstr "СвÑзанные теги"
+#: skins/default/templates/blocks/ask_form.html:76
+#, python-format
+msgid ""
+"must have valid %(email)s to post, \n"
+"\t\t\t\t\t\t\tsee %(email_validation_faq_url)s\n"
+"\t\t\t\t\t\t\t"
+msgstr ""
+"Ð´Ð»Ñ Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñообщений необходим дейÑтвующий Ð°Ð´Ñ€ÐµÑ %(email)s Ñм. "
+"%(email_validation_faq_url)s"
-#~ msgid "Interesting tags"
-#~ msgstr "Избранные теги"
+#: skins/default/templates/blocks/ask_form.html:100
+msgid "Login/signup to post your question"
+msgstr ""
+"Войдите/ЗарегиÑтрируйтеÑÑŒ чтобы опубликовать Ваш ворпоÑ"
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Добавить"
+#: skins/default/templates/blocks/ask_form.html:102
+msgid "Ask your question"
+msgstr "Задайте Ваш вопроÑ"
-#~ msgid "Ignored tags"
-#~ msgstr "Игнорируемые теги"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+"Заметьте %(app_name)s требует нормальной работы JavaScript, пожалуйÑта "
+"включите его в вашем браузере, <a href=\"%(noscript_url)s\">тут опиÑано как "
+"Ñто Ñделать</a>"
-#~ msgid "Display tag filter"
-#~ msgstr "Фильтр по тегам"
+#: skins/default/templates/blocks/editor_data.html:5
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+"каждый тег должно быть короче чем %(max_chars)s Ñимвол"
+msgstr[1] ""
+"каждый тег должно быть короче чем %(max_chars)s Ñимвола"
+msgstr[2] ""
+"каждый тег должно быть короче чем %(max_chars)s Ñимволов"
-#~ msgid "Page not found"
-#~ msgstr "Страница не найдена"
+#: skins/default/templates/blocks/editor_data.html:7
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+"пожалуйÑта иÑпользуйте %(tag_count)s тег"
+msgstr[1] ""
+"пожалуйÑта введите не более %(tag_count)s тега"
+msgstr[2] ""
+"пожалуйÑта введите не более %(tag_count)s тегов"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Извините, но запрошенный Вами документ не был найден."
+#: skins/default/templates/blocks/editor_data.html:8
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+"пожалуйÑта иÑпользуйте до %(tag_count)s тегов, меньше чем %(max_chars)s "
+"Ñимволов каждый"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Это могло произойти по Ñледующим причинам:"
+#: skins/default/templates/blocks/footer.html:4
+#: skins/default/templates/blocks/header_meta_links.html:13
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+"О наÑ"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ были удалены;"
+#: skins/default/templates/blocks/footer.html:6
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "политика конфиденциальноÑти"
-#~ msgid "url has error - please check it;"
-#~ msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» неверен - пожалуйÑта проверьте;"
+#: skins/default/templates/blocks/footer.html:15
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "оÑтавить отзыв"
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "документ который Ð’Ñ‹ запроÑили защищён или у Ð’Ð°Ñ Ð½Ðµ хватает \"репутации\", "
-#~ "пожалуйÑта поÑмотрите"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "вернутьÑÑ Ð½Ð° главную"
-#~ msgid "faq"
-#~ msgstr "ЧаÑто задаваемые вопроÑÑ‹"
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "%(site)s логотип"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "еÑли Ð’Ñ‹ Ñчитаете что Ñта ошибка показана неверно, пожалуйÑта"
+#: skins/default/templates/blocks/header.html:20 urls.py:61
+msgid "questions"
+msgstr "вопроÑÑ‹"
-#~ msgid "report this problem"
-#~ msgstr "Ñообщите об Ñтой проблеме"
+#: skins/default/templates/blocks/header.html:30
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "пользователи"
-#~ msgid "back to previous page"
-#~ msgstr "вернутьÑÑ Ð½Ð° предыдущую Ñтраницу"
+#: skins/default/templates/blocks/header.html:35
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "награды"
-#~ msgid "see all questions"
-#~ msgstr "Ñмотреть вÑе вопроÑÑ‹"
+#: skins/default/templates/blocks/header.html:38
+msgid "click here to see old astsup forum"
+msgstr "Вдохните глоток прошлого - почитайте Ñтарый добрый asterisk-support.ru"
-#~ msgid "see all tags"
-#~ msgstr "Ñмотреть вÑе темы"
+#: skins/default/templates/blocks/header.html:39
+msgid "Old AstSup"
+msgstr "Ñтарый форум"
-#~ msgid "Internal server error"
-#~ msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñервера"
+#: skins/default/templates/blocks/header.html:44
+msgid "ask a question"
+msgstr ""
+"задать вопроÑ"
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "об Ñтой ошибке была Ñделана запиÑÑŒ в журнале и ÑоответÑтвующие "
-#~ "иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ вÑкоре Ñделаны"
+#: skins/default/templates/blocks/header_meta_links.html:8
+msgid "logout"
+msgstr ""
+"выход"
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr ""
-#~ "еÑли у Ð’Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ÑÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ, пожалуйÑта Ñообщите об Ñтой ошибке вебмаÑтеру"
+#: skins/default/templates/blocks/header_meta_links.html:10
+msgid "login"
+msgstr "вход"
-#~ msgid "see latest questions"
-#~ msgstr "Ñмотреть Ñамые новые вопроÑÑ‹"
+#: skins/default/templates/blocks/header_meta_links.html:15
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr ""
+"наÑтройки"
-#~ msgid "see tags"
-#~ msgstr "Ñмотреть темы"
+#: skins/default/templates/blocks/input_bar.html:33
+msgid "search"
+msgstr "поиÑк"
-#~ msgid "Edit answer"
-#~ msgstr "Править ответ"
+#: skins/default/templates/blocks/tag_selector.html:4
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Избранные теги"
-#~ msgid "back"
-#~ msgstr "назад"
+#: skins/default/templates/blocks/tag_selector.html:18
+#: skins/default/templates/blocks/tag_selector.html:34
+#: skins/default/templates/user_profile/user_moderate.html:40
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+"Добавить"
-#~ msgid "revision"
-#~ msgstr "верÑÐ¸Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸"
+#: skins/default/templates/blocks/tag_selector.html:20
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Игнорируемые теги"
-#~ msgid "select revision"
-#~ msgstr "выбрать верÑию"
+#: skins/default/templates/blocks/tag_selector.html:36
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Фильтр по тегам"
-#~ msgid "Save edit"
-#~ msgstr "Сохранить"
+msgid "Show only questions from"
+msgstr "Фильтр по тегам"
-#~ msgid "show preview"
-#~ msgstr "показать предварительный проÑмотр"
+#: skins/default/templates/main_page/content.html:13
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Ðе нашли то, что иÑкали?"
-#~ msgid "Ask a question"
-#~ msgstr "СпроÑить"
+#: skins/default/templates/main_page/content.html:14
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr ""
+"Тогда задайте Ñвой вопроÑ!"
-#~ msgid "%(name)s"
-#~ msgstr "%(name)s"
+#: skins/default/templates/main_page/headline.html:6
+#: skins/default/templates/main_page/headline.html:15
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
-#~ msgid "Badge"
-#~ msgstr "Ðаграда"
+#: skins/default/templates/main_page/headline.html:16
+msgid "rss feed"
+msgstr "RSS-канал"
-#, fuzzy
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "%(name)s"
+#: skins/default/templates/main_page/headline.html:22 views/readers.py:131
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] ""
+"%(q_num)s вопроÑ, по темам"
+msgstr[1] ""
+"%(q_num)s вопроÑа, по темам"
+msgstr[2] ""
+"%(q_num)s вопроÑов, по темам"
-#~ msgid "%(description)s"
-#~ msgstr "%(description)s"
+#: skins/default/templates/main_page/headline.html:24 views/readers.py:139
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s вопроÑ"
+msgstr[1] "%(q_num)s вопроÑа"
+msgstr[2] "%(q_num)s вопроÑов"
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "пользователь, получивший Ñтот значок"
-#~ msgstr[1] "пользователÑ, получивших Ñтот значок"
-#~ msgstr[2] "пользователей, получивших Ñтот значок"
+#: skins/default/templates/main_page/headline.html:27
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+"Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ð¼ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(author_name)s "
-#~ msgid "Badges summary"
-#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ знаках Ð¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ñ (наградах)"
+#: skins/default/templates/main_page/headline.html:39
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Советы по поиÑку:"
-#~ msgid "Badges"
-#~ msgstr "Значки"
+#: skins/default/templates/main_page/headline.html:42
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr "Ðаграды"
+#: skins/default/templates/main_page/headline.html:44
+#: skins/default/templates/main_page/headline.html:47
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+msgid " or "
+msgstr "или"
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Ðиже приведен ÑпиÑок доÑтупных значков и чиÑло награждений каждым из них. "
-#~ "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ новым значкам отправлÑйте через обратную ÑвÑзь - "
-#~ "%(feedback_faq_url)s.\n"
+#: skins/default/templates/main_page/headline.html:45
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "ÑброÑить Ñ‚Ñги"
-#~ msgid "Community badges"
-#~ msgstr "Значки Ð¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ñ ÑообщеÑтва"
+#: skins/default/templates/main_page/headline.html:48
+#: skins/default/templates/main_page/headline.html:51
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "начать вÑе Ñначала"
-#~ msgid "gold badge: the highest honor and is very rare"
-#~ msgstr "Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: выÑÐ¾ÐºÐ°Ñ Ñ‡ÐµÑÑ‚ÑŒ и очень Ñ€ÐµÐ´ÐºÐ°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°"
+#: skins/default/templates/main_page/headline.html:53
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+"раÑширить или Ñузить при помощи Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñвоих Ñ‚Ñгов и переÑмотра запроÑов"
-#~ msgid "gold badge description"
-#~ msgstr "золотой значок"
+#: skins/default/templates/main_page/headline.html:56
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr ""
+"ПодÑказки Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:"
-#~ msgid ""
-#~ "silver badge: occasionally awarded for the very high quality contributions"
-#~ msgstr "ÑеребрÑÐ½Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: иногда приÑуждаетÑÑ Ð·Ð° большой вклад"
+#: skins/default/templates/main_page/headline.html:56
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+"укажите в запроÑе Ñ‚Ñги чтобы уточнить результаты поиÑка"
-#~ msgid "silver badge description"
-#~ msgstr "ÑеребрÑный значок"
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr ""
+"Ðеотвеченных вопроÑов нет"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "бронзовый значок: чаÑто даётÑÑ ÐºÐ°Ðº оÑÐ¾Ð±Ð°Ñ Ð·Ð°Ñлуга"
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr ""
+"ВопроÑов не найдено"
-#~ msgid "bronze badge description"
-#~ msgstr "бронзовый значок - опиÑание"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please star (bookmark) some questions or follow some users."
+msgstr ""
+"Отметьте вопроÑÑ‹ закладками или Ñледуйте за наиболее интереÑными Вам "
+"пользователÑми"
-#~ msgid "Close question"
-#~ msgstr "Закрыть вопроÑ"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Ð’Ñ‹ можете раÑширить поиÑк"
-#~ msgid "Close the question"
-#~ msgstr "Закрыть вопроÑ"
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
-#~ msgid "Reasons"
-#~ msgstr "Причины"
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr ""
+"ÑÐ±Ñ€Ð¾Ñ Ñ‚ÐµÐ³Ð¾Ð²"
-#~ msgid "OK to close"
-#~ msgstr "OK, чтобы закрыть"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "начать Ñначала"
-#~ msgid "FAQ"
-#~ msgstr "FAQ"
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "Ð’Ñ‹ вÑегда можете задать Ñвой вопроÑ!"
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "ЧаÑто задаваемые вопроÑÑ‹"
+#: skins/default/templates/main_page/sidebar.html:30
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Ðвторы"
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Какие вопроÑÑ‹ Ñ Ð¼Ð¾Ð³Ñƒ задать здеÑÑŒ?"
+#: skins/default/templates/main_page/sidebar.html:47
+msgid "Related tags"
+msgstr "СвÑзанные теги"
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "Самое главное - вопроÑÑ‹ должны <strong>ÑоответÑтвовать теме</strong> "
-#~ "ÑообщеÑтва."
+#: skins/default/templates/main_page/tab_bar.html:75
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr ""
+"Ñмотреть неотвеченные вопроÑÑ‹"
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Перед тем как задать Ð²Ð¾Ð¿Ñ€Ð¾Ñ - пожалуйÑта, не забудьте иÑпользовать поиÑк, "
-#~ "чтобы убедитьÑÑ, что ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐµÑ‰Ðµ не имеет ответа."
+#: skins/default/templates/main_page/tab_bar.html:81
+msgid "see your favorite questions"
+msgstr "проÑмотр отмеченные вопроÑÑ‹"
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Каких вопроÑов мне Ñледует избегать?"
+#: skins/default/templates/user_profile/user.html:13
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr ""
+"профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
+
+#: skins/default/templates/user_profile/user_banner.html:21
+#: skins/default/templates/user_profile/user_banner.html:38
+msgid "Date"
+msgstr "Дата"
+
+#: skins/default/templates/user_profile/user_banner.html:22
+msgid "Views"
+msgstr "ПроÑмотров"
+
+#: skins/default/templates/user_profile/user_banner.html:33
+#: skins/default/templates/user_profile/user_banner.html:73
+msgid "Banner views"
+msgstr "ПроÑмотров баннера"
+
+#: skins/default/templates/user_profile/user_banner.html:39
+msgid "Clicks"
+msgstr "Кликов"
+
+#: skins/default/templates/user_profile/user_banner.html:50
+#: skins/default/templates/user_profile/user_banner.html:77
+msgid "Banner clicks"
+msgstr "Кликов по баннеру"
+
+#: skins/default/templates/user_profile/user_banner.html:58
+#: skins/default/templates/user_profile/user_banner.html:61
+#: skins/default/templates/user_profile/user_tabs.html:46
+msgid "banner"
+msgstr "баннер"
+
+#: skins/default/templates/user_profile/user_banner.html:63
+msgid "Banner info"
+msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ баннере"
+
+#: skins/default/templates/user_profile/user_banner.html:64
+msgid "Your banner is shown on the site."
+msgstr "Ваш баннер отображаетÑÑ Ð½Ð° Ñайте."
+
+#: skins/default/templates/user_profile/user_banner.html:64
+msgid "Your banner is waiting moderator approval."
+msgstr "Ваш баннер ожидает Ð¾Ð´Ð¾Ð±Ñ€ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°."
+
+#: skins/default/templates/user_profile/user_banner.html:67
+msgid "Confirm banner deletion?"
+msgstr "Подтверждаете удаление баннера?"
+
+#: skins/default/templates/user_profile/user_banner.html:69
+msgid "Delete banner"
+msgstr "Удалить баннер"
+
+#: skins/default/templates/user_profile/user_banner.html:74
+#: skins/default/templates/user_profile/user_banner.html:78
+msgid "For the last 30 days"
+msgstr "За поÑледние 30 дней"
+
+#: skins/default/templates/user_profile/user_banner.html:86
+msgid "Create banner"
+msgstr "Создать баннер"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Изменить профиль пользователÑ"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "изменить профиль"
+
+#: skins/default/templates/user_profile/user_edit.html:17
+#: skins/default/templates/user_profile/user_info.html:21
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "изменить изображение"
+
+#: skins/default/templates/user_profile/user_edit.html:20
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "ЗарегиÑтрированный пользователь"
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "ПроÑьба не задавать вопроÑÑ‹, которые не ÑоответÑтвуют теме Ñтого Ñайта, "
-#~ "Ñлишком Ñубъективны или очевидны."
+#: skins/default/templates/user_profile/user_edit.html:23
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr ""
+"Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Чего Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ избегать в Ñвоих ответах?"
+#: skins/default/templates/user_profile/user_edit.html:83
+#: skins/default/templates/user_profile/user_email_subscriptions.html:21
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Обновить"
-#~ 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 ""
-#~ "ÑвлÑетÑÑ Ð¼ÐµÑтом ответов/вопроÑов, а не группой обÑуждениÑ. ПоÑтому - "
-#~ "пожалуйÑта, избегайте обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² Ñвоих ответах. Комментарии позволÑÑŽÑ‚ "
-#~ "лишь краткое обÑуждение."
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr ""
+"подпиÑки"
-#~ msgid "Who moderates this community?"
-#~ msgstr "Кто модерирует Ñто ÑообщеÑтво?"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr ""
+"ÐаÑтройка подпиÑок по email"
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Ответ краток: <strong>вы.</strong>"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:8
+msgid "email subscription settings info"
+msgstr ""
+"<span class='big strong'>ÐаÑтройки чаÑтоты почтовых уведомлений.</span> "
+"Получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ интереÑных вопроÑах через email, <strong><br/"
+">помогите ÑообщеÑтву</strong> Ð¾Ñ‚Ð²ÐµÑ‡Ð°Ñ Ð½Ð° вопроÑÑ‹ ваших коллег. ЕÑли вы не "
+"хотите получать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° email &mdash; выберите 'без email' на вÑех "
+"Ñлементах ниже.<br/>Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ÑылаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тогда, когда еÑÑ‚ÑŒ Ð½Ð¾Ð²Ð°Ñ "
+"активноÑÑ‚ÑŒ в выбранных Ñлементах."
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Этот Ñайт находитÑÑ Ð¿Ð¾Ð´ управлением Ñамих пользователей."
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Stop sending email"
+msgstr ""
+"Ðе Ñлать email"
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "СиÑтема репутации (кармы) позволÑет пользователÑм приобретать различные "
-#~ "управленчеÑкие права."
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:24
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr ""
+"закладки"
-#~ msgid "How does reputation system work?"
-#~ msgstr "Как работает карма?"
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:10
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+"ÑообщениÑ"
-#~ msgid "Rep system summary"
-#~ msgstr "Суть кармы"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "Разделы:"
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Ðапример, еÑли задать интереÑующий Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ дать полный ответ, ваш "
-#~ "вклад будет оценен положительно. С другой Ñтороны, еÑли ответ будет "
-#~ "вводить в заблуждение - Ñто будет оценено отрицательно. Каждый Ð³Ð¾Ð»Ð¾Ñ Ð² "
-#~ "пользу будет генерировать <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</"
-#~ "strong> кармы, каждый Ð³Ð¾Ð»Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² - будет отнимать <strong>"
-#~ "%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> кармы. СущеÑтвует лимит "
-#~ "<strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> кармы, который может "
-#~ "быть набран за Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ за день. Ð’ таблице ниже предÑтавлены вÑе "
-#~ "Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº карме Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ типа модерированиÑ."
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+"ответов в форуме (%(re_count)s)"
-#~ msgid "upvote"
-#~ msgstr "проголоÑовать \"за\""
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "помеченные пункты (%(flag_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "выберите:"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "прочитанные"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "новые"
-#~ msgid "use tags"
-#~ msgstr "иÑпользовать теги"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "нет"
-#~ msgid "add comments"
-#~ msgstr "добавить комментарии"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr ""
+"отметить как прочитаное"
-#~ msgid "downvote"
-#~ msgstr "проголоÑовать \"против\""
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "отметить как новое"
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Первый принÑтый ответ на ÑобÑтвенный вопроÑ"
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "удалить"
-#~ msgid "open and close own questions"
-#~ msgstr "открывать и закрывать Ñвои вопроÑÑ‹"
+#: skins/default/templates/user_profile/user_info.html:5
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "обновить профиль"
-#~ msgid "retag other's questions"
-#~ msgstr "изменÑÑ‚ÑŒ теги других вопроÑов"
+#: skins/default/templates/user_profile/user_info.html:6
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "управление методами входа"
-#~ msgid "edit community wiki questions"
-#~ msgstr "редактировать вопроÑÑ‹ в вики ÑообщеÑтва "
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "удалить"
-#~ msgid "\"edit any answer"
-#~ msgstr "редактировать любой ответ"
+#: skins/default/templates/user_profile/user_info.html:44
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "наÑтоÑщее имÑ"
-#~ msgid "\"delete any comment"
-#~ msgstr "удалÑÑ‚ÑŒ любые комментарии"
+#: skins/default/templates/user_profile/user_info.html:49
+msgid "member for"
+msgstr "ÑоÑтоит пользователем"
-#~ msgid "what is gravatar"
-#~ msgstr "что такое Gravatar"
+#: skins/default/templates/user_profile/user_info.html:54
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "поÑледнее поÑещение"
-#~ msgid "gravatar faq info"
-#~ msgstr "gravatar FAQ"
+#: skins/default/templates/user_profile/user_info.html:60
+msgid "user website"
+msgstr ""
+"веб-Ñтраница"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Ðеобходимо ли Ñоздавать новый пароль, чтобы зарегиÑтрироватьÑÑ?"
+#: skins/default/templates/user_profile/user_info.html:65
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+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, AOL и т.д."
+#: skins/default/templates/user_profile/user_info.html:85
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "возраÑÑ‚"
-#~ msgid "\"Login now!\""
-#~ msgstr "Войти ÑейчаÑ!"
+#: skins/default/templates/user_profile/user_info.html:86
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr ""
+"лет"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "Почему другие люди могут изменÑÑ‚ÑŒ мои вопроÑÑ‹ / ответы?"
+#: skins/default/templates/user_profile/user_info.html:91
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr ""
+"неиÑпользованных ÑÐµÐ³Ð¾Ð´Ð½Ñ Ð³Ð¾Ð»Ð¾Ñов"
-#~ msgid "Goal of this site is..."
-#~ msgstr "Цель Ñтого Ñайта ..."
+#: skins/default/templates/user_profile/user_info.html:92
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+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 ""
-#~ "Таким образом, более опытные пользователи могут редактировать вопроÑÑ‹ и "
-#~ "ответы как Ñтраницы вики, что в Ñвою очередь улучшает качеÑтво ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ "
-#~ "базы данных вопроÑов/ответов."
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:41
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "модерациÑ"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "ЕÑли Ñтот подход не Ð´Ð»Ñ Ð²Ð°Ñ, мы уважаем ваш выбор."
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+"текущий ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s - \"%(status)s\""
-#~ msgid "Still have questions?"
-#~ msgstr "ОÑталиÑÑŒ вопроÑÑ‹?"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»ÑÑ"
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Задайте Ñвой Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð² %(ask_question_url)s, помогите Ñделать наше "
-#~ "ÑообщеÑтво лучше!"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "Сохранить"
-#~ msgid "Feedback"
-#~ msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь"
+#: skins/default/templates/user_profile/user_moderate.html:26
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+"Ваша Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ ÐºÐ°Ñ€Ð¼Ð° %(reputation)s баллов"
-#~ msgid "Give us your feedback!"
-#~ msgstr "Ð’Ñ‹Ñкажите Ñвое мнение!"
+#: skins/default/templates/user_profile/user_moderate.html:28
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+"Карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ - %(reputation)s баллов"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Уважаемый %(user_name)s,</span> мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ "
-#~ "ждем ваших отзывов. \n"
-#~ "ПожалуйÑта, укажите и отправьте нам Ñвое Ñообщение ниже."
+#: skins/default/templates/user_profile/user_moderate.html:32
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr ""
+"Ð ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð°"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Уважаемый поÑетитель</span>, мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ "
-#~ "ждем ваших отзывов. ПожалуйÑта, введите и отправить нам Ñвое Ñообщение "
-#~ "ниже."
+#: skins/default/templates/user_profile/user_moderate.html:39
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "ОтнÑÑ‚ÑŒ"
-#~ msgid "(this field is required)"
-#~ msgstr "(Ñто поле обÑзательно)"
+#: skins/default/templates/user_profile/user_moderate.html:44
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "Отправить Ñообщение Ð´Ð»Ñ %(username)s"
-#~ msgid "Send Feedback"
-#~ msgstr "Отправить отзыв"
+#: skins/default/templates/user_profile/user_moderate.html:45
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"ПиÑьмо будет отправлено пользователю Ñо ÑÑылкой \"Ответить\" на ваш Ð°Ð´Ñ€ÐµÑ "
+"Ñлектронной почты. ПожалуйÑта, убедитеÑÑŒ, что ваш Ð°Ð´Ñ€ÐµÑ Ð²Ð²ÐµÐ´ÐµÐ½ правильно."
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>Уважаемый %(receiving_user_name)s,</p>"
+#: skins/default/templates/user_profile/user_moderate.html:47
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "Сообщение отправлено"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s оÑтавил <a href=\"%(post_url)s\">новый "
-#~ "комментарий</a>:</p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:65
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "Отправить Ñообщение"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s оÑтавил <a href=\"%(post_url)s\">новый "
-#~ "комментарий</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+"ÐдминиÑтраторы имеют привилегии обычных пользователей, но кроме того, они "
+"могут назначать/отменÑÑ‚ÑŒ любой ÑÑ‚Ð°Ñ‚ÑƒÑ Ð»ÑŽÐ±Ð¾Ð³Ð¾ пользователÑ, и Ñвободны от "
+"пределов репутации."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s ответил на вопроÑ\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+"У модераторов те же права, что и у админиÑтраторов, но они не могут "
+"добавлÑÑ‚ÑŒ или удалÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s задал новый вопроÑ\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+"'Подтвержденный' подразумевает такой же ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ°Ðº обычный пользователь."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s обновил ответ на вопроÑ\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Замороженные пользователи могут только редактировать и удалÑÑ‚ÑŒ их "
+"ÑобÑтвенные ÑообщениÑ."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s обновил вопроÑ\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+"Заблокированные пользователи могут только войти и пиÑать отзывы "
+"админиÑтратору Ñайта."
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Обратите внимание - вы можете Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью <a href="
-#~ "\"%(user_subscriptions_url)s\">изменить</a>\n"
-#~ "уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑÑылки или отпиÑатьÑÑ Ð²Ð¾Ð²Ñе. СпаÑибо за ваш Ð¸Ð½Ñ‚ÐµÑ€ÐµÑ Ðº нашему "
-#~ "форуму!</p>\n"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "Ñеть"
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "<p>С уважением,<br/>ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¤Ð¾Ñ€ÑƒÐ¼Ð°</p>"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "ПодпиÑан %(count)s человек"
+msgstr[1] "ПодпиÑано %(count)s человек"
+msgstr[2] "ПодпиÑаны %(count)s человек"
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "ПоделитьÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñом на Twitter"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "ОтÑлеживаетÑÑ %(count)s пользователем"
+msgstr[1] "ОтÑлеживаетÑÑ %(count)s пользователÑми"
+msgstr[2] "ОтÑлеживаетÑÑ %(count)s пользователÑми"
-#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+"Ваша Ñеть пуÑта. Хотите подпиÑатÑÑ Ð½Ð° какого-то пользователÑ? ПоÑетите его "
+"профиль и нажмите \"ПодпиÑатÑÑ\""
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "мне нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr ""
+" Окружение %(username)s пуÑто"
-#~ msgid "current number of votes"
-#~ msgstr "текущее чиÑло голоÑов"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "активноÑÑ‚ÑŒ"
-#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "иÑточник"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "мне не нравитÑÑ Ñтот ответ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+"карма"
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "анонимный"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+"ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ кармы."
-#~ msgid "this post is marked as community wiki"
-#~ msgstr "поÑÑ‚ отмечен как вики ÑообщеÑтва"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr ""
+"ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(user_name)s"
-#~ msgid ""
-#~ "This post is a wiki.\n"
-#~ " Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
-#~ msgstr ""
-#~ "Этот поÑÑ‚ - вики. Любой Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ &gt;%(wiki_min_rep)s может улучшить его."
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:6
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "обзор"
-#~ msgid "asked"
-#~ msgstr "ÑпроÑил"
+#: skins/default/templates/user_profile/user_stats.html:65
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "за ответ проголоÑовали %(answer_score)s раз"
-#~ msgid "answered"
-#~ msgstr "ответил"
+#: skins/default/templates/user_profile/user_stats.html:65
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+"Ñтот ответ был выбран в качеÑтве правильного"
-#~ msgid "posted"
-#~ msgstr "опубликовал"
+#: skins/default/templates/user_profile/user_stats.html:76
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+"(%(comment_count)s комментарий)"
+msgstr[1] ""
+"Ñтот ответ комментировали %(comment_count)s раза"
+msgstr[2] ""
+"Ñтот ответ комментировали %(comment_count)s раз"
-#~ msgid "updated"
-#~ msgstr "обновил"
+#: skins/default/templates/user_profile/user_stats.html:100
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "Ñ \"за\""
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Ñмотри вопроÑÑ‹ Ñ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ '%(tag)s'"
+#: skins/default/templates/user_profile/user_stats.html:101
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+"голоÑов \"за\""
-#~ msgid "delete this comment"
-#~ msgstr "удалить Ñтот комментарий"
+#: skins/default/templates/user_profile/user_stats.html:104
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "Ñ \"против\""
-#~ msgid "add comment"
-#~ msgstr "добавить комментарий"
+#: skins/default/templates/user_profile/user_stats.html:105
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+"голоÑов \"против\""
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] ""
-#~ "Ñмотреть еще <span class=\"hidden\">%(counter)s</span><strong>один</"
-#~ "strong>"
-#~ msgstr[1] "Ñмотреть еще <strong>%(counter)s</strong>"
-#~ msgstr[2] "Ñмотреть еще <strong>%(counter)s</strong>"
+#: skins/default/templates/user_profile/user_stats.html:185
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr ""
+"Ответ на:"
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "Ñмотреть еще <span class=\"hidden\">%(counter)s</span><strong>один</"
-#~ "strong> комментарий"
-#~ msgstr[1] "Ñмотреть еще <strong>%(counter)s</strong> комментариÑ"
-#~ msgstr[2] "Ñмотреть еще <strong>%(counter)s</strong> комментариев"
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Профиль пользователÑ"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "пользователь %(username)s имеет ÑÑ‚Ð°Ñ‚ÑƒÑ \"%(status)s\""
+#: skins/default/templates/user_profile/user_tabs.html:9 views/users.py:842
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "комментарии и ответы на другие вопроÑÑ‹"
-#~ msgid "previous"
-#~ msgstr "предыдущаÑ"
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "подпиÑчики и подпиÑанные пользователи"
-#~ msgid "current page"
-#~ msgstr "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница"
+#: skins/default/templates/user_profile/user_tabs.html:19
+msgid "graph of user reputation"
+msgstr "график кармы"
-#~ msgid "page number %(num)s"
-#~ msgstr "Ñтраница номер %(num)s"
+#: skins/default/templates/user_profile/user_tabs.html:20
+msgid "reputation history"
+msgstr ""
+"карма"
-#~ msgid "next page"
-#~ msgstr "ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница"
+#: skins/default/templates/user_profile/user_tabs.html:22
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+"вопроÑÑ‹ отÑлеживаемые пользователем"
-#~ msgid "posts per page"
-#~ msgstr "Ñообщений на Ñтранице"
+#: skins/default/templates/user_profile/user_tabs.html:26
+msgid "recent activity"
+msgstr "поÑледнÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾ÑÑ‚ÑŒ"
-#~ msgid "responses for %(username)s"
-#~ msgstr "ответы пользователю %(username)s"
+#: skins/default/templates/user_profile/user_tabs.html:30 views/users.py:917
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "У Ð²Ð°Ñ Ð½Ð¾Ð²Ñ‹Ð¹ ответ"
-#~ msgstr[1] "У Ð²Ð°Ñ %(response_count)s новых ответов"
-#~ msgstr[2] "У Ð²Ð°Ñ %(response_count)s новых ответов"
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "casted votes"
+msgstr "голоÑа"
-#~ msgid "no new responses yet"
-#~ msgstr "новых ответов нет"
+#: skins/default/templates/user_profile/user_tabs.html:35 views/users.py:1030
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+"наÑтройки подпиÑки по email"
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "%(new)s новых поÑтов Ñо Ñпамом и %(seen)s предыдущих"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:294
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "Модерировать Ñтого пользователÑ"
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "%(new)s новых неумеÑтных Ñообщений"
+#: skins/default/templates/user_profile/user_tabs.html:45
+msgid "banner for this user"
+msgstr "баннер Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пользователÑ"
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "%(seen)s неумеÑтных Ñообщений"
+#: skins/default/templates/user_profile/user_votes.html:4
+#: skins/default/templates/user_profile/user_tabs.html:36
+msgid "votes"
+msgstr ""
+"голоÑа"
-#~ msgid "Questions"
-#~ msgstr "ВопроÑÑ‹"
+#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
+msgid "no items in counter"
+msgstr "нет"
-#~ msgid "Privacy policy"
-#~ msgstr "КонфиденциальноÑÑ‚ÑŒ"
+#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Извините, произошла ошибка!"
-#~ msgid "Edit question"
-#~ msgstr "Изменить вопроÑ"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
+"ПожалуйÑта, войдите чтобы оÑтавить Ñообщение"
-#~ msgid "Change tags"
-#~ msgstr "Измененить Ñ‚Ñги"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr "Ð’ вашем Ñообщении обнаружен Ñпам, проÑтите, еÑли произошла ошибка."
-#~ msgid "Retag"
-#~ msgstr "изменить теги"
+#: utils/forms.py:32 utils/forms.py:33
+msgid "this field is required"
+msgstr "Ñто поле обÑзательное"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Зачем иÑпользовать и изменÑÑ‚ÑŒ теги?"
+#: utils/forms.py:46
+msgid "choose a username"
+msgstr "выбрать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#~ msgid "Tags help to keep the content better organized and searchable"
-#~ msgstr "Теги помогают лучше организовать поиÑк"
+#: utils/forms.py:52 utils/forms.py:69
+msgid "user name is required"
+msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾Ð±Ñзательно"
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "редакторы тегов получают Ñпециальные призы от ÑообщеÑтва"
+#: utils/forms.py:53 utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "к Ñожалению, Ñто Ð¸Ð¼Ñ Ð¸ÑпользуетÑÑ, выберите другое"
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "до 5 тегов, менее 20 Ñимволов каждый"
+#: utils/forms.py:54 utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "к Ñожалению, Ñто Ð¸Ð¼Ñ Ð½Ðµ разрешено, выберите другое"
-#~ msgid "Reopen question"
-#~ msgstr "Переоткрыть вопроÑ"
+#: utils/forms.py:55 utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "к Ñожалению, Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем не ÑущеÑтвует"
-#~ msgid "Title"
-#~ msgstr "Заголовок"
+#: utils/forms.py:56 utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr ""
+"к Ñожалению, у Ð½Ð°Ñ ÐµÑÑ‚ÑŒ ÑÐµÑ€ÑŒÐµÐ·Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° - Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ÑпользуетÑÑ "
+"неÑколькими пользователÑми"
-#, fuzzy
-#~ msgid ""
-#~ "This question has been closed by \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgstr ""
-#~ "Этот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт\n"
-#~ "<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>"
+#: utils/forms.py:57 utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr ""
+"Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ‚ ÑоÑтоÑÑ‚ÑŒ только из букв, пробелов и подчеркиваний"
-#~ msgid "Close reason:"
-#~ msgstr "Закрыт по причине:"
+#: utils/forms.py:118
+msgid "your email address"
+msgstr "ваш email"
-#~ msgid "When:"
-#~ msgstr "Когда:"
+#: utils/forms.py:119 utils/forms.py:139
+msgid "email address is required"
+msgstr "email обÑзательное"
-#~ msgid "Reopen this question?"
-#~ msgstr "Открыть повторно Ñтот вопроÑ?"
+#: utils/forms.py:120 utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-#~ msgid "Reopen this question"
-#~ msgstr "Открыть повторно Ñтот вопроÑ"
+#: utils/forms.py:121 utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr "Ñтот email уже иÑпользуетÑÑ ÐºÐµÐ¼-то еще, пожалуйÑта, выберите другой"
-#~ msgid "Revision history"
-#~ msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹"
+#: utils/forms.py:149
+msgid "choose password"
+msgstr "выбрать пароль"
-#~ msgid "click to hide/show revision"
-#~ msgstr "нажмите, чтобы Ñкрыть/показать верÑии"
+#: utils/forms.py:150 utils/forms.py:170
+msgid "password is required"
+msgstr "пароль обÑзателен"
-#~ msgid "revision %(number)s"
-#~ msgstr "верÑÐ¸Ñ %(number)s"
+#: utils/forms.py:153
+msgid "retype password"
+msgstr "введите пароль еще раз"
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "иÑпользовать теги"
+#: utils/forms.py:154 utils/forms.py:174
+msgid "please, retype your password"
+msgstr "пожалуйÑта, повторите Ñвой пароль"
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "ПожалуйÑта, подпишитеÑÑŒ на темы:"
+#: utils/forms.py:155 utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "к Ñожалению, пароли не Ñовпадают, попробуйте еще раз"
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "иÑпользовать теги"
+#: utils/functions.py:74 utils/functions.py:82
+msgid "2 days ago"
+msgstr "2 Ð´Ð½Ñ Ð½Ð°Ð·Ð°Ð´"
-#~ msgid "Tag list"
-#~ msgstr "СпиÑок тегов"
+#: utils/functions.py:76 utils/functions.py:84
+msgid "yesterday"
+msgstr "вчера"
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "УпорÑдочить по:"
+#: utils/functions.py:79 utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+"%(hr)d Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´"
+msgstr[1] ""
+"%(hr)d чаÑа назад"
+msgstr[2] ""
+"%(hr)d чаÑов назад"
-#~ msgid "sorted alphabetically"
-#~ msgstr "Ñортировать в алфавитном порÑдке"
+#: utils/functions.py:85 utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+"%(min)d минуту назад"
+msgstr[1] ""
+"%(min)d минуты назад"
+msgstr[2] ""
+"%(min)d минут назад"
-#~ msgid "by name"
-#~ msgstr "по имени"
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "Ðовый аватар уÑпешно загружен."
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "Ñортировать по чаÑтоте иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ³Ð°"
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "Ваш аватар уÑпешно загружен."
-#~ msgid "by popularity"
-#~ msgstr "по популÑрноÑти"
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "Требуемые аватары уÑпешно удалены."
-#~ msgid "Nothing found"
-#~ msgstr "Ðичего не найдено"
+#: views/commands.py:39
+msgid "anonymous users cannot vote"
+msgstr "неавторизированные пользователи не могут голоÑовать "
-#~ msgid "Users"
-#~ msgstr "Пользователи"
+#: views/commands.py:59 views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "Извините, вы иÑчерпали лимит голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð° ÑегоднÑ"
-#~ msgid "reputation"
-#~ msgstr "карма"
+#: views/commands.py:65 views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "Ð’Ñ‹ можете голоÑовать ÑÐµÐ³Ð¾Ð´Ð½Ñ ÐµÑ‰Ñ‘ %(votes_left)s раз"
-#~ msgid "recent"
-#~ msgstr "новички"
+#: views/commands.py:122 views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+"Ðеавторизованные пользователи не имеют доÑтупа к папке \"ÑообщениÑ\""
-#~ msgid "by username"
-#~ msgstr "по имени"
+#: views/commands.py:192 views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "Извините, что-то не здеÑÑŒ..."
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "пользователей, ÑоответÑтвующих запроÑу, %(suser)s:"
+#: views/commands.py:207 views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr ""
+"Ðеавторизованные пользователи не могут отмечать ответы как правильные"
-#~ msgid "Nothing found."
-#~ msgstr "Ðичего не найдено."
+#: views/commands.py:288
+#, python-format
+msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+msgstr "подпиÑка Ñохранена, %(email)s требует проверки, Ñм. %(details_url)s"
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "при помощи %(author_name)s"
+#: views/commands.py:295 views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "чаÑтота обновлений по email была уÑтановлена в ежедневную"
-#~ msgid "Search tips:"
-#~ msgstr "Советы по поиÑку:"
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr "ПодпиÑка на Ñ‚Ñги была отменена (<a href=\"%(url)s\">вернуть</a>)."
-#~ msgid "reset author"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
+#: views/commands.py:408 views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+"ПожалуйÑта, войдите чтобы подпиÑатьÑÑ Ð½Ð°: %(tags)s"
-#~ msgid " or "
-#~ msgstr "или"
+#: views/commands.py:540 views/commands.py:600
+msgid "Please sign in to vote"
+msgstr ""
+"ПожалуйÑта, войдите чтобы проголоÑовать"
-#~ msgid "reset tags"
-#~ msgstr "ÑброÑить Ñ‚Ñги"
+#: views/meta.py:106 views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь"
-#~ msgid "start over"
-#~ msgstr "начать вÑе Ñначала"
+#: views/meta.py:107 views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "СпаÑибо за отзыв!"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr "- раÑширить или Ñузить, добавлÑÑ Ñвои метки и Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñ."
+#: views/meta.py:115 views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "Мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем ваших отзывов!"
-#~ msgid "Search tip:"
-#~ msgstr "ПодÑказки Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:"
+#: views/readers.py:177
+#, python-format
+msgid "%(badge_count)d %(badge_level)s badge"
+msgid_plural "%(badge_count)d %(badge_level)s badges"
+msgstr[0] "%(badge_count)d %(badge_level)s медаль"
+msgstr[1] "%(badge_count)d %(badge_level)s медали"
+msgstr[2] "%(badge_count)d %(badge_level)s медалей"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "добавить теги и выполнить поиÑк"
+#: views/readers.py:440 views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr "Извините, но запрашиваемый комментарий был удалён"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Ðеотвеченных вопроÑов нет"
+#: views/users.py:295 views/users.py:206
+msgid "moderate user"
+msgstr "модерировать пользователÑ"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Отмеченных вопроÑов нет."
+#: views/users.py:450 views/users.py:381
+msgid "user profile"
+msgstr "профиль пользователÑ"
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr ""
-#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
+#: views/users.py:451 views/users.py:382
+msgid "user profile overview"
+msgstr "обзор Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#~ msgid "You can expand your search by "
-#~ msgstr "Ð’Ñ‹ можете раÑширить поиÑк"
+#: views/users.py:755 views/users.py:551
+msgid "recent user activity"
+msgstr "поÑледние данные по активноÑти пользователÑ"
-#~ msgid "resetting author"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°"
+#: views/users.py:756 views/users.py:552
+msgid "profile - recent activity"
+msgstr "профиль - поÑледние данные по активноÑти"
-#~ msgid "resetting tags"
-#~ msgstr "ÑÐ±Ñ€Ð¾Ñ Ñ‚Ñгов"
+#: views/users.py:843 views/users.py:639
+msgid "profile - responses"
+msgstr "профиль - ответы"
-#~ msgid "starting over"
-#~ msgstr "начать Ñначала"
+#: views/users.py:918 views/users.py:680
+msgid "profile - votes"
+msgstr "профиль - голоÑа"
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "Ð’Ñ‹ вÑегда можете задать Ñвой вопроÑ!"
+#: views/users.py:953
+msgid "user reputation in the community"
+msgstr ""
+"карма пользователÑ"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Ðе нашли то, что иÑкали?"
+#: views/users.py:954
+msgid "profile - user reputation"
+msgstr "профиль - карма пользователÑ"
-#~ msgid "Please, post your question!"
-#~ msgstr "ПожалуйÑта, опубликуйте Ñвой вопроÑ!"
+#: views/users.py:981 views/users.py:720
+msgid "users favorite questions"
+msgstr "избранные вопроÑÑ‹ пользователей"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
+#: views/users.py:982 views/users.py:721
+msgid "profile - favorite questions"
+msgstr "профиль - избранные вопроÑÑ‹"
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "каждый тег должен быть короче %(max_chars)s Ñимвола"
-#~ msgstr[1] "каждый тег должно быть короче чем %(max_chars)s Ñимвола"
-#~ msgstr[2] "каждый тег должно быть короче чем %(max_chars)s Ñимволов"
+#: views/users.py:1002 views/users.py:1006 views/users.py:741
+#: views/users.py:745
+msgid "changes saved"
+msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены"
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "пожалуйÑта, иÑпользуйте %(tag_count)s тег"
-#~ msgstr[1] "пожалуйÑта введите не более %(tag_count)s тегов"
-#~ msgstr[2] "пожалуйÑта введите не более %(tag_count)s тегов"
+#: views/users.py:1012 views/users.py:751
+msgid "email updates canceled"
+msgstr "Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email отменены"
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr ""
-#~ "пожалуйÑта, иÑпользуйте до %(tag_count)s тегов, количеÑтво Ñимволов в "
-#~ "каждом менее %(max_chars)s"
+#: views/users.py:1031 views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "профиль - подпиÑки"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "Один ответ:\n"
-#~ " "
-#~ msgstr[1] ""
-#~ "\n"
-#~ "%(counter)s Ответа:"
-#~ msgstr[2] ""
-#~ "\n"
-#~ "%(counter)s Ответов:"
+#: views/writers.py:58 views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr ""
+"Ðеавторизованные пользователи не могут загружать файлы"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "Ñамые Ñтарые ответы будут показаны первыми"
+#: views/writers.py:68 views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "допуÑтимые типы файлов: '%(file_types)s'"
-#~ msgid "oldest answers"
-#~ msgstr "Ñамые Ñтарые ответы"
+#: views/writers.py:91 views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "макÑимальный размер загружаемого файла - %(file_size)s K"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "Ñамые новые ответы будут показаны первыми"
+#: views/writers.py:99 views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr ""
+"Ошибка при загрузке файла. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтрацией Ñайта."
-#~ msgid "newest answers"
-#~ msgstr "Ñамые новые ответы"
+#: views/writers.py:191
+msgid "Please log in to ask questions"
+msgstr ""
+"<span class=\"strong big\">Ð’Ñ‹ можете добавлÑÑ‚ÑŒ Ñвои вопроÑÑ‹ анонимно</span>. "
+"При добавлении ÑообщениÑ, Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ на Ñтраницу региÑтрации/входа на "
+"Ñайт. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранен в текущей ÑеÑÑии и будет опубликован поÑле "
+"того как вы войдете на Ñайт. ПроцеÑÑ Ñ€ÐµÐ³Ð¸Ñтрации/входа на Ñайт очень проÑÑ‚: "
+"вход на Ñайт займет у Ð²Ð°Ñ Ð¾ÐºÐ¾Ð»Ð¾ 30 Ñекунд, Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ 1 "
+"минуты или менее."
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "ответы Ñ Ð±<b>о</b>льшим чиÑлом голоÑов будут показаны первыми"
+#: views/writers.py:492 views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr ""
+"<span class='big strong'>ПожалуйÑта, ÑтарайтеÑÑŒ давать ответы по-ÑущеÑтву</"
+"span>. ЕÑли вы хотите обÑудить Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ, <strong>иÑпользуйте "
+"комментирование</strong>. ПожалуйÑта, помните, что вы вÑегда можете "
+"<strong>переÑмотреть Ñвой вопроÑ</strong> - нет нужды задавать один и тот же "
+"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð²Ð°Ð¶Ð´Ñ‹. Кроме того, пожалуйÑта, <strong>не забывайте голоÑовать</"
+"strong> - Ñто дейÑтвительно помогает выбрать лучшие вопроÑÑ‹ и ответы!"
-#~ msgid "popular answers"
-#~ msgstr "популÑрные ответы"
+#: views/writers.py:598 views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Извините, вы не вошли, поÑтому не можете оÑтавлÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Ответьте на ÑобÑтвенный вопроÑ"
+#: views/writers.py:646 views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr ""
+"Ðеавторизованные пользователи не могут иÑправлÑÑ‚ÑŒ комментарии"
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
+#: views/writers.py:654 views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"Извините, вы не вошли, поÑтому не можете удалÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
+
+#: views/writers.py:675 views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкие проблемы."
+
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"ЗдравÑтвуйте, Ñто Ñообщение, поÑланное через обратную ÑвÑзь форума "
+"%(site_title)s\n"
-#~ msgid "Your answer"
-#~ msgstr "Ваш ответ"
+#: skins/common/templates/authopenid/confirm_email.txt:1
+msgid "Thank you for registering at our Q&A forum!"
+msgstr "Благодарим Ð²Ð°Ñ Ð·Ð° региÑтрацию на нашем Q/A форуме!"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Будьте первым, кто ответ на Ñтот вопроÑ!"
+#: skins/common/templates/authopenid/confirm_email.txt:3
+msgid "Your account details are:"
+msgstr "ПодробноÑти вашей учетной запиÑи:"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "Вы можете ответить анонимно, а затем войти"
+#: skins/common/templates/authopenid/confirm_email.txt:5
+msgid "Username:"
+msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "ответ на ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ ради ответа"
+#: skins/common/templates/authopenid/confirm_email.txt:6
+msgid "Password:"
+msgstr "Пароль:"
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "пожалуйÑта, отвечайте на вопроÑÑ‹, а не вÑтупайте в обÑуждениÑ"
+#: skins/common/templates/authopenid/confirm_email.txt:8
+msgid "Please sign in here:"
+msgstr "ПожалуйÑта, войдите здеÑÑŒ:"
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "Войти / ЗарегиÑтрироватьÑÑ Ñ‡Ñ‚Ð¾Ð±Ñ‹ ответить"
+#: skins/common/templates/authopenid/email_validation.txt:1
+msgid "Greetings from the Q&A forum"
+msgstr "Ð’Ð°Ñ Ð¿Ñ€Ð¸Ð²ÐµÑ‚Ñтвует Q/A форум"
-#~ msgid "Answer the question"
-#~ msgstr "Ответить на вопроÑ"
+#: skins/common/templates/authopenid/email_validation.txt:3
+msgid "To make use of the Forum, please follow the link below:"
+msgstr ""
+"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы воÑпользоватьÑÑ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð¼, пожалуйÑта, перейдите по ÑÑылке ниже:"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "или"
+#: skins/common/templates/authopenid/email_validation.txt:7
+msgid "Following the link above will help us verify your email address."
+msgstr "ÐŸÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке выше, вы поможете нам проверить ваш email."
-#~ msgid "email"
-#~ msgstr "email"
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Ðаграды"
-#~ msgid "Question tools"
-#~ msgstr "Закладки и информациÑ"
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+"Ðажмите на одной из иконок ниже чтобы добавить метод входа или проверить уже "
+"ÑущеÑтвующий."
-#~ msgid "click to unfollow this question"
-#~ msgstr "нажмите, чтобы удалить закладку"
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"СообщеÑтво даёт вам награды за ваши вопроÑÑ‹, ответы и голоÑа."
-#~ msgid "Following"
-#~ msgstr "ЕÑÑ‚ÑŒ закладка!"
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr ""
+"Ðовый пароль "
-#~ msgid "Unfollow"
-#~ msgstr "Убрать закладку"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "вернутьÑÑ Ðº Ñтарнице OpenID входа"
-#~ msgid "click to follow this question"
-#~ msgstr "нажмите, чтобы добавить закладку"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+"<span class=\"count\">%(counter)s</span> ВопроÑ"
+msgstr[1] ""
+"<span class=\"count\">%(counter)s</span> ВопроÑа"
+msgstr[2] ""
+"<span class=\"count\">%(counter)s</span> ВопроÑов"
-#~ msgid "Follow"
-#~ msgstr "Добавить закладку"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+"<span class=\"count\">%(cnt)s</span> ГолоÑ"
+msgstr[1] ""
+"<span class=\"count\">%(cnt)s</span> ГолоÑа"
+msgstr[2] ""
+"<span class=\"count\">%(cnt)s</span> ГолоÑов"
-#~ msgid "%(count)s follower"
-#~ msgid_plural "%(count)s followers"
-#~ msgstr[0] "%(count)s закладка"
-#~ msgstr[1] "%(count)s закладки"
-#~ msgstr[2] "%(count)s закладок"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+"<span class=\"count\">%(counter)s</span> ТÑг"
+msgstr[1] ""
+"<span class=\"count\">%(counter)s</span> Тега"
+msgstr[2] ""
+"<span class=\"count\">%(counter)s</span> ТÑгов"
-#~ msgid "email the updates"
-#~ msgstr "получить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+"<span class=\"count\">%(counter)s</span> Ðаграда"
+msgstr[1] ""
+"<span class=\"count\">%(counter)s</span> Ðаграды"
+msgstr[2] ""
+"<span class=\"count\">%(counter)s</span> Ðаград"
-#~ msgid ""
-#~ "<strong>Here</strong> (once you log in) you will be able to sign up for "
-#~ "the periodic email updates about this question."
-#~ msgstr "получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "заглавие должно быть больше %d Ñимвола"
+msgstr[1] "заглавие должно быть больше %d Ñимволов"
+msgstr[2] "заглавие должно быть больше %d Ñимволов"
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов"
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#, fuzzy
-#~ msgid "Stats"
-#~ msgstr "СтатиÑтика"
+#: forms.py:188
+#, python-format
+msgid ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"ТÑг Ñто короткое ключевое Ñлово без пробелов. Ð’Ñ‹ можете иÑпользовать до "
+"%(max_tags)d Ñ‚Ñга одновременно."
+msgstr[1] ""
+"ТÑг Ñто короткое ключевое Ñлово без пробелов. Ð’Ñ‹ можете иÑпользовать до "
+"%(max_tags)d Ñ‚Ñгов одновременно."
+msgstr[2] ""
+"ТÑг Ñто короткое ключевое Ñлово без пробелов. Ð’Ñ‹ можете иÑпользовать до "
+"%(max_tags)d Ñ‚Ñгов одновременно."
-#~ msgid "question asked"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» задан"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#~ msgid "question was seen"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» проÑмотрен"
+#: forms.py:530
+msgid "Your name (optional):"
+msgstr "Ваше Ð¸Ð¼Ñ (не обÑзательно):"
-#~ msgid "times"
-#~ msgstr "раз"
+#: forms.py:531
+msgid "Email:"
+msgstr ""
+"<strong>Ваш E-mail</strong> (<i>Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть правильным, никогда не "
+"показываетÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ пользователÑм</i>)"
-#~ msgid "last updated"
-#~ msgstr "поÑледнее обновление"
+#: forms.py:538
+msgid "I don't want to give my email or receive a response:"
+msgstr "Я не хочу оÑтавлÑÑ‚ÑŒ Ñвой E-mail Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ получать на него ответы:"
-#~ msgid "Related questions"
-#~ msgstr "похожие вопроÑÑ‹:"
+#: forms.py:560
+msgid "Please mark \"I dont want to give my mail\" field."
+msgstr ""
+"ПожалуйÑта, отметьте поле \"Я не хочу оÑтавлÑÑ‚ÑŒ Ñвой Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+"\"."
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "Информировать один раз в день, еÑли еÑÑ‚ÑŒ новые ответы"
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "Еженедельно информировать о новых ответах"
+#: forms.py:1118
+#, python-format
+msgid "no %(sitename)s email please, thanks"
+msgstr "не хочу получать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ %(sitename)s по email"
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "Информировать о новых ответах Ñразу"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr ""
-#~ "(в Ñвоем профиле, вы можете наÑтроить чаÑтоту оповещений по Ñлектронной "
-#~ "почте, нажав на кнопку \"подпиÑка по e-mail\" - %(profile_url)s)"
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "ПоÑле входа в ÑиÑтему вы Ñможете подпиÑатьÑÑ Ð½Ð° вÑе обновлениÑ"
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
-#~ msgid "%(username)s's profile"
-#~ msgstr "профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
+#: urls.py:44
+msgid "help/"
+msgstr "help/"
-#~ msgid "Edit user profile"
-#~ msgstr "Изменить профиль пользователÑ"
+#: urls.py:123
+msgid "widgets/"
+msgstr "widgets/"
-#~ msgid "edit profile"
-#~ msgstr "изменить профиль"
+#: conf/access_control.py:8
+msgid "Access control settings"
+msgstr "Войти как пользователь"
-#~ msgid "change picture"
-#~ msgstr "изменить изображение"
+#: conf/access_control.py:17
+msgid "Allow only registered user to access the forum"
+msgstr ""
+"Разрешить только зарегиÑтрированным пользователÑм получать доÑтуп к форуму"
-#~ msgid "Registered user"
-#~ msgstr "ЗарегиÑтрированный пользователь"
+#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr "РаÑÑылать Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
-#~ msgid "Screen Name"
-#~ msgstr "Ðазвание Ñкрана"
+#: conf/email.py:284
+msgid "Enable posting answers and comments by email"
+msgstr "Разрешить отвечать и комментировать по email"
-#~ msgid "Update"
-#~ msgstr "Обновить"
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
-#~ msgid "subscriptions"
-#~ msgstr "подпиÑкa"
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
-#~ msgid "Email subscription settings"
-#~ msgstr "ÐаÑтройка подпиÑки по Ñлектронной почте"
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
-#~ msgid "email subscription settings info"
-#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройках подпиÑки по Ñлектронной почте"
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
-#~ msgid "Stop sending email"
-#~ msgstr "ОÑтановить отправку Ñлектронной почты"
+#: conf/forum_data_rules.py:23
+#, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr ""
+"<em>Внимание: пожалуйÑта, Ñначала прочитайте <a "
+"href=\"%(url)s>Ñтот документ</a>.</em>"
-#~ msgid "followed questions"
-#~ msgstr "закладки"
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð½Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ (количеÑтво Ñимволов)"
-#~ msgid "inbox"
-#~ msgstr "входÑщие"
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð½Ð° вопроÑа (количеÑтво Ñимволов)"
-#~ msgid "Sections:"
-#~ msgstr "Разделы:"
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð½Ð° ответа (количеÑтво Ñимволов)"
-#~ msgid "forum responses (%(re_count)s)"
-#~ msgstr "ответы в форуме (%(re_count)s)"
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr "ОбÑзательны ли теги?"
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "помеченные пункты (%(flag_count)s)"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
-#~ msgid "select:"
-#~ msgstr "выберите:"
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
-#~ msgid "seen"
-#~ msgstr "прочитанные"
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
-#~ msgid "new"
-#~ msgstr "новые"
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
-#~ msgid "none"
-#~ msgstr "нет"
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr "Ðазвание Ð¿Ð¾Ð»Ñ USERID на Ñервере LDAP"
-#~ msgid "mark as seen"
-#~ msgstr "отметить как прочитано "
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
-#~ msgid "mark as new"
-#~ msgstr "отметить как новое"
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr "Ðазвание Ð¿Ð¾Ð»Ñ EMAIL на Ñервере LDAP"
-#~ msgid "dismiss"
-#~ msgstr "удалить"
+#: conf/leading_sidebar.py:12
+msgid "Common left sidebar"
+msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ð±Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ"
-#, fuzzy
-#~ msgid "remove"
-#~ msgstr "vosstanovleniye-accounta/"
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr "Включить левую боковую панель"
-#~ msgid "update profile"
-#~ msgstr "обновить профиль"
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr "HTML код Ð´Ð»Ñ Ð»ÐµÐ²Ð¾Ð¹ боковой панели."
-#~ msgid "manage login methods"
-#~ msgstr "управление методами входа"
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+"ИÑпользуйте Ñту облаÑÑ‚ÑŒ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñодержимого LEFT боковой панели HTML "
+"формата. Когда иÑпользуете Ñту опцию , иÑпользуйте ÑÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ HTML Ð´Ð»Ñ "
+"того что б убедитÑÑ Ñ‡Ñ‚Ð¾ она Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¸ работает во вÑех браузерах"
-#~ msgid "real name"
-#~ msgstr "наÑтоÑщее имÑ"
+#: conf/license.py:13
+msgid "Content License"
+msgstr "Содержание лицензии"
-#~ msgid "member for"
-#~ msgstr "ÑоÑтоит пользователем"
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
-#~ msgid "last seen"
-#~ msgstr "поÑледнее поÑещение"
+#: conf/user_settings.py:32
+msgid "Allow users change own email addresses"
+msgstr "Разрешить пользователÑм менÑÑ‚ÑŒ их Ñлектронные почтовые адреÑа."
-#~ msgid "user website"
-#~ msgstr "Ñайт пользователÑ"
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr "Стандартный аватар Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹"
-#~ msgid "location"
-#~ msgstr "меÑтоположение"
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+"Чтобы изменить аватар, выберите новый файл, а затем отправьте Ñту форму."
-#~ msgid "age"
-#~ msgstr "возраÑÑ‚"
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr "ИÑпользовать аватары Ñ ÑервиÑа gravatar.com"
-#~ msgid "age unit"
-#~ msgstr "возраÑÑ‚"
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+"Включите Ñту опцию еÑли вы хотите разрешить иÑпользовать gravatar.com Ð´Ð»Ñ "
+"аватаров. Имейте в виду, что любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñтой функции вÑтупÑÑ‚ в Ñилу "
+"приблизительно через 10 минут. Ð’Ñ‹ также можете загружать аватары. Ð”Ð»Ñ "
+"Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации поÑетите <a href=\"http://askbot.org/doc/"
+"optional-modules.html#uploaded-avatars\">Ñту Ñтраницу</a>."
-#~ msgid "todays unused votes"
-#~ msgstr "ÑегоднÑшних неиÑпользованных голоÑов"
+#: conf/vote_rules.py:87
+msgid ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+msgstr ""
+"Минимум дней чтобы принÑÑ‚ÑŒ ответ, еÑли он не был принÑÑ‚ автором вопроÑа"
-#~ msgid "votes left"
-#~ msgstr "оÑталоÑÑŒ голоÑов"
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "Ð’Ñтраиваемые виджеты"
-#~ msgid "moderation"
-#~ msgstr "модерациÑ"
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "КоличеÑтво отображаемых вопроÑов"
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "пользователь %(username)s имеет ÑÑ‚Ð°Ñ‚ÑƒÑ \"%(status)s\""
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+"Чтобы вÑтроить виджет , добавьте Ñледующий код на Вашем Ñайте (и заполнить "
+"правильный URL-Ð°Ð´Ñ€ÐµÑ Ð±Ð°Ð·Ñ‹, привилегированные теги, ширина и выÑота): iframe "
+"src=\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width="
+"\"100%\" height=\"300\"scrolling=\"no\"><p> Ваш браузер не поддерживает "
+"фреймы. </p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "CSS Ð´Ð»Ñ Ð²Ð¸Ð´Ð¶ÐµÑ‚Ð° вопроÑов"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "Хеддер Ð´Ð»Ñ Ð²Ð¸Ð´Ð¶ÐµÑ‚Ð° вопроÑов"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "Футер Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñного виджета."
-#~ msgid "User status changed"
-#~ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»ÑÑ"
+#: const/__init__.py:131
+msgid "received badge"
+msgstr "получена награда"
-#~ msgid "Save"
-#~ msgstr "Сохранить"
+#: const/__init__.py:202
+msgid "answered question"
+msgstr "ответил"
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "Ваша Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ ÐºÐ°Ñ€Ð¼Ð° %(reputation)s балов"
+#: const/__init__.py:205
+msgid "accepted answer"
+msgstr "принÑÑ‚ лучший ответ"
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "Карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(reputation)s балов "
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
-#~ msgid "User reputation changed"
-#~ msgstr "Карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð°"
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/forms.py:450
+msgid "sorry, there is no such user name"
+msgstr "к Ñожалению, Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем нет"
-#~ msgid "Subtract"
-#~ msgstr "ОтнÑÑ‚ÑŒ"
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
-#~ msgid "Add"
-#~ msgstr "Добавить"
+#: management/commands/send_email_alerts.py:474
+#, python-format
+msgid ""
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Отправить Ñообщение Ð´Ð»Ñ %(username)s"
+#: middleware/forum_mode.py:53
+#, python-format
+msgid "Please log in to use %s"
+msgstr "ПожалуйÑта войдите чтобы иÑпользовать %s"
-#~ msgid ""
-#~ "An email will be sent to the user with 'reply-to' field set to your email "
-#~ "address. Please make sure that your address is entered correctly."
-#~ msgstr ""
-#~ "ПиÑьмо будет отправлено пользователю Ñо ÑÑылкой \"Ответить\" на ваш Ð°Ð´Ñ€ÐµÑ "
-#~ "Ñлектронной почты. ПожалуйÑта, убедитеÑÑŒ, что ваш Ð°Ð´Ñ€ÐµÑ Ð²Ð²ÐµÐ´ÐµÐ½ правильно."
+#: models/__init__.py:359
+#, python-format
+msgid ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
+msgstr ""
+"Извините, вы Ñможете принÑÑ‚ÑŒ Ñтот ответ только через %(will_be_able_at)s"
-#~ msgid "Message sent"
-#~ msgstr "Сообщение отправлено"
+#: models/__init__.py:367
+#, python-format
+msgid ""
+"Sorry, only moderators or original author of the question - %(username)s - "
+"can accept or unaccept the best answer"
+msgstr ""
+"Извините, только модераторы или автор вопроÑа - %(username)s - могут "
+"принимать или отклонÑÑ‚ÑŒ лучший ответ"
-#~ msgid "Send message"
-#~ msgstr "Отправить Ñообщение"
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
+msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð³Ð¾Ð»Ð¾Ñовать за ÑобÑтвенные ÑообщениÑ"
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "приоÑтановленные пользователи не могут помечать ÑообщениÑ"
+#: models/__init__.py:433
+#, python-format
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "профиль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr "Ð’Ñ‹ уже отметили Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº неумеÑтный и повторÑÑ‚ÑŒ Ñту операцию не разрешаетÑÑ."
-#~ msgid "activity"
-#~ msgstr "активноÑÑ‚ÑŒ"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете "
+"ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ°Ðº неумеÑтные"
-#, fuzzy
-#~ msgid "karma"
-#~ msgstr "карма:"
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
-#~ msgid "Your karma change log."
-#~ msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ кармы."
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ неÑущеÑтвующий флаг"
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ кармы Ð´Ð»Ñ %(user_name)s "
+#: models/__init__.py:833
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"отметки о неумеÑтном Ñодержании."
-#~ msgid "overview"
-#~ msgstr "обзор"
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">1</span> ВопроÑ"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> ВопроÑов"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> ВопроÑа"
+#: models/__init__.py:843
+#, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] "Ð”Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ неумеÑтных Ñообщений требуетÑÑ %(min_rep)d балл кармы"
+msgstr[1] "Ð”Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ неумеÑтных Ñообщений требуетÑÑ %(min_rep)d балла кармы"
+msgstr[2] "Ð”Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ неумеÑтных Ñообщений требуетÑÑ %(min_rep)d баллов кармы"
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "у Ð²Ð°Ñ Ð½ÐµÑ‚Ñƒ прав чтобы удалить вÑе обжалованные ÑообщениÑ"
+#: models/__init__.py:863
#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] "<span class=\"count\">1</span> Ответ"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Ответов"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> Ответа"
+msgid "no flags for this entry"
+msgstr "без заметок на Ñту запиÑÑŒ"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "за ответ проголоÑовали %(answer_score)s раз"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "Ñтот ответ был выбран в качеÑтве правильного"
+#: models/__init__.py:2389
+#, python-format
+msgid "\"%(title)s\""
+msgstr "\"%(title)s\""
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] ""
-#~ "<span class=\"hidden\">%(comment_count)s</span>(один комментарий)"
-#~ msgstr[1] "ответ был прокомментирован %(comment_count)s раз"
-#~ msgstr[2] "ответ был прокомментирован %(comment_count)s раза"
+#: models/reply_by_email.py:71
+msgid "edited by email"
+msgstr "отредактировано по email"
-#, fuzzy
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">1</span> ГолоÑ"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> ГолоÑов"
-#~ msgstr[2] "<span class=\"count\">%(cnt)s</span> ГолоÑа"
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Change Email"
+msgstr "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-#~ msgid "thumb up"
-#~ msgstr "Ñ \"за\""
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
-#~ msgid "user has voted up this many times"
-#~ msgstr "пользователь проголоÑовал \"за\" много раз"
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
-#~ msgid "thumb down"
-#~ msgstr "Ñ \"против\""
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
-#~ msgid "user voted down this many times"
-#~ msgstr "пользователь проголоÑовал \"против\" много раз"
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">1</span> Тег"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Тегов"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> Тега"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Медаль"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Медали"
-#~ msgstr[2] "<span class=\"count\">%(counter)s</span> Медалей"
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Советы как лучше давать ответы"
+#: skins/common/templates/authopenid/changeemail.html:102
+msgid "Validation email not sent"
+msgstr "Емайл Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ адреÑа не выÑлан"
-#~ msgid "User profile"
-#~ msgstr "Профиль пользователÑ"
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
-#~ msgid "graph of user reputation"
-#~ msgstr "график кармы"
+#: skins/common/templates/authopenid/complete.html:23
+msgid "User registration"
+msgstr "РегиÑтрациÑ"
-#~ msgid "reputation history"
-#~ msgstr "карма"
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "ВопроÑÑ‹, выбранные пользователем в закладки"
+#: skins/common/templates/authopenid/confirm_email.txt:11
+#: skins/common/templates/authopenid/email_validation.txt:13
+msgid ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+msgstr "С уважением, админиÑтратор форума"
-#~ msgid "recent activity"
-#~ msgstr "поÑледнÑÑ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾ÑÑ‚ÑŒ"
+#: skins/common/templates/authopenid/email_validation.txt:9
+msgid ""
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
+"for any inconvenience"
+msgstr ""
+"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
-#~ msgid "casted votes"
-#~ msgstr "голоÑа"
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+"Ð”Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° на Ñайт выберите Ñлужбу OpenID или подобную ей технологию. Пароль "
+"от Ñтой внешней Ñлужбы оÑтанетÑÑ ÐºÐ¾Ð½Ñ„Ð¸Ð´ÐµÐ½Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¼ и вам не нужно запоминать "
+"или Ñоздавать ещё один."
-#~ msgid "votes"
-#~ msgstr "голоÑов"
+#: skins/common/templates/authopenid/signin.html:89
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr ""
+"либо введите ваше <span>Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль</span>, затем "
+"войдите"
-#~ msgid "answer tips"
-#~ msgstr "Советы как лучше давать ответы"
+#: skins/common/templates/authopenid/signin.html:93
+msgid "Please, sign in"
+msgstr "ПожалуйÑта, войдите здеÑÑŒ"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr ""
-#~ "пожалуйÑта поÑтарайтеÑÑŒ дать ответ который будет интереÑен коллегам по "
-#~ "форуму"
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "поÑтарайтеÑÑŒ на Ñамом деле дать ответ и избегать диÑкуÑÑий"
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
-#~ msgid "please try to provide details"
-#~ msgstr "включите детали в Ваш ответ"
+#: skins/common/templates/question/answer_controls.html:19
+msgid "remove offensive flag"
+msgstr "убрать флаги"
-#~ msgid "be clear and concise"
-#~ msgstr "Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть четким и лаконичным"
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "убрать флаг"
-#~ msgid "see frequently asked questions"
-#~ msgstr "поÑмотрите на чаÑто задаваемые вопроÑÑ‹"
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr "отметить Ñтот ответ как правильный (нажмите ещё раз чтобы отменить)"
-#~ msgid "Markdown tips"
-#~ msgstr "ПоддерживаетÑÑ Ñзык разметки - Markdown"
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по такой причине:\n"
+"<b>\"%(close_reason)s\"</b> <i> "
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr "одно из Ñтого обÑзательно"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+msgid "tags:"
+msgstr "Ñ‚Ñги:"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr "ТÑги"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "доб."
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+msgid "Ask Your Question"
+msgstr "Задайте Ваш вопроÑ"
+
+#: skins/default/templates/badges.html:8
+#, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Ðиже приведен ÑпиÑок доÑтупных наград и чиÑло награждений каждой из них. "
+"ЕÑÑ‚ÑŒ Ð¸Ð´ÐµÑ Ð¾ новой клаÑÑной награде? Тогда отправьте её нам через <a "
+"href='%(feedback_faq_url)s'>обратную ÑвÑзь</a>\n"
-#~ msgid "*italic*"
-#~ msgstr "*курÑив*"
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
-#~ msgid "**bold**"
-#~ msgstr "**жирный**"
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr "ÑеребрÑÐ½Ð°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°: как правило, приÑуждаетÑÑ Ð·Ð° большой вклад"
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*курÑив* или _курÑив_"
+#: skins/default/templates/faq_static.html:8
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Перед тем как задать Ð²Ð¾Ð¿Ñ€Ð¾Ñ - пожалуйÑта, не забудьте иÑпользовать поиÑк, "
+"чтобы убедитьÑÑ, что ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐµÑ‰Ðµ не имеет ответа."
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**жирный шрифт** или __жирный шрифт__"
+#: skins/default/templates/faq_static.html:10
+msgid "What kinds of questions should be avoided?"
+msgstr "Каких вопроÑов мне Ñледует избегать?"
-#~ msgid "link"
-#~ msgstr "ÑÑылка"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#~ msgid "text"
-#~ msgstr "текÑÑ‚"
+#: skins/default/templates/faq_static.html:18
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"СиÑтема репутации (кармы) позволÑет пользователÑм приобретать различные "
+"права модератора."
-#~ msgid "image"
-#~ msgstr "изображение"
+#: skins/default/templates/faq_static.html:20
+msgid "How does karma system work?"
+msgstr "Как работает карма?"
-#~ msgid "numbered list:"
-#~ msgstr "пронумерованный ÑпиÑок:"
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "а также, поддерживаютÑÑ Ð¾Ñновные теги HTML"
+#: skins/default/templates/faq_static.html:61
+msgid "edit any answer"
+msgstr "править любой ответ"
-#~ msgid "learn more about Markdown"
-#~ msgstr "узнайте болше про Markdown"
+#: skins/default/templates/faq_static.html:65
+msgid "delete any comment"
+msgstr "удалить любой коментарий"
-#~ msgid "ask a question"
-#~ msgstr "задать вопроÑ"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ "
-#~ "анонимно</span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на "
-#~ "Ñтраницу авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет "
-#~ "опубликован как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш "
-#~ "форум очень легко. ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ "
-#~ "запиÑÑŒ - приблизительно одну минуту."
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:80
+#, python-format
+msgid ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Задайте Ñвой Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð² %(ask_question_url)s!"
-#, fuzzy
-#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ %(email)s должен быть дейÑтвительным, Ñм. "
-#~ "%(email_validation_faq_url)s"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+"(чтобы получать от Ð½Ð°Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ правильный email-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ "
+"отметьте переключатель ниже)"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "Войдите или запишитеÑÑŒ чтобы опубликовать Ваш ворпоÑ"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(ПожалуйÑта введити капчу)"
-#~ msgid "Ask your question"
-#~ msgstr "Задайте Ваш вопроÑ"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr "Помощь"
-#~ msgid "Contributors"
-#~ msgstr "Ðвторы"
+#: skins/default/templates/help.html:7
+#, python-format
+msgid "Welcome %(username)s,"
+msgstr "ЗдравÑтвуйте %(username)s,"
-#~ msgid "about"
-#~ msgstr "О наÑ"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr "Добро пожаловать,"
-#~ msgid "privacy policy"
-#~ msgstr "политика конфиденциальноÑти"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+"СпаÑибо вам что иÑпользуете %(app_name)s, дальше немного о том как Ñто "
+"работает."
-#~ msgid "give feedback"
-#~ msgstr "оÑтавить отзыв"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr "Этот Ñайт Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов и ответов на них, не Ð´Ð»Ñ Ð´Ð¾Ð»Ð³Ð¸Ñ… диÑкуÑÑий."
-#~ msgid "back to home page"
-#~ msgstr "вернутьÑÑ Ð½Ð° главную"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+"Мы призываем каждого иÑпользовать меÑто “вопроÑÐ¾Ð²â€ Ð´Ð»Ñ Ð²Ð¾Ð¿Ñ€Ð¾Ñов, а меÑто Ð´Ð»Ñ "
+"â€œÐ¾Ñ‚Ð²ÐµÑ‚Ð¾Ð²â€ Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² ÑоответÑтвенно."
-#~ msgid "%(site)s logo"
-#~ msgstr "логотип %(site)s"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+"ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° Ñто, каждый Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ ответ может быть прокомментирован - "
+"комментарии хороши Ð´Ð»Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ñ… диÑкуÑÑий."
-#~ msgid "users"
-#~ msgstr "пользователи"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+"ГолоÑование в %(app_name)s помогает найти лучшие ответы и отблагодарить "
+"наиболее полезным пользователÑм."
-#~ msgid "badges"
-#~ msgstr "награды"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+"ПожалуйÑта голоÑуйте когда найдёте полезную информацию,\n"
+" Ñто дейÑтвительно помогает ÑообщеÑтву %(app_name)s."
-#~ msgid "question tips"
-#~ msgstr "подÑказки к вопроÑам"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+"Кроме того, вы можете @упоминать пользователей в текÑте, чтобы привлечь их "
+"внимание, подпиÑывайтеÑÑŒ на пользователей и разговоры, и уведомлÑйте о "
+"неумеÑтном Ñодержании Ð¾Ñ‚Ð¼ÐµÑ‡Ð°Ñ ÐµÐ³Ð¾."
-#~ msgid "please ask a relevant question"
-#~ msgstr "ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоответÑтвовать тематике ÑообщеÑтва"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr "ÐаÑлаждайтеÑÑŒ."
-#~ msgid "please try provide enough details"
-#~ msgstr "поÑтарайтеÑÑŒ придать макÑимум информативноÑти Ñвоему вопроÑу"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "проÑм."
-#~ msgstr[1] "проÑм."
-#~ msgstr[2] "проÑм."
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "ответ"
-#~ msgstr[1] "ответа"
-#~ msgstr[2] "ответов"
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, python-format
+msgid "page %(num)s"
+msgstr "Ñтраница номер %(num)s"
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "голоÑ"
-#~ msgstr[1] "голоÑа"
-#~ msgstr[2] "голоÑов"
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "вы получили новый ответ"
+msgstr[1] "вы получили %(response_count)s новых ответа"
+msgstr[2] "вы получили %(response_count)s новых ответов"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr "добавить комментарий / открыть ещё <strong>неÑколько</strong>"
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr "открыть ещё <strong>неÑколько</strong>"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+msgid "post a comment"
+msgstr "добавить комментарий"
+
+#: skins/default/templates/question.html:140
+msgid "Post Your Answer"
+msgstr "Ваш ответ"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+msgid "Login/Signup to Post"
+msgstr "Войти/ЗарегиÑтрироватьÑÑ Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+msgid "Retag question"
+msgstr "Изменить теги"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#~ msgid "see unanswered questions"
-#~ msgstr "проÑмотреть неотвеченные ворпоÑÑ‹"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "Сорт. по &raquo;"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "проÑмотр отмеченные вопроÑÑ‹"
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "В тегах"
-#~ msgid "karma:"
-#~ msgstr "карма:"
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr "ПожалуйÑта подпишитеÑÑŒ на некоторые вопроÑÑ‹ или пользователей"
-#~ msgid "badges:"
-#~ msgstr "награды"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
-#~ msgid "logout"
-#~ msgstr "Выход"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s Ответ\n"
+" "
+msgstr[1] ""
+"\n"
+" %(counter)s Ответа\n"
+" "
+msgstr[2] ""
+"\n"
+" %(counter)s Ответов\n"
+" "
-#~ msgid "login"
-#~ msgstr "Вход"
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr "Сорт. по »"
-#~ msgid "settings"
-#~ msgstr "ÐаÑтройки"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#~ msgid "(please enter a valid email)"
-#~ msgstr "(пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "подпиÑатьÑÑ Ð½Ð° rss ленту новоÑтей"
-#~ msgid ""
-#~ "The question has been closed for the following reason \"%(close_reason)s"
-#~ "\" by"
-#~ msgstr ""
-#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "СтатиÑтика"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer:\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers:\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "Один ответ:\n"
-#~ " "
-#~ msgstr[1] ""
-#~ "\n"
-#~ "%(counter)s Ответа:"
-#~ msgstr[2] ""
-#~ "\n"
-#~ "%(counter)s Ответов:"
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr "Задан"
-#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr ""
-#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr "ПроÑмотрен"
-#~ msgid "Question tags"
-#~ msgstr "Теги вопроÑа"
+#: skins/default/templates/question/sidebar.html:54
+msgid "Last updated"
+msgstr "Обновлен"
-#~ msgid "Stats:"
-#~ msgstr "СтатиÑтика"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+msgid "Email me when there are any new answers"
+msgstr "Информировать Ð¼ÐµÐ½Ñ Ð¾ новых ответах"
-#~ msgid "questions"
-#~ msgstr "вопроÑÑ‹"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+"<strong>ЗдеÑÑŒ</strong> (когда Ð’Ñ‹ авторизированы) Ð’Ñ‹ можете подпиÑатÑÑ Ð½Ð° "
+"переодичеÑкие почтовые Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ Ñтом вопроÑе."
-#~ msgid "search"
-#~ msgstr "поиÑк"
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr "(не может быть изменено)"
-#~ msgid "rss feed"
-#~ msgstr "RSS-канал"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
-#, fuzzy
-#~ msgid "Please star (bookmark) some questions or follow some users."
-#~ msgstr ""
-#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+msgid "Stop Email"
+msgstr ""
+"Ðе Ñлать Email"
-#~ msgid "In:"
-#~ msgstr "Ð’:"
+#: skins/default/templates/user_profile/user_inbox.html:66
+msgid "remove flags"
+msgstr "удалить заметки"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Убрать закладку"
+#: skins/default/templates/user_profile/user_inbox.html:68
+msgid "delete post"
+msgstr "добавить комментарий"
-#~ msgid "Sort by:"
-#~ msgstr "УпорÑдочить по:"
+#: skins/default/templates/user_profile/user_info.html:58
+msgid "member since"
+msgstr "зарегиÑтрирован Ñ"
-#~ msgid "Email (not shared with anyone):"
-#~ msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты (держитÑÑ Ð² Ñекрете):"
+#: skins/default/templates/user_profile/user_info.html:69
+msgid "website"
+msgstr "Веб-Ñтраница"
-#~ msgid "Keys to connect the site with external services like Facebook, etc."
-#~ msgstr "Ключи Ð´Ð»Ñ ÑвÑзи Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ ÑервиÑами, такими как Facebook, и Ñ‚.д."
+#: skins/default/templates/user_profile/user_stats.html:16
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "Ответ"
+msgstr[1] "Ответа"
+msgstr[2] "Ответов"
-#~ msgid "Minimum reputation required to perform actions"
-#~ msgstr "Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ñ€Ð¼Ñ‹ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹Ñтвий"
+#: skins/default/templates/user_profile/user_tabs.html:21
+msgid "Graph of user karma"
+msgstr "График кармы пользователÑ"
-#, fuzzy
-#~ msgid "Site modes"
-#~ msgstr "Сайт"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
-#~ msgid "Q&A forum website parameters and urls"
-#~ msgstr "ОÑновные параметры и ÑÑылки форума"
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+msgid "give an answer interesting to this community"
+msgstr "давайте ответы интереÑные Ð´Ð»Ñ Ñтого ÑобщеÑтва"
-#~ msgid "Skin and User Interface settings"
-#~ msgstr "ÐаÑтройки интерфейÑа и отображениÑ"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+msgid "provide enough details"
+msgstr "дайте доÑтаточно информации в Вашем Ñообщении"
-#~ msgid "Limits applicable to votes and moderation flags"
-#~ msgstr "ÐаÑтройки, применÑемые Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ отметок модерации"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+msgid "Markdown basics"
+msgstr "ОÑновы Markdown"
-#~ msgid "Setting groups"
-#~ msgstr "ÐаÑтройки групп"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "Содержимое Ñтого Ñайта раÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ лицензией %(license)s"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr "помощь"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+msgid "ask a question interesting to this community"
+msgstr "задавайте интереÑные вопроÑÑ‹ Ð´Ð»Ñ Ñтого ÑобщеÑтва"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "ВСЕ"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "ÐЕОТВЕЧЕÐÐЫЕ"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr "поÑмотреть Ñообщений на которые Ð’Ñ‹ подпиÑалиÑÑŒ"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "ИЗБРÐÐÐЫЕ"
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "Задавайте Ñвой Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð·Ð´ÐµÑÑŒ"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+msgid "sign out"
+msgstr "выход"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+msgid "Hi, there! Please sign in"
+msgstr "ПожалуйÑта, войдите здеÑÑŒ."
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr "нет"
+
+#: utils/forms.py:60
+msgid "Choose a screen name"
+msgstr "выбрать Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr "пожалуйÑта иÑпользуйте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ некоторые Ñимволы алфавита в имени"
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
+
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+
+#: views/commands.py:112
+msgid "Sorry, anonymous users cannot vote"
+msgstr "Ðеавторизованные пользователи не могут голоÑовать"
+
+#: views/commands.py:339
+#, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr ""
+"Ваша подпиÑка Ñохранена, но email-Ð°Ð´Ñ€ÐµÑ %(email)s требует проверки, <a "
+"href='%(details_url)s'>подробнее читайте здеÑÑŒ</a>"
+
+#: views/commands.py:620
+msgid "Please sign in to delete/restore posts"
+msgstr "ПожалуйÑта, войдите чтобы удалÑÑ‚ÑŒ/воÑÑтанавливать ÑообщениÑ"
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr "О %(site)s"
+
+#: views/users.py:701
+msgid "user karma"
+msgstr "карма"
+
+#: views/users.py:702
+msgid "Profile - User's Karma"
+msgstr "Профиль - Ð ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ñ ÐŸÐ¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
+
+#~ msgid ""
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
+#~ msgstr ""
+#~ "Эта команда может помочь вам мигрировать на механизм аутентификации по "
+#~ "LDAP, ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð´Ð»Ñ LDAP-аÑÑоциаций Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ пользовательÑкой "
+#~ "учетной запиÑи. При Ñтом предполагаетÑÑ, что LDAP иÑпользует ID "
+#~ "пользователей идентичные именам пользователей на Ñайте, До иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ "
+#~ "Ñтой команды, необходимо уÑтановить параметры LDAP в разделе \"External "
+#~ "keys\" наÑтроек Ñайта."
+
+#~ msgid ""
+#~ "Sincerely,\n"
+#~ "Forum Administrator"
+#~ msgstr "С уважением, админиÑтратор форума"
+
+#~ msgid ""
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
+#~ msgstr ""
+#~ "ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+#~ "дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+#~ "приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
#~ msgid ""
#~ "This option currently defines default frequency of emailed updates in the "
@@ -5994,6 +8725,15 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "выбранные отдельно, вÑе вопроÑÑ‹ (отфильтрованные по темам) и ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
#~ "которые упоминают Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, а также комментарии."
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr "Ключи Ð´Ð»Ñ ÑвÑзи Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ ÑервиÑами, такими как Facebook, и Ñ‚.д."
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ñ€Ð¼Ñ‹ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹Ñтвий"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "ОÑновные параметры и ÑÑылки форума"
+
#~ msgid ""
#~ "If you change this url from the default - then you will also probably "
#~ "want to adjust translation of the following string: "
@@ -6001,41 +8741,43 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "ЕÑли Ð’Ñ‹ измените Ñту ÑÑылку, то вероÑтно Вам придетÑÑ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ перевод "
#~ "Ñледующей Ñтроки:"
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "ÐаÑтройки интерфейÑа и отображениÑ"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "ÐаÑтройки, применÑемые Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ отметок модерации"
+
#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
#~ msgstr ""
#~ "Впервые здеÑÑŒ? ПоÑмотрите наши <a href=\"%s\">чаÑто задаваемые вопроÑÑ‹"
#~ "(FAQ)</a>!"
+#~ msgid "Setting groups"
+#~ msgstr "ÐаÑтройки групп"
+
#~ msgid "Login name"
#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-#~ msgid "Enter new password"
-#~ msgstr "Введите новый пароль"
-
-#~ msgid "... or enter by clicking one of the buttons below"
-#~ msgstr "... или войдите, нажав одну из кнопок ниже"
-
-#, fuzzy
-#~ msgid "return to login page"
-#~ msgstr "вернутьÑÑ Ðº Ñтранице входа"
-
-#, fuzzy
#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ "\t\t\t\t\t\t\tsee %(email_validation_faq_url)s\n"
-#~ "\t\t\t\t\t\t\t"
+#~ "Below is the list of available badges and number \n"
+#~ "of times each type of badge has been awarded. Give us feedback at "
+#~ "%(feedback_faq_url)s.\n"
#~ msgstr ""
-#~ "<span class=\"big strong\">Похоже на то что Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной "
-#~ "почты, %(email)s еще не был проверен.</span> Чтобы публиковать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
-#~ "на форуме Ñначала пожалуйÑта продемонÑтрируйте что Ваша ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° "
-#~ "работает, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± етом <a href="
-#~ "\"%(email_validation_faq_url)s\">здеÑÑŒ</a>.<br/> Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ "
-#~ "опубликован Ñразу поÑле того как ваш Ð°Ð´Ñ€ÐµÑ Ð±ÑƒÐ´ÐµÑ‚ проверен, а до тех пор "
-#~ "Ð²Ð¾Ð¿Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в базе данных."
+#~ "Ðиже приведен ÑпиÑок доÑтупных значков и чиÑло награждений каждым из них. "
+#~ "ÐŸÑ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ новым значкам отправлÑйте через обратную ÑвÑзь - "
+#~ "%(feedback_faq_url)s."
#, fuzzy
-#~ msgid "click here to see old astsup forum"
-#~ msgstr "нажмите, чтобы поÑмотреть непопулÑрные вопроÑÑ‹"
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "(в Ñвоем профиле, вы можете наÑтроить чаÑтоту оповещений по Ñлектронной "
+#~ "почте, нажав на кнопку \"подпиÑка по e-mail\" - %(profile_url)s)\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "(примечание: вы вÑегда можете <strong><a href='%(profile_url)s?"
+#~ "sort=email_subscriptions'>изменить</a></strong> чаÑтоту Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¸Ñем Ñ "
+#~ "обновлениÑми)"
#~ msgid "keep ignored questions hidden"
#~ msgstr "Ñкрыть игнорируемые вопроÑÑ‹"
@@ -6109,6 +8851,14 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Share this question on facebook"
#~ msgstr "ПоделитьÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñом на Facebook"
+#, fuzzy
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "автор вопроÑа %(question_author)s выбрал Ñтот ответ правильным\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "%(question_author)s выбрал Ñтот ответ правильным"
+
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
@@ -6116,9 +8866,49 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "Ð’Ñе теги, ÑоответÑтвующие <strong><span class=\"darkred\"> '%(stag)s'</"
#~ "span></strong> "
+#~ msgid ""
+#~ "Take a pick of your favorite service below to sign in using secure OpenID "
+#~ "or similar technology. Your external service password always stays "
+#~ "confidential and you don't have to rememeber or create another one."
+#~ msgstr ""
+#~ "Выберите ваш ÑÐµÑ€Ð²Ð¸Ñ Ñ‡Ñ‚Ð¾Ð±Ñ‹ войти иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñную OpenID (или похожую) "
+#~ "технологию. Пароль к вашей внешней Ñлужбе вÑегда конфиденциален и нет "
+#~ "необходимоÑти Ñоздавать пароль при региÑтрации."
+
+#, fuzzy
+#~ msgid "question tips"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "подÑказки к вопроÑам\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "Советы"
+
+#, fuzzy
+#~ msgid "please ask a relevant question"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоответÑтвовать тематике ÑообщеÑтва\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "задавайте вопроÑÑ‹, интереÑующие ÑообщеÑтво"
+
+#~ msgid "please try provide enough details"
+#~ msgstr "поÑтарайтеÑÑŒ придать макÑимум информативноÑти Ñвоему вопроÑу"
+
+#~ msgid "In:"
+#~ msgstr "Ð’:"
+
+#~ msgid "Sort by:"
+#~ msgstr "УпорÑдочить по:"
+
#~ msgid "favorites"
#~ msgstr "закладки"
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] "<span class=\"count\">1</span> Ответ"
+#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Ответов"
+#~ msgstr[2] "<span class=\"count\">%(counter)s</span> Ответа"
+
#~ msgid "this questions was selected as favorite %(cnt)s time"
#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
#~ msgstr[0] "Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» добавлен в закладки %(cnt)s раз"
@@ -6161,8 +8951,13 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "MyOpenid user name"
#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² MyOpenid"
+#, fuzzy
#~ msgid "Email verification subject line"
-#~ msgstr "Тема ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²ÐµÑ€Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ email"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Тема ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²ÐµÑ€Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ email\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "Verification Email from Q&A forum"
#~ msgid "Posted 10 comments"
#~ msgstr "РазмеÑтил 10 комментариев"
@@ -6170,25 +8965,56 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "About"
#~ msgstr "О наÑ"
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ %(email)s должен быть дейÑтвительным, Ñм. "
+#~ "%(email_validation_faq_url)s"
+
#~ msgid "how to validate email title"
#~ msgstr "как проверить заголовок Ñлектронного ÑообщениÑ"
+#, fuzzy
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "как проверить Ñлектронную почту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(send_email_key_url)s "
-#~ "%(gravatar_faq_url)s"
+#~ "%(gravatar_faq_url)s\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
+#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
+#~ "changed your email address - <strong>check your email and click the "
+#~ "included link</strong>.<br>The link contains a key generated specifically "
+#~ "for you. You can also <button style='display:inline' "
+#~ "type='submit'><strong>get a new key</strong></button> and check your "
+#~ "email again.</p></form><span class=\"bigger strong\">Why?</span> Email "
+#~ "validation is required to make sure that <strong>only you can post "
+#~ "messages</strong> on your behalf and to <strong>minimize spam</strong> "
+#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
+#~ "the most interesting questions. Also, when you sign up for the first time "
+#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
+#~ "strong></a> personal image.</p>"
#~ msgid "."
#~ msgstr "."
+#, fuzzy
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
#~ "or permanently remove your account."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Как зарегиÑтрированный пользователь Ð’Ñ‹ можете Войти Ñ OpenID, выйти из "
-#~ "Ñайта или удалить Ñвой аккаунт."
+#~ "Ñайта или удалить Ñвой аккаунт.\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "Clicking <strong>Logout</strong> will log you out from the forum but will "
+#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
+#~ "completely - please make sure to log out from your OpenID provider as "
+#~ "well."
#~ msgid "Logout now"
#~ msgstr "Выйти ÑейчаÑ"
@@ -6361,9 +9187,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ "\n"
#~ "проÑмотров"
-#~ msgid "views"
-#~ msgstr "проÑмотров"
-
#~ msgid "Bad request"
#~ msgstr "неверный запроÑ"
@@ -6586,8 +9409,13 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Askbot"
#~ msgstr "Askbot"
+#, fuzzy
#~ msgid "reputation points"
-#~ msgstr "очки кармы"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "очки кармы\n"
+#~ "#-#-#-#-# django.po (askbot) #-#-#-#-#\n"
+#~ "karma"
#~ msgid "badges: "
#~ msgstr "значки"
@@ -6965,9 +9793,6 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "Enter your login name and password"
#~ msgstr "Введите Ð¸Ð¼Ñ Ð¸ пароль"
-#~ msgid "Create account"
-#~ msgstr "Создать учетную запиÑÑŒ"
-
#~ msgid "Connect to %(APP_SHORT_NAME)s with Facebook!"
#~ msgstr "Подключение к %(APP_SHORT_NAME)s Ñ Facebook!"
@@ -7009,3 +9834,42 @@ msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкÐ
#~ msgid "The new credentials are now associated with your account"
#~ msgstr "ÐÐ¾Ð²Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° в Вашу учетную запиÑÑŒ"
+
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr ""
+#~ "К Ñожалению, так как ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована, вы не можете "
+#~ "удалить флаги."
+
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Извините но ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заморожена и вы не можете удалÑÑ‚ÑŒ флаги. "
+#~ "ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором форума, чтобы найти решение."
+
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "Извините чтобы пожаловатьÑÑ Ð½Ð° Ñообщение необходим минимальный уровень "
+#~ "репутации %(min_rep)d бал"
+#~ msgstr[1] ""
+#~ "Извините чтобы пожаловатьÑÑ Ð½Ð° Ñообщение необходим минимальный уровень "
+#~ "репутации %(min_rep)d бала"
+#~ msgstr[2] ""
+#~ "Извините чтобы пожаловатьÑÑ Ð½Ð° Ñообщение необходим минимальный уровень "
+#~ "репутации %(min_rep)d балов"
+
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "мне нравитьÑÑ Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ (нажмите ещё раз чтобы отменить)"
+
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "мне не нравитьÑÑ Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ (нажмите ещё раз чтобы отменить)"
+
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "<span class='strong big'>Похоже что ваш email Ð°Ð´Ñ€ÐµÑ , %(email)s не был "
+#~ "подтверждён.</span> Ð”Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñообщений вы должны подтвердить ваш "
+#~ "email, пожалуйÑта поÑмотрите <a href='%(email_validation_faq_url)s'>Ñто "
+#~ "Ð´Ð»Ñ Ð´ÐµÑ‚Ð°Ð»ÐµÐ¹</a>.<br> Ð’Ñ‹ можете отправить ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¸ подтвердить "
+#~ "ваш email потом. Ваше Ñообщение будет Ñохранено в очередь. "
diff --git a/askbot/locale/ru/LC_MESSAGES/djangojs.mo b/askbot/locale/ru/LC_MESSAGES/djangojs.mo
index 41b36ee5..c1a01447 100644
--- a/askbot/locale/ru/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/ru/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/ru/LC_MESSAGES/djangojs.po b/askbot/locale/ru/LC_MESSAGES/djangojs.po
index b1fe75a2..9b25feed 100644
--- a/askbot/locale/ru/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/ru/LC_MESSAGES/djangojs.po
@@ -1,77 +1,139 @@
# 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.
#
+# Translators:
+# <olloff@gmail.com>, 2012.
+#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
-"PO-Revision-Date: 2011-09-28 08:02-0800\n"
-"Last-Translator: Rosandra Cuello <rosandra.cuello@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:49-0500\n"
+"PO-Revision-Date: 2012-03-09 09:38+0000\n"
+"Last-Translator: olloff <olloff@gmail.com>\n"
+"Language-Team: Russian (http://www.transifex.net/projects/p/askbot/language/"
+"ru/)\n"
+"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
-"X-Translated-Using: django-rosetta 0.6.2\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+
+#: skins/default/media/js/post.js:532
+msgid "Follow"
+msgstr ""
+"Добавить закладку"
+
+#: skins/default/media/js/post.js:541 skins/default/media/js/post.js.py:550
+#, perl-format
+msgid "%s follower"
+msgid_plural "%s followers"
+msgstr[0] ""
+"%s закладка"
+msgstr[1] ""
+"%s закладки"
+msgstr[2] ""
+"%s закладок"
+
+#: skins/default/media/js/post.js:546
+msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+msgstr ""
+"<div>ЕÑÑ‚ÑŒ закладка!</div><div class=\"unfollow\">Убрать закладку</div>"
+
+#: skins/default/media/js/post.js:1684 skins/common/media/js/post.js:1874
+msgid "Please enter question title (>10 characters)"
+msgstr ""
+"ПожалуйÑта, введите заголовок вопроÑа (>10 Ñимволов)"
+
+#: skins/default/media/js/tag_selector.js:15
+#: skins/common/media/js/tag_selector.js:15
+msgid "Tag \"<span></span>\" matches:"
+msgstr ""
+"Тег \"<span></span>\" подходит длÑ:"
+
+#: skins/default/media/js/tag_selector.js:84
+#: skins/common/media/js/tag_selector.js:84
+#, perl-format
+msgid "and %s more, not shown..."
+msgstr ""
+"и еще %s, которые не показаны..."
+
+#: skins/default/media/js/user.js:129 skins/common/media/js/user.js:159
+msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
+msgstr ""
+"ПожалуйÑта <a href=\"%(signin_url)s\">войдите на Ñайт</a> чтобы отметить "
+"профиль %(username)s"
+
+#: skins/common/media/js/user.js:191
+#, perl-format
+msgid "unfollow %s"
+msgstr "переÑтать Ñледить за %s"
+
+#: skins/common/media/js/user.js:194
+#, perl-format
+msgid "following %s"
+msgstr "отÑлеживаем за %s"
+
+#: skins/common/media/js/user.js:200
+#, perl-format
+msgid "follow %s"
+msgstr "отÑлеживать %s"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr "Ð’Ñ‹ дейÑтвительно хотите удалить логин через %s?"
+msgstr "Ð’Ñ‹ дейÑтвительно уверены, что хотите удалить вашего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr "ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸."
+msgstr "ПожалуйÑта, добавьте один или неÑколько методов входа."
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
msgstr ""
-"У Ð’Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÑ‚ поÑтоÑнного метода авторизации, пожалуйÑта выберите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ "
-"один, нажав на любую из предложеных ниже кнопок."
+"Вами не выбран метод входа, пожалуйÑта, выберите один из них, нажав на одну "
+"из иконок ниже."
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
msgstr "пароли не Ñовпадают"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr "ПроÑмотреть, изменить ÑущеÑтвующие методы авторизации."
+msgstr "Отобразить/изменить текущие методы входа"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr "Чтобы продолжить, пожалуйÑта введите %s"
+msgstr "ПожалуйÑта, введите Ð¸Ð¼Ñ Ð²Ð°Ð¶ÐµÐ¹ учетной запиÑи %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr "Соедините %(site)s Ñ Ð’Ð°ÑˆÐ¸Ð¼ аккаунтом от %(provider_name)s"
+msgstr "Подключите вашу учетную запиÑÑŒ %(provider_name)s к Ñайту %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr "Измените Ваш пароль Ð´Ð»Ñ %s"
+msgstr "Сменить пароль вашей учетной запиÑи %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr "Изменить пароль"
+msgstr "Сменить пароль"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr "Создать пароль Ð´Ð»Ñ %s"
+msgstr "Создать пароль Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr "Создать пароль"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr "Создать аккаунт, защищенный паролем"
@@ -79,279 +141,231 @@ msgstr "Создать аккаунт, защищенный паролем"
msgid "loading..."
msgstr "загрузка..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "введите теги"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "пожалуйÑта, добавьте Ñодержание"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "Ñодержание должно быть более %s Ñимволов"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "пожалуйÑта, введите заголовок"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "заголовок должен быть более %s Ñимволов"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
-msgstr "недоÑтаточно прав"
+msgstr "недоÑтаточно прав доÑтупа"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
-msgstr "Извините, выбрать ÑобÑтвенный ответ в качеÑтве лучшего не разрешаетÑÑ"
+msgstr "проÑтите, вы не можете принÑÑ‚ÑŒ ваш ÑобÑтвенный ответ"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
-msgstr "введите логин"
+msgstr "пожалуйÑта, войдите на Ñайт"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "анонимные пользователи не могут отÑлеживать вопроÑÑ‹"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "анонимные пользователи не могут подпиÑыватьÑÑ Ð½Ð° вопроÑÑ‹"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr "Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы голоÑовать, "
+msgstr "извините, анонимные пользователи не могут голоÑовать"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
-msgstr "Ð’Ñ‹ уверены что Ñто Ñообщение неумеÑтно?"
+msgstr ""
+"вы уверены, что Ñто Ñообщение оÑкорбительно, Ñодержит Ñпам, рекламу, и Ñ‚.д.?"
+
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+"вы уверены, что ÑобираетеÑÑŒ удалить отметку неумеÑтного ÑодержаниÑ"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
-msgstr "Извините, но Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы пожаловатьÑÑ Ð½Ð° Ñообщение, "
+msgstr ""
+"анонимные пользователи не могут отметить флагом нарушающие правила ÑообщениÑ"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
-msgstr "Удалить?"
+msgstr "вы уверены, что хотите удалить Ñто Ñообщение?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr ""
-"неавторизированные пользователи не могут воÑÑтанавливать и удалÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+"извините, анонимные пользователи не могут удалить или отменить удаление "
+"ÑообщениÑ"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
-msgstr "воÑÑтановить Ñообщение"
+msgstr "ваше Ñообщение воÑÑтановлено"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
-msgstr "Ñообщение удалено"
-
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr "Добавить закладку"
+msgstr "ваше Ñообщение было удалено"
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] "%s закладка"
-msgstr[1] "%s закладки"
-msgstr[2] "%s закладок"
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr "<div>ЕÑÑ‚ÑŒ закладка!</div><div class=\"unfollow\">Убрать закладку</div>"
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "воÑÑтановить"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "удалить"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "добавить комментарий"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr "Ñохранить комментарий"
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "недоÑтаточно Ñимволов, пожалуйÑта, добавьте ещё %s"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "оÑталоÑÑŒ меÑто Ð´Ð»Ñ %s Ñимволов"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "удалить Ñтот комментарий"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "Удалить комментарий?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
-msgid "Please enter question title (>10 characters)"
-msgstr "ПожалуйÑта, добавьте заглавие к вопроÑу (>10 букв)"
-
-#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
-msgid "Tag \"<span></span>\" matches:"
-msgstr "Тег \"<span></span>\" подходит длÑ:"
-
-#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
-msgid "and %s more, not shown..."
-msgstr "и ещё %s, не показано..."
-
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr "ПожалуйÑта, отметьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно извещение"
+msgstr "ПожалуйÑта, выберите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один из вариантов"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
-msgstr[0] "Удалить Ñто извещение?"
-msgstr[1] "Удалить Ñти извещениÑ?"
-msgstr[2] "Удалить Ñти извещениÑ?"
-
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
-msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
-msgstr ""
-"ПожалуйÑта <a href=\"%(signin_url)s\">авторизуйтеÑÑŒ</a> чтобы отметить "
-"профиль %(username)s"
-
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
-msgid "unfollow %s"
-msgstr ""
-
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
-msgid "following %s"
-msgstr ""
-
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
-msgid "follow %s"
-msgstr ""
-
-#: skins/common/media/js/utils.js:43
+msgstr[0] "Удалить Ñто уведомление?"
+msgstr[1] "Удалить Ñти уведомлениÑ?"
+msgstr[2] "Удалить Ñти уведомлениÑ?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "удалить Ñто "
+msgstr[1] "удалить Ñтот комментарий"
+msgstr[2] "удалить Ñтот комментарий"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: skins/common/media/js/user.js:79
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "Удалить Ñтот поÑÑ‚?"
+msgstr[1] "удалить Ñти ÑообщениÑ?"
+msgstr[2] "удалить Ñти ÑообщениÑ?"
+
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr "нажмите здеÑÑŒ, чтобы отредактировать Ñтот комментарий"
+msgstr "нажмите чтобы закрыть"
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr "редактировать"
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr "Ñмотрите вопроÑÑ‹, помеченные '%s'"
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "жирный"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "курÑив"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "ÑÑылка"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "цитата"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
-msgstr "форматирование текÑта"
+msgstr "форматированный текÑÑ‚"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "изображение"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "прикрепленный файл"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
-msgstr "пронумерованный ÑпиÑок"
+msgstr "нумерованный ÑпиÑок"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "маркированный ÑпиÑок"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "заголовок"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
-msgstr "Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð»Ð¾Ñа"
+msgstr "Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "отменить"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "повторить"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-"введите url изображениÑ, например:<br /> http://www.domain.ru/kartinka.gif"
+"введите URL-Ð°Ð´Ñ€ÐµÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ, например http://www.example.com/image.jpg или "
+"загрузите файл изображениÑ"
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
-msgstr "введите url, например:<br />http://www.domain.ru/ </p>"
-
-#: skins/common/media/js/wmd/wmd.js:55
-msgid "upload file attachment"
-msgstr "загрузить файл"
-
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
msgstr ""
+"введите Web-адреÑ, например http://www.example.com \"заголовок Ñтраницы\""
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr "название файла"
-
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#: skins/common/media/js/wmd/wmd.js:49
+msgid "upload file attachment"
+msgstr "ПожалуйÑта, выберите и загрузите файл:"
#~ msgid "%(q_num)s question"
#~ msgid_plural "%(q_num)s questions"
#~ msgstr[0] "%(q_num)s вопроÑ"
#~ msgstr[1] "%(q_num)s вопроÑа"
#~ msgstr[2] "%(q_num)s вопроÑов"
+
+#~ msgid "tags cannot be empty"
+#~ msgstr "пожалуйÑта, введите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один Ñ‚Ñг"
+
+#~ msgid "content cannot be empty"
+#~ msgstr "Ñодержимое не может быть пуÑтым"
+
+#~ msgid "%s content minchars"
+#~ msgstr "пожалуйÑта, введите больше %s Ñимволов"
+
+#~ msgid "please enter title"
+#~ msgstr "пожалуйÑта, введите заголовок"
+
+#~ msgid "%s title minchars"
+#~ msgstr "пожалуйÑта, введите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ %s Ñимволов"
+
+#~ msgid "undelete"
+#~ msgstr "отменить удаление"
+
+#~ msgid "delete"
+#~ msgstr "удалить"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "пожалуйÑта, введите как еще минимум %s Ñимволов"
+
+#~ msgid "%s characters left"
+#~ msgstr "%s Ñимволов оÑталоÑÑŒ"
+
+#~ msgid "cancel"
+#~ msgstr "отмена"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "Ð’Ñ‹ дейÑтвительно уверены, что не хотите добавлÑÑ‚ÑŒ Ñтот комментарий?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "вы дейÑтвительно хотите удалить Ñтот комментарий?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "нажмите чтобы отредактировать Ñтот комментарий"
+
+#~ msgid "edit"
+#~ msgstr "редактировать"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "проÑмотреть вопроÑÑ‹, которым приÑвоен Ñ‚Ñг '%s'"
+
+#~ msgid "image description"
+#~ msgstr "опиÑание изображениÑ"
+
+#~ msgid "file name"
+#~ msgstr "Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
+
+#~ msgid "link text"
+#~ msgstr "текÑÑ‚ ÑÑылки"
diff --git a/askbot/locale/sr/LC_MESSAGES/django.mo b/askbot/locale/sr/LC_MESSAGES/django.mo
index 7af3be21..19674e18 100644
--- a/askbot/locale/sr/LC_MESSAGES/django.mo
+++ b/askbot/locale/sr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/sr/LC_MESSAGES/django.po b/askbot/locale/sr/LC_MESSAGES/django.po
index 74ce30b6..f3db6971 100644
--- a/askbot/locale/sr/LC_MESSAGES/django.po
+++ b/askbot/locale/sr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:39-0600\n"
+"POT-Creation-Date: 2012-04-18 18:49-0500\n"
"PO-Revision-Date: 2010-05-07 02:52\n"
"Last-Translator: <who@email.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,17 +22,19 @@ msgstr ""
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr ""
+"Извините, но к Ñожалению Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупна Ð´Ð»Ñ Ð½ÐµÐ°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… "
+"пользователей"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
-msgstr ""
+msgstr "-"
-#: feed.py:26
+#: feed.py:28
#, fuzzy
msgid "Individual question feed"
msgstr "Појединачно одабрани"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "најновија питања"
@@ -50,7 +52,10 @@ msgstr ""
msgid "Country field is required"
msgstr "ово поље је обавезно"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "наÑлов"
@@ -58,32 +63,50 @@ msgstr "наÑлов"
msgid "please enter a descriptive title for your question"
msgstr "молимо ВаÑ, унеÑтите јаÑан наÑлов за Ваше питање"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "наÑлов мора имати > 10 карактера"
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "наÑлов мора имати > 10 карактера"
+msgstr[1] "наÑлов мора имати > 10 карактера"
+msgstr[2] "наÑлов мора имати > 10 карактера"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "Ñадржај"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "Ñадржај питања мора имати > 10 карактера"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "ознаке"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr "Ознаке Ñу кратке речи, без размака. Можете унети до 5 ознака."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] "Ознаке Ñу кратке речи, без размака. Можете унети до 5 ознака."
+msgstr[1] "Ознаке Ñу кратке речи, без размака. Можете унети до 5 ознака."
+msgstr[2] "Ознаке Ñу кратке речи, без размака. Можете унети до 5 ознака."
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "ознаке Ñу обавезне"
-#: forms.py:173
+#: forms.py:232
#, fuzzy, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
@@ -91,12 +114,12 @@ msgstr[0] "кориÑтите %(tag_count)d ознаку или мање"
msgstr[1] "кориÑтите %(tag_count)d ознака или мање"
msgstr[2] "кориÑтите %(tag_count)d ознака или мање"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
+#: forms.py:249
#, fuzzy, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
@@ -104,15 +127,15 @@ msgstr[0] "Ñвака ознака мора имати мање од %(max_chars
msgstr[1] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
msgstr[2] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "кориÑтите-ове-каратере-у-ознакама"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -120,11 +143,11 @@ msgstr ""
"уколико одаберете вики опцију, питање и одговор не доноÑе поене; име аутора "
"Ñе не приказује"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "ажурирање резимеа:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -132,237 +155,284 @@ msgstr ""
"унеÑите кратко објашњење Ваше измене (нпр. правопиÑ, граматика, побољшање "
"Ñтила, ово поље није обавезно)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr ""
+msgstr "Введите количеÑтво очков которые Ð’Ñ‹ ÑобираетеÑÑŒ вычеÑÑ‚ÑŒ или добавить."
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
-msgstr ""
+msgstr "проÑтой гражданин"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
-msgstr ""
+msgstr "поднадзорный пользователь"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr ""
+msgstr "ограниченный в правах"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
-msgstr ""
+msgstr "заблокированный пользователь"
-#: forms.py:346
+#: forms.py:405
#, fuzzy
msgid "administrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
#, fuzzy
msgid "moderator"
msgstr "moderate-user/"
-#: forms.py:367
+#: forms.py:426
#, fuzzy
msgid "Change status to"
msgstr "Промените ознаке"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
-msgstr ""
+msgstr "который?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
-msgstr ""
+msgstr "Извините, но ÑобÑтвенный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ нельзÑ"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
+"Извините, но у Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти давать другим пользователÑм ÑÑ‚Ð°Ñ‚ÑƒÑ "
+"модератора"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
-msgstr ""
+msgstr "Извините, но у Ð’Ð°Ñ Ð½ÐµÑ‚ возможноÑти изменÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð²"
-#: forms.py:434
+#: forms.py:493
#, fuzzy
msgid "Cannot change status to admin"
msgstr "Промените ознаке"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"ЕÑли Ð’Ñ‹ хотите изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(username)s, Ñто можно Ñделать "
+"ÑдеÑÑŒ"
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
-msgstr ""
+msgstr "Тема"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
-msgstr ""
+msgstr "ТекÑÑ‚ ÑообщениÑ"
-#: forms.py:542
+#: forms.py:530
#, fuzzy
msgid "Your name (optional):"
msgstr "Ваше име:"
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr "е-пошта/"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "Ваша порука:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
+#, fuzzy
msgid "ask anonymously"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"анонимный"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "ова е-пошта не мора бити повезана Ñа gravatar-ом"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Право име"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "ВебÑајт"
-#: forms.py:907
+#: forms.py:902
+#, fuzzy
msgid "City"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Критик"
-#: forms.py:916
+#: forms.py:911
+#, fuzzy
msgid "Show country"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Показывать подвал Ñтраницы."
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "Датум рођења"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"неће бити приказано, кориÑти Ñе за израчунавање ваших година, формат: ГГГГ-"
"ММ-ДД"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Профил"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "КориÑничко име"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "ова е-пошта је већ региÑтрована, молимо Ð’Ð°Ñ ÑƒÐ½ÐµÑите другу"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
-msgstr ""
+msgstr "Выберите тип фильтра по темам (ключевым Ñловам)"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
-msgstr ""
+msgstr "Заданные мной"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
-msgstr ""
+msgstr "Отвеченные мной"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Појединачно одабрани"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Цео форум (ознака филтрирана)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
-msgstr ""
+msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ упоминают моё имÑ"
+
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
#: forms.py:1115
msgid "okay, let's try!"
msgstr "У реду, хајде да покушамо!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "молимо Ð’Ð°Ñ Ð±ÐµÐ· askbot е-поште, хвала"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
-#: urls.py:57
+#: urls.py:41
msgid "about/"
msgstr "онама/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "чпп/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "приватноÑÑ‚/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "одговори/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "уреди/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "ревизије/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"питања\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"вопроÑÑ‹"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "питања/"
@@ -391,52 +461,57 @@ msgstr "одговор/"
msgid "vote/"
msgstr "глаÑај/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr "ознаке/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "кориÑници/"
-#: urls.py:214
+#: urls.py:219
#, fuzzy
msgid "subscriptions/"
msgstr "питања"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "беџеви/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "поруке/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "означипрочитано/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "upload/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "ÑугеÑтија/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "питање/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
#, fuzzy
msgid "account/"
msgstr "онама/"
@@ -457,79 +532,79 @@ msgstr "реÑетујте ознаке"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
-msgstr ""
+msgstr "За диÑциплину: минимум голоÑов за удалённое Ñообщение"
#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "Давление товарищей: минимум голоÑов против удаленного ÑообщениÑ"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
-msgstr ""
+msgstr "Учитель: минимум голоÑов за ответ"
#: conf/badges.py:50
msgid "Nice Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "Хороший ответ: минимум голоÑов за ответ"
#: conf/badges.py:59
msgid "Good Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr " Замечательный ответ: минимум голоÑов за ответ"
#: conf/badges.py:68
msgid "Great Answer: minimum upvotes for the answer"
-msgstr ""
+msgstr "ВыдающийÑÑ Ð¾Ñ‚Ð²ÐµÑ‚: минимум голоÑов за ответ"
#: conf/badges.py:77
msgid "Nice Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Хороший вопроÑ: минимум голоÑов за вопроÑ"
#: conf/badges.py:86
msgid "Good Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Замечательный вопроÑ: минимум голоÑов за вопроÑ"
#: conf/badges.py:95
msgid "Great Question: minimum upvotes for the question"
-msgstr ""
+msgstr "Великолепный вопроÑ: минимум голоÑов за вопроÑ"
#: conf/badges.py:104
msgid "Popular Question: minimum views"
-msgstr ""
+msgstr "ПопулÑрный вопроÑ: минимум проÑмотров"
#: conf/badges.py:113
msgid "Notable Question: minimum views"
-msgstr ""
+msgstr "ВыдающийÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñ: минимум проÑмотров"
#: conf/badges.py:122
msgid "Famous Question: minimum views"
-msgstr ""
+msgstr "Знаменитый вопроÑ: минимум проÑмотров"
#: conf/badges.py:131
msgid "Self-Learner: minimum answer upvotes"
-msgstr ""
+msgstr "Самоучка: минимум голоÑов за ответ"
#: conf/badges.py:140
msgid "Civic Duty: minimum votes"
-msgstr ""
+msgstr "ÐктивиÑÑ‚: минимум голоÑов"
#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "ПроÑветитель: минимум голоÑов за принÑтый ответ"
#: conf/badges.py:158
msgid "Guru: minimum upvotes"
-msgstr ""
+msgstr "Гуру: минимум голоÑов за принÑтый ответ"
#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "Ðекромант: минимум голоÑов за ответ"
#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "Ðекромант: Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ° (дней) перед ответом"
#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
-msgstr ""
+msgstr "Штатный редактор: минимум правок"
#: conf/badges.py:194
#, fuzzy
@@ -538,7 +613,7 @@ msgstr "омиљена питања"
#: conf/badges.py:203
msgid "Stellar Question: minimum stars"
-msgstr ""
+msgstr "Гениальный вопроÑ: минимальное количеÑтво закладок"
#: conf/badges.py:212
msgid "Commentator: minimum comments"
@@ -554,7 +629,7 @@ msgstr ""
#: conf/email.py:15
msgid "Email and email alert settings"
-msgstr ""
+msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° и ÑиÑтема оповещений"
#: conf/email.py:24
#, fuzzy
@@ -568,137 +643,167 @@ msgid ""
msgstr ""
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° и ÑиÑтема оповещений"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
-msgstr ""
+msgstr "МакÑимальное количеÑтво новоÑтей в оповеÑтительном Ñообщении"
-#: conf/email.py:48
+#: conf/email.py:57
+#, fuzzy
msgid "Default notification frequency all questions"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñтота раÑÑылки Ñообщений по умолчанию"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Затвори питање"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "питање је одговорено, прави одговор је прихваћен"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "погледајте питања без одговора"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
+#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ðеотвеченных вопроÑов нет"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
+#, fuzzy
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
-#: conf/email.py:168
+#: conf/email.py:177
#, fuzzy
msgid "Send periodic reminders to accept the best answer"
msgstr "погледајте питања без одговора"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
+#, fuzzy
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ðеотвеченных вопроÑов нет"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
+#, fuzzy
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"нажмите, чтобы увидеть поÑледние вопроÑÑ‹"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
+"Требовать Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты перед публикацией Ñообщений"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
+"Подтверждение адреÑа Ñлектронной почты оÑущеÑтвлÑетÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¾Ð¹ ключа "
+"проверки на email"
-#: conf/email.py:228
+#: conf/email.py:237
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Your email <i>(never shared)</i>"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
-msgstr ""
+msgstr "Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
+"ИÑпользуйте Ñту уÑтановку Ð´Ð»Ñ Ð°Ð²Ð°Ñ‚Ð°Ñ€Ð° пользователей которые не ввели Ð°Ð´Ñ€ÐµÑ "
+"Ñлектронной почты."
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -708,193 +813,268 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
+#, fuzzy
msgid "Keys for external services"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
#: conf/external_keys.py:19
msgid "Google site verification key"
-msgstr ""
+msgstr "Идентификационный ключ Google"
#: conf/external_keys.py:21
-#, python-format
+#, fuzzy, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Этот ключ поможет поиÑковику Google индекÑировать Ваш форум, пожалуйÑта "
+"получите ключ на <a href=\"%(google_webmasters_tools_url)s\">инÑтрументарии "
+"Ð´Ð»Ñ Ð²ÐµÐ±Ð¼Ð°Ñтеров</a> от Google"
#: conf/external_keys.py:36
msgid "Google Analytics key"
-msgstr ""
+msgstr "Ключ Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ ÑервиÑа \"Google-Analytics\""
#: conf/external_keys.py:38
-#, python-format
+#, fuzzy, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Получите ключ <a href=\"%(ga_site)s\">по Ñтой ÑÑылке</a>, еÑли Ð’Ñ‹ "
+"ÑобираетеÑÑŒ пользоватьÑÑ Ð¸Ð½Ñтрументом Google-Analytics"
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
-msgstr ""
+msgstr "Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
-msgstr ""
+msgstr "Публичный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
-msgstr ""
+msgstr "Секретный ключ Ð´Ð»Ñ recaptcha"
-#: conf/external_keys.py:70
-#, python-format
+#: conf/external_keys.py:72
+#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Recaptcha Ñто ÑредÑтво, которое помогает отличить живых людей от надоедливых "
+"Ñпам-роботов. ПожалуйÑта получите необходимые ключи на Ñайте <a href="
+"\"http://recaptcha.net\">recaptcha.net</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
-msgstr ""
+msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Facebook API"
-#: conf/external_keys.py:84
-#, python-format
+#: conf/external_keys.py:86
+#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
"\">facebook create app</a> site"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Пара ключей Ð´Ð»Ñ Facebook API позволит пользователÑм Вашего форума "
+"авторизоватьÑÑ Ñ‡ÐµÑ€ÐµÐ· их аккаунт на Ñоциальной Ñети Facebook. Оба ключа можно "
+"получить <a href=\"http://www.facebook.com/developers/createapp.php\">здеÑÑŒ</"
+"a>"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
-msgstr ""
+msgstr "Секретный ключ Ð´Ð»Ñ Facebook"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Публичный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer key)"
-#: conf/external_keys.py:107
-#, python-format
+#: conf/external_keys.py:109
+#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
+"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
+"Twitter API</a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
-msgstr ""
+msgstr "Секретный ключ Ð´Ð»Ñ Ð´Ð¾Ñтупа Twitter API (consumer secret)"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
-msgstr ""
+msgstr "Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
-#: conf/external_keys.py:128
-#, python-format
+#: conf/external_keys.py:130
+#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
+"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
+"Twitter API</a>"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
-msgstr ""
+msgstr "Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
+#, fuzzy
msgid "ident.ca consumer key"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Публичный ключ Ð´Ð»Ñ LinkedIn (consumer key)"
-#: conf/external_keys.py:149
-#, python-format
+#: conf/external_keys.py:151
+#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Чтобы получить пару ключей Ð´Ð»Ñ Twitter, зарегиÑтрируйте Ваш форум на \n"
+"<a href=\"http://dev.twitter.com/apps/\">Ñайте Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ иÑпользующих "
+"Twitter API</a>"
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
+#, fuzzy
msgid "ident.ca consumer secret"
msgstr ""
-
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Change your password"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Секретный ключ Ð´Ð»Ñ LinkedIn (consumer secret)"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
-msgstr ""
+msgstr "ПроÑтые Ñтраницы - \"о наÑ\", \"политика о личных данных\" и.Ñ‚.д."
#: conf/flatpages.py:19
msgid "Text of the Q&A forum About page (html format)"
-msgstr ""
+msgstr "О Ð½Ð°Ñ (в формате html)"
#: conf/flatpages.py:22
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"about\" page to check your input."
msgstr ""
+"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
+"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
#: conf/flatpages.py:32
+#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"О Ð½Ð°Ñ (в формате html)"
#: conf/flatpages.py:35
+#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
+"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
-msgstr ""
+msgstr "Политика о личных данных (в формате html)"
#: conf/flatpages.py:49
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"privacy\" page to check your input."
msgstr ""
+"Сохраните, затем <a href=\"http://validator.w3.org/\">иÑпользуйте HTML "
+"валидатор</a> на Ñтранице \"о наÑ\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правильноÑти."
#: conf/forum_data_rules.py:12
+#, fuzzy
msgid "Data entry and display rules"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ввод и отображение данных"
+
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr ""
+"Отметьте, еÑли Ð’Ñ‹ хотите иÑпользовать функцию \"общее вики\" Ð´Ð»Ñ Ñообщений "
+"на форуме"
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
@@ -907,8 +1087,17 @@ msgid ""
msgstr ""
#: conf/forum_data_rules.py:56
+#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"strong big\">ПожалуйÑта, начните задавать Ваш Ð²Ð¾Ñ€Ð¿Ð¾Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾</"
+"span>. Когда Ð’Ñ‹ пошлете вопроÑ, Ð’Ñ‹ будете направлены на Ñтраницу "
+"авторизации. Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в текущей ÑеÑÑии и будет опубликован "
+"как только Ð’Ñ‹ авторизуетеÑÑŒ. Войти или запиÑатьÑÑ Ð½Ð° наш форум очень легко. "
+"ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¹Ð¼ÐµÑ‚ не более полминуты а Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ - приблизительно "
+"одну минуту."
#: conf/forum_data_rules.py:58
msgid ""
@@ -931,113 +1120,200 @@ msgstr ""
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
+msgstr "МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
+
+#: conf/forum_data_rules.py:96
+#, fuzzy
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
+
+#: conf/forum_data_rules.py:106
+#, fuzzy
+msgid "Minimum length of question body (number of characters)"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:117
+#, fuzzy
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"МакÑимальное количеÑтво букв в теге (ключевом Ñлове)"
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "ознаке Ñу обавезне"
+
+#: conf/forum_data_rules.py:135
#, fuzzy
msgid "Mandatory tags"
msgstr "ажуриране ознаке"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "Ознаке"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
-msgstr ""
+msgstr "ЧиÑло комментариев по-умолчанию, которое показываетÑÑ Ð¿Ð¾Ð´ ÑообщениÑми"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
+"МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð½Ðµ должна превышать %(max_len)s Ñимволов"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
-msgstr ""
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° поиÑкового запроÑа в AJAX поиÑке"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
+"Значение должно равнÑÑ‚ÑŒÑÑ ÑоответÑтвующей уÑтановке в Вашей базе данных"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
-msgstr ""
+msgstr "Ðаибольшее разрешенное количеÑтво ключевых Ñлов (тегов) на вопроÑ"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
-msgstr ""
+msgstr "КоличеÑтво вопроÑов отображаемых на главной Ñтранице"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "питања без одговора"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+"ИÑпользовать протокол LDAP Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸ через пароль и Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð° ÑервиÑа авторизации LDAP"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "Ð˜Ð¼Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð° ÑервиÑа авторизации LDAP"
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Ознаке"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "кориÑнички профил"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1070,8 +1346,12 @@ msgid "URL of the official page with all the license legal clauses"
msgstr ""
#: conf/license.py:69
+#, fuzzy
msgid "Use license logo"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"логотип %(site)s"
#: conf/license.py:78
msgid "License logo image"
@@ -1112,16 +1392,19 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
-#, python-format
+#: conf/login_providers.py:90
+#, fuzzy, python-format
msgid "Activate %(provider)s login"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Вход при помощи %(provider)s работает отлично"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1134,7 +1417,7 @@ msgstr ""
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
-msgstr ""
+msgstr "Ðктивировать Markdown, оптимизированный Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñтов"
#: conf/markup.py:43
msgid ""
@@ -1143,21 +1426,30 @@ msgid ""
"\"MathJax support\" implicitly turns this feature on, because underscores "
"are heavily used in LaTeX input."
msgstr ""
+"Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ñпециальное значение Ñимвола \"_\", когда он "
+"вÑтречаетÑÑ Ð² Ñередине Ñлов. Обычно Ñтот Ñимвол иÑпользуетÑÑ Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸ "
+"жирного или курÑивного текÑта. Заметьте, что Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки "
+"включена при иÑпользовании MathJax, Ñ‚.к. в формате LaTeX Ñтот Ñимвол широко "
+"иÑпользуетÑÑ."
#: conf/markup.py:58
msgid "Mathjax support (rendering of LaTeX)"
-msgstr ""
+msgstr "Поддержка MathJax (LaTeX) Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких формул"
#: conf/markup.py:60
-#, python-format
+#, fuzzy, python-format
msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ЕÑли вы включите Ñту функцию, <a href=\"%(url)s\">mathjax</a> должен быть "
+"уÑтановлен в каталоге %(dir)s"
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
-msgstr ""
+msgstr "База URL-ов Ð´Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ MathJax"
#: conf/markup.py:76
msgid ""
@@ -1165,6 +1457,9 @@ msgid ""
"deploy it yourself, preferably at a separate domain and enter url pointing "
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
+"Примечание - <strong>MathJax не входит в askbot</strong> - вы должны "
+"размеÑтить его лично, желательно на отдельном домене и ввеÑти URL, "
+"указывающий на \"mathjax\" каталог (например: http://mysite.com/mathjax)"
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
@@ -1239,7 +1534,7 @@ msgstr "унеÑите коментар"
#: conf/minimum_reputation.py:76
msgid "Delete comments posted by others"
-msgstr ""
+msgstr "Удалить чужие комментарии"
#: conf/minimum_reputation.py:85
#, fuzzy
@@ -1258,7 +1553,7 @@ msgstr "Затвори питање"
#: conf/minimum_reputation.py:112
msgid "Retag questions posted by other people"
-msgstr ""
+msgstr "Изменить теги вопроÑов, заданных другими"
#: conf/minimum_reputation.py:121
#, fuzzy
@@ -1272,7 +1567,7 @@ msgstr "вики"
#: conf/minimum_reputation.py:139
msgid "Edit posts authored by other people"
-msgstr ""
+msgstr "Править чужие ÑообщениÑ"
#: conf/minimum_reputation.py:148
#, fuzzy
@@ -1286,7 +1581,7 @@ msgstr "Затвори питање"
#: conf/minimum_reputation.py:166
msgid "Lock posts"
-msgstr ""
+msgstr "Заблокировать поÑÑ‚Ñ‹"
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
@@ -1298,21 +1593,29 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
+#, fuzzy
msgid "Karma loss and gain rules"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Правила Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¿ÑƒÑ‚Ð°Ñ†Ð¸Ð¸"
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
-msgstr ""
+msgstr "МакÑимальный роÑÑ‚ репутации Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð·Ð° день"
#: conf/reputation_changes.py:32
msgid "Gain for receiving an upvote"
-msgstr ""
+msgstr "Увeличение репутации за положительный голоÑ"
#: conf/reputation_changes.py:41
msgid "Gain for the author of accepted answer"
-msgstr ""
+msgstr "Увeличение репутации Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° принÑтого ответа"
#: conf/reputation_changes.py:50
#, fuzzy
@@ -1321,43 +1624,47 @@ msgstr "означен најбољи одговор"
#: conf/reputation_changes.py:59
msgid "Gain for post owner on canceled downvote"
-msgstr ""
+msgstr "Увeличение репутации автора ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене отрицательного голоÑа"
#: conf/reputation_changes.py:68
msgid "Gain for voter on canceling downvote"
-msgstr ""
+msgstr "Увeличение репутации голоÑующего при отмене голоÑа \"против\""
#: conf/reputation_changes.py:78
msgid "Loss for voter for canceling of answer acceptance"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего при отмене выбора лучшего ответа "
#: conf/reputation_changes.py:88
msgid "Loss for author whose answer was \"un-accepted\""
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отмене выбора лучшего ответа"
#: conf/reputation_changes.py:98
msgid "Loss for giving a downvote"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñующего \"против\""
#: conf/reputation_changes.py:108
msgid "Loss for owner of post that was flagged offensive"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое"
#: conf/reputation_changes.py:118
msgid "Loss for owner of post that was downvoted"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение получило Ð³Ð¾Ð»Ð¾Ñ \"против\""
#: conf/reputation_changes.py:128
msgid "Loss for owner of post that was flagged 3 times per same revision"
msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое трижды на "
+"одну и ту же правку"
#: conf/reputation_changes.py:138
msgid "Loss for owner of post that was flagged 5 times per same revision"
msgstr ""
+"ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение было помечено как неприемлемое пÑÑ‚ÑŒ раз на "
+"одну и ту же правку"
#: conf/reputation_changes.py:148
msgid "Loss for post owner when upvote is canceled"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°, чье Ñообщение потерÑло Ð³Ð¾Ð»Ð¾Ñ \"за\""
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
@@ -1382,8 +1689,12 @@ msgid "Show avatar block in sidebar"
msgstr ""
#: conf/sidebar_main.py:38
+#, fuzzy
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Отметьте, еÑли вы хотите, чтобы подвал отображалÑÑ Ð½Ð° каждой Ñтранице форума"
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
@@ -1456,8 +1767,12 @@ msgid "Show related questions in sidebar"
msgstr "Слична питања"
#: conf/sidebar_question.py:64
+#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"нажмите, чтобы поÑмотреть поÑледние обновленные вопроÑÑ‹"
#: conf/site_modes.py:64
msgid "Bootstrap mode"
@@ -1486,55 +1801,65 @@ msgstr "Поздрав од П&О форума"
#: conf/site_settings.py:30
msgid "Comma separated list of Q&A site keywords"
-msgstr ""
+msgstr "Ключевые Ñлова Ð´Ð»Ñ Ñайта, через запÑтую"
#: conf/site_settings.py:39
msgid "Copyright message to show in the footer"
-msgstr ""
+msgstr "Сообщение о праве ÑобÑтвенноÑти (показываетÑÑ Ð² нижней чаÑти Ñтраницы)"
#: conf/site_settings.py:49
msgid "Site description for the search engines"
-msgstr ""
+msgstr "ОпиÑание Ñайта Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñковиков"
#: conf/site_settings.py:58
msgid "Short name for your Q&A forum"
-msgstr ""
+msgstr "Краткое название форума"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
-msgstr ""
+msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ URL форума (должна начинатьÑÑ Ñ http или https)"
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
+#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
+#, fuzzy
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"СÑылка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² приветÑтвии неавторизованному поÑетителю"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
-msgstr ""
+msgstr "СÑылка на Ñайт Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑвÑзи"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
+"ЕÑли оÑтавите Ñто поле пуÑтым, то Ð´Ð»Ñ Ð¿Ð¾Ñылки обратной ÑвÑзи будет "
+"иÑпользоватьÑÑ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
#: conf/skin_counter_settings.py:11
msgid "Skin: view, vote and answer counters"
-msgstr ""
+msgstr "Скин: Ñчетчики проÑмотров, голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ответов"
#: conf/skin_counter_settings.py:19
msgid "Vote counter value to give \"full color\""
-msgstr ""
+msgstr "Значение Ñчетчика голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
#: conf/skin_counter_settings.py:29
msgid "Background color for votes = 0"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = 0"
#: conf/skin_counter_settings.py:30 conf/skin_counter_settings.py:41
#: conf/skin_counter_settings.py:52 conf/skin_counter_settings.py:62
@@ -1547,91 +1872,91 @@ msgstr ""
#: conf/skin_counter_settings.py:228 conf/skin_counter_settings.py:239
#: conf/skin_counter_settings.py:252 conf/skin_counter_settings.py:262
msgid "HTML color name or hex value"
-msgstr ""
+msgstr "Ð˜Ð¼Ñ Ñ†Ð²ÐµÑ‚Ð° HTML или шеÑтнадцатиричное значение"
#: conf/skin_counter_settings.py:40
msgid "Foreground color for votes = 0"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = 0"
#: conf/skin_counter_settings.py:51
msgid "Background color for votes"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа"
#: conf/skin_counter_settings.py:61
msgid "Foreground color for votes"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа"
#: conf/skin_counter_settings.py:71
msgid "Background color for votes = MAX"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = MAX"
#: conf/skin_counter_settings.py:84
msgid "Foreground color for votes = MAX"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾Ñа = MAX"
#: conf/skin_counter_settings.py:95
msgid "View counter value to give \"full color\""
-msgstr ""
+msgstr "ПоÑмотреть значение Ñчетчика Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
#: conf/skin_counter_settings.py:105
msgid "Background color for views = 0"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = 0"
#: conf/skin_counter_settings.py:116
msgid "Foreground color for views = 0"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = 0"
#: conf/skin_counter_settings.py:127
msgid "Background color for views"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
#: conf/skin_counter_settings.py:137
msgid "Foreground color for views"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра"
#: conf/skin_counter_settings.py:147
msgid "Background color for views = MAX"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = MAX"
#: conf/skin_counter_settings.py:162
msgid "Foreground color for views = MAX"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра = MAX"
#: conf/skin_counter_settings.py:173
msgid "Answer counter value to give \"full color\""
-msgstr ""
+msgstr "Значение Ñчетчика ответов Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð¾ÐµÐ½Ð¸Ñ \"full color\""
#: conf/skin_counter_settings.py:185
msgid "Background color for answers = 0"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = 0"
#: conf/skin_counter_settings.py:195
msgid "Foreground color for answers = 0"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = 0"
#: conf/skin_counter_settings.py:205
msgid "Background color for answers"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð²"
#: conf/skin_counter_settings.py:215
msgid "Foreground color for answers"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð²"
#: conf/skin_counter_settings.py:227
msgid "Background color for answers = MAX"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = MAX"
#: conf/skin_counter_settings.py:238
msgid "Foreground color for answers = MAX"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¾Ð² = MAX"
#: conf/skin_counter_settings.py:251
msgid "Background color for accepted"
-msgstr ""
+msgstr "Цвет фона Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ…"
#: conf/skin_counter_settings.py:261
msgid "Foreground color for accepted answer"
-msgstr ""
+msgstr "Цвет шрифта Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹Ñ… ответов"
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
@@ -1639,69 +1964,80 @@ msgstr ""
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
-msgstr ""
+msgstr "Главный логотип"
#: conf/skin_general_settings.py:25
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
+"Чтобы заменить логотип, выберите новый файл затем нажмите кнопку \"Ñохранить"
+"\""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "Показывать логотип"
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
-msgstr ""
+msgstr "Отметьте еÑли Ð’Ñ‹ хотите иÑпользовать логотип в головной чаÑти форум"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
-msgstr ""
+msgstr "Фавикон Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ Ñайта"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
"browser user interface. Please find more information about favicon at <a "
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
+"favicon Ñто Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° 16Ñ…16 либо 32Ñ…32, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ "
+"иÑпользуетÑÑ Ð² интерфейÑе браузеров. Ðа <a href=\"%(favicon_info_url)s"
+"\">ЗдеÑÑŒ</a> еÑÑ‚ÑŒ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ favicon."
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
-msgstr ""
+msgstr "Кнопка Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼"
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
+"Картинка размером 88x38, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸ÑпользуетÑÑ Ð² качеÑтве кнопки Ð´Ð»Ñ "
+"авторизации Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и паролем."
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
-msgstr ""
+msgstr "Отображать вÑе функции пользовательÑкого интерфейÑа вÑем пользователÑм"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
+"ЕÑли Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð¼ÐµÑ‡ÐµÐ½Ð°, то вÑе пользователи форума будут иметь визуальный "
+"доÑтуп ко вÑем его функциÑм, вне завиÑимоÑти от репутации. Однако "
+"фактичеÑкий доÑтуп вÑÑ‘ равно будет завиÑить от репутации, правил "
+"Ð¼Ð¾Ð´ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚.п."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
#, fuzzy
msgid "Select skin"
msgstr "изаберите ревизију"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1713,11 +2049,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1726,21 +2062,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1749,21 +2085,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1772,19 +2108,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1795,25 +2131,25 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
-msgstr ""
+msgstr "Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ð¼ÐµÐ´Ð¸Ð°-файлов Ñкина"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
-msgstr ""
+msgstr "РаÑпроÑтранение информации по Ñоциальным ÑетÑм"
#: conf/social_sharing.py:20
#, fuzzy
@@ -1821,28 +2157,48 @@ msgid "Check to enable sharing of questions on Twitter"
msgstr "Поново отворите ово питање"
#: conf/social_sharing.py:29
+#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
#: conf/social_sharing.py:38
+#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
#: conf/social_sharing.py:47
+#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
#: conf/social_sharing.py:56
+#, fuzzy
msgid "Check to enable sharing of questions on Google+"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Добавить кнопки Ð´Ð»Ñ Ñетей Twitter и Facebook в каждый вопроÑ"
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
msgstr ""
#: conf/spam_and_moderation.py:18
+#, fuzzy
msgid "Enable Akismet spam detection(keys below are required)"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ðктивировать recaptcha (требуетÑÑ Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° recaptcha.net)"
#: conf/spam_and_moderation.py:21
#, python-format
@@ -1862,18 +2218,26 @@ msgid "Static Content, URLS & UI"
msgstr ""
#: conf/super_groups.py:7
+#, fuzzy
msgid "Data rules & Formatting"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Разметка текÑта"
#: conf/super_groups.py:8
+#, fuzzy
msgid "External Services"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Прочие уÑлуги"
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr ""
@@ -1881,37 +2245,77 @@ msgstr ""
"user sessions. Cookies must be enabled in your browser so that forum can "
"work for you."
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
-msgstr ""
+msgstr "Позволить пользователÑм изменÑÑ‚ÑŒ имена"
+
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Your email <i>(never shared)</i>"
-#: conf/user_settings.py:30
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Your email <i>(never shared)</i>"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
+#, fuzzy
msgid "Allow adding and removing login methods"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
+"два или больше методов тоже можно."
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
+msgstr "Минимальное количеÑтво букв в именах пользователей"
+
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Значение по умолчанию: %s"
+
+#: conf/user_settings.py:70
+#, fuzzy
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+"Чтобы заменить логотип, выберите новый файл затем нажмите кнопку \"Ñохранить"
+"\""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
+#, fuzzy
msgid "Name for the Anonymous user"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Поддельный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ пользователÑ"
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
@@ -1919,31 +2323,39 @@ msgstr ""
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
-msgstr ""
+msgstr "КоличеÑтво голоÑов на одного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² день "
#: conf/vote_rules.py:33
msgid "Maximum number of flags per user per day"
-msgstr ""
+msgstr "МакÑимальное количеÑтво меток на одного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² день"
#: conf/vote_rules.py:42
msgid "Threshold for warning about remaining daily votes"
-msgstr ""
+msgstr "Порог Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± оÑтавшихÑÑ ÐµÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ñ‹Ñ… голоÑах "
#: conf/vote_rules.py:51
msgid "Number of days to allow canceling votes"
-msgstr ""
+msgstr "КоличеÑтво дней, в течение которых можно отменить голоÑ"
#: conf/vote_rules.py:60
+#, fuzzy
msgid "Number of days required before answering own question"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"КоличеÑтво дней, в течение которых можно отменить голоÑ"
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
-msgstr ""
+msgstr "ЧиÑло Ñигналов, требуемое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñообщений"
#: conf/vote_rules.py:78
+#, fuzzy
msgid "Number of flags required to automatically delete posts"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"КоличеÑтво меток требуемое Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений"
#: conf/vote_rules.py:87
msgid ""
@@ -1951,6 +2363,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "Овде нема омиљених питања."
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Затвори питање"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "Ñакрите игнориÑана питања"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "омиљена питања кориÑника"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "дупликат питање"
@@ -1987,351 +2432,380 @@ msgstr "Ñпам или реклама"
msgid "too localized"
msgstr "превише локализовано"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "најновија"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "Ñтари"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "активна"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "не активнa"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "hottest"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "coldest"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "Ñа највише глаÑова"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "Ñа најмање глаÑова"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "релевантноÑти"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "Ñвa"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "неодговорена"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "омиљена"
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "СпиÑак ознака"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
#, fuzzy
msgid "Question has no answers"
msgstr "Питања на која Ñте одговорили"
-#: const/__init__.py:79
+#: const/__init__.py:80
#, fuzzy
msgid "Question has no accepted answers"
msgstr "Питања на која Ñте одговорили"
-#: const/__init__.py:122
+#: const/__init__.py:125
#, fuzzy
msgid "asked a question"
msgstr "поÑтавите питање"
-#: const/__init__.py:123
+#: const/__init__.py:126
#, fuzzy
msgid "answered a question"
msgstr "неодговорена"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "коментариÑано питање"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "коментариÑан одговор"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "измењено питање"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "измењен одговор"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "примљен беџ"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "означен најбољи одговор"
-#: const/__init__.py:130
+#: const/__init__.py:133
#, fuzzy
msgid "upvoted"
msgstr "upvoted"
-#: const/__init__.py:131
+#: const/__init__.py:134
#, fuzzy
msgid "downvoted"
msgstr "downvoted"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "глаÑање је отказано"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "обриÑано питање"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "обриÑан одговор"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "означено увредљивим"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "ажуриране ознаке"
-#: const/__init__.py:137
+#: const/__init__.py:140
+#, fuzzy
msgid "selected favorite"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"занеÑено в избранное "
-#: const/__init__.py:138
+#: const/__init__.py:141
+#, fuzzy
msgid "completed user profile"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"завершенный профиль пользователÑ"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "ажурирање је поÑлато на кориÑникову е-пошту"
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "погледајте питања без одговора"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "означен најбољи одговор"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
-msgstr ""
+msgstr "упомÑнуто в текÑте ÑообщениÑ"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "одговорено питање"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "коментариÑано питање"
-
-#: const/__init__.py:201
+#: const/__init__.py:202
#, fuzzy
-msgid "answer_commented"
-msgstr "одговор коментариÑао"
+msgid "answered question"
+msgstr "неодговорена"
-#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "прихваћен одговор"
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "измењен одговор"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[затворено]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[обриÑано]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "почетна верзија"
-#: const/__init__.py:209
+#: const/__init__.py:212
#, fuzzy
msgid "retagged"
msgstr "ретаговано"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "отключить"
-#: const/__init__.py:218
+#: const/__init__.py:221
#, fuzzy
msgid "exclude ignored"
msgstr "занемари игнориÑане ознаке"
-#: const/__init__.py:219
+#: const/__init__.py:222
#, fuzzy
msgid "only selected"
msgstr "Појединачно одабрани"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
-msgstr ""
+msgstr "немедленно "
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "дневно"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "недељно"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
-msgstr ""
+msgstr "не поÑылать email"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
#, fuzzy
msgid "mystery-man"
msgstr "јуче"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "злато"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "Ñребро"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "бронза"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
+#, fuzzy
msgid "Gravatar"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"что такое Gravatar"
-#: const/__init__.py:300
+#: const/__init__.py:303
+#, fuzzy
msgid "Uploaded Avatar"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"что такое Gravatar"
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "ask a question interesting to this community"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "questions with most answers"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
#, fuzzy
msgid "by relevance"
msgstr "релевантноÑти"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "кликните да биÑте видели најÑтарија питања"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
#, fuzzy
msgid "by date"
msgstr "Ðжурирајте"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "кликните да биÑте видели најновији питања"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
#, fuzzy
msgid "click to see the least recently updated questions"
msgstr "кликните да биÑте видели недавно ажурирана питања"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
#, fuzzy
msgid "by activity"
msgstr "активна"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "кликните да биÑте видели недавно ажурирана питања"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
#, fuzzy
msgid "click to see the least answered questions"
msgstr "кликните да биÑте видели најÑтарија питања"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "одговори"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
#, fuzzy
msgid "click to see the most answered questions"
msgstr "кликните да биÑте видели најновији питања"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "least voted questions"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "глаÑај/"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
#, fuzzy
msgid "click to see most voted questions"
msgstr "least voted questions"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-names ниÑу подржанa"
@@ -2357,12 +2831,12 @@ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете шифру"
#: deps/django_authopenid/forms.py:285
msgid "Passwords did not match"
-msgstr ""
+msgstr "Пароли не подходÑÑ‚"
#: deps/django_authopenid/forms.py:297
#, python-format
msgid "Please choose password > %(len)s characters"
-msgstr ""
+msgstr "ПожалуйÑта, выберите пароль > %(len)s Ñимволов"
#: deps/django_authopenid/forms.py:335
msgid "Current password"
@@ -2376,18 +2850,19 @@ msgstr "Стара шифра није иÑправна. Молимо Ð’Ð°Ñ Ð´Ð
#: deps/django_authopenid/forms.py:399
msgid "Sorry, we don't have this email address in the database"
-msgstr ""
+msgstr "Извините, но Ñтого адреÑа нет в нашей базе данных."
#: deps/django_authopenid/forms.py:435
msgid "Your user name (<i>required</i>)"
msgstr "Ваше кориÑничко име <i>(обавезно)</i>"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Погрешно кориÑничко име."
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "нажалоÑÑ‚, не поÑтоји кориÑник Ñа овим именом"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "пријава/"
@@ -2427,8 +2902,9 @@ msgid "%(site)s user name and password"
msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Создайте новый аккаунт Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ и паролем"
#: deps/django_authopenid/util.py:385
#, fuzzy
@@ -2437,7 +2913,7 @@ msgstr "Промени шифру"
#: deps/django_authopenid/util.py:473
msgid "Sign in with Yahoo"
-msgstr ""
+msgstr "Вход через Yahoo"
#: deps/django_authopenid/util.py:480
#, fuzzy
@@ -2461,15 +2937,15 @@ msgstr "Одаберете кориÑничко име"
#: deps/django_authopenid/util.py:533
msgid "WordPress blog name"
-msgstr ""
+msgstr "Ð˜Ð¼Ñ Ð±Ð»Ð¾Ð³Ð° на WordPress"
#: deps/django_authopenid/util.py:541
msgid "Blogger blog name"
-msgstr ""
+msgstr "Ð˜Ð¼Ñ Ð±Ð»Ð¾Ð³Ð° на Blogger"
#: deps/django_authopenid/util.py:549
msgid "LiveJournal blog name"
-msgstr ""
+msgstr "Ð˜Ð¼Ñ Ð±Ð»Ð¾Ð³Ð° на LiveJournal"
#: deps/django_authopenid/util.py:557
#, fuzzy
@@ -2495,11 +2971,12 @@ msgstr "Промени шифру"
#, python-format
msgid "Click to see if your %(provider)s signin still works for %(site_name)s"
msgstr ""
+"Проверьте, работает ли по-прежнему Ваш логин от %(provider)s на %(site_name)s"
#: deps/django_authopenid/util.py:621
#, python-format
msgid "Create password for %(provider)s"
-msgstr ""
+msgstr "Создать пароль Ð´Ð»Ñ %(provider)s"
#: deps/django_authopenid/util.py:625
#, fuzzy, python-format
@@ -2514,303 +2991,340 @@ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и Ñ
#: deps/django_authopenid/util.py:641
#, python-format
msgid "Sign in with your %(provider)s account"
-msgstr ""
+msgstr "Заходите через Ваш аккаунт на %(provider)s"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s није иÑправан"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
+"К Ñожалению, возникла проблема при Ñоединении Ñ %(provider)s, пожалуйÑта "
+"попробуйте ещё раз или зайдите через другого провайдера"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
#, fuzzy
msgid "Your new password saved"
msgstr "Ваша шифра је измењена"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
-msgstr ""
+msgstr "Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
-msgstr ""
+msgstr "Email Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð° выÑлан"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
+"ПожалуйÑта, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один поÑтоÑнный метод Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸. Иметь "
+"два или больше методов тоже можно."
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
-msgstr ""
+msgstr "ЗдеÑÑŒ можно изменить пароль и проверить текущие методы авторизации"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
+"ПожалуйÑта, подождите Ñекунду! Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ воÑÑтанавлена, но ..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
-msgstr ""
+msgstr "К Ñожалению, Ñтот ключ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтек или не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
-msgstr ""
+msgstr "Метод входа %(provider_name) s не ÑущеÑтвует"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "унета шифра не одговара, покушајте поново"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
-msgstr ""
+msgstr "Вход при помощи %(provider)s работает отлично"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1098
-#, python-format
+#: deps/django_authopenid/views.py:1083
+#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
-msgstr ""
+msgstr "ПожалуйÑта, проверьте Ñвой email и пройдите по вложенной ÑÑылке."
#: deps/livesettings/models.py:101 deps/livesettings/models.py:140
#, fuzzy
msgid "Site"
msgstr "наÑлов"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
-msgstr ""
+msgstr "Базовые наÑтройки"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
-msgstr ""
+msgstr "Значение по умолчанию:\"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
-msgstr ""
+msgstr "Значение по умолчанию:"
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
-msgstr ""
+msgstr "Значение по умолчанию: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "дозвољени типови датотека Ñу '%(file_types)s'"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "ЧеÑтитамо, Ñада Ñте админиÑтратор"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+#, fuzzy
+msgid "Sites"
+msgstr "наÑлов"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "Локација"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Промени шифру"
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Log out"
+msgstr "одјава"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "ГлавнаÑ"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "Измени питање"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "ПожалуйÑта, иÑправьте ошибку, указанную ниже:"
+msgstr[1] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
+msgstr[2] "ПожалуйÑта, иÑправьте ошибки, указанные ниже:"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "ÐаÑтройки включены в %(name)s ."
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° изменение значений."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+#, fuzzy
+msgid "Edit Site Settings"
+msgstr "Измени питање"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "Livesettings отключены Ð´Ð»Ñ Ñтого Ñайта."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "Ð’Ñе параметры конфигурации должны быть изменены в файле settings.py "
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, fuzzy, python-format
+msgid "Group settings: %(name)s"
+msgstr "Измени питање"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Развернуть вÑе"
-#: management/commands/send_accept_answer_reminders.py:57
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "ЧеÑтитамо, Ñада Ñте админиÑтратор"
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "Будите први који ћете дати одговор на ово питање!"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr "кликните да биÑте видели најÑтарија питања"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%(question_count)d Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½ в %(topics)s"
+msgstr[1] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
+msgstr[2] "%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
-#: management/commands/send_email_alerts.py:421
-#, fuzzy, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] "<p>%(name)s,</p></p>Следеће питање је ажурирано на П&О форуму:</p>"
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
msgstr[1] ""
-"<p>%(name)s,</p><p>Следећих %(num)d питања је ажурирано на П&О форуму:</p>"
msgstr[2] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "ново питање"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_unanswered_question_reminders.py:60
#, fuzzy, python-format
-msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
-msgstr ""
-"<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
-"frequency of the email updates or turn them off entirely.<br/>If you believe "
-"that this message was sent in an error, please email about it the forum "
-"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
-"server.</p>"
-
-#: management/commands/send_unanswered_question_reminders.py:56
-#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"%(question_count)d Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½ в %(topics)s"
msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
msgstr[2] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"%(question_count)d вопроÑÑ‹ обновлены в %(topics)s"
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "User login"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
+"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
+"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
+"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ лучший ответ, потому что "
+"ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:334
-#, python-format
+#: models/__init__.py:337
+#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"К Ñожалению, вы не можете принÑÑ‚ÑŒ или не принÑÑ‚ÑŒ ваш ÑобÑтвенный ответ на "
+"ваш вопроÑ"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
-#, python-format
+#: models/__init__.py:367
+#, fuzzy, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"К Ñожалению, только первый автор вопроÑа - %(username)s - может принÑÑ‚ÑŒ "
+"лучший ответ"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
-msgstr ""
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
+msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð³Ð¾Ð»Ð¾Ñовать за ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
-msgstr ""
+msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
-msgstr ""
+msgstr "К Ñожалению, ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
-msgstr ""
+msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов "
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
-msgstr ""
+msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñ€ÐµÐ¹Ñ‚Ð¸Ð½Ð³Ð° требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(points)s баллов"
-#: models/__init__.py:428
+#: models/__init__.py:430
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2818,7 +3332,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:429
+#: models/__init__.py:431
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2826,30 +3340,13 @@ msgstr ""
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "нажалоÑÑ‚, Ñлање датотека на Ñервер захтева да имате карму >%(min_rep)s"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-#, fuzzy
-msgid "blocked users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-#: models/__init__.py:451 models/__init__.py:935
-#, fuzzy
-msgid "suspended users cannot post"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-
-#: models/__init__.py:478
-#, python-format
+#: models/__init__.py:482
+#, fuzzy, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minute from posting"
@@ -2857,59 +3354,89 @@ msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
+"только в течение 10 минут"
msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
+"только в течение 10 минут"
msgstr[2] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"К Ñожалению, комментарии (за иÑключением поÑледнего) можно редактировать "
+"только в течение 10 минут"
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
+"К Ñожалению, только владелец или модератор может редактировать комментарий"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
+"К Ñожалению, так как ваш аккаунт приоÑтановлен вы можете комментировать "
+"только Ñвои ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ %(min_rep)s "
+"балов кармы. Ð’Ñ‹ можете комментировать только Ñвои ÑобÑтвенные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ "
+"ответы на ваши вопроÑÑ‹"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
+"Этот поÑÑ‚ был удален, его может увидеть только владелец, админиÑтраторы "
+"Ñайта и модераторы"
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
+"Извините, только модераторы, админиÑтраторы Ñайта и владельцы ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+"могут редактировать удаленные ÑообщениÑ"
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
+"К Ñожалению, так как Ваш ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете "
+"редактировать ÑообщениÑ"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
+"К Ñожалению, так как ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете "
+"редактировать только ваши ÑобÑтвенные ÑообщениÑ"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸ÐºÐ¸ Ñообщений, требуетÑÑ %(min_rep)s баллов "
+"кармы"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2917,143 +3444,209 @@ msgid_plural ""
"Sorry, cannot delete your question since it has some upvoted answers posted "
"by other users"
msgstr[0] ""
+"К Ñожалению, Ð’Ñ‹ не может удалить ваш вопроÑ, поÑкольку на него ответил "
+"другой пользователь и его ответ получил положительный голоÑ"
msgstr[1] ""
+"К Ñожалению, Ð’Ñ‹ не может удалить ваш вопроÑ, поÑкольку на него ответили "
+"другие пользователи и их ответы получили положительные голоÑа"
msgstr[2] ""
+"К Ñожалению, Ð’Ñ‹ не может удалить ваш вопроÑ, поÑкольку на него ответили "
+"другие пользователи и их ответы получили положительные голоÑа"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"ÑообщениÑ"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"ÑообщениÑ"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñообщений других пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете закрыть "
+"вопроÑÑ‹"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы не можете закрыть "
+"вопроÑÑ‹"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей, требуетÑÑ "
+"%(min_rep)s балов кармы"
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñвоего вопроÑа, требуетÑÑ %(min_rep)s балов кармы"
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
+"К Ñожалению, только админиÑтраторы, модераторы или владельцы Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ >"
+"%(min_rep)s может открыть вопроÑ"
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
+"К Ñожалению, чтобы вновь открыть ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ %(min_rep)s "
+"баллов кармы"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
+#: models/__init__.py:783
#, fuzzy
-msgid "blocked users cannot flag posts"
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"ÑообщениÑ"
-#: models/__init__.py:763
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
#, fuzzy
-msgid "suspended users cannot flag posts"
+msgid "Sorry, since your account is blocked you cannot remove flags"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"ÑообщениÑ"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#: models/__init__.py:765
-#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
+msgstr[1] "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
+msgstr[2] "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
+
+#: models/__init__.py:862
+#, fuzzy
+msgid "you don't have the permission to remove all flags"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° изменение значений."
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:863
+msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
+"К Ñожалению, только владельцы, админиÑтраторы Ñайта и модераторы могут "
+"менÑÑ‚ÑŒ теги к удаленным вопроÑам"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована вы не можете поменÑÑ‚ÑŒ "
+"теги вопроÑа "
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете менÑÑ‚ÑŒ "
+"теги только на Ñвои вопроÑÑ‹"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
-msgstr ""
+msgstr "К Ñожалению, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐ³Ð¾Ð² требуетÑÑ %(min_rep)s баллов кармы"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована Ð’Ñ‹ не можете удалÑÑ‚ÑŒ "
+"комментарий"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
+"К Ñожалению, так как Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ приоÑтановлена вы можете удалÑÑ‚ÑŒ "
+"только ваши ÑобÑтвенные комментарии"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
+"К Ñожалению, Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ² требуетÑÑ %(min_rep)s баллов кармы"
-#: models/__init__.py:864
-#, fuzzy
-msgid "cannot revoke old vote"
-msgstr "глаÑање је отказано"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
-msgstr ""
+msgstr "%(date)s"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
@@ -3061,7 +3654,7 @@ msgstr[0] "пре %(hr)d Ñат"
msgstr[1] "пре %(hr)d Ñати"
msgstr[2] ""
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
@@ -3069,7 +3662,7 @@ msgstr[0] "пре %(min)d минут"
msgstr[1] "пре %(min)d минута"
msgstr[2] ""
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
@@ -3077,64 +3670,67 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
+#, fuzzy
msgid "Anonymous"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"анонимный"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
-msgstr ""
+msgstr "С уважением, Модератор форума"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
-msgstr ""
+msgstr "ПриоÑтановленный пользователь "
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
-msgstr ""
+msgstr "Заблокированный пользователь"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
#, fuzzy
msgid "Registered User"
msgstr "РегиÑтровани кориÑник"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
-msgstr ""
+msgstr "Видный пользователь"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
-msgstr ""
+msgstr "Утвержденный Пользователь"
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
-msgstr ""
+msgstr "%(reputation)s кармы %(username)s "
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "<span class=\"hidden\">%(count)d</span>Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ"
+msgstr[1] "%(count)d золотых медалей"
+msgstr[2] "%(count)d золотых медалей"
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3148,7 +3744,7 @@ msgstr[2] ""
"Obtaining silver badge requires significant patience. If you have received "
"one, that means you have greatly contributed to this community."
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3162,35 +3758,31 @@ msgstr[2] ""
"If you are an active participant in this community, you will be recognized "
"with this badge."
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
-msgstr ""
+msgstr "%(item1)s и %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
-msgstr ""
-
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
+msgstr "%(user)s имеет %(badges)s"
-#: models/__init__.py:2200 models/__init__.py:2205
+#: models/__init__.py:2389
#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "Ознаке"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
+"ПоздравлÑем, вы получили '%(badge_name)s'. Проверьте Ñвой <a href="
+"\"%(user_profile)s\">профиль</a>."
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3210,20 +3802,24 @@ msgstr "ОбриÑао ÑопÑтвени поÑÑ‚ Ñа резултатом оÐ
#: models/badges.py:155
msgid "Peer Pressure"
-msgstr ""
+msgstr "Давление ÑообщеÑтва"
#: models/badges.py:174
#, python-format
msgid "Received at least %(votes)s upvote for an answer for the first time"
-msgstr ""
+msgstr "Получил по меньшей мере %(votes)s позитивных голоÑов за первый ответ"
#: models/badges.py:178
msgid "Teacher"
msgstr "ÐаÑтавник"
#: models/badges.py:218
+#, fuzzy
msgid "Supporter"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Фанат"
#: models/badges.py:219
#, fuzzy
@@ -3241,17 +3837,17 @@ msgstr "downvoted"
#: models/badges.py:237
msgid "Civic Duty"
-msgstr ""
+msgstr "ОбщеÑтвенный Долг"
#: models/badges.py:238
#, python-format
msgid "Voted %(num)s times"
-msgstr ""
+msgstr "ГолоÑовал %(num)s раз"
#: models/badges.py:252
#, python-format
msgid "Answered own question with at least %(num)s up votes"
-msgstr ""
+msgstr "Ответил на Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ получил более %(num)s позитивных откликов"
#: models/badges.py:256
msgid "Self-Learner"
@@ -3265,7 +3861,7 @@ msgstr "КориÑтан одговор"
#: models/badges.py:309 models/badges.py:321 models/badges.py:333
#, python-format
msgid "Answer voted up %(num)s times"
-msgstr ""
+msgstr "Ответ получил %(num)s положительных голоÑов"
#: models/badges.py:316
msgid "Good Answer"
@@ -3282,11 +3878,11 @@ msgstr "Добро питање"
#: models/badges.py:345 models/badges.py:357 models/badges.py:369
#, python-format
msgid "Question voted up %(num)s times"
-msgstr ""
+msgstr "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ñ %(num)s или более положительными откликами"
#: models/badges.py:352
msgid "Good Question"
-msgstr ""
+msgstr "Очень Хороший ВопроÑ"
#: models/badges.py:364
msgid "Great Question"
@@ -3298,20 +3894,20 @@ msgstr "Студент"
#: models/badges.py:381
msgid "Asked first question with at least one up vote"
-msgstr ""
+msgstr "Задан первый вопроÑ, получивший Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один положительный отклик"
#: models/badges.py:414
msgid "Popular Question"
-msgstr ""
+msgstr "ПопулÑрный ВопроÑ"
#: models/badges.py:418 models/badges.py:429 models/badges.py:441
#, python-format
msgid "Asked a question with %(views)s views"
-msgstr ""
+msgstr "Задал Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ %(views)s проÑмотрами"
#: models/badges.py:425
msgid "Notable Question"
-msgstr ""
+msgstr "ВыдающийÑÑ Ð’Ð¾Ð¿Ñ€Ð¾Ñ"
#: models/badges.py:436
#, fuzzy
@@ -3329,21 +3925,21 @@ msgstr "Ученик"
#: models/badges.py:495
msgid "Enlightened"
-msgstr ""
+msgstr "ПроÑвещенный"
#: models/badges.py:499
#, python-format
msgid "First answer was accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Первый ответ был отмечен, по крайней мере %(num)s голоÑами"
#: models/badges.py:507
msgid "Guru"
-msgstr ""
+msgstr "Гуру"
#: models/badges.py:510
#, python-format
msgid "Answer accepted with %(num)s or more votes"
-msgstr ""
+msgstr "Ответ отмечен, по меньшей мере %(num)s голоÑами"
#: models/badges.py:518
#, python-format
@@ -3351,14 +3947,15 @@ msgid ""
"Answered a question more than %(days)s days later with at least %(votes)s "
"votes"
msgstr ""
+"Ответил на Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ð¾Ð»ÐµÐµ чем %(days)s дней ÑпуÑÑ‚Ñ Ñ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ %(votes)s голоÑами"
#: models/badges.py:525
msgid "Necromancer"
-msgstr ""
+msgstr "Ðекромант"
#: models/badges.py:548
msgid "Citizen Patrol"
-msgstr ""
+msgstr "ГражданÑкий Дозор"
#: models/badges.py:551
msgid "First flagged post"
@@ -3369,12 +3966,16 @@ msgid "Cleanup"
msgstr "Чишћење"
#: models/badges.py:566
+#, fuzzy
msgid "First rollback"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Первый откат "
#: models/badges.py:577
msgid "Pundit"
-msgstr ""
+msgstr "Знаток"
#: models/badges.py:580
#, fuzzy
@@ -3386,25 +3987,33 @@ msgid "Editor"
msgstr "Уредник"
#: models/badges.py:615
+#, fuzzy
msgid "First edit"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Первое иÑправление "
#: models/badges.py:623
msgid "Associate Editor"
-msgstr ""
+msgstr "Помощник редактора"
#: models/badges.py:627
#, python-format
msgid "Edited %(num)s entries"
-msgstr ""
+msgstr "ИÑправил %(num)s запиÑей"
#: models/badges.py:634
msgid "Organizer"
-msgstr ""
+msgstr "Организатор"
#: models/badges.py:637
+#, fuzzy
msgid "First retag"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Первое изменение Ñ‚Ñгов "
#: models/badges.py:644
msgid "Autobiographer"
@@ -3412,29 +4021,32 @@ msgstr "Ðутобиограф"
#: models/badges.py:647
msgid "Completed all user profile fields"
-msgstr ""
+msgstr "Заполнены вÑе пункты в профиле"
#: models/badges.py:663
#, python-format
msgid "Question favorited by %(num)s users"
-msgstr ""
+msgstr "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»Ð¸ в закладки %(num)s пользователей"
#: models/badges.py:689
msgid "Stellar Question"
-msgstr ""
+msgstr "Гениальный ВопроÑ"
#: models/badges.py:698
msgid "Favorite Question"
-msgstr ""
+msgstr "ИнтереÑный ВопроÑ"
#: models/badges.py:710
msgid "Enthusiast"
-msgstr ""
+msgstr "ЭнтузиаÑÑ‚"
#: models/badges.py:714
-#, python-format
+#, fuzzy, python-format
msgid "Visited site every day for %(num)s days in a row"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ПоÑещал Ñайт каждый день в течение 30 дней подрÑд"
#: models/badges.py:732
#, fuzzy
@@ -3442,240 +4054,3061 @@ msgid "Commentator"
msgstr "Локација"
#: models/badges.py:736
-#, python-format
+#, fuzzy, python-format
msgid "Posted %(num_comments)s comments"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"(один комментарий)"
#: models/badges.py:752
msgid "Taxonomist"
-msgstr ""
+msgstr "ТакÑономиÑÑ‚"
#: models/badges.py:756
-#, python-format
+#, fuzzy, python-format
msgid "Created a tag used by %(num)s questions"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Создал тег, иÑпользованный в 50 вопроÑах"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
-msgstr ""
+msgstr "ЭкÑперт"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
-msgstr ""
+msgstr "Очень активны в одном теге"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
-msgstr ""
+msgstr "Извините, Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½ и более не доÑтупен"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
+"К Ñожалению, ответ который вы ищете больше не доÑтупен, потому что Ð²Ð¾Ð¿Ñ€Ð¾Ñ "
+"был удален"
-#: models/content.py:572
+#: models/post.py:1094
#, fuzzy
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "овај одговор је изабран као иÑправан"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
+"К Ñожалению, комментарии который вы ищете больше не доÑтупны, потому что "
+"Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» удален"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
+"К Ñожалению, комментарий который Ð’Ñ‹ ищете больше не доÑтупен, потому что "
+"ответ был удален"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
-msgstr ""
+msgstr "\" и \"%s\""
-#: models/question.py:66
+#: models/question.py:57
#, fuzzy
msgid "\" and more"
msgstr "Сазнајте више"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr ""
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr ""
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr ""
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "Како да потврдите е-пошту и зашто?"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
-msgstr ""
+msgstr "<em>Изменено модератором. Причина:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
+"%(points)s было добавлено за вклад %(username)s к вопроÑу %(question_title)s"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
+"%(points)s было отобрано у %(username)s's за учаÑтие в вопроÑе "
+"%(question_title)s"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
-msgstr ""
+msgstr "интереÑные"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
-msgstr ""
+msgstr "игнорируемые"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
-msgstr ""
+msgstr "ВеÑÑŒ форум"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "Питања која Ñте поÑтавили"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Питања на која Ñте одговорили"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
-msgstr ""
+msgstr "Индивидуально избранные вопроÑÑ‹"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
-msgstr ""
+msgstr "Ð£Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¸ комментарии ответов"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
-msgstr ""
+msgstr "Мгновенно"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
-msgstr ""
+msgstr "Раз в день"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
-msgstr ""
+msgstr "Раз в неделю"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
+msgstr "Отменить"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+#, fuzzy
+msgid "Sign in"
+msgstr "пријава/"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+#, fuzzy
+msgid "Save your email address"
+msgstr "Your email <i>(never shared)</i>"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Откажите"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "Како да потврдите е-пошту и зашто?"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+#, fuzzy
+msgid "Email not changed"
+msgstr "Е-пошта је промењена."
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+#, fuzzy
+msgid "Email changed"
+msgstr "Е-пошта је промењена."
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "Email проверен"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
msgstr ""
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "Како да потврдите е-пошту и зашто?"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "карма"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "карма"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+#, fuzzy
+msgid "please select one of the options above"
+msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+#, fuzzy
+msgid "Signup"
+msgstr "signup/"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
-msgstr ""
+msgstr "Благодарим Ð²Ð°Ñ Ð·Ð° региÑтрацию на нашем Q/A форуме!"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
-msgstr ""
+msgstr "ПодробноÑти вашей учетной запиÑи:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "КориÑничко име:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
#, fuzzy
msgid "Password:"
msgstr "Шифра:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
msgid "Please sign in here:"
msgstr "Ñа најмање глаÑова"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Поздрав од П&О форума"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr ""
+"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы воÑпользоватьÑÑ Ñ„Ð¾Ñ€ÑƒÐ¼Ð¾Ð¼, пожалуйÑта, перейдите по ÑÑылке ниже:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке выше, вы поможете нам проверить ваш email."
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
+"ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+"дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+"приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
+#: skins/common/templates/authopenid/logout.html:3
+#, fuzzy
+msgid "Logout"
+msgstr "одјава"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "User login"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, fuzzy, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+#, fuzzy
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+"Выберите ваш ÑÐµÑ€Ð²Ð¸Ñ Ñ‡Ñ‚Ð¾Ð±Ñ‹ войти иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñную OpenID (или похожую) "
+"технологию. Пароль к вашей внешней Ñлужбе вÑегда конфиденциален и нет "
+"необходимоÑти Ñоздавать пароль при региÑтрации."
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+"Ð’Ñегда Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð¸Ð´ÐµÑ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð¸Ñ‚ÑŒ работает ли ваш текущий метод входа, а также "
+"добавить и другие методы. ПожалуйÑта, выберите любую иконку ниже Ð´Ð»Ñ "
+"проверки/изменениÑ/Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² входа."
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+"ПожалуйÑта, добавьте поÑтоÑнный метод входа кликнув по одной из иконок ниже, "
+"чтобы не входить каждый раз через e-mail."
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+"Кликние на одной из иконок ниже чтобы добавить метод входа или проверить уже "
+"ÑущеÑтвующий."
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+"Ðа данный момент вами не выбран ни один из методов входа, добавьте Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ "
+"один кликнув по иконке ниже."
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+"ПожалуйÑта, проверьте ваш email и пройдите по ÑÑылке чтобы вновь войти в ваш "
+"аккаунт"
+
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Ñа најмање глаÑова"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "Вход завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, попробуйте ещё раз"
+
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "Пријављивање није уÑпело."
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+#, fuzzy
+msgid "Password"
+msgstr "Шифра:"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+"Чтобы изменить ваш пароль - пожалуйÑта, введите новый дважды и подтвердите "
+"ввод"
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Ðова шифра је креирана"
+
+#: skins/common/templates/authopenid/signin.html:133
+#, fuzzy
+msgid "Please, retype"
+msgstr "молимo ВаÑ, поново откуцајте шифру"
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "Ваши текущие методы входа"
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "провайдер"
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "поÑледњи пут виђен"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "удалите, еÑли хотите"
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "избриши"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "Ðалог је избриÑан."
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "најновија питања"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ и получите новый ключ"
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+"ПожалуйÑта, введите ваш email-Ð°Ð´Ñ€ÐµÑ Ð½Ð¸Ð¶Ðµ чтобы воÑÑтановить ваш аккаунт"
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr "ВоÑÑтановить ваш аккаунт по email"
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "ПоÑлать новый ключ воÑÑтановлениÑ"
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "ВоÑÑтановить ваш аккаунт иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ email"
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+#, fuzzy
+msgid "Create login name and password"
+msgstr ""
+"<span class='big strong'>Enter your Askbot login and password</span><br/"
+"><span class='grey'>(or select your OpenID provider above)</span>"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"ПожалуйÑта, прочтите и укажите два Ñлова ниже, чтобы помочь нам "
+"предотвратить автоматизированные ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи."
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "или"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "вернутьÑÑ Ðº Ñтарнице OpenID входа"
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Промените ознаке"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ПодробноÑти вашей учетной запиÑи:"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "промене Ñу Ñачуване"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+#, fuzzy
+msgid "Upload"
+msgstr "upload/"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "обриÑан одговор"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+#, fuzzy
+msgid "Delete These"
+msgstr "обриÑан одговор"
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Одговорите на питање"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "трајни линк"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "линк"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "undelete"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "означено увредљивим"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "реÑетујте ознаке"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+"Ñообщить о Ñпаме (Ñ‚.е. ÑообщениÑÑ… Ñодержащих Ñпам, рекламу, вредоноÑные "
+"ÑÑылки и Ñ‚.д.)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "означи увредљивим"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+#, fuzzy
+msgid "edit"
+msgstr "уреди/"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "овај одговор је изабран као иÑправан"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "датум затварања %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+#, fuzzy
+msgid "reopen"
+msgstr "отворипоново/"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "затвори"
+
+#: skins/common/templates/question/question_controls.html:35
+#, fuzzy
+msgid "retag"
+msgstr "ретаговано"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "ово поље је обавезно"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "ознаке"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(обавезно)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Включить/выключить предварительный проÑмотр текÑта"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+#, fuzzy
+msgid "hide preview"
+msgstr "преглед"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "Занимљиве ознаке"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "Додајте"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "ИгнориÑане ознаке"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "Фильтр по тегам"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "Страница не найдена"
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "ÐажалоÑÑ‚, Ñтраница коју Ñте тражили није пронађена."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Это могло произойти по Ñледующим причинам:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "ово питање или одговор је избриÑано;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» неверен - пожалуйÑта проверьте;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"документ который Ð’Ñ‹ запроÑили защищён или у Ð’Ð°Ñ Ð½Ðµ хватает \"репутации\", "
+"пожалуйÑта поÑмотрите"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "чпп"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "еÑли Ð’Ñ‹ Ñчитаете что Ñта ошибка показана неверно, пожалуйÑта"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "Ñообщите об Ñтой проблеме"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "назад на предходну Ñтрану"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+#, fuzzy
+msgid "see all questions"
+msgstr "поÑтавите питање"
+
+#: skins/default/templates/404.jinja.html:32
+#, fuzzy
+msgid "see all tags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñервера"
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"об Ñтой ошибке была Ñделана запиÑÑŒ в журнале и ÑоответÑтвующие иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ "
+"будут вÑкоре Ñделаны"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+"еÑли у Ð’Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ÑÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ, пожалуйÑта Ñообщите об Ñтой ошибке вебмаÑтеру"
+
+#: skins/default/templates/500.jinja.html:12
+#, fuzzy
+msgid "see latest questions"
+msgstr "најновија питања"
+
+#: skins/default/templates/500.jinja.html:13
+#, fuzzy
+msgid "see tags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Измените одговор"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "назад"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "ревизија"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "изаберите ревизију"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "Сачувајте промену"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+#, fuzzy
+msgid "show preview"
+msgstr "преглед"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "ПоÑтавите Ваше Питање"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: skins/default/templates/badge.html:5
+#, fuzzy
+msgid "Badge"
+msgstr "беџеви"
+
+#: skins/default/templates/badge.html:7
+#, fuzzy, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"%(name)s"
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr "питања"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "пользователь, получивший Ñтот значок"
+msgstr[1] "пользователÑ, получивших Ñтот значок"
+msgstr[2] "пользователей, получивших Ñтот значок"
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+#, fuzzy
+msgid "Badges"
+msgstr "беџеви"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"If your questions and answers are highly voted, your contribution to this "
+"Q&amp;A community will be recognized with the variety of badges."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun "
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Беџеви - нивои"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "Ð·Ð¾Ð»Ð¾Ñ‚Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: выÑÐ¾ÐºÐ°Ñ Ñ‡ÐµÑÑ‚ÑŒ и очень Ñ€ÐµÐ´ÐºÐ°Ñ Ð½Ð°Ð³Ñ€Ð°Ð´Ð°"
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr "ÑеребрÑÐ½Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: иногда приÑуждаетÑÑ Ð·Ð° большой вклад"
+
+#: skins/default/templates/badges.html:51
+#, fuzzy
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr "ÑеребрÑÐ½Ð°Ñ Ð¼ÐµÐ´Ð°Ð»ÑŒ: иногда приÑуждаетÑÑ Ð·Ð° большой вклад"
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "бронзовый значок: чаÑто даётÑÑ ÐºÐ°Ðº оÑÐ¾Ð±Ð°Ñ Ð·Ð°Ñлуга"
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Затвори питање"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Затвори питање"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Разлози"
+
+#: skins/default/templates/close.html:15
+#, fuzzy
+msgid "OK to close"
+msgstr "датум затварања"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "FAQ"
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "ЧеÑто поÑтављана питања"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Какие вопроÑÑ‹ Ñ Ð¼Ð¾Ð³Ñƒ задать здеÑÑŒ?"
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"Самое главное - вопроÑÑ‹ должны <strong>ÑоответÑтвовать теме</strong> "
+"ÑообщеÑтва."
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"ПроÑьба не задавать вопроÑÑ‹, которые не ÑоответÑтвуют теме Ñтого Ñайта, "
+"Ñлишком Ñубъективны или очевидны."
+
+#: skins/default/templates/faq_static.html:13
+#, fuzzy
+msgid "What should I avoid in my answers?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+#, fuzzy
+msgid "Who moderates this community?"
+msgstr "избриши овај коментар"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Ответ краток: <strong>вы.</strong>"
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Этот Ñайт находитÑÑ Ð¿Ð¾Ð´ управлением Ñамих пользователей."
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "Како ÑиÑтем карме функционише?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Ðапример, еÑли задать интереÑующий Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ дать полный ответ, ваш вклад "
+"будет оценен положительно. С другой Ñтороны, еÑли ответ будет вводить в "
+"заблуждение - Ñто будет оценено отрицательно. Каждый Ð³Ð¾Ð»Ð¾Ñ Ð² пользу будет "
+"генерировать <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> кармы, "
+"каждый Ð³Ð¾Ð»Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð² - будет отнимать <strong>"
+"%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> кармы. СущеÑтвует лимит <strong>"
+"%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> кармы, который может быть набран "
+"за Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ ответ за день. Ð’ таблице ниже предÑтавлены вÑе Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº "
+"карме Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ типа модерированиÑ."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+#, fuzzy
+msgid "upvote"
+msgstr "upvoted"
+
+#: skins/default/templates/faq_static.html:36
+#, fuzzy
+msgid "add comments"
+msgstr "унеÑите коментар"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+#, fuzzy
+msgid "downvote"
+msgstr "downvoted"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "погледајте питања без одговора"
+
+#: skins/default/templates/faq_static.html:47
+#, fuzzy
+msgid "open and close own questions"
+msgstr "Затвори питање"
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "најновија питања"
+
+#: skins/default/templates/faq_static.html:56
+#, fuzzy
+msgid "edit community wiki questions"
+msgstr "вики"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "измењен одговор"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "избриши овај коментар"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Ðеобходимо ли Ñоздавать новый пароль, чтобы зарегиÑтрироватьÑÑ?"
+
+#: skins/default/templates/faq_static.html:72
+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, AOL и т.д."
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Одјава"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "Почему другие люди могут изменÑÑ‚ÑŒ мои вопроÑÑ‹ / ответы?"
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "Цель Ñтого Ñайта ..."
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Таким образом, более опытные пользователи могут редактировать вопроÑÑ‹ и "
+"ответы как Ñтраницы вики, что в Ñвою очередь улучшает качеÑтво ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ "
+"базы данных вопроÑов/ответов."
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "ЕÑли Ñтот подход не Ð´Ð»Ñ Ð²Ð°Ñ, мы уважаем ваш выбор."
+
+#: skins/default/templates/faq_static.html:79
+#, fuzzy
+msgid "Still have questions?"
+msgstr "најновија питања"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+
+#: skins/default/templates/feedback.html:3
+#, fuzzy
+msgid "Feedback"
+msgstr "ÑугеÑтија/"
+
+#: skins/default/templates/feedback.html:5
+#, fuzzy
+msgid "Give us your feedback!"
+msgstr "ÑугеÑтије и žалбе"
+
+#: skins/default/templates/feedback.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"\n"
+"<span class='big strong'>Уважаемый %(user_name)s,</span> мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ "
+"ждем ваших отзывов. \n"
+"ПожалуйÑта, укажите и отправьте нам Ñвое Ñообщение ниже."
+
+#: skins/default/templates/feedback.html:21
+#, fuzzy
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"\n"
+"<span class='big strong'>Уважаемый поÑетитель</span>, мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем "
+"ваших отзывов. ПожалуйÑта, введите и отправить нам Ñвое Ñообщение ниже."
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+#, fuzzy
+msgid "(this field is required)"
+msgstr "ово поље је обавезно"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+#, fuzzy
+msgid "Send Feedback"
+msgstr "ÑугеÑтије и žалбе"
+
+#: skins/default/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
"\n"
"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"\n"
+"ЗдравÑтвуйте, Ñто Ñообщение обратной ÑвÑзи Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°: %(site_title)s\n"
+
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "Одаберете кориÑничко име"
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "без"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Уважаемый %(receiving_user_name)s,</p>"
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s оÑтавил <a href=\"%(post_url)s\">новый "
+"комментарий</a>:</p>\n"
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s оÑтавил <a href=\"%(post_url)s\">новый "
+"комментарий</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s ответил на вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s задал новый вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s обновил ответ на вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s обновил вопроÑ\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Обратите внимание - вы можете Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью <a href="
+"\"%(user_subscriptions_url)s\">изменить</a>\n"
+"уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑÑылки или отпиÑатьÑÑ Ð²Ð¾Ð²Ñе. СпаÑибо за ваш Ð¸Ð½Ñ‚ÐµÑ€ÐµÑ Ðº нашему "
+"форуму!</p>\n"
+
+#: skins/default/templates/instant_notification.html:42
+#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "Поново отворите ово питање"
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "текущее чиÑло голоÑов"
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "поÑÑ‚ отмечен как вики ÑообщеÑтва"
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"Этот поÑÑ‚ - вики. Любой Ñ ÐºÐ°Ñ€Ð¼Ð¾Ð¹ &gt;%(wiki_min_rep)s может улучшить его."
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "питано"
+
+#: skins/default/templates/macros.html:90
+#, fuzzy
+msgid "answered"
+msgstr "неодговорена"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "опубликовал"
+
+#: skins/default/templates/macros.html:122
+#, fuzzy
+msgid "updated"
+msgstr "Ðжурирајте"
+
+#: skins/default/templates/macros.html:202
+#, fuzzy, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "Затвори питање"
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "избриши овај коментар"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "%(username)s gravatar Ñлика"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "кориÑнички профил"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "претходна"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+#, fuzzy
+msgid "current page"
+msgstr "Ñледећа Ñтранa"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "Ñтрана %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "Ñледећа Ñтранa"
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "Одаберете кориÑничко име"
+
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "одговори"
+msgstr[1] "одговори"
+msgstr[2] "одговори"
+
+#: skins/default/templates/macros.html:613
+#, fuzzy
+msgid "no new responses yet"
+msgstr "одговори"
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "Први означени поÑÑ‚"
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts"
+msgstr "Први означени поÑÑ‚"
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, fuzzy, python-format
+msgid "%(seen)s flagged posts"
+msgstr "Први означени поÑÑ‚"
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Питања"
+
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+"Ñмотреть еще <span class=\"hidden\">%(counter)s</span><strong>один</strong>"
+
+#: skins/default/templates/question.html:113
+#, fuzzy
+msgid "see <strong>some</strong> more"
+msgstr ""
+"Ñмотреть еще <span class=\"hidden\">%(counter)s</span><strong>один</strong>"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "РазмеÑтил 10 комментариев"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Одговорите на ваше питање"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "Ваш одговор"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Измени питање"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Слична питања"
+
+#: skins/default/templates/question_retag.html:21
+#, fuzzy
+msgid "Retag"
+msgstr "ознаке"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Зачем иÑпользовать и изменÑÑ‚ÑŒ теги?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr "Теги помогают лучше организовать поиÑк"
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "редакторы тегов получают Ñпециальные призы от ÑообщеÑтва"
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+#, fuzzy
+msgid "Reopen question"
+msgstr "Поново отворите ово питање"
+
+#: skins/default/templates/reopen.html:6
+#, fuzzy
+msgid "Title"
+msgstr "наÑлов"
+
+#: skins/default/templates/reopen.html:11
+#, fuzzy, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Этот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт\n"
+"<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>"
+
+#: skins/default/templates/reopen.html:16
+#, fuzzy
+msgid "Close reason:"
+msgstr "Затвори питање"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "Когда:"
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Поново отворите ово питање"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Поново отворите ово питање"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "Преглед ревизија"
+
+#: skins/default/templates/revisions.html:23
+#, fuzzy
+msgid "click to hide/show revision"
+msgstr "questions with most answers"
+
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "ревизије/"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+#, fuzzy
+msgid "Please, subscribe for the following tags:"
+msgstr "Питање је затворено из Ñледећих разлога"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "СпиÑак ознака"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+#, fuzzy
+msgid "Sort by &raquo;"
+msgstr "Сортирај:"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "Ñортирано по алфабету"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "по имену"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "Ñортировать по чаÑтоте иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ³Ð°"
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "по популарноÑти"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Ðишта није пронађено"
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "КориÑници"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+#, fuzzy
+msgid "karma"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"карма:"
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "нови"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
msgstr ""
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "по кориÑничком имену"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "пользователей, ÑоответÑтвующих запроÑу, %(suser)s:"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Ðишта није пронађено."
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, fuzzy, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "Једно питање"
+msgstr[1] "%(q_num)s питања"
+msgstr[2] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "при помощи %(author_name)s"
+
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "означено"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Савети за претраживање:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "реÑетујте аутора"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#, fuzzy
+msgid " or "
+msgstr "или"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "крените изпочетка"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr "- раÑширить или Ñузить, добавлÑÑ Ñвои метки и Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñ."
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Савет за претраживање:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "додајте ознаке и упит да Ñузите претрагу"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+#, fuzzy
+msgid "There are no unanswered questions here"
+msgstr "погледајте питања без одговора"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "Овде нема омиљених питања."
+
+#: skins/default/templates/main_page/nothing_found.html:8
+#, fuzzy
+msgid "Please follow some questions or follow some users."
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Ð’Ñ‹ можете раÑширить поиÑк"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+#, fuzzy
+msgid "resetting author"
+msgstr "реÑетујте аутора"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+#, fuzzy
+msgid "resetting tags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+#, fuzzy
+msgid "starting over"
+msgstr "крените изпочетка"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Ðе нашли то, что иÑкали?"
+
+#: skins/default/templates/main_page/questions_loop.html:12
+#, fuzzy
+msgid "Please, post your question!"
+msgstr "ПоÑтавите Ваше Питање"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+#, fuzzy
+msgid "subscribe to the questions feed"
+msgstr "најновија питања"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
+msgstr[1] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
+msgstr[2] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "кориÑтите %(tag_count)d ознаку или мање"
+msgstr[1] "кориÑтите %(tag_count)d ознака или мање"
+msgstr[2] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"(one comment)"
+msgstr[1] ""
+"\n"
+"(%(comment_count)s comments)"
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Сортирај:\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"УпорÑдочить по:"
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+#, fuzzy
+msgid "oldest answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+#, fuzzy
+msgid "newest answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+#, fuzzy
+msgid "most voted answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Ваш одговор"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Будите први који ћете дати одговор на ово питање!"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+#, fuzzy
+msgid " or"
+msgstr "или"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+#, fuzzy
+msgid "email"
+msgstr "е-пошта/"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Ознаке"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "questions with most answers"
+
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Сва питања"
+
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Сва питања"
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "questions with most answers"
+
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Сва питања"
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s закладка"
+msgstr[1] "%(count)s закладки"
+msgstr[2] "%(count)s закладок"
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "Задњи пут ажурирано"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr "получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "најновија питања"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "најновија питања"
+
+#: skins/default/templates/question/sidebar.html:46
+#, fuzzy
+msgid "Stats"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"СтатиÑтика"
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "питано"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "пута"
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Задњи пут ажурирано"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Слична питања"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Notify me</strong> weekly when there are any new answers or updates"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+#, fuzzy
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr "получать Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email"
+
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "кориÑнички профил"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Измените кориÑников профил"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "измените профил"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "промените Ñлику"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+#, fuzzy
+msgid "remove"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"vosstanovleniye-accounta/"
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "РегиÑтровани кориÑник"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "КориÑничко, (видљиво) име"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "Ðалог је избриÑан."
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Ðжурирајте"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr "питања"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+#, fuzzy
+msgid "Email subscription settings"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Сва питања"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "входÑщие"
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "питања"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "ответы в форуме (%(re_count)s)"
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "кориÑтите %(tag_count)d ознаку или мање"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+#, fuzzy
+msgid "select:"
+msgstr "избриши"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "поÑледњи пут виђен"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+#, fuzzy
+msgid "new"
+msgstr "најновија"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+#, fuzzy
+msgid "none"
+msgstr "бронза"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "поÑледњи пут виђен"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+#, fuzzy
+msgid "mark as new"
+msgstr "означен најбољи одговор"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "удалить"
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "реÑетујте ознаке"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "избриши"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "ажурирајте профил"
+
+#: skins/default/templates/user_profile/user_info.html:40
+#, fuzzy
+msgid "manage login methods"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "право име"
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "члан од"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "поÑледњи пут виђен"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "ВебÑајт"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "локација"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "ÑтароÑÑ‚"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "година"
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "данашњи неиÑкоришћени глаÑови"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "преоÑтало глаÑова"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "Локација"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, fuzzy, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "кориÑнички профил"
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+#, fuzzy
+msgid "User status changed"
+msgstr "кориÑникова карма"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+#, fuzzy
+msgid "Save"
+msgstr "Сачувајте промену"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "Ваша Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ ÐºÐ°Ñ€Ð¼Ð° %(reputation)s балов"
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "Карма Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %(reputation)s балов "
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "кориÑникова карма"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "ОтнÑÑ‚ÑŒ"
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Додајте"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "Одаберете кориÑничко име"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+"ПиÑьмо будет отправлено пользователю Ñо ÑÑылкой \"Ответить\" на ваш Ð°Ð´Ñ€ÐµÑ "
+"Ñлектронной почты. ПожалуйÑта, убедитеÑÑŒ, что ваш Ð°Ð´Ñ€ÐµÑ Ð²Ð²ÐµÐ´ÐµÐ½ правильно."
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "поруке/"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+#, fuzzy
+msgid "Send message"
+msgstr "поруке/"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "кориÑнички профил"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+#, fuzzy
+msgid "activity"
+msgstr "активна"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Евиденција промене Ваше карме."
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, fuzzy, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "Евиденција промене Ваше карме."
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "преглед"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">1</span> ВопроÑ"
+msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(counter)s</span> ВопроÑов"
+msgstr[2] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(counter)s</span> ВопроÑа"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "одговор"
+msgstr[1] "одговор"
+msgstr[2] "одговор"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, fuzzy, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "овај одговор је изабран као иÑправан"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "<span class=\"hidden\">%(comment_count)s</span>(один комментарий)"
+msgstr[1] "ответ был прокомментирован %(comment_count)s раз"
+msgstr[2] "ответ был прокомментирован %(comment_count)s раза"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">1</span> ГолоÑ"
+msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(cnt)s</span> ГолоÑов"
+msgstr[2] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(cnt)s</span> ГолоÑа"
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "палац горе"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "пользователь проголоÑовал \"за\" много раз"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "палац доле"
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "пользователь проголоÑовал \"против\" много раз"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">1</span> Тег"
+msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(counter)s</span> Тегов"
+msgstr[2] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"count\">%(counter)s</span> Тега"
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Медаль"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Медали"
+msgstr[2] "<span class=\"count\">%(counter)s</span> Медалей"
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "Савети"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+#, fuzzy
+msgid "User profile"
+msgstr "кориÑнички профил"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "комментарии и ответы на другие вопроÑÑ‹"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "Graph of user karma"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+#, fuzzy
+msgid "questions that user is following"
+msgstr "Питање је затворено из Ñледећих разлога"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "Ð³Ð¾Ð»Ð¾Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+#, fuzzy
+msgid "votes"
+msgstr "глаÑај/"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "наÑтройки подпиÑки по Ñлектронной почте"
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+#, fuzzy
+msgid "moderate this user"
+msgstr "Модеришите овог кориÑника"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+#, fuzzy
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "provide enough details"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "будите јаÑни и кратки"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "погледајте чеÑто поÑтављана питања"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown оÑнове"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*курÑив*"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**жирный**"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+#, fuzzy
+msgid "*italic* or _italic_"
+msgstr "*укошено* или _укошено_"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**подебљано** или __подебљано__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "текÑÑ‚"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "Ñлика"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "пронумерованный ÑпиÑок:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+#, fuzzy
+msgid "basic HTML tags are also supported"
+msgstr "i-names ниÑу подржанa"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "узнайте болше про Markdown"
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+#, fuzzy
+msgid "Contributors"
+msgstr "Сарадници"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "о нама"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "политика приватноÑти"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "ÑугеÑтије и žалбе"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "назад на почетну Ñтрану"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "логотип %(site)s"
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "кориÑници"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "беџеви"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/question_summary.html:12
+#, fuzzy
+msgid "view"
+msgid_plural "views"
+msgstr[0] "преглед"
+msgstr[1] "преглед"
+msgstr[2] "преглед"
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "одговор"
+msgstr[1] "одговор"
+msgstr[2] "одговор"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "глаÑај/"
+msgstr[1] "глаÑај/"
+msgstr[2] "глаÑај/"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "погледајте питања без одговора"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "погледајте Ваша омиљена питања"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "ПоÑтавите Ваше Питање"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "карма:"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "беџеви"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "одјава/"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "Ñа најмање глаÑова"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+#, fuzzy
+msgid "settings"
+msgstr "реÑетујте ознаке"
+
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "бронза"
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Извините, произошла ошибка!"
+
#: utils/decorators.py:109
#, fuzzy
msgid "Please login to post"
@@ -3685,87 +7118,88 @@ msgstr "User login"
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "ово поље је обавезно"
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "Одаберете кориÑничко име"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "кориÑничко име је обавезно"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr "нажалоÑÑ‚, ово име је заузето, молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€Ð¸Ñ‚Ðµ друго"
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr "нажалоÑÑ‚, ово име није дозвољено, молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€Ð¸Ñ‚Ðµ друго"
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr "нажалоÑÑ‚, не поÑтоји кориÑник Ñа овим именом"
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
"нажалоÑÑ‚, имамо озбиљну грешку - кориÑничко име је заузето од Ñтране више "
"кориÑника"
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
"кориÑничко име Ñе може ÑаÑтојати иÑкључиво од Ñлова, празног проÑтора и доње "
"линије."
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Your email <i>(never shared)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr "е-пошта је обавезна"
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr "унеÑите валидну е-пошту"
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr "ову е-пошту већ кориÑти неки кориÑник, изаберите другу"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Шифра"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "шифра је неопходна"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Шифра <i>(поново откуцајте)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "молимo ВаÑ, поново откуцајте шифру"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr "унета шифра не одговара, покушајте поново"
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "пре 2 дана"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "јуче"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, fuzzy, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
@@ -3773,7 +7207,7 @@ msgstr[0] "пре %(hr)d Ñат"
msgstr[1] "пре %(hr)d Ñати"
msgstr[2] ""
-#: utils/functions.py:85
+#: utils/functions.py:93
#, fuzzy, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
@@ -3781,6 +7215,37 @@ msgstr[0] "пре %(min)d минут"
msgstr[1] "пре %(min)d минута"
msgstr[2] ""
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -3793,74 +7258,95 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "неавторизированные пользователи не имеют доÑтупа к папке \"входÑщие\""
+
+#: views/commands.py:112
#, fuzzy
-msgid "anonymous users cannot vote"
+msgid "Sorry, anonymous users cannot vote"
msgstr ""
"Sorry, your account appears to be suspended and you cannot make new posts "
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
-msgstr ""
+msgstr "Извините, вы иÑчерпали лимит голоÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð° ÑегоднÑ"
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
-msgstr ""
-
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
+msgstr "Ð’Ñ‹ можете голоÑовать ÑÐµÐ³Ð¾Ð´Ð½Ñ ÐµÑ‰Ñ‘ %(votes_left)s раз"
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
-msgstr ""
+msgstr "Извините, что-то не здеÑÑŒ..."
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
msgstr ""
+"неавторизированные пользователи не могут отмечать ответы как правильные"
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"Ваша претплата је Ñачувана, али е-пошту %(email)s је потребно проверити, "
"погледајте <a href='%(details_url)s'>овде за више информација</a>"
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
-msgstr ""
+msgstr "чаÑтота обновлений по email была уÑтановлена в ежедневную"
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
-#, python-format
+#: views/commands.py:473
+#, fuzzy, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"ПожалуйÑта, войдите здеÑÑŒ:"
-#: views/commands.py:542
+#: views/commands.py:600
#, fuzzy
msgid "Please sign in to vote"
msgstr "Ñа најмање глаÑова"
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Ñа најмање глаÑова"
+
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "%(date)s"
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr "П&О форум ÑугеÑтије"
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Хвала на ÑугеÑтији!"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr ""
+msgstr "Мы Ñ Ð½ÐµÑ‚ÐµÑ€Ð¿ÐµÐ½Ð¸ÐµÐ¼ ждем ваших отзывов!"
-#: views/readers.py:151
+#: views/meta.py:106
+#, fuzzy
+msgid "Privacy policy"
+msgstr "политика приватноÑти"
+
+#: views/readers.py:133
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
@@ -3868,146 +7354,119 @@ msgstr[0] "Једно питање"
msgstr[1] "%(q_num)s питања"
msgstr[2] ""
-#: views/readers.py:159
-#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "Једно питање"
-msgstr[1] "%(q_num)s питања"
-msgstr[2] ""
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: views/readers.py:415
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
-msgstr ""
-
-#: views/users.py:211
-#, fuzzy
-msgid "moderate this user"
-msgstr "Модеришите овог кориÑника"
+msgstr "Извините, но запрашиваемый комментарий был удалён"
-#: views/users.py:212
+#: views/users.py:206
#, fuzzy
msgid "moderate user"
msgstr "moderate-user/"
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "кориÑнички профил"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr "преглед кориÑниковог профила"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "недавне активноÑти кориÑника"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "профил - недавне активноÑти"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr ""
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "профил - одговори"
-#: views/users.py:860
-msgid "user vote record"
-msgstr ""
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "профил - глаÑови"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "кориÑникова карма"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"карма:"
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "профил - кориÑникова карма"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "омиљена питања кориÑника"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "профил - омиљена питања"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr "промене Ñу Ñачуване"
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
-msgstr ""
+msgstr "Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email отменены"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr ""
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "профил - претплата е-поштом"
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
-msgstr ""
+msgstr "неавторизированные пользователи не могут загружать файлы"
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "дозвољени типови датотека Ñу '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, fuzzy, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr "макÑимална величина датотеке за Ñлање на Ñервер је %sK"
-#: views/writers.py:99
+#: views/writers.py:92
#, fuzzy
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
"Грешка при Ñлању датотеке. Молимо Ð’Ð°Ñ Ð´Ð° контактирате админиÑтратора Ñајта. "
"Хвала Вам. %s"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr ""
+#: views/writers.py:189
+msgid ""
"<span class=\"strong big\">You are welcome to start submitting your question "
"anonymously</span>. When you submit the post, you will be redirected to the "
"login/signup page. Your question will be saved in the current session and "
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
#, fuzzy
msgid "Please log in to answer questions"
msgstr "погледајте питања без одговора"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
+"Извините, вы не вошли, поÑтому не можете оÑтавлÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
-#: views/writers.py:646
+#: views/writers.py:589
#, fuzzy
msgid "Sorry, anonymous users cannot edit comments"
msgstr ""
@@ -4015,50 +7474,192 @@ msgstr ""
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
+"Извините, вы не вошли, поÑтому не можете удалÑÑ‚ÑŒ комментарии. <a href="
+"\"%(sign_in_url)s\">Войдите</a>."
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+msgstr "Извините, у Ð½Ð°Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ðµ техничеÑкие проблемы."
+
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "кориÑтите-ове-каратере-у-ознакама"
#, fuzzy
-#~ msgid "Sites"
-#~ msgstr "наÑлов"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "ова е-пошта не мора бити повезана Ñа gravatar-ом"
+
+#~ msgid "URL for the LDAP service"
+#~ msgstr "URL, по которому доÑтупен ÑÐµÑ€Ð²Ð¸Ñ LDAP"
#, fuzzy
-#~ msgid "Documentation"
-#~ msgstr "Локација"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Change your password"
+
+#~ msgid "question_answered"
+#~ msgstr "одговорено питање"
-#~ msgid "Change password"
-#~ msgstr "Промени шифру"
+#~ msgid "question_commented"
+#~ msgstr "коментариÑано питање"
#, fuzzy
-#~ msgid "Log out"
-#~ msgstr "одјава"
+#~ msgid "answer_commented"
+#~ msgstr "одговор коментариÑао"
+
+#~ msgid "answer_accepted"
+#~ msgstr "прихваћен одговор"
+
+#~ msgid "Incorrect username."
+#~ msgstr "Погрешно кориÑничко име."
+
+#, fuzzy
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>%(name)s,</p></p>Следеће питање је ажурирано на П&О форуму:</p>"
+#~ msgstr[1] ""
+#~ "<p>%(name)s,</p><p>Следећих %(num)d питања је ажурирано на П&О форуму:</p>"
+#~ msgstr[2] ""
+
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "ПожалуйÑта, зайдите на наш форум и поÑмотрите что еÑÑ‚ÑŒ нового. Может быть "
+#~ "Ð’Ñ‹ раÑÑкажете другим о нашем Ñайте или кто-нибудь из Ваших знакомых может "
+#~ "ответить на Ñти вопроÑÑ‹ или извлечь пользу из ответов?"
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Ваша наиболее чаÑÑ‚Ð°Ñ Ð½Ð°Ñтройка Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ email - ежедневнаÑ. ЕÑли вы "
+#~ "получаете email чаще, пожалуйÑта, извеÑтите админиÑтратора форума."
+
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Ваша наиболее чаÑÑ‚Ð°Ñ Ð½Ð°Ñтройка Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ email - еженедельнаÑ. ЕÑли "
+#~ "вы получаете email чаще, пожалуйÑта, извеÑтите админиÑтратора форума."
+
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr ""
+#~ "Ðе иÑключено что Ð’Ñ‹ можете получить ÑÑылки, которые видели раньше. Это "
+#~ "иÑчезнет ÑпуÑÑ‚Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ðµ времÑ."
#, fuzzy
-#~ msgid "Edit Group Settings"
-#~ msgstr "Измени питање"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
+#~ "frequency of the email updates or turn them off entirely.<br/>If you "
+#~ "believe that this message was sent in an error, please email about it the "
+#~ "forum administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly "
+#~ "Q&A forum server.</p>"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr ""
+#~ "нажалоÑÑ‚, Ñлање датотека на Ñервер захтева да имате карму >%(min_rep)s"
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "пријава/"
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
-#~ msgid "Change email"
-#~ msgstr "Change Email"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ð¼ÐµÑ‚Ð¸Ñ‚ÑŒ Ñообщение как оÑкорбительное дважды"
#, fuzzy
-#~ msgid "Save your email address"
-#~ msgstr "Your email <i>(never shared)</i>"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
+
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "%(max_flags_per_day)s превышен"
+
+#, fuzzy
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#, fuzzy
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
+#~ msgstr[1] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
+#~ msgstr[2] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "необходимо > %(min_rep)s баллов чтобы отметить как Ñпам"
+
+#, fuzzy
+#~ msgid "cannot revoke old vote"
+#~ msgstr "глаÑање је отказано"
+
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s отредактировали вопроÑ"
+
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s задали новых %(new_answer_count)s вопроÑов"
+
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s оÑтавили комментарии"
+
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s комментировали вопроÑÑ‹"
+
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s комментировали ответы"
#~ msgid "change %(email)s info"
#~ msgstr ""
@@ -4081,33 +7682,14 @@ msgstr ""
#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
#~ "anyone, must be valid)"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "Change Email"
-
-#~ msgid "Cancel"
-#~ msgstr "Откажите"
-
-#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "Како да потврдите е-пошту и зашто?"
-
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">An email with a validation link has been sent "
#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
#~ "your web browser. Email validation is necessary to help insure the proper "
#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>."
-
-#, fuzzy
-#~ msgid "Email not changed"
-#~ msgstr "Е-пошта је промењена."
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>."
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
@@ -4116,10 +7698,6 @@ msgstr ""
#~ "by editing it in your user profile or by using the <a "
#~ "href='%(change_email_url)s'><strong>previous form</strong></a> again."
-#, fuzzy
-#~ msgid "Email changed"
-#~ msgstr "Е-пошта је промењена."
-
#~ msgid "your current %(email)s can be used for this"
#~ msgstr ""
#~ "<span class='big strong'>Your email address is now set to %(email)s.</"
@@ -4145,10 +7723,6 @@ msgstr ""
#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
#~ "necessary."
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "карма"
-
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "<p><span class=\"big strong\">You are here for the first time with your "
@@ -4169,11 +7743,11 @@ msgstr ""
#~ "is already used in another account.</span></p><p>Please choose another "
#~ "screen name to use with your %(provider)s login. Also, a valid email "
#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>"
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>"
#~ msgid ""
#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
@@ -4217,72 +7791,25 @@ msgstr ""
#~ "per week</strong> - only when there is anything new.<br/>If you like, "
#~ "please adjust this now or any time later from your user account."
-#, fuzzy
-#~ msgid "please select one of the options above"
-#~ msgstr "молимо Ð’Ð°Ñ Ð¸Ð·Ð°Ð±ÐµÑ€ÐµÑ‚Ðµ једну од опција изнад"
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr ""
+#~ "Фильтр тегов будет в правой панели, поÑле того, как вы войдете в ÑиÑтему"
#~ msgid "create account"
#~ msgstr "Signup"
-#, fuzzy
-#~ msgid "Logout"
-#~ msgstr "одјава"
-
-#~ msgid "User login"
-#~ msgstr "User login"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#, fuzzy
#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "Пријављивање није уÑпело."
+#~ "ЕÑли вы Ñчитаете, что Ñообщение было отправлено по ошибке - никаких "
+#~ "дальнейших дейÑтвий не требуетÑÑ. ПроÑто проигнорируйте Ñто пиÑьмо, мы "
+#~ "приноÑим Ñвои Ð¸Ð·Ð²Ð¸Ð½ÐµÐ½Ð¸Ñ Ð·Ð° причиненные неудобÑтва."
#~ msgid "Login"
#~ msgstr "Пријава"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Ðова шифра је креирана"
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "молимo ВаÑ, поново откуцајте шифру"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "поÑледњи пут виђен"
-
-#~ msgid "delete"
-#~ msgstr "избриши"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Ðалог је избриÑан."
-
#~ msgid "Why use OpenID?"
#~ msgstr "Зашто кориÑтити OpenID?"
@@ -4309,20 +7836,6 @@ msgstr ""
#~ msgid "Get OpenID"
#~ msgstr "Промени OpenID"
-#, fuzzy
-#~ msgid "Signup"
-#~ msgstr "signup/"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете кориÑничко име и шифру"
-
-#, fuzzy
-#~ msgid "Create login name and password"
-#~ msgstr ""
-#~ "<span class='big strong'>Enter your Askbot login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
-
#~ msgid "Traditional signup info"
#~ msgstr ""
#~ "<span class='strong big'>If you prefer, create your forum login name and "
@@ -4336,183 +7849,27 @@ msgstr ""
#~ msgid "Create Account"
#~ msgstr "Отворите налог"
-#~ msgid "or"
-#~ msgstr "или"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Промените ознаке"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "промене Ñу Ñачуване"
-
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "upload/"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "обриÑан одговор"
-
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "обриÑан одговор"
-
#~ msgid "answer permanent link"
#~ msgstr "трајни линк одговора"
-#~ msgid "permanent link"
-#~ msgstr "трајни линк"
-
-#, fuzzy
-#~ msgid "edit"
-#~ msgstr "уреди/"
-
-#~ msgid "flag offensive"
-#~ msgstr "означи увредљивим"
-
-#~ msgid "undelete"
-#~ msgstr "undelete"
-
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Одговорите на питање"
-
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+#~ msgid "remove all flags"
+#~ msgstr "реÑетујте ознаке"
#, fuzzy
#~ msgid "%(question_author)s has selected this answer as correct"
#~ msgstr "аутор питања је изабрао овај одговор као прави"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "датум затварања %(closed_at)s"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "ретаговано"
-
-#, fuzzy
-#~ msgid "reopen"
-#~ msgstr "отворипоново/"
-
-#~ msgid "close"
-#~ msgstr "затвори"
-
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "ово поље је обавезно"
-
-#~ msgid "(required)"
-#~ msgstr "(обавезно)"
-
-#, fuzzy
-#~ msgid "hide preview"
-#~ msgstr "преглед"
-
#~ msgid "Related tags"
#~ msgstr "Ознаке"
-#~ msgid "Interesting tags"
-#~ msgstr "Занимљиве ознаке"
-
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Додајте"
-
-#~ msgid "Ignored tags"
-#~ msgstr "ИгнориÑане ознаке"
-
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "ÐажалоÑÑ‚, Ñтраница коју Ñте тражили није пронађена."
-
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "ово питање или одговор је избриÑано;"
-
-#~ msgid "faq"
-#~ msgstr "чпп"
-
-#~ msgid "back to previous page"
-#~ msgstr "назад на предходну Ñтрану"
-
-#, fuzzy
-#~ msgid "see all questions"
-#~ msgstr "поÑтавите питање"
-
-#, fuzzy
-#~ msgid "see all tags"
-#~ msgstr "реÑетујте ознаке"
-
-#, fuzzy
-#~ msgid "see latest questions"
-#~ msgstr "најновија питања"
-
-#, fuzzy
-#~ msgid "see tags"
-#~ msgstr "реÑетујте ознаке"
-
-#~ msgid "Edit answer"
-#~ msgstr "Измените одговор"
-
-#~ msgid "back"
-#~ msgstr "назад"
-
-#~ msgid "revision"
-#~ msgstr "ревизија"
-
-#~ msgid "select revision"
-#~ msgstr "изаберите ревизију"
-
-#~ msgid "Save edit"
-#~ msgstr "Сачувајте промену"
-
-#, fuzzy
-#~ msgid "show preview"
-#~ msgstr "преглед"
-
#~ msgid "Ask a question"
#~ msgstr "ПоÑтавите питање"
#, fuzzy
-#~ msgid "Badge"
-#~ msgstr "беџеви"
-
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "питања"
-
-#, fuzzy
#~ msgid "Badges summary"
#~ msgstr "ажурирање резимеа:"
-#, fuzzy
-#~ msgid "Badges"
-#~ msgstr "беџеви"
-
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "If your questions and answers are highly voted, your contribution to this "
-#~ "Q&amp;A community will be recognized with the variety of badges."
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Below is the list of available badges and number \n"
-#~ " of times each type of badge has been awarded. Have ideas about fun "
-#~ "badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Беџеви - нивои"
-
#~ msgid "gold badge description"
#~ msgstr ""
#~ "Gold badge is the highest award in this community. To obtain it have to "
@@ -4529,36 +7886,6 @@ msgstr ""
#~ "If you are an active participant in this community, you will be "
#~ "recognized with this badge."
-#~ msgid "Close question"
-#~ msgstr "Затвори питање"
-
-#~ msgid "Close the question"
-#~ msgstr "Затвори питање"
-
-#~ msgid "Reasons"
-#~ msgstr "Разлози"
-
-#, fuzzy
-#~ msgid "OK to close"
-#~ msgstr "датум затварања"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "ЧеÑто поÑтављана питања"
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Before you ask - please make sure to search for a similar question. You "
-#~ "can search questions by their title or tags."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "What kinds of questions should be avoided?"
-
-#, fuzzy
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "What kinds of questions should be avoided?"
-
#~ 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 "
@@ -4569,20 +7896,6 @@ msgstr ""
#~ "as they tend to dilute the essense of questions and answers. For the "
#~ "brief discussions please use commenting facility."
-#, fuzzy
-#~ msgid "Who moderates this community?"
-#~ msgstr "избриши овај коментар"
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Karma system allows users to earn rights to perform a variety of "
-#~ "moderation tasks"
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "Како ÑиÑтем карме функционише?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "When a question or answer is upvoted, the user who posted them will gain "
@@ -4591,45 +7904,9 @@ msgstr ""
#~ "are gradually assigned to the users based on those points."
#, fuzzy
-#~ msgid "upvote"
-#~ msgstr "upvoted"
-
-#, fuzzy
#~ msgid "use tags"
#~ msgstr "реÑетујте ознаке"
-#, fuzzy
-#~ msgid "add comments"
-#~ msgstr "унеÑите коментар"
-
-#, fuzzy
-#~ msgid "downvote"
-#~ msgstr "downvoted"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "погледајте питања без одговора"
-
-#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "Затвори питање"
-
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "најновија питања"
-
-#, fuzzy
-#~ msgid "edit community wiki questions"
-#~ msgstr "вики"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "измењен одговор"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "избриши овај коментар"
-
#~ msgid "what is gravatar"
#~ msgstr "Како да промените Ñвоју Ñлику (gravatar) и шта је gravatar?"
@@ -4651,47 +7928,6 @@ msgstr ""
#~ "is generated automatically.</p>"
#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Одјава"
-
-#, fuzzy
-#~ msgid "Still have questions?"
-#~ msgstr "најновија питања"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
-#~ "our community better!"
-
-#, fuzzy
-#~ msgid "Feedback"
-#~ msgstr "ÑугеÑтија/"
-
-#, fuzzy
-#~ msgid "Give us your feedback!"
-#~ msgstr "ÑугеÑтије и žалбе"
-
-#, fuzzy
-#~ msgid "(this field is required)"
-#~ msgstr "ово поље је обавезно"
-
-#, fuzzy
-#~ msgid "Send Feedback"
-#~ msgstr "ÑугеÑтије и žалбе"
-
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Поново отворите ово питање"
-
-#, fuzzy
#~ msgid "i like this question (click again to cancel)"
#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
@@ -4705,299 +7941,37 @@ msgstr ""
#~ msgid "i dont like this answer (click again to cancel)"
#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#~ msgid "asked"
-#~ msgstr "питано"
-
-#, fuzzy
-#~ msgid "answered"
-#~ msgstr "неодговорена"
-
-#, fuzzy
-#~ msgid "updated"
-#~ msgstr "Ðжурирајте"
-
-#, fuzzy
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Затвори питање"
-
-#~ msgid "delete this comment"
-#~ msgstr "избриши овај коментар"
-
#~ msgid "add comment"
#~ msgstr "унеÑите коментар"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "кориÑнички профил"
-
-#~ msgid "previous"
-#~ msgstr "претходна"
-
-#, fuzzy
-#~ msgid "current page"
-#~ msgstr "Ñледећа Ñтранa"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "Ñтрана %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "Ñледећа Ñтранa"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] ""
+#~ "Ñмотреть еще <span class=\"hidden\">%(counter)s</span><strong>один</"
+#~ "strong> комментарий"
+#~ msgstr[1] "Ñмотреть еще <strong>%(counter)s</strong> комментариÑ"
+#~ msgstr[2] "Ñмотреть еще <strong>%(counter)s</strong> комментариев"
#~ msgid "posts per page"
#~ msgstr "поÑтова по Ñтрани"
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "Одаберете кориÑничко име"
-
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "одговори"
-#~ msgstr[1] "одговори"
-#~ msgstr[2] "одговори"
-
-#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "одговори"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "Први означени поÑÑ‚"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Први означени поÑÑ‚"
-
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Први означени поÑÑ‚"
-
-#~ msgid "Questions"
-#~ msgstr "Питања"
-
-#, fuzzy
-#~ msgid "Privacy policy"
-#~ msgstr "политика приватноÑти"
-
-#~ msgid "Edit question"
-#~ msgstr "Измени питање"
-
#~ msgid "Change tags"
#~ msgstr "Промените ознаке"
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "ознаке"
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
-
-#, fuzzy
-#~ msgid "Reopen question"
-#~ msgstr "Поново отворите ово питање"
-
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "наÑлов"
-
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Затвори питање"
-
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Поново отворите ово питање"
-
-#~ msgid "Reopen this question"
-#~ msgstr "Поново отворите ово питање"
-
-#~ msgid "Revision history"
-#~ msgstr "Преглед ревизија"
-
-#, fuzzy
-#~ msgid "click to hide/show revision"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "ревизије/"
-
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Питање је затворено из Ñледећих разлога"
-
-#~ msgid "Tag list"
-#~ msgstr "СпиÑак ознака"
-
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Сортирај:"
-
-#~ msgid "sorted alphabetically"
-#~ msgstr "Ñортирано по алфабету"
-
-#~ msgid "by name"
-#~ msgstr "по имену"
-
-#~ msgid "by popularity"
-#~ msgstr "по популарноÑти"
-
-#~ msgid "Nothing found"
-#~ msgstr "Ðишта није пронађено"
-
-#~ msgid "Users"
-#~ msgstr "КориÑници"
-
#~ msgid "reputation"
#~ msgstr "карма"
-#~ msgid "recent"
-#~ msgstr "нови"
-
-#~ msgid "by username"
-#~ msgstr "по кориÑничком имену"
-
-#~ msgid "Nothing found."
-#~ msgstr "Ðишта није пронађено."
-
-#~ msgid "Search tips:"
-#~ msgstr "Савети за претраживање:"
-
-#~ msgid "reset author"
-#~ msgstr "реÑетујте аутора"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "или"
-
-#~ msgid "reset tags"
-#~ msgstr "реÑетујте ознаке"
-
-#~ msgid "start over"
-#~ msgstr "крените изпочетка"
-
-#~ msgid "Search tip:"
-#~ msgstr "Савет за претраживање:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "додајте ознаке и упит да Ñузите претрагу"
-
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "погледајте питања без одговора"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Овде нема омиљених питања."
-
-#, fuzzy
-#~ msgid "resetting author"
-#~ msgstr "реÑетујте аутора"
-
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "реÑетујте ознаке"
-
-#, fuzzy
-#~ msgid "starting over"
-#~ msgstr "крените изпочетка"
-
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#, fuzzy
-#~ msgid "Please, post your question!"
-#~ msgstr "ПоÑтавите Ваше Питање"
-
-#, fuzzy
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "најновија питања"
-
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
-#~ msgstr[1] "Ñвака ознака мора имати мање од %(max_chars)d карактера"
-#~ msgstr[2] ""
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "кориÑтите %(tag_count)d ознаку или мање"
-#~ msgstr[1] "кориÑтите %(tag_count)d ознака или мање"
-#~ msgstr[2] ""
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "до 5 ознака, мање од 20 карактера у Ñвакој"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "(one comment)"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "(%(comment_count)s comments)"
-
-#, fuzzy
-#~ msgid "oldest answers will be shown first"
-#~ msgstr " "
-
#~ msgid "oldest answers"
#~ msgstr "Ñтара"
-#, fuzzy
-#~ msgid "newest answers will be shown first"
-#~ msgstr " "
-
#~ msgid "newest answers"
#~ msgstr "нова"
-#, fuzzy
-#~ msgid "most voted answers will be shown first"
-#~ msgstr " "
-
#~ msgid "popular answers"
#~ msgstr "популарна"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Одговорите на ваше питање"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Login/Signup to Post"
-
-#~ msgid "Your answer"
-#~ msgstr "Ваш одговор"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Будите први који ћете дати одговор на ово питање!"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Please start posting your answer anonymously</"
@@ -5032,55 +8006,17 @@ msgstr ""
#~ msgid "Answer the question"
#~ msgstr "Одговорите на питање"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "или"
-
-#, fuzzy
-#~ msgid "email"
-#~ msgstr "е-пошта/"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Ознаке"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "Задњи пут ажурирано"
-
#~ msgid "question asked"
#~ msgstr "Питано"
#~ msgid "question was seen"
#~ msgstr "Прегледано"
-#~ msgid "times"
-#~ msgstr "пута"
-
-#~ msgid "last updated"
-#~ msgstr "Задњи пут ажурирано"
-
-#~ msgid "Related questions"
-#~ msgstr "Слична питања"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Notify me</strong> once a day by email when there are any new "
#~ "answers or updates"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
@@ -5094,46 +8030,6 @@ msgstr ""
#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
#~ "updates)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
-
-#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "кориÑнички профил"
-
-#~ msgid "Edit user profile"
-#~ msgstr "Измените кориÑников профил"
-
-#~ msgid "edit profile"
-#~ msgstr "измените профил"
-
-#~ msgid "change picture"
-#~ msgstr "промените Ñлику"
-
-#~ msgid "Registered user"
-#~ msgstr "РегиÑтровани кориÑник"
-
-#~ msgid "Screen Name"
-#~ msgstr "КориÑничко, (видљиво) име"
-
-#~ msgid "Update"
-#~ msgstr "Ðжурирајте"
-
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "питања"
-
-#, fuzzy
-#~ msgid "Email subscription settings"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
@@ -5145,239 +8041,44 @@ msgstr ""
#~ msgid "Stop sending email"
#~ msgstr "Stop Email"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Сва питања"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "питања"
-
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "кориÑтите %(tag_count)d ознаку или мање"
-
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "избриши"
-
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "поÑледњи пут виђен"
-
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "најновија"
-
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "бронза"
-
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "поÑледњи пут виђен"
-
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "означен најбољи одговор"
-
-#~ msgid "update profile"
-#~ msgstr "ажурирајте профил"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "User login"
-
-#~ msgid "real name"
-#~ msgstr "право име"
-
-#~ msgid "member for"
-#~ msgstr "члан од"
-
-#~ msgid "last seen"
-#~ msgstr "поÑледњи пут виђен"
-
#~ msgid "user website"
#~ msgstr "кориÑников веб Ñајт"
-#~ msgid "location"
-#~ msgstr "локација"
-
-#~ msgid "age"
-#~ msgstr "ÑтароÑÑ‚"
-
-#~ msgid "age unit"
-#~ msgstr "година"
-
-#~ msgid "todays unused votes"
-#~ msgstr "данашњи неиÑкоришћени глаÑови"
-
-#~ msgid "votes left"
-#~ msgstr "преоÑтало глаÑова"
-
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "Локација"
-
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "кориÑнички профил"
-
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "кориÑникова карма"
-
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "Сачувајте промену"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "кориÑникова карма"
-
-#~ msgid "Add"
-#~ msgstr "Додајте"
-
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Одаберете кориÑничко име"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "поруке/"
-
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "поруке/"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "кориÑнички профил"
-
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "активна"
-
-#~ msgid "Your karma change log."
-#~ msgstr "Евиденција промене Ваше карме."
-
#, fuzzy
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "Евиденција промене Ваше карме."
-
-#~ msgid "overview"
-#~ msgstr "преглед"
-
-#, fuzzy
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "овај одговор је изабран као иÑправан"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "овај одговор је изабран као иÑправан"
-
-#~ msgid "thumb up"
-#~ msgstr "палац горе"
-
-#~ msgid "thumb down"
-#~ msgstr "палац доле"
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Савети"
-
-#, fuzzy
-#~ msgid "User profile"
-#~ msgstr "кориÑнички профил"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "<span class=\"count\">1</span> Ответ"
+#~ msgstr[1] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "<span class=\"count\">%(counter)s</span> Ответов"
+#~ msgstr[2] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "<span class=\"count\">%(counter)s</span> Ответа"
#~ msgid "reputation history"
#~ msgstr "karma history"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "Питање је затворено из Ñледећих разлога"
-
#~ msgid "recent activity"
#~ msgstr "недавне активноÑти"
#~ msgid "casted votes"
#~ msgstr "votes"
-#, fuzzy
-#~ msgid "votes"
-#~ msgstr "глаÑај/"
-
#~ msgid "answer tips"
#~ msgstr "Савети"
#, fuzzy
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "ask a question interesting to this community"
-
-#, fuzzy
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
-#, fuzzy
#~ msgid "please try to provide details"
#~ msgstr "provide enough details"
-#~ msgid "be clear and concise"
-#~ msgstr "будите јаÑни и кратки"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "погледајте чеÑто поÑтављана питања"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown оÑнове"
-
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*укошено* или _укошено_"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**подебљано** или __подебљано__"
-
-#~ msgid "link"
-#~ msgstr "линк"
-
-#~ msgid "text"
-#~ msgstr "текÑÑ‚"
-
-#~ msgid "image"
-#~ msgstr "Ñлика"
-
-#, fuzzy
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "i-names ниÑу подржанa"
-
#~ msgid "ask a question"
#~ msgstr "поÑтавите питање"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
#~ " see %(email_validation_faq_url)s\n"
@@ -5393,93 +8094,65 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "Login/Signup to Post"
-#~ msgid "Ask your question"
-#~ msgstr "ПоÑтавите Ваше Питање"
-
-#, fuzzy
-#~ msgid "Contributors"
-#~ msgstr "Сарадници"
-
-#~ msgid "about"
-#~ msgstr "о нама"
-
-#~ msgid "privacy policy"
-#~ msgstr "политика приватноÑти"
-
-#~ msgid "give feedback"
-#~ msgstr "ÑугеÑтије и žалбе"
-
-#~ msgid "back to home page"
-#~ msgstr "назад на почетну Ñтрану"
-
-#~ msgid "users"
-#~ msgstr "кориÑници"
-
-#~ msgid "badges"
-#~ msgstr "беџеви"
-
#~ msgid "question tips"
#~ msgstr "Савети"
#~ msgid "please ask a relevant question"
#~ msgstr "ask a question interesting to this community"
-#~ msgid "please try provide enough details"
-#~ msgstr "provide enough details"
+#~ msgid "logout"
+#~ msgstr "одјава"
-#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "преглед"
-#~ msgstr[1] "преглед"
-#~ msgstr[2] "преглед"
+#~ msgid "login"
+#~ msgstr "пријава"
-#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "одговор"
-#~ msgstr[1] "одговор"
-#~ msgstr[2] "одговор"
+#~ msgid "no items in counter"
+#~ msgstr "без"
-#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "глаÑај/"
-#~ msgstr[1] "глаÑај/"
-#~ msgstr[2] "глаÑај/"
+#~ msgid "your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
-#~ msgid "see unanswered questions"
-#~ msgstr "погледајте питања без одговора"
+#~ msgid "choose password"
+#~ msgstr "Шифра"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "погледајте Ваша омиљена питања"
+#~ msgid "retype password"
+#~ msgstr "Шифра <i>(поново откуцајте)</i>"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "беџеви"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s медаль"
+#~ msgstr[1] "%(badge_count)d %(badge_level)s медали"
+#~ msgstr[2] "%(badge_count)d %(badge_level)s медалей"
-#~ msgid "logout"
-#~ msgstr "одјава"
-
-#~ msgid "login"
-#~ msgstr "пријава"
+#~ msgid "user reputation in the community"
+#~ msgstr "кориÑникова карма"
#, fuzzy
-#~ msgid "settings"
-#~ msgstr "реÑетујте ознаке"
+#~ msgid "Please log in to ask questions"
+#~ msgstr ""
+#~ "<span class=\"strong big\">You are welcome to start submitting your "
+#~ "question anonymously</span>. When you submit the post, you will be "
+#~ "redirected to the login/signup page. Your question will be saved in the "
+#~ "current session and will be published after you log in. Login/signup "
+#~ "process is very simple. Login takes about 30 seconds, initial signup "
+#~ "takes a minute or less."
#, fuzzy
+#~ msgid "question content must be > 10 characters"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñадржај питања мора имати > 10 карактера\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñодержание вопроÑа должно быть более 10-ти букв"
+
#~ msgid "(please enter a valid email)"
-#~ msgstr "унеÑите валидну е-пошту"
+#~ msgstr "(пожалуйÑта, введите правильный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)"
-#, fuzzy
#~ msgid "i like this post (click again to cancel)"
-#~ msgstr "Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
+#~ msgstr "мне понравилÑÑ Ñтот поÑÑ‚ (щелкните Ñнова, чтобы отменить)"
-#, fuzzy
#~ msgid "i dont like this post (click again to cancel)"
-#~ msgstr "не Ñвиђа ми Ñе овај одговор (кликните поново да биÑте отказали)"
+#~ msgstr "мне не понравилÑÑ Ñтот поÑÑ‚ (нажмите еще раз Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹)"
#, fuzzy
#~ msgid ""
@@ -5491,106 +8164,226 @@ msgstr ""
#~ " %(counter)s Answers:\n"
#~ " "
#~ msgstr[0] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "\n"
-#~ "(one comment)"
+#~ "(one comment)\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "\n"
+#~ "Один ответ:\n"
+#~ " "
#~ msgstr[1] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "\n"
+#~ "(%(comment_count)s comments)\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "\n"
-#~ "(%(comment_count)s comments)"
+#~ "%(counter)s Ответа:"
+#~ msgstr[2] ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "\n"
+#~ "%(counter)s Ответов:"
+#, fuzzy
#~ msgid "mark this answer as favorite (click again to undo)"
-#~ msgstr "означи овај одговор као омиљени (кликните поново да биÑте отказали)"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "означи овај одговор као омиљени (кликните поново да биÑте отказали)\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "отметить Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ ÐºÐ°Ðº интереÑный (еще раз - чтобы удалить закладку)"
+#, fuzzy
#~ msgid "Question tags"
-#~ msgstr "Ознаке"
-
-#~ msgid "questions"
-#~ msgstr "питања"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ознаке\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Теги вопроÑа"
-#, fuzzy
#~ msgid "search"
-#~ msgstr "претрага/"
+#~ msgstr "поиÑк"
+#, fuzzy
#~ msgid "In:"
-#~ msgstr "Прикажи:"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Прикажи:\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð’:"
#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Сва питања"
-
-#~ msgid "Sort by:"
-#~ msgstr "Сортирај:"
-
#~ msgid "Email (not shared with anyone):"
-#~ msgstr "Е-пошта:"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Е-пошта:\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ÐÐ´Ñ€ÐµÑ Ñлектронной почты (держитÑÑ Ð² Ñекрете):"
#, fuzzy
#~ msgid "Site modes"
-#~ msgstr "наÑлов"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "наÑлов\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Сайт"
+#, fuzzy
#~ msgid "community wiki"
-#~ msgstr "вики"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "вики\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "вики ÑообщеÑтва"
+#, fuzzy
#~ msgid "Location"
-#~ msgstr "Локација"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Локација\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "МеÑтоположение"
+#, fuzzy
#~ msgid "command/"
-#~ msgstr "command/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "command/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "komanda/"
+#, fuzzy
#~ msgid "mark-tag/"
-#~ msgstr "означи-ознаку/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "означи-ознаку/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "pomechayem-temy/"
+#, fuzzy
#~ msgid "interesting/"
-#~ msgstr "занимљиво/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "занимљиво/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "interesnaya/"
+#, fuzzy
#~ msgid "ignored/"
-#~ msgstr "игнориÑано/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "игнориÑано/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "neinteresnaya/"
+#, fuzzy
#~ msgid "unmark-tag/"
-#~ msgstr "unmark-tag/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "unmark-tag/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "otmenyaem-pometku-temy/"
-#, fuzzy
#~ msgid "Askbot"
-#~ msgstr "O нама"
+#~ msgstr "Askbot"
+#, fuzzy
#~ msgid "allow only selected tags"
-#~ msgstr "дозволи Ñамо изабране тагове"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "дозволи Ñамо изабране тагове\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "включить только выбранные Ñ‚Ñги"
+#, fuzzy
#~ msgid "First time here? Check out the <a href=\"%s\">FAQ</a>!"
-#~ msgstr "Први пут Ñте овде? Погледајте <a href=\"%s\">ЧПП</a>!"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Први пут Ñте овде? Погледајте <a href=\"%s\">ЧПП</a>!\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Впервые здеÑÑŒ? ПоÑмотрите наши <a href=\"%s\">чаÑто задаваемые вопроÑÑ‹"
+#~ "(FAQ)</a>!"
+#, fuzzy
#~ msgid "newquestion/"
-#~ msgstr "новопитање/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "новопитање/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "noviy-vopros/"
+#, fuzzy
#~ msgid "newanswer/"
-#~ msgstr "новиодговор/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "новиодговор/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "noviy-otvet/"
-#, fuzzy
#~ msgid "MyOpenid user name"
-#~ msgstr "по кориÑничком имену"
+#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² MyOpenid"
+#, fuzzy
#~ msgid "Email verification subject line"
-#~ msgstr "П&О форум / Верификација е-поште"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "П&О форум / Верификација е-поште\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Тема ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²ÐµÑ€Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ email"
+#, fuzzy
#~ msgid "disciplined"
-#~ msgstr "диÑциплинован"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "диÑциплинован\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "диÑциплина"
+#, fuzzy
#~ msgid "Deleted own post with score of 3 or higher"
-#~ msgstr "ОбриÑао ÑопÑтвени поÑÑ‚ Ñа резултатом од 3 или више"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ОбриÑао ÑопÑтвени поÑÑ‚ Ñа резултатом од 3 или више\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Удалилено Ñвоё Ñообщение Ñ 3-Ð¼Ñ Ð¸Ð»Ð¸ более положительными откликами"
+#, fuzzy
#~ msgid "nice-answer"
-#~ msgstr "кориÑтан-одговор"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "кориÑтан-одговор\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "хороший-ответ"
+#, fuzzy
#~ msgid "nice-question"
-#~ msgstr "добро-питање"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "добро-питање\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "хороший-вопоÑ"
+#, fuzzy
#~ msgid "cleanup"
-#~ msgstr "чишћење"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "чишћење\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "уборщик"
+#, fuzzy
#~ msgid "critic"
-#~ msgstr "критичар"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "критичар\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "критик"
+#, fuzzy
#~ msgid "editor"
-#~ msgstr "уредник"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "уредник\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "редактор"
#~ msgid "scholar"
#~ msgstr "ученик"
@@ -5598,30 +8391,64 @@ msgstr ""
#~ msgid "student"
#~ msgstr "Ñтудент"
+#, fuzzy
#~ msgid "teacher"
-#~ msgstr "наÑтавник"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "наÑтавник\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "учитель"
+#, fuzzy
#~ msgid "autobiographer"
-#~ msgstr "аутобиограф"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "аутобиограф\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "автобиограф"
+#, fuzzy
#~ msgid "self-learner"
-#~ msgstr "Ñамоук"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñамоук\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñамоучка"
+#, fuzzy
#~ msgid "great-answer"
-#~ msgstr "Ñавршен-одговор"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñавршен-одговор\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "замечательный-ответ"
+#, fuzzy
#~ msgid "great-question"
-#~ msgstr "добро-питање"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "добро-питање\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "замечательный-вопроÑ"
+#, fuzzy
#~ msgid "good-answer"
-#~ msgstr "добар-одговор"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "добар-одговор\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "очень-хороший-ответ"
-#, fuzzy
#~ msgid "expert"
-#~ msgstr "текÑÑ‚"
+#~ msgstr "ÑкÑперт"
+#, fuzzy
#~ msgid "About"
-#~ msgstr "O нама"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "O нама\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "О наÑ"
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
@@ -5634,10 +8461,12 @@ msgstr ""
#~ "<br>You can submit your question now and validate email after that. Your "
#~ "question will saved as pending meanwhile. "
+#, fuzzy
#~ msgid ""
#~ "how to validate email info with %(send_email_key_url)s %(gravatar_faq_url)"
#~ "s"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<form style='margin:0;padding:0;' action='%(send_email_key_url)"
#~ "s'><p><span class=\"bigger strong\">How?</span> If you have just set or "
#~ "changed your email address - <strong>check your email and click the "
@@ -5650,21 +8479,33 @@ msgstr ""
#~ "posts.<br>With email you can <strong>subscribe for updates</strong> on "
#~ "the most interesting questions. Also, when you sign up for the first time "
#~ "- create a unique <a href='%(gravatar_faq_url)s'><strong>gravatar</"
-#~ "strong></a> personal image.</p>"
+#~ "strong></a> personal image.</p>\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "как проверить Ñлектронную почту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(send_email_key_url)s "
+#~ "%(gravatar_faq_url)s"
+#, fuzzy
#~ msgid ""
#~ "As a registered user you can login with your OpenID, log out of the site "
#~ "or permanently remove your account."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Clicking <strong>Logout</strong> will log you out from the forumbut will "
#~ "not sign you off from your OpenID provider.</p><p>If you wish to sign off "
#~ "completely - please make sure to log out from your OpenID provider as "
-#~ "well."
+#~ "well.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Как зарегиÑтрированный пользователь Ð’Ñ‹ можете Войти Ñ OpenID, выйти из "
+#~ "Ñайта или удалить Ñвой аккаунт."
+#, fuzzy
#~ msgid "Logout now"
-#~ msgstr "Одјава"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Одјава\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Выйти ÑейчаÑ"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " %(q_num)s question\n"
@@ -5675,42 +8516,50 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question</p>"
+#~ "%(q_num)s ответ:"
#~ msgstr[1] ""
#~ "\n"
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>questions<p>"
-
-#~ msgid "tagged"
-#~ msgstr "означено"
+#~ "%(q_num)s ответа:"
+#~ msgstr[2] ""
+#~ "\n"
+#~ "%(q_num)s ответов:"
+#, fuzzy
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
-#~ msgstr "уклоните '%(tag_name)s' Ñа лиÑте занимљивих ознака"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "уклоните '%(tag_name)s' Ñа лиÑте занимљивих ознака\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "удалить '%(tag_name)s' из ÑпиÑка интереÑных тегов"
+#, fuzzy
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
-#~ msgstr "уклоните '%(tag_name)s' Ñа лиÑте игнориÑаних ознака"
-
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "Ñакрите игнориÑана питања"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "уклоните '%(tag_name)s' Ñа лиÑте игнориÑаних ознака\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "удалить '%(tag_name)s' из ÑпиÑка игнорируемых тегов"
+#, fuzzy
#~ msgid "favorites"
-#~ msgstr "омиљена"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "омиљена\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "закладки"
-#, fuzzy
#~ msgid "this questions was selected as favorite %(cnt)s time"
#~ msgid_plural "this questions was selected as favorite %(cnt)s times"
-#~ msgstr[0] "овај одговор је изабран као иÑправан"
-#~ msgstr[1] "овај одговор је изабран као иÑправан"
-#~ msgstr[2] "овај одговор је изабран као иÑправан"
+#~ msgstr[0] "Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» добавлен в закладки %(cnt)s раз"
+#~ msgstr[1] "Ñти вопроÑÑ‹ были добавлены в закладки %(cnt)s раз"
+#~ msgstr[2] "Ñти вопроÑÑ‹ были добавлены в закладки %(cnt)s раз"
-#, fuzzy
#~ msgid "thumb-up on"
-#~ msgstr "палац-горе да"
+#~ msgstr "Ñ \"за\""
-#, fuzzy
#~ msgid "thumb-up off"
-#~ msgstr "палац-горе не"
+#~ msgstr "Ñ \"против\""
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " vote\n"
@@ -5721,14 +8570,15 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "глаÑ\n"
-#~ " "
+#~ "голоÑ\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "глаÑова"
+#~ "голоÑа"
#~ msgstr[2] ""
+#~ "\n"
+#~ "голоÑов"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " answer \n"
@@ -5739,14 +8589,15 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "одговор\n"
-#~ " "
+#~ "ответ\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "одговора"
+#~ "ответа"
#~ msgstr[2] ""
+#~ "\n"
+#~ "ответов"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " view\n"
@@ -5757,13 +8608,15 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "pregled"
+#~ "проÑмотр\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "pregleda"
+#~ "проÑмотра"
#~ msgstr[2] ""
+#~ "\n"
+#~ "проÑмотров"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " vote\n"
@@ -5774,14 +8627,15 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "глаÑ\n"
-#~ " "
+#~ "голоÑ\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "глаÑова"
+#~ "голоÑа"
#~ msgstr[2] ""
+#~ "\n"
+#~ "голоÑов"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " answer \n"
@@ -5792,14 +8646,15 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "одговор\n"
-#~ " "
+#~ "ответ\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "одговора"
+#~ "ответа"
#~ msgstr[2] ""
+#~ "\n"
+#~ "ответов"
-#, fuzzy
#~ msgid ""
#~ "\n"
#~ " view\n"
@@ -5810,150 +8665,323 @@ msgstr ""
#~ " "
#~ msgstr[0] ""
#~ "\n"
-#~ "pregled"
+#~ "проÑмотр\n"
+#~ " "
#~ msgstr[1] ""
#~ "\n"
-#~ "pregleda"
+#~ "проÑмотра"
#~ msgstr[2] ""
+#~ "\n"
+#~ "проÑмотров"
+#, fuzzy
#~ msgid "reputation points"
-#~ msgstr "карма"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "карма\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "очки кармы"
-#, fuzzy
#~ msgid "badges: "
-#~ msgstr "беџеви"
+#~ msgstr "значки"
-#, fuzzy
#~ msgid "Bad request"
-#~ msgstr "у Ñуштини није питање"
+#~ msgstr "неверный запроÑ"
+#, fuzzy
#~ msgid "comments/"
-#~ msgstr "коментари/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "коментари/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "комментарии/"
+#, fuzzy
#~ msgid "delete/"
-#~ msgstr "избриши/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "избриши/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "удалить/"
+#, fuzzy
#~ msgid "Account with this name already exists on the forum"
-#~ msgstr "Ðалог Ñа овим именом већ поÑтоји на форуму"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðалог Ñа овим именом већ поÑтоји на форуму\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "аккаунт Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует на форуме"
+#, fuzzy
#~ msgid "can't have two logins to the same account yet, sorry."
-#~ msgstr "не можете имати два начина пријаве за иÑти налог."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "не можете имати два начина пријаве за иÑти налог.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "извините, но пока Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ в аккаунт больше чем одним методом"
+#, fuzzy
#~ msgid "Please enter valid username and password (both are case-sensitive)."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете валидно кориÑничко име и шифру (оба поља Ñу "
-#~ "оÑетљива на мала и велика Ñлова)."
+#~ "оÑетљива на мала и велика Ñлова).\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ПожалуйÑта введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль (Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра букв)"
+#, fuzzy
#~ msgid "This account is inactive."
-#~ msgstr "Овај налог је неактиван."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Овај налог је неактиван.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Этот аккаунт деактивирован"
+#, fuzzy
#~ msgid ""
#~ "Please enter a valid username and password. Note that "
#~ "both fields are case-sensitive."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете важеће кориÑничко име и шифру. Имајте на уму да Ñу "
-#~ "оба поља оÑетљива на мала и велика Ñлова."
+#~ "оба поља оÑетљива на мала и велика Ñлова.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ПожалуйÑта введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль (обратите внимание - региÑÑ‚Ñ€ "
+#~ "букв важен Ð´Ð»Ñ Ð¾Ð±Ð¾Ð¸Ñ… параметров)"
-#, fuzzy
#~ msgid "sendpw/"
-#~ msgstr "sendpassword/"
+#~ msgstr "поÑлать-пароль/"
+#, fuzzy
#~ msgid "password/"
-#~ msgstr "шифра/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "шифра/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "пароль/"
+#, fuzzy
#~ msgid "confirm/"
-#~ msgstr "потврди/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "потврди/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "подтвердить/"
+#, fuzzy
#~ msgid "validate/"
-#~ msgstr "validate/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "validate/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "проверить/"
+#, fuzzy
#~ msgid "change/"
-#~ msgstr "change/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "change/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "заменить/"
+#, fuzzy
#~ msgid "sendkey/"
-#~ msgstr "sendkey/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "sendkey/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "поÑлать-ключ/"
-#, fuzzy
#~ msgid "verify/"
-#~ msgstr "провери/"
+#~ msgstr "проверить-ключ/"
#~ msgid "openid/"
#~ msgstr "openid/"
+#, fuzzy
#~ msgid "external-login/forgot-password/"
-#~ msgstr "екÑтерна-пријава/заборављена-шифра/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "екÑтерна-пријава/заборављена-шифра/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "вход-Ñ-партнерÑкого-Ñайта/напомпнить-пароль/"
+#, fuzzy
#~ msgid "external-login/signup/"
-#~ msgstr "external-login/signup/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "external-login/signup/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "вход-Ñ-партнерÑкого-Ñайта/Ñоздать-аккаунт/"
+#, fuzzy
#~ msgid "Password changed."
-#~ msgstr "Шифра је промењена."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Шифра је промењена.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Пароль изменен."
+#, fuzzy
#~ msgid "your email was not changed"
-#~ msgstr "Ваша е-пошта није промењена"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваша е-пошта није промењена\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной почты не изменён"
+#, fuzzy
#~ msgid "No OpenID %s found associated in our database"
-#~ msgstr "Унети OpenID %s, није пронађен у нашој бази."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Унети OpenID %s, није пронађен у нашој бази.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "в нашей базе данных нет OpenID %s"
+#, fuzzy
#~ msgid "The OpenID %s isn't associated to current user logged in"
-#~ msgstr "%s OpenID није повезан Ñа тренутно пријављеним кориÑником."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "%s OpenID није повезан Ñа тренутно пријављеним кориÑником.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "OpenID %s не принадлежит данному пользователю"
+#, fuzzy
#~ msgid "This OpenID is already associated with another account."
-#~ msgstr "Овај OpenID је већ повезан Ñа другим налогом."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Овај OpenID је већ повезан Ñа другим налогом.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Данный OpenID уже иÑпользуетÑÑ Ð² другом аккаунте."
+#, fuzzy
#~ msgid "OpenID %s is now associated with your account."
-#~ msgstr "OpenID %s је Ñада повезан Ñа Вашим налогом."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "OpenID %s је Ñада повезан Ñа Вашим налогом.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваш аккаунт теперь Ñоединен Ñ OpenID %s"
+#, fuzzy
#~ msgid "Request for new password"
-#~ msgstr "Захтев за нову шифру"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Захтев за нову шифру\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "[форум]: замена паролÑ"
+#, fuzzy
#~ msgid ""
#~ "A new password and the activation link were sent to your email address."
-#~ msgstr "Ðова шифра и активациони линк поÑлати Ñу на вашу адреÑу."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðова шифра и активациони линк поÑлати Ñу на вашу адреÑу.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðовый пароль и ÑÑылка Ð´Ð»Ñ ÐµÐ³Ð¾ активации были выÑланы по Вашему адреÑу "
+#~ "Ñлектронной почты."
+#, fuzzy
#~ msgid ""
#~ "Could not change password. Confirmation key '%s' is not "
#~ "registered."
-#~ msgstr "Шифра није промењена. Потврдни кључ ' %s' није региÑтрован."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Шифра није промењена. Потврдни кључ ' %s' није региÑтрован.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Пароль не был изменён, т.к. ключ '%s' в нашей базе данных не найден."
+#, fuzzy
#~ msgid ""
#~ "Can not change password. User don't exist anymore in our "
#~ "database."
-#~ msgstr "Шифра није промењена. КориÑник више не поÑтоје у нашој бази."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Шифра није промењена. КориÑник више не поÑтоје у нашој бази.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Пароль изменить невозможно, Ñ‚.к. аккаунт Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ñ‹Ð» удален."
+#, fuzzy
#~ msgid "Password changed for %s. You may now sign in."
-#~ msgstr "Шифра за %s је промењена. Сада можете да Ñе пријавите."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Шифра за %s је промењена. Сада можете да Ñе пријавите.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Пароль Ð´Ð»Ñ %s изменен. Теперь вы можете Ñ Ð½Ð¸Ð¼ войти в Ñайт."
+#, fuzzy
#~ msgid "Your question and all of it's answers have been deleted"
-#~ msgstr "Ваше питање и Ñви одговори на њега Ñу избриÑани"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваше питање и Ñви одговори на њега Ñу избриÑани\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ вÑе оветы на него были удалены"
+#, fuzzy
#~ msgid "Your question has been deleted"
-#~ msgstr "Ваше питање је избриÑано"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваше питање је избриÑано\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» удалён"
+#, fuzzy
#~ msgid "The question and all of it's answers have been deleted"
-#~ msgstr "Питање и Ñви одговори на њега Ñу избриÑани"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Питање и Ñви одговори на њега Ñу избриÑани\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ вÑе оветы на него были удалены"
+#, fuzzy
#~ msgid "The question has been deleted"
-#~ msgstr "Питање је избриÑано"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Питање је избриÑано\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» удалён"
+#, fuzzy
#~ msgid "question"
-#~ msgstr "питање"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "питање\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "вопроÑ"
+#, fuzzy
#~ msgid "unanswered/"
-#~ msgstr "неодговорени/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "неодговорени/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "неотвеченные/"
-#, fuzzy
#~ msgid "nimda/"
-#~ msgstr "openid/"
+#~ msgstr "админиÑтрациÑ/"
+#, fuzzy
#~ msgid "email update message subject"
-#~ msgstr "новоÑти од П&О форума"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "новоÑти од П&О форума\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "новоÑти Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°"
+#, fuzzy
#~ msgid "Change email "
-#~ msgstr "Промени е-пошту"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Промени е-пошту\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Изменить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
+#, fuzzy
#~ msgid "books"
-#~ msgstr "књиге"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "књиге\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "книги"
#, fuzzy
#~ msgid "%(rev_count)s revision"
@@ -5962,49 +8990,89 @@ msgstr ""
#~ msgstr[1] "изаберите ревизију"
#~ msgstr[2] "изаберите ревизију"
+#, fuzzy
#~ msgid "general message about privacy"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Respecting users privacy is an important core principle of this Q&amp;A "
#~ "forum. Information on this page details how this forum protects your "
-#~ "privacy, and what type of information is collected."
+#~ "privacy, and what type of information is collected.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "общее мнение о конфиденциальноÑти"
+#, fuzzy
#~ msgid "what technical information is collected about visitors"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Information on question views, revisions of questions and answers - both "
#~ "times and content are recorded for each user in order to correctly count "
-#~ "number of views, maintain data integrity and report relevant updates."
+#~ "number of views, maintain data integrity and report relevant updates.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ÐºÐ°ÐºÐ°Ñ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑобираетÑÑ Ð¾ поÑетителÑÑ…"
+#, fuzzy
#~ msgid "details on personal information policies"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "Members of this community may choose to display personally identifiable "
#~ "information in their profiles. Forum will never display such information "
-#~ "without a request from the user."
+#~ "without a request from the user.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ личной информационной политики"
+#, fuzzy
#~ msgid "details on sharing data with third parties"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "None of the data that is not openly shown on the forum by the choice of "
-#~ "the user is shared with any third party."
+#~ "the user is shared with any third party.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± обмене данными Ñ Ñ‚Ñ€ÐµÑ‚ÑŒÐ¸Ð¼Ð¸ Ñторонами"
+#, fuzzy
#~ msgid "how privacy policies can be changed"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "These policies may be adjusted to improve protection of user's privacy. "
#~ "Whenever such changes occur, users will be notified via the internal "
-#~ "messaging system. "
+#~ "messaging system. \n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "как политики конфиденциальноÑти могут быть изменены"
+#, fuzzy
#~ msgid "Found by tags"
-#~ msgstr "Tagged questions"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Tagged questions\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðайдено по тегам"
+#, fuzzy
#~ msgid "Search results"
-#~ msgstr "Резултати претраге"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Резултати претраге\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Результаты поиÑка"
#~ msgid "click to see coldest questions"
#~ msgstr "questions with fewest answers"
+#, fuzzy
#~ msgid "more answers"
-#~ msgstr "Ñа више одговора"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ñа више одговора\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "кол-ву ответов"
+#, fuzzy
#~ msgid "popular"
-#~ msgstr "популарна"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "популарна\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "популÑрные"
#, fuzzy
#~ msgid " %(q_num)s question found"
@@ -6013,63 +9081,116 @@ msgstr ""
#~ msgstr[1] "%(q_num)s питања"
#~ msgstr[2] ""
+#, fuzzy
#~ msgid ""
#~ "This is where you can change your password. Make sure you remember it!"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<span class='strong'>To change your password</span> please fill out and "
-#~ "submit this form"
+#~ "submit this form\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ЗдеÑÑŒ вы можете изменить Ñвой пароль. УбедитеÑÑŒ, что вы помните его!"
+#, fuzzy
#~ msgid "Connect your OpenID with this site"
-#~ msgstr "New user signup"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "New user signup\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Подключите ваш OpenID Ñ Ñтого Ñайта"
+#, fuzzy
#~ msgid "password"
-#~ msgstr "шифра"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "шифра\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "пароль"
+#, fuzzy
#~ msgid "Account: delete account"
-#~ msgstr "Ðалог: избришите налог"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðалог: избришите налог\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ: удалить учетную запиÑÑŒ"
+#, fuzzy
#~ msgid "I am sure I want to delete my account."
-#~ msgstr "Сигуран Ñам да желим да избришем мој налог."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Сигуран Ñам да желим да избришем мој налог.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Я уверен, что хочу удалить Ñвой аккаунт."
+#, fuzzy
#~ msgid "(required for your security)"
-#~ msgstr "(потребно за вашу ÑигурноÑÑ‚)"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "(потребно за вашу ÑигурноÑÑ‚)\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "(необходимо Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ безопаÑноÑти)"
+#, fuzzy
#~ msgid "Delete account permanently"
-#~ msgstr "Избришите трајно Ваш налог"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Избришите трајно Ваш налог\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Удалить аккаунт навÑегда"
#~ msgid "Send new password"
#~ msgstr "Recover password"
+#, fuzzy
#~ msgid "password recovery information"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<span class='big strong'>Forgot you password? No problems - just get a "
#~ "new one!</span><br/>Please follow the following steps:<br/>&bull; submit "
#~ "your user name below and check your email<br/>&bull; <strong>follow the "
#~ "activation link</strong> for the new password - sent to you by email and "
#~ "login with the suggested password<br/>&bull; at this you might want to "
-#~ "change your password to something you can remember better"
+#~ "change your password to something you can remember better\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ"
+#, fuzzy
#~ msgid "Reset password"
-#~ msgstr "Send me a new password"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Send me a new password\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ"
+#, fuzzy
#~ msgid ""
#~ "email explanation how to use new %(password)s for %(username)s\n"
#~ "with the %(key_link)s"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "To change your password, please follow these steps:\n"
#~ "* visit this link: %(key_link)s\n"
#~ "* login with user name %(username)s and password %(password)s\n"
#~ "* go to your user profile and set the password to something you can "
-#~ "remember"
+#~ "remember\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "email-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ð¾ иÑпользованию новых %(username)s / %(password)s\n"
+#~ "Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %(key_link)s"
+#, fuzzy
#~ msgid "Click to sign in through any of these services."
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<p><span class=\"big strong\">Please select your favorite login method "
#~ "below.</span></p><p><font color=\"gray\">External login services use <a "
#~ "href=\"http://openid.net\"><b>OpenID</b></a> technology, where your "
#~ "password always stays confidential between you and your login provider "
-#~ "and you don't have to remember another one.</font></p>"
+#~ "and you don't have to remember another one.</font></p>\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Ðажмите на изображение иÑпользуемого при региÑтрации ÑервиÑа"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# msgid "Click to sign in through any of these services."
# msgstr ""
# "<p><span class=\"big strong\">Please select your favorite login method
@@ -6081,38 +9202,66 @@ msgstr ""
# "have to remember another one. "
# "Askbot option requires your login name and "
# "password entered here.</font></p>"
+#, fuzzy
#~ msgid "Enter your <span id=\"enter_your_what\">Provider user name</span>"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<span class=\"big strong\">Enter your </span><span id=\"enter_your_what\" "
#~ "class='big strong'>Provider user name</span><br/><span class='grey'>(or "
-#~ "select another login method above)</span>"
+#~ "select another login method above)</span>\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Введите <span id=\"enter_your_what\">Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð°</span>"
+#, fuzzy
#~ msgid ""
#~ "Enter your <a class=\"openid_logo\" href=\"http://openid.net\">OpenID</a> "
#~ "web address"
#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#~ "<span class=\"big strong\">Enter your <a class=\"openid_logo\" href="
#~ "\"http://openid.net\">OpenID</a> web address</span><br/><span "
-#~ "class='grey'>(or choose another login method above)</span>"
+#~ "class='grey'>(or choose another login method above)</span>\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Введите Ñвой <a class=\"openid_logo\" href=\"http://openid.net\">OpenID</"
+#~ "a> веб-адреÑ"
+#, fuzzy
#~ msgid "Email Validation"
-#~ msgstr "Валидација е-поште"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Валидација е-поште\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Проверка Email"
+#, fuzzy
#~ msgid "Thank you, your email is now validated."
-#~ msgstr "Хвала вам, Ваша е-пошта је Ñада потврђена."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Хвала вам, Ваша е-пошта је Ñада потврђена.\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "СпаÑибо, Ваш email в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑетÑÑ."
+#, fuzzy
#~ msgid "Welcome back %s, you are now logged in"
-#~ msgstr "Добродошли назад %s, Ñада Ñте пријављени"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "Добродошли назад %s, Ñада Ñте пријављени\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "С возвращением, %s, вы вошли в ÑиÑтему"
+#, fuzzy
#~ msgid "books/"
-#~ msgstr "књиге/"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "књиге/\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "books/"
-#, fuzzy
#~ msgid " One question found"
#~ msgid_plural "%(q_num)s questions found"
-#~ msgstr[0] "Једно пронађено питање"
-#~ msgstr[1] "%(q_num)s пронађених питања"
-#~ msgstr[2] ""
+#~ msgstr[0] "Ðайден один Ð²Ð¾Ð¿Ñ€Ð¾Ñ "
+#~ msgstr[1] "Ðайдено %(q_num)s вопроÑа"
+#~ msgstr[2] "Ðайдено %(q_num)s вопроÑов"
#~ msgid "welcome to website"
#~ msgstr "Welcome to Q&amp;A forum"
@@ -6184,3 +9333,567 @@ msgstr ""
#~ msgstr[1] ""
#~ "<div class=\"questions-count\">%(q_num)s</div><p>questions without an "
#~ "accepted answer</p>"
+
+#~ msgid "Question: \"%(title)s\""
+#~ msgstr "ВопроÑ: \"%(title)s\""
+
+#~ msgid ""
+#~ "The question has been closed for the following reason \"%(close_reason)s"
+#~ "\" by"
+#~ msgstr ""
+#~ "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ñ‹Ð» закрыт по Ñледующим причинам \"%(close_reason)s\", автор:"
+
+#~ msgid "Stats:"
+#~ msgstr "СтатиÑтика"
+
+#~ msgid "rss feed"
+#~ msgstr "RSS-канал"
+
+#, fuzzy
+#~ msgid "Please star (bookmark) some questions or follow some users."
+#~ msgstr ""
+#~ "Ðачните добавлÑÑ‚ÑŒ в (закладки) некоторые вопроÑÑ‹, когда вы поÑещаете их"
+
+#, fuzzy
+#~ msgid "followed"
+#~ msgstr "Убрать закладку"
+
+#~ msgid "Keys to connect the site with external services like Facebook, etc."
+#~ msgstr "Ключи Ð´Ð»Ñ ÑвÑзи Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼Ð¸ ÑервиÑами, такими как Facebook, и Ñ‚.д."
+
+#~ msgid "Minimum reputation required to perform actions"
+#~ msgstr "Ð¢Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ ÐºÐ°Ñ€Ð¼Ñ‹ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹Ñтвий"
+
+#~ msgid "Q&A forum website parameters and urls"
+#~ msgstr "ОÑновные параметры и ÑÑылки форума"
+
+#~ msgid "Skin and User Interface settings"
+#~ msgstr "ÐаÑтройки интерфейÑа и отображениÑ"
+
+#~ msgid "Limits applicable to votes and moderation flags"
+#~ msgstr "ÐаÑтройки, применÑемые Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ отметок модерации"
+
+#~ msgid "Setting groups"
+#~ msgstr "ÐаÑтройки групп"
+
+#~ msgid ""
+#~ "This option currently defines default frequency of emailed updates in the "
+#~ "following five categories: questions asked by user, answered by user, "
+#~ "individually selected, entire forum (per person tag filter applies) and "
+#~ "posts mentioning the user and comment responses"
+#~ msgstr ""
+#~ "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñет чаÑтоту раÑÑылки Ñообщений по умолчанию в "
+#~ "категориÑÑ…: вопроÑÑ‹ заданные пользователем, отвеченные пользователем, "
+#~ "выбранные отдельно, вÑе вопроÑÑ‹ (отфильтрованные по темам) и ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+#~ "которые упоминают Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, а также комментарии."
+
+#~ msgid ""
+#~ "If you change this url from the default - then you will also probably "
+#~ "want to adjust translation of the following string: "
+#~ msgstr ""
+#~ "ЕÑли Ð’Ñ‹ измените Ñту ÑÑылку, то вероÑтно Вам придетÑÑ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ перевод "
+#~ "Ñледующей Ñтроки:"
+
+#~ msgid "Login name"
+#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#~ msgid "Enter new password"
+#~ msgstr "Введите новый пароль"
+
+#~ msgid "... or enter by clicking one of the buttons below"
+#~ msgstr "... или войдите, нажав одну из кнопок ниже"
+
+#, fuzzy
+#~ msgid "return to login page"
+#~ msgstr "вернутьÑÑ Ðº Ñтранице входа"
+
+#, fuzzy
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ "\t\t\t\t\t\t\tsee %(email_validation_faq_url)s\n"
+#~ "\t\t\t\t\t\t\t"
+#~ msgstr ""
+#~ "<span class=\"big strong\">Похоже на то что Ð°Ð´Ñ€ÐµÑ Ð’Ð°ÑˆÐµÐ¹ Ñлектронной "
+#~ "почты, %(email)s еще не был проверен.</span> Чтобы публиковать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ "
+#~ "на форуме Ñначала пожалуйÑта продемонÑтрируйте что Ваша ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° "
+#~ "работает, Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± етом <a href="
+#~ "\"%(email_validation_faq_url)s\">здеÑÑŒ</a>.<br/> Ваш Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ "
+#~ "опубликован Ñразу поÑле того как ваш Ð°Ð´Ñ€ÐµÑ Ð±ÑƒÐ´ÐµÑ‚ проверен, а до тех пор "
+#~ "Ð²Ð¾Ð¿Ð¾Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñохранён в базе данных."
+
+#, fuzzy
+#~ msgid "click here to see old astsup forum"
+#~ msgstr "нажмите, чтобы поÑмотреть непопулÑрные вопроÑÑ‹"
+
+#~ msgid ""
+#~ "Increment this number when you change image in skin media or stylesheet. "
+#~ "This helps avoid showing your users outdated images from their browser "
+#~ "cache."
+#~ msgstr ""
+#~ "Увеличьте Ñто чиÑло когда изменÑете медиа-файлы или css. Это позволÑет "
+#~ "избежать ошибки Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐµÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñтарых данных у пользователей."
+
+#~ msgid "Unknown error."
+#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°."
+
+#~ msgid "ReCAPTCHA is wrongly configured."
+#~ msgstr "Recaptcha неправильно наÑтроен."
+
+#~ msgid "Bad reCAPTCHA challenge parameter."
+#~ msgstr "Ðеправильный ввод параметра reCAPTCHA. "
+
+#~ msgid "The CAPTCHA solution was incorrect."
+#~ msgstr "Решение CAPTCHA было неправильным."
+
+#~ msgid "Bad reCAPTCHA verification parameters."
+#~ msgstr "Ðеверные параметры верификации reCAPTCHA. "
+
+#~ msgid "Provided reCAPTCHA API keys are not valid for this domain."
+#~ msgstr "ПредоÑтавленные Recaptcha API ключи не подходÑÑ‚ Ð´Ð»Ñ Ñтого домена."
+
+#~ msgid "ReCAPTCHA could not be reached."
+#~ msgstr "ReCAPTCHA недоÑтупен. "
+
+#~ msgid "Invalid request"
+#~ msgstr "Ðеправильный запроÑ"
+
+#~ msgid "Sender is"
+#~ msgstr "Отправитель"
+
+#~ msgid "anonymous"
+#~ msgstr "анонимный"
+
+#~ msgid "Message body:"
+#~ msgstr "ТекÑÑ‚ ÑообщениÑ:"
+
+#~ msgid "mark this question as favorite (click again to cancel)"
+#~ msgstr "добавить в закладки (чтобы отменить - отметьте еще раз)"
+
+#~ msgid ""
+#~ "remove favorite mark from this question (click again to restore mark)"
+#~ msgstr "удалить из закладок (еще раз - чтобы воÑÑтановить)"
+
+#~ msgid "Share this question on facebook"
+#~ msgstr "ПоделитьÑÑ Ð²Ð¾Ð¿Ñ€Ð¾Ñом на Facebook"
+
+#~ msgid ""
+#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
+#~ "span>'"
+#~ msgstr ""
+#~ "Ð’Ñе теги, ÑоответÑтвующие <strong><span class=\"darkred\"> '%(stag)s'</"
+#~ "span></strong> "
+
+#~ msgid "search/"
+#~ msgstr "poisk/"
+
+#~ msgid "less answers"
+#~ msgstr "меньше ответов"
+
+#~ msgid "unpopular"
+#~ msgstr "непопулÑрный"
+
+#~ msgid "how to validate email title"
+#~ msgstr "как проверить заголовок Ñлектронного ÑообщениÑ"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "see questions tagged '%(tag_name)s'"
+#~ msgstr "Ñм. вопроÑÑ‹ Ñ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ '%(tag_name)s'"
+
+#~ msgid ""
+#~ "see other questions with %(view_user)s's contributions tagged '%(tag_name)"
+#~ "s' "
+#~ msgstr ""
+#~ "Ñм. другие вопроÑÑ‹, в которых еÑÑ‚ÑŒ вклад от %(view_user)s, отмеченные "
+#~ "тегом '%(tag_name)s'"
+
+#~ msgid "home"
+#~ msgstr "ГлавнаÑ"
+
+#~ msgid "Please prove that you are a Human Being"
+#~ msgstr "Подтвердите что вы человек"
+
+#~ msgid "I am a Human Being"
+#~ msgstr "Я - Человек!"
+
+#~ msgid "Please decide if you like this question or not by voting"
+#~ msgstr ""
+#~ "ПожалуйÑта, решите, еÑли вам нравитÑÑ Ñтот Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸Ð»Ð¸ нет путем "
+#~ "голоÑованиÑ"
+
+#~ msgid "this answer has been accepted to be correct"
+#~ msgstr "ответ был принÑÑ‚ как правильный"
+
+#~ msgid "views"
+#~ msgstr "проÑмотров"
+
+#~ msgid "peer-pressure"
+#~ msgstr "давление-ÑообщеÑтва"
+
+#~ msgid "Deleted own post with score of -3 or lower"
+#~ msgstr "Удалилено Ñвоё Ñообщение Ñ 3-Ð¼Ñ Ð¸Ð»Ð¸ более негативными откликами"
+
+#~ msgid "Nice answer"
+#~ msgstr "Хороший ответ"
+
+#~ msgid "Answer voted up 10 times"
+#~ msgstr "Ответ получил 10 положительных откликов"
+
+#~ msgid "Question voted up 10 times"
+#~ msgstr "Ð’Ð¾Ð¿Ñ€Ð¾Ñ Ñ 10-ÑŽ или более положительными откликами"
+
+#~ msgid "pundit"
+#~ msgstr "знаток"
+
+#~ msgid "popular-question"
+#~ msgstr "популÑрный-вопроÑ"
+
+#~ msgid "Asked a question with 1,000 views"
+#~ msgstr "Задан Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ñ Ð±Ð¾Ð»ÐµÐµ 1,000 проÑмотров"
+
+#~ msgid "Citizen patrol"
+#~ msgstr "ГражданÑкий Дозор"
+
+#~ msgid "citizen-patrol"
+#~ msgstr "гражданÑкий-дозор"
+
+#~ msgid "First down vote"
+#~ msgstr "Первый негативный отклик"
+
+#~ msgid "organizer"
+#~ msgstr "организатор"
+
+#~ msgid "supporter"
+#~ msgstr "фанат"
+
+#~ msgid "First up vote"
+#~ msgstr "Первый положительный Ð³Ð¾Ð»Ð¾Ñ "
+
+#~ msgid "Answered first question with at least one up vote"
+#~ msgstr "Дал первый ответ и получил один или более положительный голоÑ"
+
+#~ msgid "Answered your own question with at least 3 up votes"
+#~ msgstr ""
+#~ "Дал ответ на ÑобÑтвенный Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ получил 3 или более положительных "
+#~ "голоÑов"
+
+#~ msgid "Answer voted up 100 times"
+#~ msgstr "Дан ответ, получивший 100 положительных откликов"
+
+#~ msgid "Question voted up 100 times"
+#~ msgstr "Задан вопроÑ, получивший 100 положительных откликов"
+
+#~ msgid "stellar-question"
+#~ msgstr "гениальный-вопроÑ"
+
+#~ msgid "Question favorited by 100 users"
+#~ msgstr "Задан вопроÑ, отмеченный закладкой более чем 100 пользователÑми"
+
+#~ msgid "Famous question"
+#~ msgstr "Знаменитый ВопроÑ"
+
+#~ msgid "famous-question"
+#~ msgstr "знаменитый-вопроÑ"
+
+#~ msgid "Asked a question with 10,000 views"
+#~ msgstr "Задан Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð½Ð°Ð±Ñ€Ð°Ð²ÑˆÐ¸Ð¹ более 10 000 проÑмотров"
+
+#~ msgid "Alpha"
+#~ msgstr "Ðльфа ТеÑтер"
+
+#~ msgid "alpha"
+#~ msgstr "альфа-теÑтер"
+
+#~ msgid "Actively participated in the private alpha"
+#~ msgstr "За учаÑтие в альфа теÑтировании"
+
+#~ msgid "Answer voted up 25 times"
+#~ msgstr "Дан ответ, получивший 25 положительных откликов"
+
+#~ msgid "good-question"
+#~ msgstr "очень-хороший-вопроÑ"
+
+#~ msgid "Question voted up 25 times"
+#~ msgstr "ВопроÑ, получивший 25 положительных откликов"
+
+#~ msgid "favorite-question"
+#~ msgstr "интереÑный-вопроÑ"
+
+#~ msgid "Question favorited by 25 users"
+#~ msgstr "ВопроÑ, 25 раз добавленный в закладки"
+
+#~ msgid "Civic duty"
+#~ msgstr "ОбщеÑтвенный Долг"
+
+#~ msgid "civic-duty"
+#~ msgstr "общеÑтвенный долг"
+
+#~ msgid "Voted 300 times"
+#~ msgstr "Ðабрано 300 голоÑов"
+
+#~ msgid "Strunk & White"
+#~ msgstr "Главный Редактор"
+
+#~ msgid "strunk-and-white"
+#~ msgstr "маÑтер-ÑтараниÑ"
+
+#~ msgid "Edited 100 entries"
+#~ msgstr "Отредактировано 100 запиÑей"
+
+#~ msgid "Generalist"
+#~ msgstr "Эрудит"
+
+#~ msgid "generalist"
+#~ msgstr "Ñрудит"
+
+#~ msgid "Active in many different tags"
+#~ msgstr "ÐктивноÑÑ‚ÑŒ в различных тегах"
+
+#~ msgid "Yearling"
+#~ msgstr "Годовщина"
+
+#~ msgid "yearling"
+#~ msgstr "годовщина"
+
+#~ msgid "Active member for a year"
+#~ msgstr "Ðктивный пользователь в течение года"
+
+#~ msgid "notable-question"
+#~ msgstr "выдающийÑÑ-вопроÑ"
+
+#~ msgid "Asked a question with 2,500 views"
+#~ msgstr "Задаваемые вопроÑÑ‹ Ñ 2500 проÑмотров"
+
+#~ msgid "enlightened"
+#~ msgstr "проÑвещенный"
+
+#~ msgid "First answer was accepted with at least 10 up votes"
+#~ msgstr ""
+#~ "Первый ответ был отмечен, по крайней мере 10-ÑŽ положительными голоÑами"
+
+#~ msgid "Beta"
+#~ msgstr "Бета"
+
+#~ msgid "beta"
+#~ msgstr "бета"
+
+#~ msgid "Actively participated in the private beta"
+#~ msgstr "За активное учаÑтие в закрытой бета-верÑии"
+
+#~ msgid "guru"
+#~ msgstr "гуру"
+
+#~ msgid "Accepted answer and voted up 40 times"
+#~ msgstr "ПринÑл ответ и проголоÑовал 40 раз"
+
+#~ msgid "necromancer"
+#~ msgstr "некромант"
+
+#~ msgid "Answered a question more than 60 days later with at least 5 votes"
+#~ msgstr "Ответ на Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð±Ð¾Ð»ÐµÐµ чем 60 дней ÑпуÑÑ‚Ñ Ñ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼ 5 голоÑами"
+
+#~ msgid "taxonomist"
+#~ msgstr "такÑономиÑÑ‚"
+
+#~ msgid "Login failed."
+#~ msgstr "Логин неудачен"
+
+#~ msgid "email/"
+#~ msgstr "адреÑ-Ñлектронной-почты/"
+
+#~ msgid "Email Changed."
+#~ msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты изменён."
+
+#~ msgid "Automatically accept user's contributions for the email updates"
+#~ msgstr ""
+#~ "ÐвоматичеÑки принÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñ€Ð°ÑÑылки по "
+#~ "Ñлетронной почте"
+
+#~ msgid "sorry, system error"
+#~ msgstr "извините, произошла Ñбой в ÑиÑтеме"
+
+#~ msgid "Account functions"
+#~ msgstr "ÐаÑтройки аккаунта"
+
+#~ msgid "Give your account a new password."
+#~ msgstr "Дайте вашей учетной запиÑи новый пароль."
+
+#~ msgid "Add or update the email address associated with your account."
+#~ msgstr ""
+#~ "Добавить или обновить Ð°Ð´Ñ€ÐµÑ Ñлектронной почты, ÑвÑзанный Ñ Ð²Ð°ÑˆÐ¸Ð¼ "
+#~ "аккаунтом."
+
+#~ msgid "Change OpenID"
+#~ msgstr "Изменить OpenID"
+
+#~ msgid "Change openid associated to your account"
+#~ msgstr "Изменить OpenID ÑвÑзанный Ñ Ð²Ð°ÑˆÐ¸Ð¼ аккаунтом"
+
+#~ msgid "Erase your username and all your data from website"
+#~ msgstr "Удалить Ваше Ð¸Ð¼Ñ Ð¸ вÑе данные о Ð’Ð°Ñ Ð½Ð° Ñайте"
+
+#~ msgid "toggle preview"
+#~ msgstr "включить/выключить предварительный проÑмотр"
+
+#~ msgid "reading channel"
+#~ msgstr "чтение каналов"
+
+#~ msgid "[author]"
+#~ msgstr "[автор]"
+
+#~ msgid "[publisher]"
+#~ msgstr "[издатель]"
+
+#~ msgid "[publication date]"
+#~ msgstr "[дата публикации]"
+
+#~ msgid "[price]"
+#~ msgstr "[Цена]"
+
+#~ msgid "currency unit"
+#~ msgstr "Ð²Ð°Ð»ÑŽÑ‚Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°"
+
+#~ msgid "[pages]"
+#~ msgstr "[Ñтраницы]"
+
+#~ msgid "pages abbreviation"
+#~ msgstr "Ñокращение Ñтраниц"
+
+#~ msgid "[tags]"
+#~ msgstr "[теги]"
+
+#~ msgid "book directory"
+#~ msgstr "каталог книг"
+
+#~ msgid "buy online"
+#~ msgstr "купить онлайн"
+
+#~ msgid "reader questions"
+#~ msgstr "вопроÑÑ‹ читателей"
+
+#~ msgid "ask the author"
+#~ msgstr "ÑпроÑить автора"
+
+#~ msgid "number of times"
+#~ msgstr "раз"
+
+#~ msgid "the answer has been accepted to be correct"
+#~ msgstr "ответ был принÑÑ‚, в качеÑтве правильного"
+
+#~ msgid "subscribe to book RSS feed"
+#~ msgstr "подпиÑатьÑÑ Ð½Ð° RSS-канал Ð´Ð»Ñ ÐºÐ½Ð¸Ð³Ð¸"
+
+#~ msgid "open any closed question"
+#~ msgstr "открыть любой закрытый вопроÑ"
+
+#~ msgid "Site Visitors"
+#~ msgstr "ПоÑетителÑм Ñайта"
+
+#~ msgid "Personal Information"
+#~ msgstr "ПерÑÐ¾Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ"
+
+#~ msgid "Policy Changes"
+#~ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ñ‚Ð¸ÐºÐ¸"
+
+#~ msgid "tags help us keep Questions organized"
+#~ msgstr "метки помогают нам Ñтруктурировать вопроÑÑ‹"
+
+#~ msgid "Found by title"
+#~ msgstr "Ðайдено по названию"
+
+#~ msgid "Unanswered questions"
+#~ msgstr "Ðеотвеченные вопроÑÑ‹"
+
+#~ msgid "Open the previously closed question"
+#~ msgstr "Открыть ранее закрытый вопроÑ"
+
+#~ msgid "reason - leave blank in english"
+#~ msgstr "причина - оÑтавить пуÑтым на английÑком Ñзыке"
+
+#~ msgid "on "
+#~ msgstr "на"
+
+#~ msgid "date closed"
+#~ msgstr "дату окончаниÑ"
+
+#~ msgid "Account: change OpenID URL"
+#~ msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ: Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ OpenID URL"
+
+#~ msgid ""
+#~ "This is where you can change your OpenID URL. Make sure you remember it!"
+#~ msgstr ""
+#~ "ЗдеÑÑŒ вы можете изменить Ñвой OpenID URL. УбедитеÑÑŒ, что вы помните Ñто!"
+
+#~ msgid "Sorry, looks like we have some errors:"
+#~ msgstr "К Ñожалению, у Ð½Ð°Ñ ÐµÑÑ‚ÑŒ некоторые ошибки:"
+
+#~ msgid "Existing account"
+#~ msgstr "СущеÑтвующие учетные запиÑи"
+
+#~ msgid "Forgot your password?"
+#~ msgstr "Забыли пароль?"
+
+#~ msgid ""
+#~ "Note: After deleting your account, anyone will be able to register this "
+#~ "username."
+#~ msgstr ""
+#~ "Примечание: ПоÑле ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи, любой пользователь Ñможет "
+#~ "зарегиÑтрировать Ñто Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ."
+
+#~ msgid "Check confirm box, if you want delete your account."
+#~ msgstr ""
+#~ "УÑтановите флаг, подтвержадющий, что вы хотите удалить Ñвой аккаунт."
+
+#~ msgid "Password/OpenID URL"
+#~ msgstr "Пароль / OpenID URL"
+
+#~ msgid "Traditional login information"
+#~ msgstr "Ð¢Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°"
+
+#~ msgid ""
+#~ "how to login with password through external login website or use "
+#~ "%(feedback_url)s"
+#~ msgstr ""
+#~ "как войти Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ через внешнюю учетную запиÑÑŒ или иÑпользовать "
+#~ "%(feedback_url)s"
+
+#~ msgid ""
+#~ "Someone has requested to reset your password on %(site_url)s.\n"
+#~ "If it were not you, it is safe to ignore this email."
+#~ msgstr ""
+#~ "Кто-то запроÑил ÑÐ±Ñ€Ð¾Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ð° Ñайте %(site_url)s. \n"
+#~ "ЕÑли Ñто не вы, то можно проÑто проигнорировать Ñто Ñообщение."
+
+#~ msgid "Enter your login name and password"
+#~ msgstr "Введите Ð¸Ð¼Ñ Ð¸ пароль"
+
+#~ msgid "Create account"
+#~ msgstr "Создать учетную запиÑÑŒ"
+
+#~ msgid "Connect to %(APP_SHORT_NAME)s with Facebook!"
+#~ msgstr "Подключение к %(APP_SHORT_NAME)s Ñ Facebook!"
+
+#~ msgid "one revision"
+#~ msgid_plural "%(rev_count)s revisions"
+#~ msgstr[0] "одна верÑиÑ"
+#~ msgstr[1] "%(rev_count)s верÑии правки"
+#~ msgstr[2] "%(rev_count)s верÑий правки"
+
+#~ msgid "favorite questions"
+#~ msgstr "избранные вопроÑÑ‹"
+
+#~ msgid "The users have been awarded with badges:"
+#~ msgstr "Ðаграды, приÑужденные пользователÑм:"
+
+#~ msgid "You cannot leave this field blank"
+#~ msgstr "Это необходимо заполнить"
+
+#~ msgid "no OSQA community email please, thanks"
+#~ msgstr "ÑпаÑибо, но Ñлектронной почты не надо"
+
+#~ msgid "These login credentials are already associated with your account."
+#~ msgstr "Эта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑƒÐ¶Ðµ аÑÑоциирована Ñ Ð’Ð°ÑˆÐµÐ¹ учетной запиÑью."
+
+#~ msgid "The new credentials are now associated with your account"
+#~ msgstr "ÐÐ¾Ð²Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° в Вашу учетную запиÑÑŒ"
diff --git a/askbot/locale/sr/LC_MESSAGES/djangojs.mo b/askbot/locale/sr/LC_MESSAGES/djangojs.mo
index be890246..4c0b4956 100644
--- a/askbot/locale/sr/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/sr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/sr/LC_MESSAGES/djangojs.po b/askbot/locale/sr/LC_MESSAGES/djangojs.po
index 3929c9ea..fe621694 100644
--- a/askbot/locale/sr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/sr/LC_MESSAGES/djangojs.po
@@ -2,24 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 01:59-0600\n"
+"POT-Creation-Date: 2012-04-18 18:50-0500\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"
-"Language: \n"
+"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -37,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -76,146 +75,76 @@ msgstr ""
msgid "loading..."
msgstr ""
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr ""
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr ""
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr ""
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr ""
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr ""
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr ""
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr ""
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr ""
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr ""
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -224,120 +153,124 @@ msgid "Please select at least one item"
msgstr ""
#: skins/common/media/js/user.js:58
+#, fuzzy
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
msgstr[1] ""
-msgstr[2] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[1] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[2] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
diff --git a/askbot/locale/tr/LC_MESSAGES/django.mo b/askbot/locale/tr/LC_MESSAGES/django.mo
index 75db0a03..5939c3ba 100644
--- a/askbot/locale/tr/LC_MESSAGES/django.mo
+++ b/askbot/locale/tr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/tr/LC_MESSAGES/django.po b/askbot/locale/tr/LC_MESSAGES/django.po
index bd951210..ecb21b56 100644
--- a/askbot/locale/tr/LC_MESSAGES/django.po
+++ b/askbot/locale/tr/LC_MESSAGES/django.po
@@ -2,55 +2,55 @@
# Copyright (C) 2010 Mike Chen and Askbot developers
# This file is distributed under the same license as the Askbot package.
# Otkay Yildiz <EMAIL@ADDRESS>, 2010.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:40-0600\n"
-"PO-Revision-Date: 2010-09-08 06:14\n"
-"Last-Translator: <cemrekutluay@gmail.com>\n"
+"POT-Creation-Date: 2012-04-18 18:54-0500\n"
+"PO-Revision-Date: 2012-02-17 22:35+0200\n"
+"Last-Translator: Hakan <hatalar205linux@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+"X-Generator: Pootle 2.1.6\n"
"X-Translated-Using: django-rosetta 0.5.6\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: exceptions.py:13
-#, fuzzy
msgid "Sorry, but anonymous visitors cannot access this function"
-msgstr "üye girişi yapmadan oy kullanamazsınız"
+msgstr "Üzgünüz, anonim ziyaretçiler bu özelliği kullanamazlar"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "Seçtiğim sorular"
+msgstr "Bireysel soru akışı"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "en son sorulanlar"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "Hesabı sil"
+msgstr "ülke seçin"
+# 100%
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "Ãœlke"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "bu alanın doldurulması gereklidir"
+msgstr "Ülke alanının doldurulması zorunludur"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "başlık"
@@ -58,61 +58,78 @@ msgstr "başlık"
msgid "please enter a descriptive title for your question"
msgstr "Sorunuz için açıklayıcı bir başlık girin"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "başlık en az 10 karakter olmalı"
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "Başlık en az %d karakter olmalı"
+msgstr[1] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
-#: forms.py:119
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "içerik"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "soru içeriği en az 10 karakter olmalı"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "etiketler"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
-"Etiketler kısa anahtar kelimelerdir ve bir soru için en fazla 5 etiket "
-"yazabilirsiniz."
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
+"Etiketler içinde boşluk olmayan kısa anahtar kelimelerdir. En fazla "
+"%(max_tags)d etiket kullanılabilir."
+msgstr[1] ""
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr "etiket yazmalısınız"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "En fazla %(tag_count)d etiket kullanabilirsiniz"
msgstr[1] "En fazla %(tag_count)d etiket kullanabilirsiniz"
-#: forms.py:181
+# 100%
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "Aşağıdaki etiketlerden en az bir tanesi gerekli: %(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "Her etiket en fazla %(max_chars)d karakter içerebilir"
msgstr[1] "Her etiket en fazla %(max_chars)d karakter içerebilir"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "bu-yazıları-etiket-olarak-kullan"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
-msgstr ""
+msgstr "Topluluk wikisi (karma ödüllendirilmez ve başkaları düzenleyebilir)"
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
@@ -120,11 +137,11 @@ msgstr ""
"Eğer wiki seçeneğini seçerseniz, soru ve cevaplardan puan verilip "
"alınamayacak ve yazarın ismi gizli kalacaktır."
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "güncelleme özeti:"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -132,239 +149,279 @@ msgstr ""
"Yaptığınız düzeltmenin özetini giriniz. (sabit yazım, dilbilgisi, gelişmiş "
"stil gibi, bu alan isteğe bağlı)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
-msgstr ""
+msgstr "Eklenecek ya da çıkartılacak nokta sayısını girin"
-#: forms.py:341 const/__init__.py:250
+# 100%
+#: forms.py:400 const/__init__.py:253
msgid "approved"
-msgstr ""
+msgstr "onaylanmış"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
-msgstr ""
+msgstr "izlenmiÅŸ"
-#: forms.py:343 const/__init__.py:252
-#, fuzzy
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
-msgstr "güncellendi"
+msgstr "durduruldu"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
-msgstr ""
+msgstr "engellenmiÅŸ"
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
-msgstr "Saygılarımızla, <BR> Site yönetimi"
+msgstr "yönetici"
-#: forms.py:347 const/__init__.py:249
-#, fuzzy
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
-msgstr "yoneticiler/"
+msgstr "yönetici"
-#: forms.py:367
-#, fuzzy
+#: forms.py:426
msgid "Change status to"
-msgstr "Etiket deÄŸiÅŸtir"
+msgstr "Durumu deÄŸiÅŸtir"
-#: forms.py:394
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 100%
+#: forms.py:453
+#, fuzzy
msgid "which one?"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"hangisi?"
-#: forms.py:415
-#, fuzzy
+#: forms.py:474
msgid "Cannot change own status"
-msgstr "kendi yazılarınıza oy veremezsiniz"
+msgstr "kendi durumunuzu deÄŸiÅŸtiremezsiniz"
-#: forms.py:421
+# 100%
+#: forms.py:480
msgid "Cannot turn other user to moderator"
-msgstr ""
+msgstr "Başka bir kullanıcı moderator yapılamıyor"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
-msgstr ""
+msgstr "Başka bir yöneticinin durumu değiştirilemez"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "kendi yazılarınıza oy veremezsiniz"
+msgstr "Durumu yönetici olarak değiştiremezsiniz"
-#: forms.py:440
+# %90
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
+"%(username)s kullanıcısının durumunu değiştirmek istiyorsanız lütfen anlamlı "
+"bir seçim yapınız."
-#: forms.py:449
-#, fuzzy
+#: forms.py:508
msgid "Subject line"
-msgstr "Tema seç"
+msgstr "Satır seç"
-#: forms.py:456
-#, fuzzy
+#: forms.py:515
msgid "Message text"
-msgstr "Mesajınız:"
+msgstr "Ä°leti metni"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "Adınız:"
+msgstr "Adınız (seçimsel):"
-#: forms.py:543
-#, fuzzy
+#: forms.py:531
msgid "Email:"
-msgstr "E-mail"
+msgstr "E-posta"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "Mesajınız:"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "E-posta adresimi vermek istemiyorum veya cevap almak istemiyorum:"
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "Lütfen \"epostal adresimi vermek istemiyorum\" bölümünü işaretleyiniz."
-#: forms.py:611
-#, fuzzy
+#: forms.py:599
msgid "ask anonymously"
-msgstr "anonim"
+msgstr "isimsiz olarak sor"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
+"Bu soruyu sorarken adınızın gizli kalmasını istiyorsanız işaretleyiniz."
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+# %90
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
+"Bu soruyu isimsiz olarak sordunuz, eğer adınızın görünmesini istiyorsanız "
+"lütfen bu kutuyu işaretleniz."
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
-msgstr ""
+msgstr "kimliği göster"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
+"Maalesef, sadece anonim sorunun sahibi kendi kimliğini açık edebilir, lütfen "
+"onayı kaldırınız."
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"Üzgünüm, belli ki kurallar değiştirildi - artık isimsiz olarak soramazsınız. "
+"Lütfen \"kimliği göster\" kutusunu kontrol edin veya sayfayı yeniden "
+"yükleyin ve soruyu tekrar düzenleyin."
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "Bu e-mail gravatar bağlantılı olmak zorunda değildir"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "Gerçek isim"
-#: forms.py:900
+#: forms.py:895
+#, fuzzy
msgid "Website"
-msgstr "Website"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Website\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ä°nternet sitesi"
-#: forms.py:907
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "Åžehir"
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
-msgstr ""
+msgstr "Ülkeyi göster"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "DoÄŸum tarihi"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
"Gizli alan, yaş hesaplamak için kullanılır. YYYY-AA-GG şeklinde giriniz."
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "Profil"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "Görünen isim"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "Bu e-mail sitemizde zaten kayıtlı, lütfen başka bir tane deneyin"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "E-mail etiketi için filtre seç"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "Tarafımdan sorulan"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "Tarafımdan cevaplanan"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "Tek tek seçilmiş"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "Tüm forum (etiket ile filtrelenmiş)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "Benim hakkımdaki gönderiler"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "lütfen yukarıdaki seçeneklerden birini seçin "
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "tamam, bir deneyelim!"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "toplu e-mail istemiyorum, teşekkürler"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "lütfen yukarıdaki seçeneklerden birini seçin "
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr "hakkimizda/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "sss/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "gizlilik/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "cevaplar/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "duzenle/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "duzeltmeler/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "sorular"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "sorular/"
@@ -373,9 +430,8 @@ msgid "ask/"
msgstr "sor/"
#: urls.py:92
-#, fuzzy
msgid "retag/"
-msgstr "etiketler/"
+msgstr "tekraretiketle/"
#: urls.py:97
msgid "close/"
@@ -393,68 +449,76 @@ msgstr "cevap/"
msgid "vote/"
msgstr "oy/"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr "programciklar/"
+
+#: urls.py:158
msgid "tags/"
msgstr "etiketler/"
-#: urls.py:196
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 78%
+#: urls.py:201
+#, fuzzy
msgid "subscribe-for-tags/"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"etiketleri kullan"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "kullanicilar/"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "e-mail abonelikleri"
+msgstr "abonelikler/"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "rozetler/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "mesajlar/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "okundu-yap/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "yukle/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "geribildirim/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "soru/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "hesap/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "Temel Ayarlar"
+msgstr "Denetim ayarlarına erişim"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "Sadece kayıtlı kullanıcıların foruma erişimine izin ver"
#: conf/badges.py:13
-#, fuzzy
msgid "Badge settings"
-msgstr "Temel Ayarlar"
+msgstr "İşaret ayarları"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
@@ -493,14 +557,16 @@ msgid "Great Question: minimum upvotes for the question"
msgstr ""
#: conf/badges.py:104
-#, fuzzy
msgid "Popular Question: minimum views"
-msgstr "Popüler Soru"
+msgstr "Popüler Soru: en az görüntüleme"
#: conf/badges.py:113
#, fuzzy
msgid "Notable Question: minimum views"
-msgstr "Önemli Soru "
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Önemli Soru \n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
#: conf/badges.py:122
#, fuzzy
@@ -562,9 +628,8 @@ msgid "Email and email alert settings"
msgstr "E-posta ve e-posta uyarı ayarları"
#: conf/email.py:24
-#, fuzzy
msgid "Prefix for the email subject line"
-msgstr "Hoşgeldiniz mesajının konusu"
+msgstr "E-posta konu satırı için ön ek"
#: conf/email.py:26
msgid ""
@@ -573,160 +638,186 @@ msgid ""
msgstr ""
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "E-posta ve e-posta uyarı ayarları"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "Bir e-posta bildirisindeki maksimum haber sayısı"
-#: conf/email.py:48
+#: conf/email.py:57
#, fuzzy
msgid "Default notification frequency all questions"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "Varsayılan haber uyarı sıklığı"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
#, fuzzy
msgid "Send periodic reminders to accept the best answer"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
#, fuzzy
msgid "Days before starting to send reminders to accept an answer"
msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr "Gönderiye izin vermeden önce e-posta doğrulaması iste"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
"Aktif e-posta doğrulaması, kullanıcıya bir onay kodu gönderilerek yapılır"
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr "Bir e-posta adresi ile tek kullanıcıya izin ver"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr "Bu ayarlar e-postasız kullanıcıların gravatarı içindir"
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr "soru bilgisi göndermek için giriş yapın"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
+"Bu ayarı aktif etmeden önce - lütfen settings.py dosyasındaki IMAP "
+"ayarlarını doldurunuz."
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "soru bilgisi göndermek için giriş yapın"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -762,15 +853,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Recaptcha genel anahtarı"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Recaptcha gizli anahtarı"
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, fuzzy, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -781,11 +872,11 @@ msgstr ""
"servistir. Anahtarını <a href=\"http://recaptcha.net\">recaptcha.net</a> "
"adresinden temin edebilirsiniz"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Facebook genel anahtarı"
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, fuzzy, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -797,71 +888,54 @@ msgstr ""
"developers/createapp.php\">facebook create app</a> adresinden temin "
"edebilirsiniz"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Facbook gizli anahtarı"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
-msgstr ""
+msgstr "Twitter kullanıcı anahtarı"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Hesabınız: Şifremi değiştir"
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr "Flatpages - hakkında, gizlilik politikası, vb."
@@ -910,11 +984,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr "askbot veri girişi ve görüntüleme ayarları"
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -923,17 +999,28 @@ msgstr "topluluk wiki özelliğini aktif ediniz"
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "Anonim olarak soru sorulmasına izin ver"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# reputation =? itibar
#: conf/forum_data_rules.py:44
+#, fuzzy
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Kullanıcılar anonim olarak itibarını arttıramaz ve kendileri fikirlerini "
+"değiştirinceye kadar kimlikleri açık edilmez."
#: conf/forum_data_rules.py:56
+#, fuzzy
msgid "Allow posting before logging in"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Giriş yapmadan gönderime izin ver"
#: conf/forum_data_rules.py:58
msgid ""
@@ -958,110 +1045,185 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr "etiketin maksimum uzunluğu (karakter sayısı)"
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+#, fuzzy
+msgid "Minimum length of title (number of characters)"
+msgstr "etiketin maksimum uzunluğu (karakter sayısı)"
+
+#: conf/forum_data_rules.py:106
+#, fuzzy
+msgid "Minimum length of question body (number of characters)"
+msgstr "etiketin maksimum uzunluğu (karakter sayısı)"
+
+#: conf/forum_data_rules.py:117
+#, fuzzy
+msgid "Minimum length of answer body (number of characters)"
+msgstr "etiketin maksimum uzunluğu (karakter sayısı)"
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr "etiket yazmalısınız"
+
+#: conf/forum_data_rules.py:135
#, fuzzy
msgid "Mandatory tags"
msgstr "güncellenmiş etiketler"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "Ä°lgili etiketler"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "soru başına maksimum etiket sayısı"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "Soru listesinin varsayılan uzunluğu (soru sayısı)"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "\"Cevaplanmamış soru\" ne anlama gelmeli?"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "LDAP servis sağlayıcı ismi"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "LDAP servis sağlayıcı ismi"
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Etiketleri"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "Kullanıcı profili"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1136,16 +1298,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1312,6 +1474,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
#, fuzzy
msgid "Karma loss and gain rules"
@@ -1516,29 +1682,29 @@ msgstr "Arama motorları için site tanımı"
msgid "Short name for your Q&A forum"
msgstr "Soru/Cevap forumunun kısa adı"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "Soru/Cevap forumu için ana URL (http veya https ile başlamalıdır)"
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
#, fuzzy
msgid "Check to enable greeting for anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
#, fuzzy
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr "Anonim kullanıcıya gösterilen karşılama mesajı"
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "Geri bildirim adresi"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "Boş bırakıldığında basit bir iç geribesleme formu kullanılacak"
@@ -1664,21 +1830,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1686,40 +1852,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr "Tema seç"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1731,11 +1897,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1744,21 +1910,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1767,21 +1933,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1790,19 +1956,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1813,19 +1979,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr "Tema medya dosyaları versiyon numarası"
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1838,21 +2004,49 @@ msgstr ""
msgid "Check to enable sharing of questions on Twitter"
msgstr "Bu soruyu tekrar aç"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 83%
+# 100%
#: conf/social_sharing.py:29
+#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Bu soruyu tekrar aç"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 85%
+# 100%
#: conf/social_sharing.py:38
+#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Bu soruyu tekrar aç"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 83%
+# 100%
#: conf/social_sharing.py:47
+#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Bu soruyu tekrar aç"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 87%
+# 100%
#: conf/social_sharing.py:56
+#, fuzzy
msgid "Check to enable sharing of questions on Google+"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Bu soruyu tekrar aç"
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
@@ -1892,40 +2086,68 @@ msgstr "DiÄŸer Hizmetler"
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr "Kullanıcı idare ayarları"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr "Kullanıcı adının değiştirilmesine izin ver"
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Bir e-posta adresi ile tek kullanıcıya izin ver"
+
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Bir e-posta adresi ile tek kullanıcıya izin ver"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "Görünen isim için en az kelime uzunluğu"
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "Varsayılan değer: %s"
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
#, fuzzy
msgid "Name for the Anonymous user"
msgstr "Anonim kullanıcı için geçersiz e-posta adresi"
@@ -1970,6 +2192,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "Soru listesinin varsayılan uzunluğu (soru sayısı)"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Cevabı kapat"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "yoksayılan soruları gizle"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "kullanıcının favori soruları"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "yinelenen soru"
@@ -2006,341 +2261,368 @@ msgstr "spam ya da reklam"
msgid "too localized"
msgstr "çok dar kapsamlı"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "en yeni"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "en eski"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "aktif"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "hareketsiz"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "sıcak"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "soÄŸuk"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "en çok oy alan"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "En az oy"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "ilgi"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "tümü"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "cevapsız"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "favori"
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "Etiket listesi"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "Cevapsız soru"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "Kabul edilmiş cevabı olmayan soru"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "bir soru sordu"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "bir soru cevapladı"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "soruya yorum yazıldı"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "cevaba yorum yazıldı"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "soru düzeltilmiş"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "cevap düzeltilmiş"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "alınan ödül"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "en iyi cevap olarak iÅŸaretlenmiÅŸ"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "beÄŸendim"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "beÄŸenmedim"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "oy iptal"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "silinmiÅŸ bir soru"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "silinmiÅŸ cevap"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "saldırgan olarak işaretlenmiş"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "güncellenmiş etiketler"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "favori olarak seçilmiş"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "tamamlanmış kullanıcı profili"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "kullanıcıya e-mail güncelleme gönder"
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "cevapsız sorular gör"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "En iyi cevap için kazanılan puan"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "gönderide belirtilmiş"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "cevaplanmış_soru"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "yorumlanmış soru"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "yorumlanmış soru"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "kabul edilmiÅŸ soru"
+#, fuzzy
+msgid "answered question"
+msgstr "bir soru cevapladı"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "cevap düzeltilmiş"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[kapatıldı]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[silindi]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "ilk versiyon"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "yeniden etiketlendi"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
#, fuzzy
msgid "exclude ignored"
msgstr "dışlanmış etiketleri dikkate al"
-#: const/__init__.py:219
+#: const/__init__.py:222
#, fuzzy
msgid "only selected"
msgstr "Tek tek seçilmiş"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "anında"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "günlük"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "haftalık"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "e-mail yok"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
#, fuzzy
msgid "mystery-man"
msgstr "dün"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "Gravatar nedir?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "altın"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "gümüş"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "bronz"
-#: const/__init__.py:298
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 75%
+#: const/__init__.py:301
+#, fuzzy
msgid "None"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"bronz"
-#: const/__init__.py:299
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# 75%
+# 100%
+#: const/__init__.py:302
+#, fuzzy
msgid "Gravatar"
msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Gravatar nedir?"
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "lütfen ilgili bir soru sorunuz"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "en çok oylanan soruları gör"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
#, fuzzy
msgid "by relevance"
msgstr "ilgi"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "eski soruları görmek için tıklayın"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
#, fuzzy
msgid "by date"
msgstr "Güncelleme"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "yeni soruları görmek için tıklayın"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "güncel olmayan soruları görmek için tıklayın"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
#, fuzzy
msgid "by activity"
msgstr "aktif"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "en güncel soruları görmek için tıklayın"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
#, fuzzy
msgid "click to see the least answered questions"
msgstr "eski soruları görmek için tıklayın"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "cevaplar"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
#, fuzzy
msgid "click to see the most answered questions"
msgstr "en çok oylanan soruları gör"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "en az oylanan soruları gör"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "oy"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "en çok oylanan soruları gör"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "i-name giriÅŸleri desteklenmiyor"
@@ -2392,11 +2674,12 @@ msgid "Your user name (<i>required</i>)"
msgstr "Kullanıcı adınız <i>(gerekli)</i>"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "Hatalı kullanıcı adı."
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "Üzgünüm, bu isimle kayıtlı bir kullanıcı yoktur"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "giriÅŸ/"
@@ -2436,6 +2719,7 @@ msgid "%(site)s user name and password"
msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2525,78 +2809,78 @@ msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s geçersiz"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
#, fuzzy
msgid "Your new password saved"
msgstr "Åžifreniz deÄŸiÅŸtirildi"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "Üzgünüm, şifreler uyuşmuyor lütfen tekrar deneyin."
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "E-posta adresiniz onaylanmalı, bkz.%(details_url)s "
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "Hesabınıza yeni bir şifre verin."
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2604,250 +2888,233 @@ msgstr ""
msgid "Site"
msgstr "Site"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "Temel Ayarlar"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "Varsayılan değer: \"\""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "Varsayılan değer:"
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "Varsayılan değer: %s"
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "izin verilen dosya türleri '%(file_types)s'"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "Tebrikler, artık sitemizde yönetici oldunuz..."
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "Siteler"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "Belgelendirme"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "Åžifre deÄŸiÅŸtir"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "Güvenli Çıkış"
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "Anasayfa"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "Grup Ayarlarını Düzenle"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Lütfen aşağıdaki hatayı düzeltin:"
+msgstr[1] "Lütfen aşağıdaki hataları düzeltin:"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "%(name)s içerisinde yer alan ayarlar."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "Değerleri değiştirmek için yetkin yok."
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "Site Ayarlarını Düzenle"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "\"Livesettings\" bu site için devre dışı bırakılmıştır."
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "Tüm yapılandırma seçenekleri settings.py dosyasında düzenlenmelidir"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "Grup ayarları: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "Hepsini kapat"
-#: management/commands/send_accept_answer_reminders.py:57
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "Tebrikler, artık sitemizde yönetici oldunuz..."
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "Bu soruya ilk cevabı sen yaz!"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr "eski soruları görmek için tıklayın"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
msgstr[1] ""
-#: management/commands/send_email_alerts.py:421
-#, fuzzy, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-"<p>Dear %(name)s,</p></p>The following question has been updated on the Q&A "
-"forum:</p>"
msgstr[1] ""
-"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
-"the Q&A forum:</p>"
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "yeni soru"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-"Lütfen askbot'u ziyaret edin ve yeniliklerden haberdar olun! İnsanlara "
-"burada olani biteni anlatın. Belki buradaki soruları cevaplayabilecek veya "
-"soru sorarak askbot'tan faydalanabilecek birilerini tanıyorsunuzdur."
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"Seçili sorulara aboneliğiniz 'günlük' olarak görünüyor. Eğer birden fazla e-"
-"posta alıyorsanız, lütfen bunu bize bildirin."
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"Seçili sorulara aboneliğiniz 'haftalık' olarak görünüyor. Eğer birden fazla "
-"e-posta alıyorsanız, lütfen bunu bize bildirin."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr "Ölen linkleri önceden görme şansın olabilir. "
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
-"frequency of the email updates or turn them off entirely.<br/>If you believe "
-"that this message was sent in an error, please email about it the forum "
-"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
-"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
msgstr[1] ""
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "Kullanıcı girişi"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
+#: models/__init__.py:337
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "Kendi soruna verdiÄŸin ilk kabul edilmiÅŸ cevap"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "kendi yazılarınıza oy veremezsiniz"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "beğeninizi göstermek için en az %(points)s puan toplamalısınız "
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "beğenmediğinizi göstermek için en az %(points)s puan toplamalısınız"
-#: models/__init__.py:428
+#: models/__init__.py:430
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr "Engellenen kullanıcılar ileti yapamaz"
-#: models/__init__.py:429
+#: models/__init__.py:431
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr "Dondurulan kullanıcılar ileti yapamaz"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "resim göndermek için en az %(min_rep)s puan toplamalısınız"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr "Engellenen kullanıcılar ileti yapamaz"
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
-msgstr "Dondurulan kullanıcılar ileti yapamaz"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2858,56 +3125,56 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2917,252 +3184,275 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
msgstr ""
-#: models/__init__.py:761
-#, fuzzy
-msgid "blocked users cannot flag posts"
-msgstr "Engellenen kullanıcılar ileti yapamaz"
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
-#: models/__init__.py:763
-#, fuzzy
-msgid "suspended users cannot flag posts"
-msgstr "Dondurulan kullanıcılar ileti yapamaz"
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
msgstr ""
-#: models/__init__.py:784
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr ""
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "Engellenen kullanıcılar ileti yapamaz"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+msgstr[1] ""
+
+#: models/__init__.py:862
+#, fuzzy
+msgid "you don't have the permission to remove all flags"
+msgstr "Değerleri değiştirmek için yetkin yok."
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "verilen bir oyu iptal edemezsiniz"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "%(date)s tarihinde"
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, fuzzy, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "%(hr)d saat önce"
msgstr[1] "%(hr)d saat önce"
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, fuzzy, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "%(min)d dakika önce"
msgstr[1] "%(min)d dakika önce"
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "anonim"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
#, fuzzy
msgid "Site Adminstrator"
msgstr "Saygılarımızla, <BR> Site yönetimi"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
#, fuzzy
msgid "Suspended User"
msgstr "Gönderen"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
#, fuzzy
msgid "Registered User"
msgstr "Kayıtlı kullanıcı"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "karmanız %(reputation)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
msgstr[1] ""
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "gümüş rozetin açıklaması"
msgstr[1] "gümüş rozetin açıklaması"
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "bronze rozetin açıklaması"
msgstr[1] "bronze rozetin açıklaması"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
+#: models/__init__.py:2389
#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "Etiketleri"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3428,205 +3718,1276 @@ msgstr "Taksonomist"
msgid "Created a tag used by %(num)s questions"
msgstr "50 soruda kullanılmış etiket yarattı"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "Uzman"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "Bir etikette çok etkin"
-#: models/content.py:549
+#: models/post.py:1071
#, fuzzy
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "bu soru favori olarak seçildi"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
#, fuzzy
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "bu soru favori olarak seçildi"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
#, fuzzy
msgid "\" and more"
msgstr "Daha fazla bilgi"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s soruyu düzenledi"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s adlı üyemiz %(new_answer_count)s yeni cevap yolladı"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s bir soruyu yorumladı"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-"suggest forum/models/question.py:508\n"
-" \n"
-"%(people)s cevaba yorum yazdı"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s bir cevabı yorumladı"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "E-mail adresini doÄŸrula"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "ilginç"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "yoksay"
-#: models/user.py:264
+#: models/user.py:266
#, fuzzy
msgid "Entire forum"
msgstr "Bütün askbot"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "SorduÄŸum sorular"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "Cevapladığım sorular"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "Seçtiğim sorular"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "Anında"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "Günlük"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "Haftalık"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "E-posta yok"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+#, fuzzy
+msgid "Sign in"
+msgstr "giriÅŸ/"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "E-mai deÄŸiÅŸtir"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "E-mail adresinizi kaydedin"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "E-mail adresini kaydet"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "Iptal"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "E-mail adresini doÄŸrula"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "E-mail deÄŸiÅŸmedi"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "E-mail deÄŸiÅŸtirildi"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "E-mail doğrulandı"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "E-mail adresini doÄŸrula"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "Kayıt"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "Kayıt"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "Kaydol"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "Sorucevap.de sitesine kayıt olduğunuz için teşekkür ederiz!"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "Hesap ayrıntılarınız şöyledir:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "Kullanıcı adı:"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "Åžifre:"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "Lütfen buradan giriş yapın:"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr "Saygılarımızla, <BR> Site yönetimi"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "Sorucevap.de sitesinden selamlar..."
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "Forum faydalanmak için, aşağıdaki bağlantıyı takip edin:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr "Yukarıdaki bağlantı, E-mail adresinizi doğrulamada yardımcı olacaktır."
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"Eğer bu mesajın size yanlışlıkla gönderildiğini düşünüyorsanız, hiçbir şey "
"yapmanıza gerek yok. <BR> Bu mesajı dikkate almayın. <BR> Bu durum için özür "
"dileriz."
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "Çıkış"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "Kullanıcı girişi"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>\"%(title)s\" başlıklı soruya yazdığınız "
+"\"%(summary)s\" cevabını yollamak için giriş yapmalısınız."
+
+#: skins/common/templates/authopenid/signin.html:21
+#, fuzzy, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>\"%(title)s\" başlıklı \"%(summary)s\" "
+"sorunuzu yollamak için giriş yapmalısınız."
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "Lütfen buradan giriş yapın:"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "e-mail yok"
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "Åžifre"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "Yeni ÅŸifre ayarla"
+
+#: skins/common/templates/authopenid/signin.html:133
+#, fuzzy
+msgid "Please, retype"
+msgstr "lütfen şifrenizi yeniden yazın"
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "son görülme"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "sil"
+
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "Hesap silindi."
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Hala aklınıza takılan bir soru mu var?"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+#, fuzzy
+msgid "recover your account via email"
+msgstr "Hesabınıza yeni bir şifre verin."
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+#, fuzzy
+msgid "Recover your account via email"
+msgstr "Hesabınıza yeni bir şifre verin."
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Kullanıcı adı ve şifre oluştur"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "Kullanıcı adı ve şifre oluştur"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+"Lütfen aşağıdaki iki kelimeyi yazın. Çünkü bazı otomatik hesap "
+"oluşturucular, sitemize böyle kayıt olup, gerçek olmayan içerikler "
+"eklemektedir."
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "veya"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "OpenID girişine dön"
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "Gravatar nedir?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Etiket deÄŸiÅŸtir"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr "Hesap ayrıntılarınız şöyledir:"
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "deÄŸiÅŸiklikler kaydedildi"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+#, fuzzy
+msgid "Upload"
+msgstr "yukle/"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "silinmiÅŸ cevap"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+#, fuzzy
+msgid "Delete These"
+msgstr "silinmiÅŸ cevap"
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Cevabı yayınla"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "kalıcı bağlantı"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "bağlantı"
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "silineni geri al"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Uygunsuz olarak işaretlenmiş olanları görüntüle"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "tüm etiketleri gör"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "şikayet et (spam, reklam, kötü amaçlı yazı vb. içeriyor)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "ÅŸikayet et"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "deÄŸiÅŸtir"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "bu cevap doğru olarak seçildi"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr "bu cevabı favori olarak işaretle (geri almak için tıklayın)"
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr "Soru şu nedenle kapatılmış olabilir: %(close_reason)s"
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr "kapatılma tarihi %(closed_at)s"
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "yeniden aç"
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "kapat"
+
+#: skins/common/templates/question/question_controls.html:35
+#, fuzzy
+msgid "retag"
+msgstr "yeniden etiketlendi"
+
+#: skins/common/templates/widgets/edit_post.html:22
+#, fuzzy
+msgid ", one of these is required"
+msgstr "bu alanın doldurulması gereklidir"
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "etiketler"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(gerekli)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "Toggle gerçek zamanlı Markdown editörü önizleme"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "önizlemeyi gizle"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "İlginç etiketler"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "Ekle"
+
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "Yoksayılan etiketler"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+#, fuzzy
+msgid "Display tag filter"
+msgstr "E-mail etiketi için filtre seç"
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "Üzgünüz, istediğiniz sayfayı bulamadık."
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "Bu durum, aşağıdaki sebeplerden dolayı olabilir:"
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "bu soru ya da cevap silindi;"
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "adres hatası var - tekrar kontrol edin;"
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+"ziyaret etmeye çalıştığınız sayfa korumalıdır ya da görmek için yeterince "
+"puanınız yoktur"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "sss"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "Hata kodu 404: lütfen"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "Bu sorunu yöneticiye bildir"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "önceki sayfaya geri dön"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "tüm soruları gör"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "tüm etiketleri gör"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+"Bu hata, sistem hata günlüğüne kayıt edildi. En kısa sürede çözümlenmesi "
+"için uğraşacağız."
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "isterseniz hata raporunu site yöneticilerine bildirin"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "son soruları gör"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "etiketleri gör"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "Cevapı düzenle"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "geri"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "revizyon"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "revizyon seç"
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "DeÄŸiÅŸikliÄŸi kaydet"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "önizlemeyi göster"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Soruyu yayınla"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, fuzzy, python-format
+msgid "%(name)s"
+msgstr "%(date)s tarihinde"
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "Madalya"
+
+#: skins/default/templates/badge.html:7
+#, fuzzy, python-format
+msgid "Badge \"%(name)s\""
+msgstr "%(date)s tarihinde"
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr "e-mail abonelikleri"
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "kullanıcı bu rozeti elde etti:"
+msgstr[1] "kullanıcılar bu rozeti elde ettiler:"
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "Ödüller"
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"Sorularınız, cevaplarınız ve oylarınız için burdaki topluluk sizi "
+"ödüllendiriyor."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun "
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Site rozetleri"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "bronz madalya: genellikle özel bir onur olarak verilir"
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "Soruyu kapat"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "Cevabı kapat"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "Nedenleri"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "Kapatmak için OK butonuna bas"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "Sıkça Sorulan Sorular"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "Ne tür sorular sorabilirim?"
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"En önemli sorular sitemizde <strong>önemli</strong> şeklinde "
+"gösterilmektedir."
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Soru sormadan önce, öncelikle sitemizde bir arama yapın. Belki bu soru ve "
+"cevabı sitemizde bulunmaktadır."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "Ne tür sorulardan kaçınmalıyım?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"Lütfen, çok subjektif ve tartışmacı olan, sitemizle ilgili olmayan sorular "
+"sormaktan kaçının."
+
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "Cevaplarımda nelere dikkat etmeliyim?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "Bu siteyi kimler yönetiyor?"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "Cevabı çok açık: <strong>Sen!</strong> Yani sizlersiniz! "
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "Bu web sitesi, kullanıcıları tarafından yönetilmektedir."
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"İtibar sistemi, kullanıcılarımızın sitedeki yetkilendirme ve yazdıklarının "
+"doÄŸruluÄŸu konusunda fikir verir."
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "İtibar sistemi nasıl çalışmaktadır?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, fuzzy, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"Örneğin, ilginç bir soru sordunuz ya da yararlı bir cevap verdiniz. Doğal "
+"olarak bu durum, diğer kullanıcılarımız tarafından beğenilecektir. Diğer "
+"taraftan da, eğer cevabınız doğru değilse ya da yanıltıcı ise "
+"beğenilmeyecektir. Sistem, beğenilen her soru veya cevap yazınız için size "
+"<strong>10</strong> puan verirken, beğenilmeyen soru veya cevabınız için "
+"<strong>2</strong> puan düşmektedir. Her soru veya cevaptan alabileceğiniz "
+"en fazla puan <strong>200</strong> ile sınırlandırılmıştır. Aşağıdaki tablo, "
+"itibar sisteminden toplanan puanlar ile neler yapılabileceğini "
+"göstermektedir."
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "beÄŸendim"
+
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "yorum ekle"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "beÄŸenmedim"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "Kendi soruna verdiÄŸin ilk kabul edilmiÅŸ cevap"
+
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "kendi sorularım açık ve kapalı "
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "soruları yeniden etiketle"
+
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "sitenin wiki sorularını değiştir"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "herhangi bir cevabı değiştir"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "bir yorumu sil"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "Kaydolmak için, yeni bir şifre yaratmalı mıyım?"
+
+#: skins/default/templates/faq_static.html:72
+#, fuzzy
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+"Hayır, bu şart değil. Eğer OpenID destekleyen herhangi bir hizmete üye isen, "
+"mesela Facebook, Twitter, Google Mail, Yahoo, AOL, vb aracılığıyla da giriş "
+"yapabilirsiniz."
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Åžimdi giriÅŸ yap!"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+"Neden başkaları benim sorumu ya da cevabımı düzenleyebiliyor ve "
+"deÄŸiÅŸtirebiliyorlar?"
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "İşte bu, sitenin en önemli amaçlarından biridir..."
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+"Böylelikle sorular ve cevaplar aynen wiki sayfaları gibi sitenin deneyimli "
+"kullanıcıları tarafından değiştirilip düzenlenebilir. Bu ise bilgi site "
+"içeriğimizin kalitesini artırır."
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+"Bu değişiklikler size uygun değilse, sizin seçiminize saygılı değilse, "
+"lütfen bize bildirin."
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "Hala aklınıza takılan bir soru mu var?"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!Lütfen sorularınızı %(ask_question_url)s kısmına yazın. "
+"Böylelikle bize daha fazla yardımcı olmuş olursunuz."
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "Geri bildirim"
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "Görüşlerinizi bize bildirin!"
+
+#: skins/default/templates/feedback.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Sevgili %(user_name)s</span>, sitemizle alakalı "
+"görüş, öneri ve eleştirilerinizi bekliyoruz. Her konuda bize yazmaktan "
+"çekinmeyin."
+
+#: skins/default/templates/feedback.html:21
+#, fuzzy
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>Sevgili ziyaretçimiz</span>, sitemizle alakalı "
+"görüş, öneri ve eleştirilerinizi bekliyoruz. Her konuda bize yazmaktan "
+"çekinmeyin."
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "(bu alanın doldurulması gereklidir)"
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "Geribildirim gönder"
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
#, fuzzy, python-format
msgid ""
"\n"
@@ -3635,134 +4996,1712 @@ msgstr ""
"\n"
"Merhaba, bu bir %(site_title)s geribildirim mesajıdır.\n"
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "bir kullanıcı adı seçin"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
+
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>Sevgili %(receiving_user_name)s,</p>"
+
+#: skins/default/templates/instant_notification.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s, sorusu\"%(origin_post_title)s\"için yeni bir "
+"yorum<a href=\"%%(post_url)s\"></a>yazdı</p>\n"
+
+#: skins/default/templates/instant_notification.html:8
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s, sorusu\"%(origin_post_title)s\"için yeni bir "
+"yorum<a href=\"%%(post_url)s\"></a>yazdı</p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s bir soru cevapladı\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s bir soru güncelledi\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s soruya bir cevap güncelledi\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s bir soru güncelledi\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:37
+#, fuzzy, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<p>Lütfen dikkat - bu uyarıların gönderim sıklığını <a href="
+"\"%(user_subscriptions_url)s\">deÄŸiÅŸtirebilirsin</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:42
#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "Saygılarımızla, <BR> Site yönetimi"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
msgstr ""
-"Eğer bu mesajın size yanlışlıkla gönderildiğini düşünüyorsanız, hiçbir şey "
-"yapmanıza gerek yok. <BR> Bu mesajı dikkate almayın. <BR> Bu durum için özür "
-"dileriz."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "0"
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "Bu soruyu tekrar aç"
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "oy geçerli sayısı"
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr "anonim"
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "soruldu"
+
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "cevaplandı"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "yollandı"
+
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "güncellendi"
+
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "'%(tag)s' etiketli sorulara bak"
+
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "bu yorumu sil"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr "<CODE>%(username)s</code> Gravatar görüntüsü"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "karmanız %(reputation)s"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "önceki"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "ÅŸuanki sayfa"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "sayfa numarası %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "sonraki sayfa"
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "bir kullanıcı adı seçin"
+
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "Yeni bir cevabın var"
+msgstr[1] "Yeni %(response_count)s cevapların var"
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "ÅŸu an yeni cevap yok"
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "Ä°lk iÅŸaretlenen ileti"
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts"
+msgstr "Ä°lk iÅŸaretlenen ileti"
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, fuzzy, python-format
+msgid "%(seen)s flagged posts"
+msgstr "Ä°lk iÅŸaretlenen ileti"
+
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "Sorular"
+
+#: skins/default/templates/question.html:110
+#, fuzzy
+msgid "post a comment / <strong>some</strong> more"
+msgstr "dah fazla<strong>%(counter)s</strong>gör"
+
+#: skins/default/templates/question.html:113
+#, fuzzy
+msgid "see <strong>some</strong> more"
+msgstr "dah fazla<strong>%(counter)s</strong>gör"
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "yorum ekle"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "Kendi soruna cevap yaz!"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "Cevabınız"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Cevap yollamak için üye girişi yapmalısınız"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "Soruyu düzenle"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Ä°lgili sorular"
+
+#: skins/default/templates/question_retag.html:21
+#, fuzzy
+msgid "Retag"
+msgstr "etiketler"
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "Neden etiket kullanıyor ve bunu değiştiriyoruz?"
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr "Etiketler içeriğin düzenli ve aranabilir olmasını sağlar"
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "etiket editörleri, sitemizden özel ödül almaktadır"
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "en fazla 5 etiket, her etiket en fazla 20 karakter"
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "Soruyu yeniden aç"
+
+#: skins/default/templates/reopen.html:6
+#, fuzzy
+msgid "Title"
+msgstr "başlık"
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
msgstr ""
-#: utils/decorators.py:109
+#: skins/default/templates/reopen.html:16
#, fuzzy
-msgid "Please login to post"
+msgid "Close reason:"
+msgstr "Soruyu kapat"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Bu soruyu tekrar aç"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "Bu soruyu tekrar aç"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "düzenleme geçmişi"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "düzenlemeleri gizle/göster"
+
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "Tema medya dosyaları versiyon numarası"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "etiketleri kullan"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+#, fuzzy
+msgid "Please, subscribe for the following tags:"
+msgstr "Soru şu sebepten dolayı kaldırıldı:"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "etiketleri kullan"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "Etiket listesi"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+#, fuzzy
+msgid "Sort by &raquo;"
+msgstr "Sıralama:"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "alfabetik sıraya göre"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "isime göre"
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "etiket kullanım sıklığına göre"
+
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "popülerliğe göre"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "Hiçbir şey bulunamadı"
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "Kullanıcılar"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "son"
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "kullanıcı tarafından"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "kullanıcı sorgusuna eşleşen %(suser)s :"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "Hiçbir şey bulunamadı."
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s soru"
+msgstr[1] "%(q_num)s soru"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "%(author_name)s 'ın katkılarıyla"
+
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "etiketlendi"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "Arama ipuçları:"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "yazarı sil"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#, fuzzy
+msgid " or "
+msgstr "veya"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "etiketleri temizle"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "baÅŸtan baÅŸla"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+"- daha fazla etiket eklemek veya incelemek için inceleme alanını genişlet"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "Arama ipucu:"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "etiketleri kullanmak, arama sonucuna tam olarak odaklanmanızı sağlar"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "Harika! Cevapsız bir soru bile kalmamış..."
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "Malesef, henüz beğenilmiş bir soru mevcut değil."
+
+#: skins/default/templates/main_page/nothing_found.html:8
+#, fuzzy
+msgid "Please follow some questions or follow some users."
+msgstr "Beğendiğiniz soruları, favorilerinize ekleyebilirsiniz."
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "Ayrıntılı arama yapabilirsiniz"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "yazar sıfırlanıyor"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "etiketler sıfırlanıyor"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "baştan başlıyor"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr ""
+"Asla soru sormaktan çekinmeyin! Sorun ki, sayenizde başkaları da öğrensin!"
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "Aradığını bulamadın mı?"
+
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "Hemen kendi sorunu yolla!"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "soruya ve cevaplarına abone ol"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "Her etiket en fazla %(max_chars)d karakter içerebilir"
+msgstr[1] "Her etiket en fazla %(max_chars)d karakter içerebilir"
+
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "En fazla %(tag_count)d etiket kullanabilirsiniz"
+msgstr[1] "En fazla %(tag_count)d etiket kullanabilirsiniz"
+
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "en fazla 5 etiket, her etiket en fazla 20 karakter"
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"%(counter)s Cevap:"
+msgstr[1] ""
+"\n"
+"%(counter)s Cevaplar:"
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr "Sıralama:"
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "ilk önce eski cevaplar görünecek"
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "yeni cevaplar ilk önce görünecek"
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "çok oy alan cevaplar önce görünsün"
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Cevap yollamak için üye girişi yapmalısınız"
+
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "Cevabınız"
+
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "Bu soruya ilk cevabı sen yaz!"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+#, fuzzy
+msgid " or"
+msgstr "veya"
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "E-mail"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Etiketleri"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "En ilgi çekici soruyu gormek için tıklayın"
+
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Tüm sorular"
+
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Tüm sorular"
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "En ilgi çekici soruyu gormek için tıklayın"
+
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Tüm sorular"
+
+#: skins/default/templates/question/sidebar.html:23
+#, fuzzy, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "E-mail güncellemeleri iptal edildi"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "soruya ve cevaplarına abone ol"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "soruya ve cevaplarına abone ol"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "soruldu"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "kez"
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "son güncelleme"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "Ä°lgili sorular"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr "Yeni cevaplar için beni haftalık olarak uyar"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+#, fuzzy
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question.güncellemelerden "
+"haberdar olmak için kaydolun."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)s isimli kullanıcının profili"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "Kullanıcı profilini düzenle"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "profil deÄŸiÅŸtir"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "resim deÄŸiÅŸtir"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "Kayıtlı kullanıcı"
+
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "Görünen isim"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "Hesap silindi."
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "Güncelleme"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr "e-mail abonelikleri"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "E-mail abonelik ayarları"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "E-mail adresiniz"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Tüm sorular"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "sorular"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "En fazla %(tag_count)d etiket kullanabilirsiniz"
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+#, fuzzy
+msgid "select:"
+msgstr "sil"
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "son görülme"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+#, fuzzy
+msgid "new"
+msgstr "en yeni"
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+#, fuzzy
+msgid "none"
+msgstr "bronz"
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "son görülme"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+#, fuzzy
+msgid "mark as new"
+msgstr "en iyi cevap olarak iÅŸaretlenmiÅŸ"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "tüm etiketleri gör"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "sil"
+
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "profilimi güncelle"
+
+#: skins/default/templates/user_profile/user_info.html:40
+#, fuzzy
+msgid "manage login methods"
msgstr "Kullanıcı girişi"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "gerçek ismi"
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "üyelik başlangıcı"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "son görülme"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Website\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"Ä°nternet sitesi"
+
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "yer"
+
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "yaÅŸ"
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "yaşında"
+
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "bugün kullanılmayan oy"
+
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "oy kullandı"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "Yer"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, fuzzy, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "karmanız %(reputation)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+#, fuzzy
+msgid "User status changed"
+msgstr "toplulukta kullanıcının itibarı"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+#, fuzzy
+msgid "Save"
+msgstr "DeÄŸiÅŸikliÄŸi kaydet"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, fuzzy, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "karmanız %(reputation)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, fuzzy, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "karmanız %(reputation)s"
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "toplulukta kullanıcının itibarı"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "Ekle"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "bir kullanıcı adı seçin"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "mesajlar/"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+#, fuzzy
+msgid "Send message"
+msgstr "mesajlar/"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr "Dondurulan kullanıcılar ileti yapamaz"
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, fuzzy, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, fuzzy, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "%(username)s isimli kullanıcının profili"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+#, fuzzy
+msgid "activity"
+msgstr "aktif"
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "Karma değişiklik kayıtları"
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "%(user_name)s 'nin karma değişim günlüğü"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "genel bakış"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">1</span> Madalya"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Madalya"
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "cevap"
+msgstr[1] "cevap"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "cevap için %(answer_score)s kez oy kullanıldı"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, fuzzy, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "yorum ekle"
+msgstr[1] "yorum ekle"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> Oy"
+msgstr[1] "<span class=\"count\">%(cnt)s</span> Oy"
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "beÄŸen"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "kullanıcılar tarafından defalarca beğendi"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "beÄŸenme"
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "kullanıcılar tarafından defalarca beğenilmedi"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> Etiket"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Etiket"
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, fuzzy, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">1</span> Madalya"
+msgstr[1] "<span class=\"count\">%(counter)s</span> Madalya"
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "cevap ipuçları"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "Kullanıcı profili"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "diÄŸer sorulara cevaplar ve yorumlar"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "kullanıcı itibar grafiği"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+#, fuzzy
+msgid "questions that user is following"
+msgstr "kullanıcının favori olarak seçtiği sorular"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "kullanıcı oy rekoru"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "oy"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "E-mail abonelik ayarları"
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+#, fuzzy
+msgid "moderate this user"
+msgstr "Bu kullanıcıyı yönet"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "Cevabınızın sitemizdeki konu ile alakalı olmasına dikkat edin"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "tartışmaya girmek yerine, soruya bir cevap vermeye çalışın"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "yeterince ayrıntılı olmasına çalışın"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "sorunuzun açık ve kısa olmasına çalışın"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "sık sorulan soruları gör"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "İpuçları"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+#, fuzzy
+msgid "*italic* or _italic_"
+msgstr "* Italik * veya __italic__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "** Kalın ** veya __bold__"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "metin"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "resim"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "numaralandırılmış liste:"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "temel HTML etiketleri de desteklenmektedir"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "Markdown hakkında daha fazla bilgi"
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "soru bilgisi göndermek için giriş yapın"
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "Yazarlar"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "hakkımızda"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "gizlilik politikası"
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "görüşlerinizi bildirin"
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "anasayfaya geri dön"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "kullanıcılar"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "rozetler"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "Cevabınızın sitemizdeki konu ile alakalı olmasına dikkat edin"
+
+#: skins/default/templates/widgets/question_summary.html:12
+#, fuzzy
+msgid "view"
+msgid_plural "views"
+msgstr[0] "izlenme"
+msgstr[1] "izlenme"
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "cevap"
+msgstr[1] "cevap"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "oy/"
+msgstr[1] "oy/"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "TÜMÜ"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "cevapsız sorular gör"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "YANITLANMAMIÅž"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "beğendiğiniz soruları gör"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "TAKÄ°P EDÄ°LEN"
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "Siz de sorun!!"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "karma:"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "rozetler:"
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "cikis/"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "Lütfen buradan giriş yapın:"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "Ayarlar"
+
+#: templatetags/extra_filters_jinja.py:279
+#, fuzzy
+msgid "no"
+msgstr "bronz"
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "Ahh, özür dileriz - bir hata meydana geldi"
+
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "Yazmak için lütfen giriş yapınız"
+
#: utils/decorators.py:205
msgid "Spam was detected on your post, sorry for if this is a mistake"
-msgstr ""
+msgstr "İletinizde spam içerik tespit edildi, eğer bu bir hataysa özür dileriz"
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr "bu alanın doldurulması gereklidir"
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "bir kullanıcı adı seçin"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr "kullanıcı adı doldurulması gerekli alandır"
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr "üzgünüm, bu isim başkası tarafından kullanılıyor."
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr ""
"Üzgünüm, bu ismin kullanılmasına izin verilmiyor. Başka bir tane deneyin."
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr "Üzgünüm, bu isimle kayıtlı bir kullanıcı yoktur"
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
"Üzgünüm, ciddi bir sorun var! Bu kullanıcı adı farklı kullanıcılar "
"tarafından alınmıştır."
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr "kullanıcı adı sadece harf, rakam veya altçizgiden oluşur"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "e-posta adresin"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+"lütfen kullanıcı isminize en azından bir kaç alfabetik karakter ekleyin"
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr "E-mail adresinizi yazmalısınız"
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr "geçerli bir e-mail adresi girin"
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr ""
"Bu E-mail sitemizde kullanılıyor. Şifre hatırlatmayı deneyebilir ya da "
"yeniden kayıt olabilirsiniz."
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "şifre seçin"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr "şifre yazmalısınız."
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "şifreyi yeniden yazın"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr "lütfen şifrenizi yeniden yazın"
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr "Üzgünüm, şifreler uyuşmuyor lütfen tekrar deneyin."
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr "2 gün önce"
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr "dün"
-#: utils/functions.py:79
+#: utils/functions.py:87
#, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] "%(hr)d saat önce"
msgstr[1] "%(hr)d saat önce"
-#: utils/functions.py:85
+#: utils/functions.py:93
#, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] "%(min)d dakika önce"
msgstr[1] "%(min)d dakika önce"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
msgstr ""
@@ -3775,295 +6714,342 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "üye girişi yapmadan gelen kutusuna bakamazsınız."
+
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
msgstr "üye girişi yapmadan oy kullanamazsınız"
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr ""
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr ""
-#: views/commands.py:122
-#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "üye girişi yapmadan oy kullanamazsınız"
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr ""
-#: views/commands.py:207
-#, fuzzy
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "üye girişi yapmadan oy kullanamazsınız"
+msgstr "üye girişi yapmadan cevap veremezsiniz."
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"Your subscription is saved, but email address %(email)s needs to be "
"validated, please see <a href='%(details_url)s'>more details here</"
"a>aboneliÄŸiniz kaydedildi %(email)s adresindeki doÄŸrulama linkini "
"tıklamalısınız. Ayrıntılar için: %(details_url)s"
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr "E-mail güncelleme sıklığı günlük olarak belirtilmiştir."
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
+#: views/commands.py:473
#, fuzzy, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr "Lütfen, giriş yapın veya askbot'a katılın"
-#: views/commands.py:542
-#, fuzzy
+#: views/commands.py:600
msgid "Please sign in to vote"
-msgstr "Lütfen buradan giriş yapın:"
+msgstr "Lütfen oy vermek için giriş yapın:"
+
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "Lütfen oy vermek için giriş yapın:"
-#: views/meta.py:84
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "%(date)s tarihinde"
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr "Sorucevap.de geribildirim"
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr "Görüşleriniz için teşekkür ederiz!"
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
"Görüşlerinizi bekliyoruz! Lütfen bize, yakın bir zamanda mutlaka sitemiz "
"hakkındaki görüşlerinizi bildirin :)"
-#: views/readers.py:151
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "Gizlilik politikası"
+
+#: views/readers.py:133
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "%(q_num)s soru"
msgstr[1] "%(q_num)s soru"
-#: views/readers.py:159
-#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s soru"
-msgstr[1] "%(q_num)s soru"
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d%(badge_level)s rozet"
-msgstr[1] "%(badge_count)d%(badge_level)s rozetler"
-
-#: views/readers.py:415
+#: views/readers.py:388
#, fuzzy
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr "bu soru favori olarak seçildi"
-#: views/users.py:211
-#, fuzzy
-msgid "moderate this user"
-msgstr "Bu kullanıcıyı yönet"
-
-#: views/users.py:212
+#: views/users.py:206
#, fuzzy
msgid "moderate user"
msgstr "yoneticiler/"
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr "kullanıcı profili"
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr "kullanıcı profiline genel bakış"
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr "son kullanıcı etkinliği"
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr "profil - son etkinlikler"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "diÄŸer sorulara cevaplar ve yorumlar"
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr "profil - cevapları"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "kullanıcı oy rekoru"
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr "profil - oy"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "toplulukta kullanıcının itibarı"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "karma:"
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "profil - kullanıcı itibarı"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr "kullanıcının favori soruları"
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr "profil - favori sorular"
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr "deÄŸiÅŸiklikler kaydedildi"
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr "E-mail güncellemeleri iptal edildi"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "E-mail abonelik ayarları"
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr "profil - e-mail abonelikleri"
-#: views/writers.py:58
+#: views/writers.py:60
#, fuzzy
msgid "Sorry, anonymous users cannot upload files"
msgstr "üye girişi yapmadan oy kullanamazsınız"
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr "izin verilen dosya türleri '%(file_types)s'"
-#: views/writers.py:91
+#: views/writers.py:84
#, fuzzy, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr "maksimum dosya yükleme boyutu %s Kb"
-#: views/writers.py:99
+#: views/writers.py:92
#, fuzzy
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
"Yükleme dosyası hatası! Lütfen site yöneticisi ile iletişime geçin. Teşekkür "
"ederiz. %s"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
msgstr ""
-"Asla soru sormaktan çekinmeyin! Sorun ki, sayenizde başkaları da öğrensin!"
-#: views/writers.py:492
-#, fuzzy
+#: views/writers.py:466
msgid "Please log in to answer questions"
-msgstr "cevapsız sorular gör"
+msgstr "Soruları cevaplandırmak için giriş yapınız"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:646
+#: views/writers.py:589
#, fuzzy
msgid "Sorry, anonymous users cannot edit comments"
msgstr "üye girişi yapmadan oy kullanamazsınız"
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
-msgstr ""
+msgstr "Özür dileriz, bazı teknik sorunlar yaşıyoruz"
-#~ msgid "Sites"
-#~ msgstr "Siteler"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "bu-yazıları-etiket-olarak-kullan"
-#~ msgid "Documentation"
-#~ msgstr "Belgelendirme"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "bu e-posta gravatar bağlantılı olacaktır"
-#~ msgid "Change password"
-#~ msgstr "Åžifre deÄŸiÅŸtir"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "LDAP servisi için URL"
-#~ msgid "Log out"
-#~ msgstr "Güvenli Çıkış"
+#, fuzzy
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Hesabınız: Şifremi değiştir"
-#~ msgid "Home"
-#~ msgstr "Anasayfa"
+#~ msgid "question_answered"
+#~ msgstr "cevaplanmış_soru"
-#~ msgid "Edit Group Settings"
-#~ msgstr "Grup Ayarlarını Düzenle"
+#~ msgid "question_commented"
+#~ msgstr "yorumlanmış soru"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "Lütfen aşağıdaki hatayı düzeltin:"
-#~ msgstr[1] "Lütfen aşağıdaki hataları düzeltin:"
+#~ msgid "answer_commented"
+#~ msgstr "yorumlanmış soru"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "%(name)s içerisinde yer alan ayarlar."
+#~ msgid "answer_accepted"
+#~ msgstr "kabul edilmiÅŸ soru"
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "Değerleri değiştirmek için yetkin yok."
+#~ msgid "Incorrect username."
+#~ msgstr "Hatalı kullanıcı adı."
-#~ msgid "Edit Site Settings"
-#~ msgstr "Site Ayarlarını Düzenle"
+#, fuzzy
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Dear %(name)s,</p></p>The following question has been updated on the "
+#~ "Q&A forum:</p>"
+#~ msgstr[1] ""
+#~ "<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated "
+#~ "on the Q&A forum:</p>"
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "\"Livesettings\" bu site için devre dışı bırakılmıştır."
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Lütfen askbot'u ziyaret edin ve yeniliklerden haberdar olun! İnsanlara "
+#~ "burada olani biteni anlatın. Belki buradaki soruları cevaplayabilecek "
+#~ "veya soru sorarak askbot'tan faydalanabilecek birilerini tanıyorsunuzdur."
#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
-#~ msgstr "Tüm yapılandırma seçenekleri settings.py dosyasında düzenlenmelidir"
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "Seçili sorulara aboneliğiniz 'günlük' olarak görünüyor. Eğer birden fazla "
+#~ "e-posta alıyorsanız, lütfen bunu bize bildirin."
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "Grup ayarları: %(name)s"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "Seçili sorulara aboneliğiniz 'haftalık' olarak görünüyor. Eğer birden "
+#~ "fazla e-posta alıyorsanız, lütfen bunu bize bildirin."
-#~ msgid "Uncollapse all"
-#~ msgstr "Hepsini kapat"
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr "Ölen linkleri önceden görme şansın olabilir. "
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
+#~ "frequency of the email updates or turn them off entirely.<br/>If you "
+#~ "believe that this message was sent in an error, please email about it the "
+#~ "forum administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly "
+#~ "Q&A forum server.</p>"
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "resim göndermek için en az %(min_rep)s puan toplamalısınız"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr "Engellenen kullanıcılar ileti yapamaz"
+
+#~ msgid "suspended users cannot post"
+#~ msgstr "Dondurulan kullanıcılar ileti yapamaz"
+
+#, fuzzy
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "Engellenen kullanıcılar ileti yapamaz"
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "Dondurulan kullanıcılar ileti yapamaz"
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "giriÅŸ/"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "Dondurulan kullanıcılar ileti yapamaz"
+
+#~ msgid "cannot revoke old vote"
+#~ msgstr "verilen bir oyu iptal edemezsiniz"
+
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s soruyu düzenledi"
-#~ msgid "Change email"
-#~ msgstr "E-mai deÄŸiÅŸtir"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s adlı üyemiz %(new_answer_count)s yeni cevap yolladı"
-#~ msgid "Save your email address"
-#~ msgstr "E-mail adresinizi kaydedin"
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s bir soruyu yorumladı"
+
+#~ msgid "%(people)s commented answers"
+#~ msgstr ""
+#~ "suggest forum/models/question.py:508\n"
+#~ " \n"
+#~ "%(people)s cevaba yorum yazdı"
+
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s bir cevabı yorumladı"
#~ msgid "change %(email)s info"
#~ msgstr "bilgileri %(email)s deÄŸiÅŸtir"
@@ -4083,18 +7069,6 @@ msgstr ""
#~ msgid "Your new Email"
#~ msgstr "Yeni e-posta adresiniz"
-#~ msgid "Your Email"
-#~ msgstr "E-mail adresiniz"
-
-#~ msgid "Save Email"
-#~ msgstr "E-mail adresini kaydet"
-
-#~ msgid "Cancel"
-#~ msgstr "Iptal"
-
-#~ msgid "Validate email"
-#~ msgstr "E-mail adresini doÄŸrula"
-
#, fuzzy
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
@@ -4102,12 +7076,9 @@ msgstr ""
#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
#~ "your web browser. Email validation is necessary to help insure the proper "
#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>. %(email)s adresini doğrulayın ya "
-#~ "da %(change_email_url)s adresine gidin."
-
-#~ msgid "Email not changed"
-#~ msgstr "E-mail deÄŸiÅŸmedi"
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>. "
+#~ "%(email)s adresini doğrulayın ya da %(change_email_url)s adresine gidin."
#, fuzzy
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
@@ -4119,15 +7090,9 @@ msgstr ""
#~ "%(email)s saklansın diyorsanız, %(change_email_url)s adresi size yardımcı "
#~ "olacaktır."
-#~ msgid "Email changed"
-#~ msgstr "E-mail deÄŸiÅŸtirildi"
-
#~ msgid "your current %(email)s can be used for this"
#~ msgstr "Şimdiki %(email)s bunun için kullanılabilir"
-#~ msgid "Email verified"
-#~ msgstr "E-mail doğrulandı"
-
#~ msgid "thanks for verifying email"
#~ msgstr "E-posta adresinizi onayladığınız için teşekkürler"
@@ -4140,10 +7105,6 @@ msgstr ""
#~ "%(change_link)s adresine bakın."
#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "Kayıt"
-
-#, fuzzy
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "<p><span class=\"big strong\">You are here for the first time with your "
@@ -4166,13 +7127,13 @@ msgstr ""
#~ "is already used in another account.</span></p><p>Please choose another "
#~ "screen name to use with your %(provider)s login. Also, a valid email "
#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>%(username)s kullanıcı adı, %(provider)s "
-#~ "için başka birisi tarafından alınmıştır. Başka bir isim deneyin. Lütfen "
-#~ "okuyun: %(gravatar_faq_url)s"
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>%(username)s kullanıcı "
+#~ "adı, %(provider)s için başka birisi tarafından alınmıştır. Başka bir isim "
+#~ "deneyin. Lütfen okuyun: %(gravatar_faq_url)s"
#, fuzzy
#~ msgid ""
@@ -4222,9 +7183,6 @@ msgstr ""
#~ "per week</strong> - only when there is anything new.<br/>If you like, "
#~ "please adjust this now or any time later from your user account."
-#~ msgid "please select one of the options above"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
-
#~ msgid "Tag filter tool will be your right panel, once you log in."
#~ msgstr ""
#~ "Etiket filtreleme aracı sağ panelde, oturum açınca bir kez görünecektir."
@@ -4232,81 +7190,18 @@ msgstr ""
#~ msgid "create account"
#~ msgstr "hesap oluÅŸtur"
-#~ msgid "Logout"
-#~ msgstr "Çıkış"
-
-#~ msgid "User login"
-#~ msgstr "Kullanıcı girişi"
-
-#, fuzzy
#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>\"%(title)s\" başlıklı soruya yazdığınız "
-#~ "\"%(summary)s\" cevabını yollamak için giriş yapmalısınız."
-
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>\"%(title)s\" başlıklı \"%(summary)s\" "
-#~ "sorunuzu yollamak için giriş yapmalısınız."
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Lütfen kullanıcı adınızı ve şifrenizi girin"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "e-mail yok"
-
-#~ msgid "Password"
-#~ msgstr "Åžifre"
+#~ "Eğer bu mesajın size yanlışlıkla gönderildiğini düşünüyorsanız, hiçbir "
+#~ "şey yapmanıza gerek yok. <BR> Bu mesajı dikkate almayın. <BR> Bu durum "
+#~ "için özür dileriz."
#~ msgid "Login"
#~ msgstr "GiriÅŸ"
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "Yeni ÅŸifre ayarla"
-
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "lütfen şifrenizi yeniden yazın"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "son görülme"
-
-#~ msgid "delete"
-#~ msgstr "sil"
-
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "Hesap silindi."
-
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "Hala aklınıza takılan bir soru mu var?"
-
-#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "Hesabınıza yeni bir şifre verin."
-
-#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "Hesabınıza yeni bir şifre verin."
-
#~ msgid "Why use OpenID?"
#~ msgstr "Neden OpenID kullanıyoruz?"
@@ -4337,20 +7232,6 @@ msgstr ""
#~ msgid "Get OpenID"
#~ msgstr "OpenID hesabı açın"
-#~ msgid "Signup"
-#~ msgstr "Kaydol"
-
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "Lütfen yukarıdaki seçeneklerden birini seçin"
-
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Kullanıcı adı ve şifre oluştur"
-
-#~ msgid "Create login name and password"
-#~ msgstr "Kullanıcı adı ve şifre oluştur"
-
#, fuzzy
#~ msgid "Traditional signup info"
#~ msgstr ""
@@ -4361,306 +7242,38 @@ msgstr ""
#~ "sharing your login details with anyone and having to remember yet another "
#~ "password."
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr ""
-#~ "Lütfen aşağıdaki iki kelimeyi yazın. Çünkü bazı otomatik hesap "
-#~ "oluşturucular, sitemize böyle kayıt olup, gerçek olmayan içerikler "
-#~ "eklemektedir."
-
#~ msgid "Create Account"
#~ msgstr "Hesap oluÅŸtur"
-#~ msgid "or"
-#~ msgstr "veya"
-
-#~ msgid "return to OpenID login"
-#~ msgstr "OpenID girişine dön"
-
-#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "Gravatar nedir?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Etiket deÄŸiÅŸtir"
-
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "Hesap ayrıntılarınız şöyledir:"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "deÄŸiÅŸiklikler kaydedildi"
-
-#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "yukle/"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "silinmiÅŸ cevap"
-
-#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "silinmiÅŸ cevap"
-
#~ msgid "answer permanent link"
#~ msgstr "kalıcı bağlantıyı cevapla"
-#~ msgid "permanent link"
-#~ msgstr "kalıcı bağlantı"
-
-#~ msgid "edit"
-#~ msgstr "deÄŸiÅŸtir"
-
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr "şikayet et (spam, reklam, kötü amaçlı yazı vb. içeriyor)"
-
-#~ msgid "flag offensive"
-#~ msgstr "ÅŸikayet et"
-
-#~ msgid "undelete"
-#~ msgstr "silineni geri al"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Cevabı yayınla"
-
#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "bu cevabı favori olarak işaretle (geri almak için tıklayın)"
+#~ msgid "remove all flags"
+#~ msgstr "tüm etiketleri gör"
#, fuzzy
#~ msgid "%(question_author)s has selected this answer as correct"
#~ msgstr "bu soruyu yazan kişi, bu cevabı doğru olarak seçti"
-#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr "Soru şu nedenle kapatılmış olabilir: %(close_reason)s"
-
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "kapatılma tarihi %(closed_at)s"
-
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "yeniden etiketlendi"
-
-#~ msgid "reopen"
-#~ msgstr "yeniden aç"
-
-#~ msgid "close"
-#~ msgstr "kapat"
-
-#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "bu alanın doldurulması gereklidir"
-
-#~ msgid "(required)"
-#~ msgstr "(gerekli)"
-
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "Toggle gerçek zamanlı Markdown editörü önizleme"
-
-#~ msgid "hide preview"
-#~ msgstr "önizlemeyi gizle"
-
#~ msgid "Related tags"
#~ msgstr "Ä°lgili etiketler"
-#~ msgid "Interesting tags"
-#~ msgstr "İlginç etiketler"
-
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "Ekle"
-
-#~ msgid "Ignored tags"
-#~ msgstr "Yoksayılan etiketler"
-
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "E-mail etiketi için filtre seç"
-
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "Üzgünüz, istediğiniz sayfayı bulamadık."
-
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "Bu durum, aşağıdaki sebeplerden dolayı olabilir:"
-
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "bu soru ya da cevap silindi;"
-
-#~ msgid "url has error - please check it;"
-#~ msgstr "adres hatası var - tekrar kontrol edin;"
-
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr ""
-#~ "ziyaret etmeye çalıştığınız sayfa korumalıdır ya da görmek için yeterince "
-#~ "puanınız yoktur"
-
-#~ msgid "faq"
-#~ msgstr "sss"
-
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "Hata kodu 404: lütfen"
-
-#~ msgid "report this problem"
-#~ msgstr "Bu sorunu yöneticiye bildir"
-
-#~ msgid "back to previous page"
-#~ msgstr "önceki sayfaya geri dön"
-
-#~ msgid "see all questions"
-#~ msgstr "tüm soruları gör"
-
-#~ msgid "see all tags"
-#~ msgstr "tüm etiketleri gör"
-
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr ""
-#~ "Bu hata, sistem hata günlüğüne kayıt edildi. En kısa sürede çözümlenmesi "
-#~ "için uğraşacağız."
-
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "isterseniz hata raporunu site yöneticilerine bildirin"
-
-#~ msgid "see latest questions"
-#~ msgstr "son soruları gör"
-
-#~ msgid "see tags"
-#~ msgstr "etiketleri gör"
-
-#~ msgid "Edit answer"
-#~ msgstr "Cevapı düzenle"
-
-#~ msgid "back"
-#~ msgstr "geri"
-
-#~ msgid "revision"
-#~ msgstr "revizyon"
-
-#~ msgid "select revision"
-#~ msgstr "revizyon seç"
-
-#~ msgid "Save edit"
-#~ msgstr "DeÄŸiÅŸikliÄŸi kaydet"
-
-#~ msgid "show preview"
-#~ msgstr "önizlemeyi göster"
-
#~ msgid "Ask a question"
#~ msgstr "Soru sor"
-#, fuzzy
-#~ msgid "%(name)s"
-#~ msgstr "%(date)s tarihinde"
-
-#~ msgid "Badge"
-#~ msgstr "Madalya"
-
-#, fuzzy
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "%(date)s tarihinde"
-
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "e-mail abonelikleri"
-
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "kullanıcı bu rozeti elde etti:"
-#~ msgstr[1] "kullanıcılar bu rozeti elde ettiler:"
-
#~ msgid "Badges summary"
#~ msgstr "Madalya özeti"
-#~ msgid "Badges"
-#~ msgstr "Ödüller"
-
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "Sorularınız, cevaplarınız ve oylarınız için burdaki topluluk sizi "
-#~ "ödüllendiriyor."
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Below is the list of available badges and number \n"
-#~ " of times each type of badge has been awarded. Have ideas about fun "
-#~ "badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Site rozetleri"
-
#~ msgid "gold badge description"
#~ msgstr "altın rozetin açıklaması"
#~ msgid "silver badge description"
#~ msgstr "gümüş rozetin açıklaması"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "bronz madalya: genellikle özel bir onur olarak verilir"
-
#~ msgid "bronze badge description"
#~ msgstr "bronze rozetin açıklaması"
-#~ msgid "Close question"
-#~ msgstr "Soruyu kapat"
-
-#~ msgid "Close the question"
-#~ msgstr "Cevabı kapat"
-
-#~ msgid "Reasons"
-#~ msgstr "Nedenleri"
-
-#~ msgid "OK to close"
-#~ msgstr "Kapatmak için OK butonuna bas"
-
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "Sıkça Sorulan Sorular"
-
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "Ne tür sorular sorabilirim?"
-
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "En önemli sorular sitemizde <strong>önemli</strong> şeklinde "
-#~ "gösterilmektedir."
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Soru sormadan önce, öncelikle sitemizde bir arama yapın. Belki bu soru ve "
-#~ "cevabı sitemizde bulunmaktadır."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "Ne tür sorulardan kaçınmalıyım?"
-
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "Lütfen, çok subjektif ve tartışmacı olan, sitemizle ilgili olmayan "
-#~ "sorular sormaktan kaçının."
-
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "Cevaplarımda nelere dikkat etmeliyim?"
-
#~ 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 "
@@ -4670,25 +7283,6 @@ msgstr ""
#~ "Bu nedenle cevaplarınızı, tartışmalardan kaçınacak şekilde, yorum ve "
#~ "karşılıklı fikir alışverişine dayalı şekilde yazınız."
-#~ msgid "Who moderates this community?"
-#~ msgstr "Bu siteyi kimler yönetiyor?"
-
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "Cevabı çok açık: <strong>Sen!</strong> Yani sizlersiniz! "
-
-#~ msgid "This website is moderated by the users."
-#~ msgstr "Bu web sitesi, kullanıcıları tarafından yönetilmektedir."
-
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "İtibar sistemi, kullanıcılarımızın sitedeki yetkilendirme ve "
-#~ "yazdıklarının doğruluğu konusunda fikir verir."
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "İtibar sistemi nasıl çalışmaktadır?"
-
#, fuzzy
#~ msgid "Rep system summary"
#~ msgstr ""
@@ -4697,62 +7291,9 @@ msgstr ""
#~ "rough measure of the community trust to him/her. Various moderation tasks "
#~ "are gradually assigned to the users based on those points."
-#, fuzzy
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "Örneğin, ilginç bir soru sordunuz ya da yararlı bir cevap verdiniz. Doğal "
-#~ "olarak bu durum, diğer kullanıcılarımız tarafından beğenilecektir. Diğer "
-#~ "taraftan da, eğer cevabınız doğru değilse ya da yanıltıcı ise "
-#~ "beğenilmeyecektir. Sistem, beğenilen her soru veya cevap yazınız için "
-#~ "size <strong>10</strong> puan verirken, beğenilmeyen soru veya cevabınız "
-#~ "için <strong>2</strong> puan düşmektedir. Her soru veya cevaptan "
-#~ "alabileceÄŸiniz en fazla puan <strong>200</strong> ile "
-#~ "sınırlandırılmıştır. Aşağıdaki tablo, itibar sisteminden toplanan puanlar "
-#~ "ile neler yapılabileceğini göstermektedir."
-
-#~ msgid "upvote"
-#~ msgstr "beÄŸendim"
-
#~ msgid "use tags"
#~ msgstr "etiketleri kullan"
-#~ msgid "add comments"
-#~ msgstr "yorum ekle"
-
-#~ msgid "downvote"
-#~ msgstr "beÄŸenmedim"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Kendi soruna verdiÄŸin ilk kabul edilmiÅŸ cevap"
-
-#~ msgid "open and close own questions"
-#~ msgstr "kendi sorularım açık ve kapalı "
-
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "soruları yeniden etiketle"
-
-#~ msgid "edit community wiki questions"
-#~ msgstr "sitenin wiki sorularını değiştir"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "herhangi bir cevabı değiştir"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "bir yorumu sil"
-
#~ msgid "what is gravatar"
#~ msgstr "Gravatar nedir?"
@@ -4760,175 +7301,6 @@ msgstr ""
#~ msgid "gravatar faq info"
#~ msgstr "gravatar sss bilgi"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "Kaydolmak için, yeni bir şifre yaratmalı mıyım?"
-
-#, fuzzy
-#~ msgid ""
-#~ "No, you don't have to. You can login through any service that supports "
-#~ "OpenID, e.g. Google, Yahoo, AOL, etc.\""
-#~ msgstr ""
-#~ "Hayır, bu şart değil. Eğer OpenID destekleyen herhangi bir hizmete üye "
-#~ "isen, mesela Facebook, Twitter, Google Mail, Yahoo, AOL, vb aracılığıyla "
-#~ "da giriÅŸ yapabilirsiniz."
-
-#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Åžimdi giriÅŸ yap!"
-
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr ""
-#~ "Neden başkaları benim sorumu ya da cevabımı düzenleyebiliyor ve "
-#~ "deÄŸiÅŸtirebiliyorlar?"
-
-#~ msgid "Goal of this site is..."
-#~ msgstr "İşte bu, sitenin en önemli amaçlarından biridir..."
-
-#~ 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 ""
-#~ "Böylelikle sorular ve cevaplar aynen wiki sayfaları gibi sitenin "
-#~ "deneyimli kullanıcıları tarafından değiştirilip düzenlenebilir. Bu ise "
-#~ "bilgi site içeriğimizin kalitesini artırır."
-
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr ""
-#~ "Bu değişiklikler size uygun değilse, sizin seçiminize saygılı değilse, "
-#~ "lütfen bize bildirin."
-
-#~ msgid "Still have questions?"
-#~ msgstr "Hala aklınıza takılan bir soru mu var?"
-
-#, fuzzy
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
-#~ "our community better!Lütfen sorularınızı %(ask_question_url)s kısmına "
-#~ "yazın. Böylelikle bize daha fazla yardımcı olmuş olursunuz."
-
-#~ msgid "Feedback"
-#~ msgstr "Geri bildirim"
-
-#~ msgid "Give us your feedback!"
-#~ msgstr "Görüşlerinizi bize bildirin!"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Sevgili %(user_name)s</span>, sitemizle alakalı "
-#~ "görüş, öneri ve eleştirilerinizi bekliyoruz. Her konuda bize yazmaktan "
-#~ "çekinmeyin."
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>Sevgili ziyaretçimiz</span>, sitemizle alakalı "
-#~ "görüş, öneri ve eleştirilerinizi bekliyoruz. Her konuda bize yazmaktan "
-#~ "çekinmeyin."
-
-#~ msgid "(this field is required)"
-#~ msgstr "(bu alanın doldurulması gereklidir)"
-
-#~ msgid "Send Feedback"
-#~ msgstr "Geribildirim gönder"
-
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>Sevgili %(receiving_user_name)s,</p>"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s, sorusu\"%(origin_post_title)s\"için yeni bir "
-#~ "yorum<a href=\"%%(post_url)s\"></a>yazdı</p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s, sorusu\"%(origin_post_title)s\"için yeni bir "
-#~ "yorum<a href=\"%%(post_url)s\"></a>yazdı</p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s bir soru cevapladı\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s bir soru güncelledi\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s soruya bir cevap güncelledi\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s bir soru güncelledi\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>Lütfen dikkat - bu uyarıların gönderim sıklığını <a href="
-#~ "\"%(user_subscriptions_url)s\">deÄŸiÅŸtirebilirsin</a></p>\n"
-
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "Saygılarımızla, <BR> Site yönetimi"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "Bu soruyu tekrar aç"
-
#, fuzzy
#~ msgid "i like this question (click again to cancel)"
#~ msgstr "bunu beğendim (iptal için tekrar tıklayın)"
@@ -4936,9 +7308,6 @@ msgstr ""
#~ msgid "i like this answer (click again to cancel)"
#~ msgstr "bu cevabı beğendim (iptal etmek için tekrar tıklayın)"
-#~ msgid "current number of votes"
-#~ msgstr "oy geçerli sayısı"
-
#, fuzzy
#~ msgid "i dont like this question (click again to cancel)"
#~ msgstr "bu yazıyı beğenmedim (iptal etmek için tekrar tıklayın)"
@@ -4947,36 +7316,6 @@ msgstr ""
#~ msgstr "bu cevabı beğenmedim (iptal etmek için tekrar tıklayın)"
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "anonim"
-
-#~ msgid "asked"
-#~ msgstr "soruldu"
-
-#~ msgid "answered"
-#~ msgstr "cevaplandı"
-
-#~ msgid "posted"
-#~ msgstr "yollandı"
-
-#~ msgid "updated"
-#~ msgstr "güncellendi"
-
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "'%(tag)s' etiketli sorulara bak"
-
-#~ msgid "delete this comment"
-#~ msgstr "bu yorumu sil"
-
-#~ msgid "add comment"
-#~ msgstr "yorum ekle"
-
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "dah fazla<strong>%(counter)s</strong>gör"
-#~ msgstr[1] "daha fazla<strong>%(counter)s</strong>gör"
-
-#, fuzzy
#~ msgid "see <strong>%(counter)s</strong> more comment"
#~ msgid_plural ""
#~ "see <strong>%(counter)s</strong> more comments\n"
@@ -4986,296 +7325,26 @@ msgstr ""
#~ " "
#~ msgstr[1] "daha fazla yorum <strong>%(counter)s</strong> görün"
-#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "karmanız %(reputation)s"
-
-#~ msgid "previous"
-#~ msgstr "önceki"
-
-#~ msgid "current page"
-#~ msgstr "ÅŸuanki sayfa"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "sayfa numarası %(num)s"
-
-#~ msgid "next page"
-#~ msgstr "sonraki sayfa"
-
#~ msgid "posts per page"
#~ msgstr "sayfa başına mesaj"
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "bir kullanıcı adı seçin"
-
-#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "Yeni bir cevabın var"
-#~ msgstr[1] "Yeni %(response_count)s cevapların var"
-
-#~ msgid "no new responses yet"
-#~ msgstr "ÅŸu an yeni cevap yok"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "Ä°lk iÅŸaretlenen ileti"
-
-#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "Ä°lk iÅŸaretlenen ileti"
-
-#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "Ä°lk iÅŸaretlenen ileti"
-
-#~ msgid "Questions"
-#~ msgstr "Sorular"
-
-#~ msgid "Privacy policy"
-#~ msgstr "Gizlilik politikası"
-
-#~ msgid "Edit question"
-#~ msgstr "Soruyu düzenle"
-
#~ msgid "Change tags"
#~ msgstr "Etiket deÄŸiÅŸtir"
-#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "etiketler"
-
-#~ msgid "Why use and modify tags?"
-#~ msgstr "Neden etiket kullanıyor ve bunu değiştiriyoruz?"
-
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "etiket editörleri, sitemizden özel ödül almaktadır"
-
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "en fazla 5 etiket, her etiket en fazla 20 karakter"
-
-#~ msgid "Reopen question"
-#~ msgstr "Soruyu yeniden aç"
-
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "başlık"
-
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Soruyu kapat"
-
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Bu soruyu tekrar aç"
-
-#~ msgid "Reopen this question"
-#~ msgstr "Bu soruyu tekrar aç"
-
-#~ msgid "Revision history"
-#~ msgstr "düzenleme geçmişi"
-
-#~ msgid "click to hide/show revision"
-#~ msgstr "düzenlemeleri gizle/göster"
-
-#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "Tema medya dosyaları versiyon numarası"
-
-#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "etiketleri kullan"
-
-#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "Soru şu sebepten dolayı kaldırıldı:"
-
-#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "etiketleri kullan"
-
-#~ msgid "Tag list"
-#~ msgstr "Etiket listesi"
-
-#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "Sıralama:"
-
-#~ msgid "sorted alphabetically"
-#~ msgstr "alfabetik sıraya göre"
-
-#~ msgid "by name"
-#~ msgstr "isime göre"
-
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "etiket kullanım sıklığına göre"
-
-#~ msgid "by popularity"
-#~ msgstr "popülerliğe göre"
-
-#~ msgid "Nothing found"
-#~ msgstr "Hiçbir şey bulunamadı"
-
-#~ msgid "Users"
-#~ msgstr "Kullanıcılar"
-
#~ msgid "reputation"
#~ msgstr "itibar puanı"
-#~ msgid "recent"
-#~ msgstr "son"
-
-#~ msgid "by username"
-#~ msgstr "kullanıcı tarafından"
-
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "kullanıcı sorgusuna eşleşen %(suser)s :"
-
-#~ msgid "Nothing found."
-#~ msgstr "Hiçbir şey bulunamadı."
-
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "%(author_name)s 'ın katkılarıyla"
-
-#~ msgid "Search tips:"
-#~ msgstr "Arama ipuçları:"
-
-#~ msgid "reset author"
-#~ msgstr "yazarı sil"
-
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "veya"
-
-#~ msgid "reset tags"
-#~ msgstr "etiketleri temizle"
-
-#~ msgid "start over"
-#~ msgstr "baÅŸtan baÅŸla"
-
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr ""
-#~ "- daha fazla etiket eklemek veya incelemek için inceleme alanını genişlet"
-
-#~ msgid "Search tip:"
-#~ msgstr "Arama ipucu:"
-
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr ""
-#~ "etiketleri kullanmak, arama sonucuna tam olarak odaklanmanızı sağlar"
-
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "Harika! Cevapsız bir soru bile kalmamış..."
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "Malesef, henüz beğenilmiş bir soru mevcut değil."
-
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr "Beğendiğiniz soruları, favorilerinize ekleyebilirsiniz."
-
-#~ msgid "You can expand your search by "
-#~ msgstr "Ayrıntılı arama yapabilirsiniz"
-
-#~ msgid "resetting author"
-#~ msgstr "yazar sıfırlanıyor"
-
-#~ msgid "resetting tags"
-#~ msgstr "etiketler sıfırlanıyor"
-
-#~ msgid "starting over"
-#~ msgstr "baştan başlıyor"
-
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr ""
-#~ "Asla soru sormaktan çekinmeyin! Sorun ki, sayenizde başkaları da öğrensin!"
-
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "Aradığını bulamadın mı?"
-
-#~ msgid "Please, post your question!"
-#~ msgstr "Hemen kendi sorunu yolla!"
-
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "soruya ve cevaplarına abone ol"
-
-#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "Her etiket en fazla %(max_chars)d karakter içerebilir"
-#~ msgstr[1] "Her etiket en fazla %(max_chars)d karakter içerebilir"
-
-#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "En fazla %(tag_count)d etiket kullanabilirsiniz"
-#~ msgstr[1] "En fazla %(tag_count)d etiket kullanabilirsiniz"
-
-#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "en fazla 5 etiket, her etiket en fazla 20 karakter"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "%(counter)s Cevap:"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "%(counter)s Cevaplar:"
-
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "ilk önce eski cevaplar görünecek"
-
#~ msgid "oldest answers"
#~ msgstr "eski cevaplar"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "yeni cevaplar ilk önce görünecek"
-
#~ msgid "newest answers"
#~ msgstr "yeni cevaplar"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "çok oy alan cevaplar önce görünsün"
-
#~ msgid "popular answers"
#~ msgstr "popüler cevaplar"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Kendi soruna cevap yaz!"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Cevap yollamak için üye girişi yapmalısınız"
-
-#~ msgid "Your answer"
-#~ msgstr "Cevabınız"
-
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "Bu soruya ilk cevabı sen yaz!"
-
-#, fuzzy
#~ msgid "you can answer anonymously and then login"
-#~ msgstr ""
-#~ "<span class='strong big'>Please start posting your answer anonymously</"
-#~ "span> - your answer will be saved within the current session and "
-#~ "published after you log in or create a new account. Please try to give a "
-#~ "<strong>substantial answer</strong>, for discussions, <strong>please use "
-#~ "comments</strong> and <strong>please do remember to vote</strong> (after "
-#~ "you log in)!şimdi hemen cevap yazabilir, yollamak için daha sonra üye "
-#~ "giriÅŸi yapabilirsiniz."
+#~ msgstr "Anonim olarak soruyu cevaplayıp oturum açabilirsiniz."
#, fuzzy
#~ msgid "answer your own question only to give an answer"
@@ -5297,58 +7366,15 @@ msgstr ""
#~ msgid "Answer the question"
#~ msgstr "Cevabı yayınla"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "veya"
-
-#~ msgid "email"
-#~ msgstr "E-mail"
-
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Etiketleri"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "En ilgi çekici soruyu gormek için tıklayın"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "En ilgi çekici soruyu gormek için tıklayın"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "E-mail güncellemeleri iptal edildi"
-
-#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "soruya ve cevaplarına abone ol"
-
-#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "soruya ve cevaplarına abone ol"
-
#~ msgid "question asked"
#~ msgstr "sorulma zamanı"
#~ msgid "question was seen"
#~ msgstr "izlenme sayısı"
-#~ msgid "times"
-#~ msgstr "kez"
-
-#~ msgid "last updated"
-#~ msgstr "son güncelleme"
-
-#~ msgid "Related questions"
-#~ msgstr "Ä°lgili sorular"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr "Yeni cevaplar için beni günlük olarak uyar"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "Yeni cevaplar için beni haftalık olarak uyar"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr "Yeni cevaplar için beni haftalık olarak uyar"
@@ -5359,311 +7385,39 @@ msgstr ""
#~ "%(profile_url)s adresini kullanarak, size gelecek uyarı e-postalarının "
#~ "sıklığını değiştirebilirsiniz."
-#, fuzzy
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
-#~ "güncellemelerden haberdar olmak için kaydolun."
-
-#~ msgid "%(username)s's profile"
-#~ msgstr "%(username)s isimli kullanıcının profili"
-
-#~ msgid "Edit user profile"
-#~ msgstr "Kullanıcı profilini düzenle"
-
-#~ msgid "edit profile"
-#~ msgstr "profil deÄŸiÅŸtir"
-
-#~ msgid "change picture"
-#~ msgstr "resim deÄŸiÅŸtir"
-
-#~ msgid "Registered user"
-#~ msgstr "Kayıtlı kullanıcı"
-
-#~ msgid "Screen Name"
-#~ msgstr "Görünen isim"
-
-#~ msgid "Update"
-#~ msgstr "Güncelleme"
-
-#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "e-mail abonelikleri"
-
-#~ msgid "Email subscription settings"
-#~ msgstr "E-mail abonelik ayarları"
-
#~ msgid "email subscription settings info"
#~ msgstr "E-posta üyelik ayarları bilgisi"
#~ msgid "Stop sending email"
#~ msgstr "E-mail yollamayı duraklat"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Tüm sorular"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "sorular"
-
-#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "En fazla %(tag_count)d etiket kullanabilirsiniz"
-
-#, fuzzy
-#~ msgid "select:"
-#~ msgstr "sil"
-
-#, fuzzy
-#~ msgid "seen"
-#~ msgstr "son görülme"
-
-#, fuzzy
-#~ msgid "new"
-#~ msgstr "en yeni"
-
-#, fuzzy
-#~ msgid "none"
-#~ msgstr "bronz"
-
-#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "son görülme"
-
-#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "en iyi cevap olarak iÅŸaretlenmiÅŸ"
-
-#~ msgid "update profile"
-#~ msgstr "profilimi güncelle"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "Kullanıcı girişi"
-
-#~ msgid "real name"
-#~ msgstr "gerçek ismi"
-
-#~ msgid "member for"
-#~ msgstr "üyelik başlangıcı"
-
-#~ msgid "last seen"
-#~ msgstr "son görülme"
-
#~ msgid "user website"
#~ msgstr "websitesi"
-#~ msgid "location"
-#~ msgstr "yer"
-
-#~ msgid "age"
-#~ msgstr "yaÅŸ"
-
-#~ msgid "age unit"
-#~ msgstr "yaşında"
-
-#~ msgid "todays unused votes"
-#~ msgstr "bugün kullanılmayan oy"
-
-#~ msgid "votes left"
-#~ msgstr "oy kullandı"
-
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "Yer"
-
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "karmanız %(reputation)s"
-
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "toplulukta kullanıcının itibarı"
-
-#, fuzzy
-#~ msgid "Save"
-#~ msgstr "DeÄŸiÅŸikliÄŸi kaydet"
-
-#, fuzzy
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "karmanız %(reputation)s"
-
-#, fuzzy
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "karmanız %(reputation)s"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "toplulukta kullanıcının itibarı"
-
-#~ msgid "Add"
-#~ msgstr "Ekle"
-
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "bir kullanıcı adı seçin"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "mesajlar/"
-
-#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "mesajlar/"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "Dondurulan kullanıcılar ileti yapamaz"
-
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "%(username)s isimli kullanıcının profili"
-
-#, fuzzy
-#~ msgid "activity"
-#~ msgstr "aktif"
-
-#~ msgid "Your karma change log."
-#~ msgstr "Karma değişiklik kayıtları"
-
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "%(user_name)s 'nin karma değişim günlüğü"
-
-#~ msgid "overview"
-#~ msgstr "genel bakış"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">1</span> Madalya"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Madalya"
-
#, fuzzy
#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
#~ msgstr[0] "<span class=\"count\">1</span> Madalya"
#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Madalya"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "cevap için %(answer_score)s kez oy kullanıldı"
-
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "bu cevap doğru olarak seçildi"
-
-#, fuzzy
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "yorum ekle"
-#~ msgstr[1] "yorum ekle"
-
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> Oy"
-#~ msgstr[1] "<span class=\"count\">%(cnt)s</span> Oy"
-
-#~ msgid "thumb up"
-#~ msgstr "beÄŸen"
-
-#~ msgid "user has voted up this many times"
-#~ msgstr "kullanıcılar tarafından defalarca beğendi"
-
-#~ msgid "thumb down"
-#~ msgstr "beÄŸenme"
-
-#~ msgid "user voted down this many times"
-#~ msgstr "kullanıcılar tarafından defalarca beğenilmedi"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> Etiket"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Etiket"
-
-#, fuzzy
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">1</span> Madalya"
-#~ msgstr[1] "<span class=\"count\">%(counter)s</span> Madalya"
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "cevap ipuçları"
-
-#~ msgid "User profile"
-#~ msgstr "Kullanıcı profili"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "kullanıcı itibar grafiği"
-
#~ msgid "reputation history"
#~ msgstr "itibar geçmişi"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "kullanıcının favori olarak seçtiği sorular"
-
#~ msgid "recent activity"
#~ msgstr "son etkinlik"
#~ msgid "casted votes"
#~ msgstr "kritik oy"
-#~ msgid "votes"
-#~ msgstr "oy"
-
#~ msgid "answer tips"
#~ msgstr "cevap ipuçları"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "Cevabınızın sitemizdeki konu ile alakalı olmasına dikkat edin"
-
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "tartışmaya girmek yerine, soruya bir cevap vermeye çalışın"
-
#~ msgid "please try to provide details"
#~ msgstr "ayrıntılarıyayınlamayı deneyin"
-#~ msgid "be clear and concise"
-#~ msgstr "sorunuzun açık ve kısa olmasına çalışın"
-
-#~ msgid "see frequently asked questions"
-#~ msgstr "sık sorulan soruları gör"
-
-#~ msgid "Markdown tips"
-#~ msgstr "İpuçları"
-
-#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "* Italik * veya __italic__"
-
-#~ msgid "**bold** or __bold__"
-#~ msgstr "** Kalın ** veya __bold__"
-
-#~ msgid "link"
-#~ msgstr "bağlantı"
-
-#~ msgid "text"
-#~ msgstr "metin"
-
-#~ msgid "image"
-#~ msgstr "resim"
-
-#~ msgid "numbered list:"
-#~ msgstr "numaralandırılmış liste:"
-
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "temel HTML etiketleri de desteklenmektedir"
-
-#~ msgid "learn more about Markdown"
-#~ msgstr "Markdown hakkında daha fazla bilgi"
-
#~ msgid "ask a question"
#~ msgstr "soru sor"
-#~ msgid "login to post question info"
-#~ msgstr "soru bilgisi göndermek için giriş yapın"
-
#, fuzzy
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
@@ -5679,77 +7433,48 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "Soru göndermek için üye girişi yapmalısınız"
-#~ msgid "Ask your question"
-#~ msgstr "Soruyu yayınla"
-
-#~ msgid "Contributors"
-#~ msgstr "Yazarlar"
-
-#~ msgid "about"
-#~ msgstr "hakkımızda"
-
-#~ msgid "privacy policy"
-#~ msgstr "gizlilik politikası"
-
-#~ msgid "give feedback"
-#~ msgstr "görüşlerinizi bildirin"
-
-#~ msgid "back to home page"
-#~ msgstr "anasayfaya geri dön"
-
-#~ msgid "users"
-#~ msgstr "kullanıcılar"
-
-#~ msgid "badges"
-#~ msgstr "rozetler"
-
#~ msgid "question tips"
#~ msgstr "soru ipuçları"
#~ msgid "please ask a relevant question"
#~ msgstr "lütfen ilgili bir soru sorunuz"
-#~ msgid "please try provide enough details"
-#~ msgstr "yeterince ayrıntılı olmasına çalışın"
-
#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "izlenme"
-#~ msgstr[1] "izlenme"
+#~ msgid "logout"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "çıkış\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "oturumu kapat"
-#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "cevap"
-#~ msgstr[1] "cevap"
+#~ msgid "login"
+#~ msgstr "giriÅŸ"
-#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "oy/"
-#~ msgstr[1] "oy/"
+#~ msgid "no items in counter"
+#~ msgstr "0"
-#~ msgid "see unanswered questions"
-#~ msgstr "cevapsız sorular gör"
+#~ msgid "your email address"
+#~ msgstr "e-posta adresin"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "beğendiğiniz soruları gör"
+#~ msgid "choose password"
+#~ msgstr "şifre seçin"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "rozetler:"
+#~ msgid "retype password"
+#~ msgstr "şifreyi yeniden yazın"
-#~ msgid "logout"
-#~ msgstr "çıkış"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d%(badge_level)s rozet"
+#~ msgstr[1] "%(badge_count)d%(badge_level)s rozetler"
-#~ msgid "login"
-#~ msgstr "giriÅŸ"
+#~ msgid "user reputation in the community"
+#~ msgstr "toplulukta kullanıcının itibarı"
-#, fuzzy
-#~ msgid "settings"
-#~ msgstr "Temel Ayarlar"
+#~ msgid "Please log in to ask questions"
+#~ msgstr "Soru sormak için giriş yapınız"
+
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "soru içeriği en az 10 karakter olmalı"
#, fuzzy
#~ msgid "(please enter a valid email)"
@@ -5788,9 +7513,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Etiketleri"
-#~ msgid "questions"
-#~ msgstr "sorular"
-
#~ msgid "search"
#~ msgstr "ara"
@@ -5804,13 +7526,6 @@ msgstr ""
#~ msgid "In:"
#~ msgstr "Sorular:"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Tüm sorular"
-
-#~ msgid "Sort by:"
-#~ msgstr "Sıralama:"
-
#~ msgid "Email (not shared with anyone):"
#~ msgstr "E-mail (kimse görmeyecektir):"
@@ -6195,18 +7910,12 @@ msgstr ""
#~ "\n"
#~ "%(q_num)s soru bulundu"
-#~ msgid "tagged"
-#~ msgstr "etiketlendi"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr "ilginizi çeken etiketler kısmından '%(tag_name)s' etiketini sil"
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "yoksaydığınız etiketler kısmından '%(tag_name)s' etiketini sil"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "yoksayılan soruları gizle"
-
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
diff --git a/askbot/locale/tr/LC_MESSAGES/djangojs.mo b/askbot/locale/tr/LC_MESSAGES/djangojs.mo
index 7226c15d..5f12cba4 100644
--- a/askbot/locale/tr/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/tr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/tr/LC_MESSAGES/djangojs.po b/askbot/locale/tr/LC_MESSAGES/djangojs.po
index c93269f2..22373215 100644
--- a/askbot/locale/tr/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/tr/LC_MESSAGES/djangojs.po
@@ -1,344 +1,346 @@
# 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.
#
+# Translators:
+# <kayhantolga@letscoding.com>, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:00-0600\n"
-"PO-Revision-Date: 2011-09-28 04:13-0800\n"
-"Last-Translator: Rosandra Cuello <rosandra.cuello@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:54-0500\n"
+"PO-Revision-Date: 2011-11-30 11:38+0000\n"
+"Last-Translator: kayhantolga <kayhantolga@letscoding.com>\n"
+"Language-Team: Turkish (http://www.transifex.net/projects/p/askbot/team/"
+"tr/)\n"
+"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "%s kaydını silmek istediğine emin misin?"
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "Lütfen bir veya daha fazla giriş yapma methodu seçin"
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
-msgstr ""
+msgstr "Oturum açmak için bir veya daha fazla yöntem seçin"
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "ÅŸifreler eÅŸleÅŸmiyor"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "Geçerli metodu göster/değiştir"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "%s gir ve devam et"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "%(provider_name)s hesabın ile %(site)s 'e bağlan"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "%s için şifreni değiştir"
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "Åžifre deÄŸiÅŸtir"
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "%s için bir şifre oluştur"
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "Yeni ÅŸifre oluÅŸtur"
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "Şifre oluştur - hesabını koru"
#: skins/common/media/js/post.js:28
msgid "loading..."
msgstr "yükleniyor..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "etiketler boÅŸ olamaz"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "içerik boş olamaz"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "Lütfen en az %s karakter girin"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "lütfen bir başlık yazın"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "Lütfen en az %s karakter girin"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "buna yetkiniz yoktur"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "en cevap olarak kendi cevabınızı seçemezsiniz"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "lütfen üye girişi yapınız"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "misafir kullanıcılar soruları takip edemez"
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "misafir kullanıcılar yorum yazamaz"
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr "üye girişi yapmadan oy kullanamazsınız"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr "şikayetinizi onaylayın"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "şikayetinizi onaylayın"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "üye girişi yapmadan şikayet gönderemezsiniz"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "Bunu silmek istediÄŸinizden emin misiniz?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "üye girişi yapmadan yazı silemez yada geri alamazsınız"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "yazı geri alındı"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "yazı silindi"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "geri al"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "sil"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "yorum ekle"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "yazılabilir %s karakter eksik"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "yazılabilir %s karakter eksik"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
+msgstr "yorumu kaydet"
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "bu yorumu sil"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "yorumu silmek istediÄŸinizden emin misiniz?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "Soru başlığını girin (En az 10 karakter)"
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "EÅŸleÅŸen \"<span></span>\" etiketler:"
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "ve %s tane daha gösterilmeyen..."
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "En az bir tane seçim yapın"
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
-msgstr[1] ""
+"Bir: Bu bildirimi sil?\n"
+"diÄŸer: Bu bildirimleri sil?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "bu yorumu sil"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "bu yorumu sil"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
+" %(username)s takip etmek için <a href=\"%(signin_url)s\">Giriş yapın</a>"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "takipten vazgeç %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "takip ediyor: %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "takip et %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
-msgstr ""
-
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
+msgstr "kapatmak için tıkla"
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "kalın"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "italik"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "link"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "alıntı"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "hazır metin"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "resimler"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "ek"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "numaralı liste"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "iÅŸaretli liste"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "Başlık"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "yatay bar"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "geri"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "yeniden"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"örnek resmin URLsini girin: <br />http://www.example.com/image.jpg "
"\"resim başlığı\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
"web adresini girin: <br />http://www.cnprog.com/ \"başlık bağlantısı\"</p>"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "Yüklenecek dosyayı seçin"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "etiketler boÅŸ olamaz"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "içerik boş olamaz"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "Lütfen en az %s karakter girin"
+
+#~ msgid "please enter title"
+#~ msgstr "lütfen bir başlık yazın"
+
+#~ msgid "%s title minchars"
+#~ msgstr "Lütfen en az %s karakter girin"
+
+#~ msgid "Follow"
+#~ msgstr "Takip et"
+
+#, fuzzy
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] ""
+#~ "#-#-#-#-# djangojs.po (askbot) #-#-#-#-#\n"
+#~ "Bir: %s takipçi\n"
+#~ "#-#-#-#-# djangojs.po (askbot) #-#-#-#-#\n"
+#~ "Bir: %s takipçi\n"
+#~ "Diğer: %s takipçi"
+#~ msgstr[1] ""
+#~ "#-#-#-#-# djangojs.po (askbot) #-#-#-#-#\n"
+#~ "Diğer: %s takipçi"
+
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr ""
+#~ "<div> Takip ediyor</div><div class=\"unfollow\"> Takipten vazgeç </div>"
+
+#~ msgid "undelete"
+#~ msgstr "geri al"
+
+#~ msgid "delete"
+#~ msgstr "sil"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "yazılabilir %s karakter eksik"
+
+#~ msgid "%s characters left"
+#~ msgstr "yazılabilir %s karakter eksik"
+
+#~ msgid "cancel"
+#~ msgstr "iptal"
+
+#~ msgid "confirm abandon comment"
+#~ msgstr "Yorum yazmak istemediÄŸinize emin misiniz?"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "yorumu silmek istediÄŸinizden emin misiniz?"
+
+#~ msgid "click to edit this comment"
+#~ msgstr "yorumu düzenlemek için tıkla"
+
+#~ msgid "edit"
+#~ msgstr "düzenle"
+
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "%s etiketli soruları gör"
+
+#~ msgid "image description"
+#~ msgstr "resimin açıklaması"
+
+#~ msgid "file name"
+#~ msgstr "dosya adı"
+
+#~ msgid "link text"
+#~ msgstr "bağlantı metni"
diff --git a/askbot/locale/vi/LC_MESSAGES/django.mo b/askbot/locale/vi/LC_MESSAGES/django.mo
index 143c1d8f..d3775ae0 100644
--- a/askbot/locale/vi/LC_MESSAGES/django.mo
+++ b/askbot/locale/vi/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/vi/LC_MESSAGES/django.po b/askbot/locale/vi/LC_MESSAGES/django.po
index bd60665c..6a824194 100644
--- a/askbot/locale/vi/LC_MESSAGES/django.po
+++ b/askbot/locale/vi/LC_MESSAGES/django.po
@@ -2,35 +2,35 @@
# Copyright (C) 2010 Askbot, 2009 Gang Chen
# This file is distributed under the same license as the Askbot package.
# Cong It <EMAIL@ADDRESS>, 2010.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:41-0600\n"
+"POT-Creation-Date: 2012-04-18 18:55-0500\n"
"PO-Revision-Date: 2010-05-09 07:03\n"
"Last-Translator: <cong.it@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Translated-Using: django-rosetta 0.5.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
+"X-Translated-Using: django-rosetta 0.5.3\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr ""
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr ""
-#: feed.py:26
+#: feed.py:28
msgid "Individual question feed"
msgstr ""
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr ""
@@ -46,7 +46,10 @@ msgstr ""
msgid "Country field is required"
msgstr ""
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr ""
@@ -54,299 +57,345 @@ msgstr ""
msgid "please enter a descriptive title for your question"
msgstr ""
-#: forms.py:110
-msgid "title must be > 10 characters"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] ""
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
msgstr ""
-#: forms.py:119
-msgid "content"
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
msgstr ""
-#: forms.py:125
-msgid "question content must be > 10 characters"
+#: forms.py:149
+msgid "content"
msgstr ""
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr ""
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] ""
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr ""
-#: forms.py:173
-#, python-format
+#: forms.py:232
+#, fuzzy, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] ""
-msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
-#, python-format
+#: forms.py:249
+#, fuzzy, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] ""
-msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
+#: forms.py:258
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
msgstr ""
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:234
+#: forms.py:295
msgid ""
"if you choose community wiki option, the question and answer do not generate "
"points and name of author will not be shown"
msgstr ""
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr ""
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
msgstr ""
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr ""
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr ""
-#: forms.py:346
+#: forms.py:405
#, fuzzy
msgid "administrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr ""
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr ""
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr ""
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr ""
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr ""
-#: forms.py:434
+#: forms.py:493
msgid "Cannot change status to admin"
msgstr ""
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr ""
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr ""
-#: forms.py:542
+#: forms.py:530
msgid "Your name (optional):"
msgstr ""
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr ""
"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr ""
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
msgid "ask anonymously"
msgstr ""
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:886
-msgid "this email will be linked to gravatar"
-msgstr ""
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr ""
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr ""
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr ""
-#: forms.py:916
+#: forms.py:911
msgid "Show country"
msgstr ""
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr ""
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr ""
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr ""
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr ""
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr ""
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr ""
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr ""
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr ""
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr ""
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr ""
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr ""
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr ""
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr ""
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "no askbot email please, thanks"
-#: forms.py:1120
-msgid "please choose one of the options above"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
msgstr ""
-#: urls.py:57
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
+
+#: urls.py:41
msgid "about/"
msgstr ""
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr ""
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr ""
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr ""
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr ""
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr ""
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+#, fuzzy
+msgid "questions"
+msgstr "Tips"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr ""
@@ -374,51 +423,56 @@ msgstr ""
msgid "vote/"
msgstr ""
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
msgid "tags/"
msgstr ""
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr ""
-#: urls.py:214
+#: urls.py:219
msgid "subscriptions/"
msgstr ""
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr ""
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr ""
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr ""
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr ""
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
#, fuzzy
msgid "account/"
msgstr "Signup"
@@ -551,134 +605,138 @@ msgid ""
msgstr ""
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "Asked"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
msgstr ""
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
msgstr ""
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
msgstr ""
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
msgstr ""
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
msgstr ""
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
#, fuzzy
msgid "Allow only one account per email address"
msgstr "Your email <i>(never shared)</i>"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr ""
@@ -688,22 +746,46 @@ msgstr ""
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -734,15 +816,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -750,11 +832,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -762,71 +844,54 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr ""
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
msgstr ""
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "Change your password"
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -865,11 +930,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -913,110 +980,178 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+msgid "Are tags required?"
+msgstr ""
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
msgstr ""
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "Tags"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr ""
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "unanswered questions"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "Tags"
+
+#: conf/leading_sidebar.py:20
+msgid "Enable left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1090,16 +1225,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1269,6 +1404,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1467,27 +1606,27 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr ""
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1612,21 +1751,21 @@ msgstr ""
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1634,40 +1773,40 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr ""
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1679,11 +1818,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1692,21 +1831,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1715,21 +1854,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1738,19 +1877,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1761,19 +1900,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1838,7 +1977,7 @@ msgstr ""
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr ""
@@ -1846,35 +1985,62 @@ msgstr ""
"user sessions. Cookies must be enabled in your browser so that forum can "
"work for you."
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "Your email <i>(never shared)</i>"
+
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "Your email <i>(never shared)</i>"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1916,6 +2082,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "answered question"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "Post Your Answer"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "Post Your Answer"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "Post Your Answer"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr ""
@@ -1952,342 +2151,356 @@ msgstr ""
msgid "too localized"
msgstr ""
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr ""
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr ""
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr ""
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr ""
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr ""
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr ""
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr ""
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr ""
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr ""
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr ""
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr ""
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr ""
-#: const/__init__.py:64
+#: const/__init__.py:70
msgid "list"
msgstr ""
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
#, fuzzy
msgid "Question has no answers"
msgstr "answered question"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr ""
-#: const/__init__.py:122
+#: const/__init__.py:125
#, fuzzy
msgid "asked a question"
msgstr "Ask Your Question"
-#: const/__init__.py:123
+#: const/__init__.py:126
#, fuzzy
msgid "answered a question"
msgstr "unanswered"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr ""
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr ""
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr ""
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr ""
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "received badge"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr ""
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr ""
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr ""
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr ""
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr ""
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr ""
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr ""
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr ""
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr ""
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr ""
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr ""
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "unanswered questions"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "unanswered questions"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "answered question"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "commented question"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr ""
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr ""
+#, fuzzy
+msgid "answered question"
+msgstr "unanswered"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "oldest"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr ""
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr ""
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr ""
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr ""
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
msgid "exclude ignored"
msgstr ""
-#: const/__init__.py:219
+#: const/__init__.py:222
msgid "only selected"
msgstr ""
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr ""
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr ""
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr ""
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr ""
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
msgid "mystery-man"
msgstr ""
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "How to change my picture (gravatar) and what is gravatar?"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr ""
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr ""
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr ""
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
msgid "Gravatar"
msgstr ""
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "ask a question interesting to this community"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "questions with most answers"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
msgid "by relevance"
msgstr ""
-#: const/message_keys.py:18
+#: const/message_keys.py:24
#, fuzzy
msgid "click to see the oldest questions"
msgstr "questions with fewest answers"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
msgid "by date"
msgstr ""
-#: const/message_keys.py:20
+#: const/message_keys.py:26
#, fuzzy
msgid "click to see the newest questions"
msgstr "questions with most answers"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
#, fuzzy
msgid "click to see the least recently updated questions"
msgstr "least voted questions"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
msgid "by activity"
msgstr ""
-#: const/message_keys.py:23
+#: const/message_keys.py:29
#, fuzzy
msgid "click to see the most recently updated questions"
msgstr "least voted questions"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
#, fuzzy
msgid "click to see the least answered questions"
msgstr "least voted questions"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "oldest"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
#, fuzzy
msgid "click to see the most answered questions"
msgstr "least voted questions"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "least voted questions"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "votes"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
#, fuzzy
msgid "click to see most voted questions"
msgstr "least voted questions"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
#, fuzzy
msgid "i-names are not supported"
msgstr "i-names không được hỗ trợ"
@@ -2340,11 +2553,12 @@ msgid "Your user name (<i>required</i>)"
msgstr ""
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "sorry, there is no such user name"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "Vui lòng nhập tên và mật khẩu"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr ""
@@ -2382,6 +2596,7 @@ msgid "%(site)s user name and password"
msgstr "Vui lòng nhập tên và mật khẩu"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2468,79 +2683,79 @@ msgstr "Vui lòng nhập tên và mật khẩu"
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
#, fuzzy
msgid "Your new password saved"
msgstr "New password created"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr ""
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr ""
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr ""
"Your email needs to be validated. Please see details <a "
"id='validate_email_alert' href='%(details_url)s'>here</a>."
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, python-format
msgid "Recover your %(site)s account"
msgstr ""
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2548,217 +2763,218 @@ msgstr ""
msgid "Site"
msgstr ""
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr ""
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr ""
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, python-format
msgid "Allowed image file types are %(types)s"
msgstr ""
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
msgstr ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "karma"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+#, fuzzy
+msgid "Change password"
+msgstr "Change your password"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Log out"
+msgstr "Logout Now"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
msgstr ""
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] ""
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+msgid "Settings included in %(name)s."
msgstr ""
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
msgstr ""
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+#, fuzzy
+msgid "Edit Site Settings"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr ""
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, fuzzy, python-format
+msgid "Group settings: %(name)s"
+msgstr "Post Your Answer"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:57
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr ""
+
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "Ask Your Question"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr "least voted questions"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
-#: management/commands/send_email_alerts.py:421
-#, fuzzy, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] ""
-"<p>Dear %(name)s,</p></p>The following question has been updated on the Q&A "
-"forum:</p>"
-msgstr[1] ""
+#: management/commands/send_email_alerts.py:425
+#, python-format
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
-"the Q&A forum:</p>"
+"%(sitename)s:</p>"
+msgstr[0] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr ""
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr ""
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
-"frequency of the email updates or turn them off entirely.<br/>If you believe "
-"that this message was sent in an error, please email about it the forum "
-"administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly Q&A forum "
-"server.</p>"
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "please sign-in"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
+#: models/__init__.py:337
#, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr ""
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+msgid "Sorry, you cannot vote for your own posts"
msgstr ""
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr ""
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr ""
-#: models/__init__.py:428
+#: models/__init__.py:430
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr ""
@@ -2766,7 +2982,7 @@ msgstr ""
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:429
+#: models/__init__.py:431
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr ""
@@ -2774,29 +2990,12 @@ msgstr ""
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "sorry, file uploading requires karma >%(min_rep)s"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-#, fuzzy
-msgid "blocked users cannot post"
-msgstr ""
-"Sorry, your account appears to be blocked and you cannot make new posts "
-"until this issue is resolved. Please contact the forum administrator to "
-"reach a resolution."
-
-#: models/__init__.py:451 models/__init__.py:935
-#, fuzzy
-msgid "suspended users cannot post"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
-"Please contact the forum administrator to reach a resolution."
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2806,56 +3005,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2864,211 +3063,235 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:761
+#: models/__init__.py:833
#, fuzzy
-msgid "blocked users cannot flag posts"
+msgid "Sorry, since your account is blocked you cannot remove flags"
msgstr ""
"Sorry, your account appears to be blocked and you cannot make new posts "
"until this issue is resolved. Please contact the forum administrator to "
"reach a resolution."
-#: models/__init__.py:763
-#, fuzzy
-msgid "suspended users cannot flag posts"
-msgstr ""
-"Sorry, your account appears to be suspended and you cannot make new posts "
-"until this issue is resolved. You can, however edit your existing posts. "
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#: models/__init__.py:765
+#: models/__init__.py:843
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:863
+msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1341
+#: models/__init__.py:1471
msgid "in two days"
msgstr ""
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr ""
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr ""
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr ""
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr ""
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
@@ -3076,7 +3299,7 @@ msgstr[0] ""
"Obtaining silver badge requires significant patience. If you have received "
"one, that means you have greatly contributed to this community."
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
@@ -3084,35 +3307,29 @@ msgstr[0] ""
"If you are an active participant in this community, you will be recognized "
"with this badge."
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
-#, python-format
-msgid "Re: \"%(title)s\""
-msgstr ""
-
-#: models/__init__.py:2200 models/__init__.py:2205
+#: models/__init__.py:2389
#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "Tags"
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3379,223 +3596,2874 @@ msgstr ""
msgid "Created a tag used by %(num)s questions"
msgstr ""
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr ""
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr ""
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr ""
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr ""
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr ""
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr ""
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr ""
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr ""
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr ""
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr ""
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "How to validate email and why?"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr ""
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr ""
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr ""
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr ""
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr ""
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr ""
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr ""
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr ""
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr ""
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "Vui lòng nhập tên và mật khẩu"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr ""
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+#, fuzzy
+msgid "Save your email address"
+msgstr "Your email <i>(never shared)</i>"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "Change Email"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "How to validate email and why?"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "karma"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr ""
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr ""
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
#, fuzzy
msgid "Username:"
msgstr "sorry, there is no such user name"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
#, fuzzy
msgid "Password:"
msgstr "New password created"
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
#, fuzzy
msgid "Please sign in here:"
msgstr "please sign-in"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"Sincerely,\n"
"Q&A Forum Administrator"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr ""
#: skins/common/templates/authopenid/email_validation.txt:9
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
+#: skins/common/templates/authopenid/logout.html:3
+#, fuzzy
+msgid "Logout"
+msgstr "Logout Now"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "User login"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"\n"
+"<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, fuzzy, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr ""
+"<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
+"strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will be "
+"posted once you log in.</span>"
+
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "Vui lòng nhập tên và mật khẩu"
+
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "please sign-in"
+
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:104
+#, fuzzy
+msgid "Login or email"
+msgstr "Äăng nhập không thành công."
+
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+#, fuzzy
+msgid "Password"
+msgstr "New password created"
+
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "New password created"
+
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:162
+#, fuzzy
+msgid "last used"
+msgstr "Last updated"
+
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "delete"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:192
+#, fuzzy
+msgid "Still have trouble signing in?"
+msgstr "Ask Your Question"
+
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "Vui lòng nhập tên và mật khẩu"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+#, fuzzy
+msgid "Create login name and password"
+msgstr ""
+"<span class='big strong'>Enter your Askbot login and password</span><br/"
+"><span class='grey'>(or select your OpenID provider above)</span>"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr ""
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "Change Email"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr ""
+
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:4
+#, fuzzy
+msgid "change avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr ""
+
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:6
+#, python-format
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
+msgstr ""
+
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "Post Your Answer"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "link"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+#, fuzzy
+msgid "undelete"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "Tags"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "Tags"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr ""
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+#, fuzzy
+msgid "edit"
+msgstr "Change Email"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:2
+#, python-format
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr ""
+
+#: skins/common/templates/question/closed_question_info.html:4
+#, python-format
+msgid "close date %(closed_at)s"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:6
+#, fuzzy
+msgid "reopen"
+msgstr "You can safely re-use the same login for all OpenID-enabled websites."
+
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr ""
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:22
+msgid ", one of these is required"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr ""
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:4
+#, fuzzy
+msgid "Interesting tags"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr ""
+
+#: skins/common/templates/widgets/tag_selector.html:21
+#, fuzzy
+msgid "Ignored tags"
+msgstr "Tags"
+
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr ""
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+#, fuzzy
+msgid "see all questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/404.jinja.html:32
+#, fuzzy
+msgid "see all tags"
+msgstr "Tags"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:12
+#, fuzzy
+msgid "see latest questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/500.jinja.html:13
+#, fuzzy
+msgid "see tags"
+msgstr "Tags"
+
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+#, fuzzy
+msgid "Edit answer"
+msgstr "oldest"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr ""
+
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+#, fuzzy
+msgid "Save edit"
+msgstr "Change Email"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr ""
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: skins/default/templates/badge.html:5
+#, fuzzy
+msgid "Badge"
+msgstr ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \"karma points\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
+
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, fuzzy, python-format
+msgid "%(description)s"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+#, fuzzy
+msgid "Badges"
+msgstr ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \"karma points\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr ""
+"If your questions and answers are highly voted, your contribution to this "
+"Q&amp;A community will be recognized with the variety of badges."
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun "
+"badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "Badge levels"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+
+#: skins/default/templates/badges.html:41
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:51
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr ""
+
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+#, fuzzy
+msgid "Close question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/close.html:6
+#, fuzzy
+msgid "Close the question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr ""
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+#, fuzzy
+msgid "Frequently Asked Questions "
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:7
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:11
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:13
+#, fuzzy
+msgid "What should I avoid in my answers?"
+msgstr "What kinds of questions should be avoided?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:15
+#, fuzzy
+msgid "Who moderates this community?"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "How does karma system work?"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+#, fuzzy
+msgid "upvote"
+msgstr "votes"
+
+#: skins/default/templates/faq_static.html:36
+#, fuzzy
+msgid "add comments"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+#, fuzzy
+msgid "downvote"
+msgstr "votes"
+
+#: skins/default/templates/faq_static.html:43
+#, fuzzy
+msgid " accept own answer to own questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/faq_static.html:47
+#, fuzzy
+msgid "open and close own questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/faq_static.html:51
+#, fuzzy
+msgid "retag other's questions"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/faq_static.html:56
+#, fuzzy
+msgid "edit community wiki questions"
+msgstr "list of all questions"
+
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "oldest"
+
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "post a comment"
+
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:72
+msgid ""
+"No, you don't have to. You can login through any service that supports "
+"OpenID, e.g. Google, Yahoo, AOL, etc.\""
+msgstr ""
+
+#: skins/default/templates/faq_static.html:73
+#, fuzzy
+msgid "\"Login now!\""
+msgstr "Logout Now"
+
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:76
+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 ""
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr ""
+
+#: skins/default/templates/faq_static.html:79
+#, fuzzy
+msgid "Still have questions?"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"Please <a href='%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr ""
+
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr ""
+
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
+
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr ""
+
#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
#, python-format
msgid ""
"\n"
"Hello, this is a %(site_title)s forum feedback message.\n"
msgstr ""
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
+
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "Choose screen name"
+
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
+
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
+
+#: skins/default/templates/help.html:16
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
+
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
msgstr ""
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "no"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
-#: templatetags/extra_tags.py:43
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
+
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
+
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
+
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
+
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
+
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
+#, fuzzy
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"Sincerely,\n"
+"Q&A Forum Administrator"
+
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
+
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr ""
+"<div class=\"questions-count\">%(q_num)s</div><p>question with title "
+"containing <strong><span class=\"darkred\">%(searchtitle)s</span></strong></"
+"p>"
+
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
+
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr ""
+
+#: skins/default/templates/macros.html:46
+#, fuzzy
+msgid "anonymous user"
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
+
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr ""
+
+#: skins/default/templates/macros.html:90
+#, fuzzy
+msgid "answered"
+msgstr "oldest"
+
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr ""
+
+#: skins/default/templates/macros.html:122
+#, fuzzy
+msgid "updated"
+msgstr "Last updated"
+
+#: skins/default/templates/macros.html:202
+#, fuzzy, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "Asked"
+
+#: skins/default/templates/macros.html:304
+#, fuzzy
+msgid "delete this comment"
+msgstr "post a comment"
+
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
#, python-format
msgid "%(username)s gravatar image"
msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "User login"
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr ""
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "page %(num)s"
+
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr ""
+
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "Choose screen name"
+
+#: skins/default/templates/macros.html:610
+#, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] ""
+
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr ""
+
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr ""
+
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr ""
+
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr ""
+
+#: skins/default/templates/main_page.html:11
+#, fuzzy
+msgid "Questions"
+msgstr "Tags"
+
+#: skins/default/templates/question.html:110
+msgid "post a comment / <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:113
+msgid "see <strong>some</strong> more"
+msgstr ""
+
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
+#, fuzzy
+msgid "post a comment"
+msgstr "post a comment"
+
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+#, fuzzy
+msgid "Answer Your Own Question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question.html:140
+#, fuzzy
+msgid "Post Your Answer"
+msgstr "most voted"
+
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
+#, fuzzy
+msgid "Login/Signup to Post"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+#, fuzzy
+msgid "Edit question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
+#, fuzzy
+msgid "Retag question"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr ""
+
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr ""
+
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+#, fuzzy
+msgid "Reopen question"
+msgstr "list of all questions"
+
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr ""
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+
+#: skins/default/templates/reopen.html:16
+#, fuzzy
+msgid "Close reason:"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
+#, fuzzy
+msgid "Reopen this question?"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reopen.html:26
+#, fuzzy
+msgid "Reopen this question"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+#, fuzzy
+msgid "Revision history"
+msgstr "karma history"
+
+#: skins/default/templates/revisions.html:23
+#, fuzzy
+msgid "click to hide/show revision"
+msgstr "questions with most answers"
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+#, fuzzy
+msgid "Subscribe for tags"
+msgstr "Tags"
+
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr ""
+
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "Tags"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr ""
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr ""
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr ""
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr ""
+
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: skins/default/templates/tags.html:26
+#, fuzzy
+msgid "by popularity"
+msgstr "tags"
+
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr ""
+
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+#, fuzzy
+msgid "Users"
+msgstr "people"
+
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
+
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr ""
+
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
+
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
+
+#: skins/default/templates/users.html:33
+#, fuzzy
+msgid "by username"
+msgstr "sorry, there is no such user name"
+
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, fuzzy, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "One question"
+msgstr[1] ""
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:24
+#, fuzzy
+msgid "Search tips:"
+msgstr "Tips"
+
+#: skins/default/templates/main_page/headline.html:27
+#, fuzzy
+msgid "reset author"
+msgstr "Send me a new password"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:30
+#, fuzzy
+msgid "reset tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr ""
+
+#: skins/default/templates/main_page/headline.html:41
+#, fuzzy
+msgid "Search tip:"
+msgstr "Tips"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:4
+#, fuzzy
+msgid "There are no unanswered questions here"
+msgstr "unanswered questions"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "answered question"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr ""
+
+#: skins/default/templates/main_page/nothing_found.html:16
+#, fuzzy
+msgid "resetting author"
+msgstr "Send me a new password"
+
+#: skins/default/templates/main_page/nothing_found.html:19
+#, fuzzy
+msgid "resetting tags"
+msgstr "Tags"
+
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+#, fuzzy
+msgid "starting over"
+msgstr "Send me a new password"
+
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr ""
+
+#: skins/default/templates/main_page/questions_loop.html:12
+#, fuzzy
+msgid "Please, post your question!"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/main_page/tab_bar.html:10
+#, fuzzy
+msgid "subscribe to the questions feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
+
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] ""
+
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] ""
+
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"(one comment)"
+msgstr[1] ""
+"\n"
+"(%(comment_count)s comments)"
+
+#: skins/default/templates/question/answer_tab_bar.html:11
+msgid "Sort by »"
+msgstr ""
+
+#: skins/default/templates/question/answer_tab_bar.html:14
+#, fuzzy
+msgid "oldest answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/answer_tab_bar.html:17
+#, fuzzy
+msgid "newest answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/answer_tab_bar.html:20
+#, fuzzy
+msgid "most voted answers will be shown first"
+msgstr " "
+
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "Login/Signup to Post"
+
+#: skins/default/templates/question/new_answer_form.html:24
+#, fuzzy
+msgid "Your answer"
+msgstr "most voted"
+
+#: skins/default/templates/question/new_answer_form.html:26
+#, fuzzy
+msgid "Be the first one to answer this question!"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
+
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr ""
+
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+#, fuzzy
+msgid "email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/question/sidebar.html:6
+#, fuzzy
+msgid "Question tools"
+msgstr "Tags"
+
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "questions with most answers"
+
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question/sidebar.html:11
+#, fuzzy
+msgid "Unfollow"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question/sidebar.html:15
+#, fuzzy
+msgid "click to follow this question"
+msgstr "questions with most answers"
+
+#: skins/default/templates/question/sidebar.html:16
+#, fuzzy
+msgid "Follow"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+
+#: skins/default/templates/question/sidebar.html:29
+#, fuzzy
+msgid "email the updates"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
+#, fuzzy
+msgid "subscribe to this question rss feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "Post Your Answer"
+
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+msgid "Asked"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "Last updated"
+
+#: skins/default/templates/question/sidebar.html:62
+#, fuzzy
+msgid "Related questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr ""
+"<strong>Notify me</strong> weekly when there are any new answers or updates"
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:4
+#, fuzzy
+msgid "Edit user profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:7
+#, fuzzy
+msgid "edit profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+#, fuzzy
+msgid "change picture"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:39
+#, fuzzy
+msgid "Screen Name"
+msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_edit.html:59
+msgid "(cannot be changed)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+#, fuzzy
+msgid "Update"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+#, fuzzy
+msgid "Email subscription settings"
+msgstr ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr ""
+"<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
+
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+#, fuzzy
+msgid "followed questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:34
+#, fuzzy
+msgid "Sections:"
+msgstr "Tags"
+
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:54
+#, fuzzy
+msgid "mark as seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+#, fuzzy
+msgid "mark as new"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "Tags"
+
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "How to change my picture (gravatar) and what is gravatar?"
+
+#: skins/default/templates/user_profile/user_info.html:36
+#, fuzzy
+msgid "update profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_info.html:40
+#, fuzzy
+msgid "manage login methods"
+msgstr "please sign-in"
+
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_info.html:58
+#, fuzzy
+msgid "member since"
+msgstr "member since"
+
+#: skins/default/templates/user_profile/user_info.html:63
+#, fuzzy
+msgid "last seen"
+msgstr "Last updated"
+
+#: skins/default/templates/user_profile/user_info.html:69
+#, fuzzy
+msgid "website"
+msgstr "Welcome to Q&amp;A forum"
+
+#: skins/default/templates/user_profile/user_info.html:75
+#, fuzzy
+msgid "location"
+msgstr "karma"
+
+#: skins/default/templates/user_profile/user_info.html:82
+#, fuzzy
+msgid "age"
+msgstr ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \"karma points\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_info.html:88
+#, fuzzy
+msgid "todays unused votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_info.html:89
+#, fuzzy
+msgid "votes left"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+#, fuzzy
+msgid "moderation"
+msgstr "karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:11
+#, fuzzy
+msgid "User status changed"
+msgstr "user karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+#, fuzzy
+msgid "Save"
+msgstr "Change Email"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:31
+#, fuzzy
+msgid "User reputation changed"
+msgstr "user karma"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "Choose screen name"
+
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
+#, fuzzy
+msgid "Message sent"
+msgstr "years old"
+
+#: skins/default/templates/user_profile/user_moderate.html:64
+#, fuzzy
+msgid "Send message"
+msgstr "Choose screen name"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
+#, fuzzy
+msgid "Suspended users can only edit or delete their own posts."
+msgstr ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, fuzzy, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:16
+#, fuzzy
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "oldest"
+
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_stats.html:120
+#, fuzzy
+msgid "Answer to:"
+msgstr "Tips"
+
+#: skins/default/templates/user_profile/user_tabs.html:5
+#, fuzzy
+msgid "User profile"
+msgstr "User login"
+
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:21
+#, fuzzy
+msgid "Graph of user karma"
+msgstr "Graph of user karma"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+#, fuzzy
+msgid "votes"
+msgstr "votes"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+#, fuzzy
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
+#, fuzzy
+msgid "provide enough details"
+msgstr "provide enough details"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+#, fuzzy
+msgid "see frequently asked questions"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown basics"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+#, fuzzy
+msgid "basic HTML tags are also supported"
+msgstr "i-names không được hỗ trợ"
+
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
+
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
+
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr ""
+
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr ""
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr ""
+
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "people"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+#, fuzzy
+msgid "badges"
+msgstr ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \"karma points\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
+#, fuzzy
+msgid "ask a question interesting to this community"
+msgstr "ask a question interesting to this community"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] ""
+
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "oldest"
+
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "votes"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:8
+#, fuzzy
+msgid "see unanswered questions"
+msgstr "unanswered"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:11
+#, fuzzy
+msgid "see your followed questions"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
+
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "Ask Your Question"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \"karma points\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+
+#: skins/default/templates/widgets/user_navigation.html:9
+#, fuzzy
+msgid "sign out"
+msgstr "Logout Now"
+
+#: skins/default/templates/widgets/user_navigation.html:12
+#, fuzzy
+msgid "Hi, there! Please sign in"
+msgstr "please sign-in"
+
+#: skins/default/templates/widgets/user_navigation.html:15
+#, fuzzy
+msgid "settings"
+msgstr ""
+"Forum software relies on the internet cookie technology to keep track of "
+"user sessions. Cookies must be enabled in your browser so that forum can "
+"work for you."
+
+#: templatetags/extra_filters_jinja.py:279
+msgid "no"
+msgstr ""
+
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
msgid "Oops, apologies - there was some error"
msgstr ""
@@ -3608,95 +6476,131 @@ msgstr "please sign-in"
msgid "Spam was detected on your post, sorry for if this is a mistake"
msgstr ""
-#: utils/forms.py:32
+#: utils/forms.py:33
msgid "this field is required"
msgstr ""
-#: utils/forms.py:46
-msgid "choose a username"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
msgstr "Choose screen name"
-#: utils/forms.py:52
+#: utils/forms.py:69
msgid "user name is required"
msgstr ""
-#: utils/forms.py:53
+#: utils/forms.py:70
msgid "sorry, this name is taken, please choose another"
msgstr ""
-#: utils/forms.py:54
+#: utils/forms.py:71
msgid "sorry, this name is not allowed, please choose another"
msgstr ""
-#: utils/forms.py:55
+#: utils/forms.py:72
msgid "sorry, there is no user with this name"
msgstr ""
-#: utils/forms.py:56
+#: utils/forms.py:73
msgid "sorry, we have a serious error - user name is taken by several users"
msgstr ""
-#: utils/forms.py:57
+#: utils/forms.py:74
msgid "user name can only consist of letters, empty space and underscore"
msgstr ""
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "Your email <i>(never shared)</i>"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
+
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#: utils/forms.py:119
+#: utils/forms.py:139
msgid "email address is required"
msgstr ""
-#: utils/forms.py:120
+#: utils/forms.py:140
msgid "please enter a valid email address"
msgstr ""
-#: utils/forms.py:121
+#: utils/forms.py:141
msgid "this email is already used by someone else, please choose another"
msgstr ""
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "Password"
-
-#: utils/forms.py:150
+#: utils/forms.py:170
msgid "password is required"
msgstr ""
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "Password <i>(please retype)</i>"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#: utils/forms.py:154
+#: utils/forms.py:174
msgid "please, retype your password"
msgstr ""
-#: utils/forms.py:155
+#: utils/forms.py:175
msgid "sorry, entered passwords did not match, please try again"
msgstr ""
-#: utils/functions.py:74
+#: utils/functions.py:82
msgid "2 days ago"
msgstr ""
-#: utils/functions.py:76
+#: utils/functions.py:84
msgid "yesterday"
msgstr ""
-#: utils/functions.py:79
-#, python-format
+#: utils/functions.py:87
+#, fuzzy, python-format
msgid "%(hr)d hour ago"
msgid_plural "%(hr)d hours ago"
msgstr[0] ""
-msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
-#: utils/functions.py:85
-#, python-format
+#: utils/functions.py:93
+#, fuzzy, python-format
msgid "%(min)d min ago"
msgid_plural "%(min)d mins ago"
msgstr[0] ""
-msgstr[1] ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
#: views/avatar_views.py:99
msgid "Successfully uploaded a new avatar."
@@ -3710,199 +6614,186 @@ msgstr ""
msgid "Successfully deleted the requested avatars."
msgstr ""
-#: views/commands.py:39
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr ""
+
+#: views/commands.py:112
#, fuzzy
-msgid "anonymous users cannot vote"
+msgid "Sorry, anonymous users cannot vote"
msgstr ""
"Sorry, your account appears to be suspended and you cannot make new posts "
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: views/commands.py:59
+#: views/commands.py:129
msgid "Sorry you ran out of votes for today"
msgstr ""
-#: views/commands.py:65
+#: views/commands.py:135
#, python-format
msgid "You have %(votes_left)s votes left for today"
msgstr ""
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr ""
-
-#: views/commands.py:192
+#: views/commands.py:210
msgid "Sorry, something is not right here..."
msgstr ""
-#: views/commands.py:207
+#: views/commands.py:229
msgid "Sorry, but anonymous users cannot accept answers"
msgstr ""
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
msgstr ""
"Your subscription is saved, but email address %(email)s needs to be "
"validated, please see <a href='%(details_url)s'>more details here</a>"
-#: views/commands.py:295
+#: views/commands.py:348
msgid "email update frequency has been set to daily"
msgstr ""
-#: views/commands.py:400
+#: views/commands.py:464
#, python-format
msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
msgstr ""
-#: views/commands.py:409
+#: views/commands.py:473
#, python-format
msgid "Please sign in to subscribe for: %(tags)s"
msgstr ""
-#: views/commands.py:542
+#: views/commands.py:600
msgid "Please sign in to vote"
msgstr ""
-#: views/meta.py:84
+#: views/commands.py:620
+#, fuzzy
+msgid "Please sign in to delete/restore posts"
+msgstr "please sign-in"
+
+#: views/meta.py:37
+#, python-format
+msgid "About %(site)s"
+msgstr ""
+
+#: views/meta.py:92
msgid "Q&A forum feedback"
msgstr ""
-#: views/meta.py:85
+#: views/meta.py:93
msgid "Thanks for the feedback!"
msgstr ""
-#: views/meta.py:94
+#: views/meta.py:102
msgid "We look forward to hearing your feedback! Please, give it next time :)"
msgstr ""
-#: views/readers.py:151
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr ""
+
+#: views/readers.py:133
#, fuzzy, python-format
msgid "%(q_num)s question, tagged"
msgid_plural "%(q_num)s questions, tagged"
msgstr[0] "One question"
msgstr[1] ""
-#: views/readers.py:159
-#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "One question"
-msgstr[1] ""
-
-#: views/readers.py:199
-#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
-
-#: views/readers.py:415
+#: views/readers.py:388
msgid ""
"Sorry, the comment you are looking for has been deleted and is no longer "
"accessible"
msgstr ""
-#: views/users.py:211
-msgid "moderate this user"
-msgstr ""
-
-#: views/users.py:212
+#: views/users.py:206
msgid "moderate user"
msgstr ""
-#: views/users.py:386
+#: views/users.py:381
msgid "user profile"
msgstr ""
-#: views/users.py:387
+#: views/users.py:382
msgid "user profile overview"
msgstr ""
-#: views/users.py:698
+#: views/users.py:551
msgid "recent user activity"
msgstr ""
-#: views/users.py:699
+#: views/users.py:552
msgid "profile - recent activity"
msgstr ""
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr ""
-
-#: views/users.py:786
+#: views/users.py:639
msgid "profile - responses"
msgstr ""
-#: views/users.py:860
-msgid "user vote record"
-msgstr ""
-
-#: views/users.py:861
+#: views/users.py:680
msgid "profile - votes"
msgstr ""
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "user karma"
+#: views/users.py:701
+msgid "user karma"
+msgstr ""
-#: views/users.py:897
-msgid "profile - user reputation"
+#: views/users.py:702
+#, fuzzy
+msgid "Profile - User's Karma"
msgstr "Profile - User's Karma"
-#: views/users.py:924
+#: views/users.py:720
msgid "users favorite questions"
msgstr ""
-#: views/users.py:925
+#: views/users.py:721
msgid "profile - favorite questions"
msgstr ""
-#: views/users.py:945 views/users.py:949
+#: views/users.py:741 views/users.py:745
msgid "changes saved"
msgstr ""
-#: views/users.py:955
+#: views/users.py:751
msgid "email updates canceled"
msgstr ""
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr ""
-
-#: views/users.py:974
+#: views/users.py:770
msgid "profile - email subscriptions"
msgstr ""
-#: views/writers.py:58
+#: views/writers.py:60
msgid "Sorry, anonymous users cannot upload files"
msgstr ""
-#: views/writers.py:68
+#: views/writers.py:73
#, python-format
msgid "allowed file types are '%(file_types)s'"
msgstr ""
-#: views/writers.py:91
+#: views/writers.py:84
#, python-format
msgid "maximum upload file size is %(file_size)sK"
msgstr ""
-#: views/writers.py:99
+#: views/writers.py:92
msgid "Error uploading file. Please contact the site administrator. Thank you."
msgstr ""
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr ""
+#: views/writers.py:189
+msgid ""
"<span class=\"strong big\">You are welcome to start submitting your question "
"anonymously</span>. When you submit the post, you will be redirected to the "
"login/signup page. Your question will be saved in the current session and "
"will be published after you log in. Login/signup process is very simple. "
"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#: views/writers.py:492
+#: views/writers.py:466
#, fuzzy
msgid "Please log in to answer questions"
msgstr ""
@@ -3913,14 +6804,14 @@ msgstr ""
"please <strong>don't forget to vote</strong> - it really helps to select the "
"best questions and answers!"
-#: views/writers.py:598
+#: views/writers.py:572
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot post comments. Please <a href="
"\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:646
+#: views/writers.py:589
#, fuzzy
msgid "Sorry, anonymous users cannot edit comments"
msgstr ""
@@ -3928,35 +6819,90 @@ msgstr ""
"until this issue is resolved. You can, however edit your existing posts. "
"Please contact the forum administrator to reach a resolution."
-#: views/writers.py:654
+#: views/writers.py:619
#, python-format
msgid ""
"Sorry, you appear to be logged out and cannot delete comments. Please <a "
"href=\"%(sign_in_url)s\">sign in</a>."
msgstr ""
-#: views/writers.py:675
+#: views/writers.py:640
msgid "sorry, we seem to have some technical difficulties"
msgstr ""
#, fuzzy
-#~ msgid "Documentation"
-#~ msgstr "karma"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "Change your password"
+
+#~ msgid "question_answered"
+#~ msgstr "answered question"
+
+#~ msgid "question_commented"
+#~ msgstr "commented question"
+
+#~ msgid "Incorrect username."
+#~ msgstr "sorry, there is no such user name"
#, fuzzy
-#~ msgid "Log out"
-#~ msgstr "Logout Now"
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] ""
+#~ "<p>Dear %(name)s,</p></p>The following question has been updated on the "
+#~ "Q&A forum:</p>"
+#~ msgstr[1] ""
+#~ "<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated "
+#~ "on the Q&A forum:</p>"
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "Vui lòng nhập tên và mật khẩu"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "<p>Please remember that you can always <a href='%(link)s'>adjust</a> "
+#~ "frequency of the email updates or turn them off entirely.<br/>If you "
+#~ "believe that this message was sent in an error, please email about it the "
+#~ "forum administrator at %(email)s.</p><p>Sincerely,</p><p>Your friendly "
+#~ "Q&A forum server.</p>"
-#~ msgid "Change email"
-#~ msgstr "Change Email"
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "sorry, file uploading requires karma >%(min_rep)s"
#, fuzzy
-#~ msgid "Save your email address"
-#~ msgstr "Your email <i>(never shared)</i>"
+#~ msgid "blocked users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot post"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#, fuzzy
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be blocked and you cannot make new posts "
+#~ "until this issue is resolved. Please contact the forum administrator to "
+#~ "reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
+
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr ""
+#~ "Sorry, your account appears to be suspended and you cannot make new posts "
+#~ "until this issue is resolved. You can, however edit your existing posts. "
+#~ "Please contact the forum administrator to reach a resolution."
#~ msgid "change %(email)s info"
#~ msgstr ""
@@ -3979,26 +6925,14 @@ msgstr ""
#~ "<strong>Your new Email:</strong> (will <strong>not</strong> be shown to "
#~ "anyone, must be valid)"
-#~ msgid "Your Email"
-#~ msgstr ""
-#~ "<strong>Your Email</strong> (<i>must be valid, never shown to others</i>)"
-
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "Change Email"
-
-#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "How to validate email and why?"
-
#~ msgid "validate %(email)s info or go to %(change_email_url)s"
#~ msgstr ""
#~ "<span class=\"strong big\">An email with a validation link has been sent "
#~ "to %(email)s.</span> Please <strong>follow the emailed link</strong> with "
#~ "your web browser. Email validation is necessary to help insure the proper "
#~ "use of email on <span class=\"orange\">Q&amp;A</span>. If you would like "
-#~ "to use <strong>another email</strong>, please <a href='%(change_email_url)"
-#~ "s'><strong>change it again</strong></a>."
+#~ "to use <strong>another email</strong>, please <a "
+#~ "href='%(change_email_url)s'><strong>change it again</strong></a>."
#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
#~ msgstr ""
@@ -4032,10 +6966,6 @@ msgstr ""
#~ "href='%(change_link)s'>change</a> email used for update subscriptions if "
#~ "necessary."
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "karma"
-
#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
#~ msgstr ""
#~ "<p><span class=\"big strong\">You are here for the first time with your "
@@ -4056,11 +6986,11 @@ msgstr ""
#~ "is already used in another account.</span></p><p>Please choose another "
#~ "screen name to use with your %(provider)s login. Also, a valid email "
#~ "address is required on the <span class='orange'>Q&amp;A</span> forum. "
-#~ "Your email is used to create a unique <a href='%(gravatar_faq_url)"
-#~ "s'><strong>gravatar</strong></a> image for your account. If you like, you "
-#~ "can <strong>receive updates</strong> on the interesting questions or "
-#~ "entire forum by email. Email addresses are never shown or otherwise "
-#~ "shared with anybody else.</p>"
+#~ "Your email is used to create a unique <a "
+#~ "href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your "
+#~ "account. If you like, you can <strong>receive updates</strong> on the "
+#~ "interesting questions or entire forum by email. Email addresses are never "
+#~ "shown or otherwise shared with anybody else.</p>"
#~ msgid ""
#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
@@ -4104,50 +7034,9 @@ msgstr ""
#~ msgstr "Signup"
#, fuzzy
-#~ msgid "Logout"
-#~ msgstr "Logout Now"
-
-#~ msgid "User login"
+#~ msgid "Login"
#~ msgstr "User login"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class=\"strong big\">Your answer to </span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr ""
-#~ "<span class=\"strong big\">Your question</span> <i>\"<strong>%(title)s</"
-#~ "strong> %(summary)s...\"</i> <span class=\"strong big\">is saved and will "
-#~ "be posted once you log in.</span>"
-
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "Vui lòng nhập tên và mật khẩu"
-
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "Äăng nhập không thành công."
-
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "New password created"
-
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "Last updated"
-
#~ msgid "with openid it is easier"
#~ msgstr "With the OpenID you don't need to create new username and password."
@@ -4164,16 +7053,6 @@ msgstr ""
#~ msgstr ""
#~ "OpenID is based on an open standard, supported by many organizations."
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "Vui lòng nhập tên và mật khẩu"
-
-#, fuzzy
-#~ msgid "Create login name and password"
-#~ msgstr ""
-#~ "<span class='big strong'>Enter your Askbot login and password</span><br/"
-#~ "><span class='grey'>(or select your OpenID provider above)</span>"
-
#~ msgid "Traditional signup info"
#~ msgstr ""
#~ "<span class='strong big'>If you prefer, create your forum login name and "
@@ -4188,65 +7067,17 @@ msgstr ""
#~ msgstr "Signup"
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "Change Email"
-
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#, fuzzy
#~ msgid "answer permanent link"
#~ msgstr "link"
-#~ msgid "permanent link"
-#~ msgstr "link"
-
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "Post Your Answer"
-
#, fuzzy
-#~ msgid "reopen"
-#~ msgstr ""
-#~ "You can safely re-use the same login for all OpenID-enabled websites."
-
-#~ msgid "Related tags"
+#~ msgid "remove all flags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "Interesting tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "see all questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "see all tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "see latest questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "see tags"
+#~ msgid "Related tags"
#~ msgstr "Tags"
#, fuzzy
-#~ msgid "Edit answer"
-#~ msgstr "oldest"
-
-#, fuzzy
#~ msgid "Ask a question"
#~ msgstr "Ask Your Question"
@@ -4258,24 +7089,6 @@ msgstr ""
#~ "rough measure of the community trust to him/her. Various moderation tasks "
#~ "are gradually assigned to the users based on those points."
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr ""
-#~ "If your questions and answers are highly voted, your contribution to this "
-#~ "Q&amp;A community will be recognized with the variety of badges."
-
-#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "Below is the list of available badges and number \n"
-#~ " of times each type of badge has been awarded. Have ideas about fun "
-#~ "badges? Please, give us your <a href='%(feedback_faq_url)s'>feedback</a>"
-
-#~ msgid "Community badges"
-#~ msgstr "Badge levels"
-
#~ msgid "gold badge description"
#~ msgstr ""
#~ "Gold badge is the highest award in this community. To obtain it have to "
@@ -4292,28 +7105,6 @@ msgstr ""
#~ "If you are an active participant in this community, you will be "
#~ "recognized with this badge."
-#, fuzzy
-#~ msgid "Close question"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "Close the question"
-#~ msgstr "Post Your Answer"
-
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "Before you ask - please make sure to search for a similar question. You "
-#~ "can search questions by their title or tags."
-
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "What kinds of questions should be avoided?"
-
-#, fuzzy
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "What kinds of questions should be avoided?"
-
#~ 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 "
@@ -4324,16 +7115,6 @@ msgstr ""
#~ "as they tend to dilute the essense of questions and answers. For the "
#~ "brief discussions please use commenting facility."
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "Karma system allows users to earn rights to perform a variety of "
-#~ "moderation tasks"
-
-#~ msgid "How does reputation system work?"
-#~ msgstr "How does karma system work?"
-
#~ msgid "Rep system summary"
#~ msgstr ""
#~ "When a question or answer is upvoted, the user who posted them will gain "
@@ -4345,34 +7126,6 @@ msgstr ""
#~ msgid "use tags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "add comments"
-#~ msgstr "post a comment"
-
-#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "edit community wiki questions"
-#~ msgstr "list of all questions"
-
-#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "oldest"
-
-#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "post a comment"
-
#~ msgid "what is gravatar"
#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
@@ -4394,214 +7147,21 @@ msgstr ""
#~ "is generated automatically.</p>"
#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "Logout Now"
-
-#, fuzzy
-#~ msgid "Still have questions?"
-#~ msgstr "Ask Your Question"
-
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "Please <a href='%(ask_question_url)s'>ask</a> your question, help make "
-#~ "our community better!"
-
-#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "Sincerely,\n"
-#~ "Q&A Forum Administrator"
-
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr ""
-#~ "<div class=\"questions-count\">%(q_num)s</div><p>question with title "
-#~ "containing <strong><span class=\"darkred\">%(searchtitle)s</span></"
-#~ "strong></p>"
-
-#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#, fuzzy
-#~ msgid "answered"
-#~ msgstr "oldest"
-
-#, fuzzy
-#~ msgid "updated"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "Asked"
-
-#, fuzzy
-#~ msgid "delete this comment"
-#~ msgstr "post a comment"
-
-#~ msgid "add comment"
-#~ msgstr "post a comment"
-
-#~ msgid "page number %(num)s"
-#~ msgstr "page %(num)s"
-
-#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "Choose screen name"
-
-#, fuzzy
-#~ msgid "Questions"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "Edit question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
#~ msgid "Change tags"
#~ msgstr "Change Email"
-#, fuzzy
-#~ msgid "Reopen question"
-#~ msgstr "list of all questions"
-
-#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Reopen this question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Revision history"
-#~ msgstr "karma history"
-
-#, fuzzy
-#~ msgid "click to hide/show revision"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "by popularity"
-#~ msgstr "tags"
-
-#, fuzzy
-#~ msgid "Users"
-#~ msgstr "people"
-
#~ msgid "reputation"
#~ msgstr "karma"
-#, fuzzy
-#~ msgid "Search tips:"
-#~ msgstr "Tips"
-
-#, fuzzy
-#~ msgid "reset author"
-#~ msgstr "Send me a new password"
-
-#, fuzzy
-#~ msgid "reset tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "unanswered questions"
-
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "answered question"
-
-#, fuzzy
-#~ msgid "resetting tags"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
-#, fuzzy
-#~ msgid "Please, post your question!"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "(one comment)"
-#~ msgstr[1] ""
-#~ "\n"
-#~ "(%(comment_count)s comments)"
-
-#, fuzzy
-#~ msgid "oldest answers will be shown first"
-#~ msgstr " "
-
#~ msgid "oldest answers"
#~ msgstr "oldest"
-#, fuzzy
-#~ msgid "newest answers will be shown first"
-#~ msgstr " "
-
#~ msgid "newest answers"
#~ msgstr "newest"
-#, fuzzy
-#~ msgid "most voted answers will be shown first"
-#~ msgstr " "
-
#~ msgid "popular answers"
#~ msgstr "most voted"
-#, fuzzy
-#~ msgid "Answer Your Own Question"
-#~ msgstr "Post Your Answer"
-
-#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "Login/Signup to Post"
-
-#, fuzzy
-#~ msgid "Your answer"
-#~ msgstr "most voted"
-
-#, fuzzy
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
#~ msgid "you can answer anonymously and then login"
#~ msgstr ""
#~ "<span class='strong big'>Please start posting your answer anonymously</"
@@ -4636,45 +7196,17 @@ msgstr ""
#~ msgid "Answer the question"
#~ msgstr "Post Your Answer"
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "Tags"
-
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "questions with most answers"
-
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "Last updated"
-
#~ msgid "question asked"
#~ msgstr "Asked"
#~ msgid "question was seen"
#~ msgstr "Seen"
-#~ msgid "last updated"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "Related questions"
-#~ msgstr "Ask Your Question"
-
#~ msgid "Notify me once a day when there are any new answers"
#~ msgstr ""
#~ "<strong>Notify me</strong> once a day by email when there are any new "
#~ "answers or updates"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr ""
-#~ "<strong>Notify me</strong> weekly when there are any new answers or "
-#~ "updates"
-
#, fuzzy
#~ msgid "Notify me immediately when there are any new answers"
#~ msgstr ""
@@ -4688,28 +7220,6 @@ msgstr ""
#~ "sort=email_subscriptions'>change</a></strong> how often you receive "
#~ "updates)"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr ""
-#~ "<span class='strong'>Here</span> (once you log in) you will be able to "
-#~ "sign up for the periodic email updates about this question."
-
-#, fuzzy
-#~ msgid "change picture"
-#~ msgstr "How to change my picture (gravatar) and what is gravatar?"
-
-#, fuzzy
-#~ msgid "Screen Name"
-#~ msgstr "<strong>Screen Name</strong> (<i>will be shown to others</i>)"
-
-#, fuzzy
-#~ msgid "Email subscription settings"
-#~ msgstr ""
-#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
-#~ "Receive updates on interesting questions by email, <strong><br/>help the "
-#~ "community</strong> by answering questions of your colleagues. If you do "
-#~ "not wish to receive emails - select 'no email' on all items below.<br/"
-#~ ">Updates are only sent when there is any new activity on selected items."
-
#~ msgid "email subscription settings info"
#~ msgstr ""
#~ "<span class='big strong'>Adjust frequency of email updates.</span> "
@@ -4721,129 +7231,23 @@ msgstr ""
#~ msgid "Stop sending email"
#~ msgstr "Stop Email"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "Ask Your Question"
-
-#, fuzzy
-#~ msgid "manage login methods"
-#~ msgstr "please sign-in"
-
-#~ msgid "member for"
-#~ msgstr "member since"
-
-#, fuzzy
-#~ msgid "last seen"
-#~ msgstr "Last updated"
-
-#, fuzzy
-#~ msgid "user website"
-#~ msgstr "Welcome to Q&amp;A forum"
-
-#, fuzzy
-#~ msgid "location"
-#~ msgstr "karma"
-
-#~ msgid "age unit"
-#~ msgstr "years old"
-
-#, fuzzy
-#~ msgid "todays unused votes"
-#~ msgstr "votes"
-
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "karma"
-
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "user karma"
-
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "user karma"
-
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "Choose screen name"
-
-#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "years old"
-
-#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr ""
-#~ "Sorry, your account appears to be suspended and you cannot make new posts "
-#~ "until this issue is resolved. You can, however edit your existing posts. "
-#~ "Please contact the forum administrator to reach a resolution."
-
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "Tips"
-
-#, fuzzy
-#~ msgid "User profile"
-#~ msgstr "User login"
-
-#~ msgid "graph of user reputation"
-#~ msgstr "Graph of user karma"
-
#~ msgid "reputation history"
#~ msgstr "karma history"
#~ msgid "casted votes"
#~ msgstr "votes"
-#, fuzzy
-#~ msgid "votes"
-#~ msgstr "votes"
-
#~ msgid "answer tips"
#~ msgstr "Tips"
#, fuzzy
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "ask a question interesting to this community"
-
-#, fuzzy
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr ""
-#~ "<span class='big strong'>Please try to give a substantial answer</span>. "
-#~ "If you wanted to comment on the question or answer, just <strong>use the "
-#~ "commenting tool</strong>. Please remember that you can always "
-#~ "<strong>revise your answers</strong> - no need to answer the same "
-#~ "question twice. Also, please <strong>don't forget to vote</strong> - it "
-#~ "really helps to select the best questions and answers!"
-
-#, fuzzy
#~ msgid "please try to provide details"
#~ msgstr "provide enough details"
#, fuzzy
-#~ msgid "see frequently asked questions"
-#~ msgstr "ask a question interesting to this community"
-
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown basics"
-
-#, fuzzy
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "i-names không được hỗ trợ"
-
-#, fuzzy
#~ msgid "ask a question"
#~ msgstr "Ask Your Question"
-#~ msgid "login to post question info"
-#~ msgstr ""
-#~ "<span class=\"strong big\">You are welcome to start submitting your "
-#~ "question anonymously</span>. When you submit the post, you will be "
-#~ "redirected to the login/signup page. Your question will be saved in the "
-#~ "current session and will be published after you log in. Login/signup "
-#~ "process is very simple. Login takes about 30 seconds, initial signup "
-#~ "takes a minute or less."
-
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
#~ " see %(email_validation_faq_url)s\n"
@@ -4858,29 +7262,12 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "Login/Signup to Post"
-#~ msgid "Ask your question"
-#~ msgstr "Ask Your Question"
-
-#~ msgid "users"
-#~ msgstr "people"
-
#~ msgid "question tips"
#~ msgstr "Tips"
#~ msgid "please ask a relevant question"
#~ msgstr "ask a question interesting to this community"
-#~ msgid "please try provide enough details"
-#~ msgstr "provide enough details"
-
-#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "unanswered"
-
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "Ask Your Question"
-
#, fuzzy
#~ msgid "logout"
#~ msgstr "Logout Now"
@@ -4889,12 +7276,30 @@ msgstr ""
#~ msgid "login"
#~ msgstr "User login"
+#~ msgid "no items in counter"
+#~ msgstr "no"
+
+#~ msgid "your email address"
+#~ msgstr "Your email <i>(never shared)</i>"
+
+#~ msgid "choose password"
+#~ msgstr "Password"
+
+#~ msgid "retype password"
+#~ msgstr "Password <i>(please retype)</i>"
+
+#~ msgid "user reputation in the community"
+#~ msgstr "user karma"
+
#, fuzzy
-#~ msgid "settings"
+#~ msgid "Please log in to ask questions"
#~ msgstr ""
-#~ "Forum software relies on the internet cookie technology to keep track of "
-#~ "user sessions. Cookies must be enabled in your browser so that forum can "
-#~ "work for you."
+#~ "<span class=\"strong big\">You are welcome to start submitting your "
+#~ "question anonymously</span>. When you submit the post, you will be "
+#~ "redirected to the login/signup page. Your question will be saved in the "
+#~ "current session and will be published after you log in. Login/signup "
+#~ "process is very simple. Login takes about 30 seconds, initial signup "
+#~ "takes a minute or less."
#, fuzzy
#~ msgid ""
@@ -4915,14 +7320,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "Tags"
-#, fuzzy
-#~ msgid "questions"
-#~ msgstr "Tips"
-
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "Ask Your Question"
-
#~ msgid "Email verification subject line"
#~ msgstr "Verification Email from Q&A forum"
diff --git a/askbot/locale/vi/LC_MESSAGES/djangojs.mo b/askbot/locale/vi/LC_MESSAGES/djangojs.mo
index 45669c6d..03a43a93 100644
--- a/askbot/locale/vi/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/vi/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/vi/LC_MESSAGES/djangojs.po b/askbot/locale/vi/LC_MESSAGES/djangojs.po
index c28b1a5c..afeb4aa3 100644
--- a/askbot/locale/vi/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/vi/LC_MESSAGES/djangojs.po
@@ -2,23 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.7\n"
+"Project-Id-Version: askbot\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:00-0600\n"
+"POT-Creation-Date: 2012-04-18 18:55-0500\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"
-"Language: \n"
+"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,146 +75,76 @@ msgstr ""
msgid "loading..."
msgstr ""
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr ""
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr ""
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr ""
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr ""
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr ""
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr ""
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr ""
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr ""
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+msgid "please confirm removal of offensive flag"
+msgstr ""
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr ""
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr ""
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr ""
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr ""
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr ""
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr ""
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr ""
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr ""
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr ""
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr ""
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -223,118 +153,118 @@ msgid "Please select at least one item"
msgstr ""
#: skins/common/media/js/user.js:58
+#, fuzzy
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] ""
+"#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+"#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+msgstr[1] "#-#-#-#-# djangojs.po (PACKAGE VERSION) #-#-#-#-#\n"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr ""
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
diff --git a/askbot/locale/zh-tw/LC_MESSAGES/django.mo b/askbot/locale/zh-tw/LC_MESSAGES/django.mo
deleted file mode 100644
index e82cc04e..00000000
--- a/askbot/locale/zh-tw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo b/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ef4ebd4b..00000000
--- a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/askbot/locale/zh_CN/LC_MESSAGES/django.mo b/askbot/locale/zh_CN/LC_MESSAGES/django.mo
index 52b34c68..29164cd4 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/django.mo
+++ b/askbot/locale/zh_CN/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/zh_CN/LC_MESSAGES/django.po b/askbot/locale/zh_CN/LC_MESSAGES/django.po
index 07b4b386..5b147ddb 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/django.po
+++ b/askbot/locale/zh_CN/LC_MESSAGES/django.po
@@ -2,54 +2,56 @@
# Copyright (C) 2009 Gang Chen
# This file is distributed under the same license as the CNPROG package.
# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
-#
+# translators: suyu8776@gmail.com
+# Dean Lee xslidian@gmail.com
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:42-0600\n"
-"PO-Revision-Date: 2010-12-15 00:54\n"
-"Last-Translator: <suyu8776@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"POT-Creation-Date: 2012-04-18 18:57-0500\n"
+"PO-Revision-Date: 2012-01-25 02:11+0800\n"
+"Last-Translator: Dean Lee <xslidian@gmail.com>\n"
+"Language-Team: ChS <xslidian@lidian.info>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Translated-Using: django-rosetta 0.5.6\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.1.6\n"
+"X-Translated-Using: django-rosetta 0.5.6\n"
#: exceptions.py:13
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "对ä¸èµ·,匿å用户ä¸èƒ½ä½¿ç”¨æ­¤åŠŸèƒ½"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
-#, fuzzy
+#: feed.py:28
msgid "Individual question feed"
-msgstr "我选择的问题"
+msgstr "å•æ¡é—®é¢˜è®¢é˜…"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "最新问题"
#: forms.py:74
-#, fuzzy
msgid "select country"
-msgstr "删除å¸å·"
+msgstr "选择国家"
#: forms.py:83
msgid "Country"
-msgstr ""
+msgstr "国家"
#: forms.py:91
-#, fuzzy
msgid "Country field is required"
-msgstr "必填项"
+msgstr "国家字段必填"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "标题"
@@ -57,67 +59,82 @@ msgstr "标题"
msgid "please enter a descriptive title for your question"
msgstr "请输入对问题具有æ述性质的标题 - “帮忙ï¼ç´§æ€¥æ±‚助ï¼â€æ˜¯ä¸å»ºè®®çš„标题。"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "标题的长度必须大于10"
+#: forms.py:113
+#, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "标题必须多于 %d 个字符"
-#: forms.py:119
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
+
+#: forms.py:149
msgid "content"
msgstr "内容"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "内容至少è¦10个字符"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "标签"
-#: forms.py:136
+#: forms.py:188
+#, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr "标签为ä¸å¸¦ç©ºæ ¼çš„关键字,最多åªèƒ½ä½¿ç”¨5个关键字。"
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] "标签为ä¸å¸¦ç©ºæ ¼çš„关键字。最多å¯ä»¥ä½¿ç”¨ %(max_tags)d 个标签。"
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr " 标签ä¸èƒ½ä¸ºç©ºã€‚"
-#: forms.py:173
+#: forms.py:232
#, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "最多åªèƒ½æœ‰%(tag_count)d个标签"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
-msgstr ""
+msgstr "至少必填下述标签之一:%(tags)s"
-#: forms.py:190
+#: forms.py:249
#, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "标签最多åªèƒ½æœ‰%(max_chars)d个字符"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr "在标签中使用这些字符"
+#: forms.py:258
+#, fuzzy
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr "标签请使用英文字æ¯ï¼Œä¸­æ–‡æˆ–者数字字符串(. - _ # 也å¯ä»¥ï¼‰"
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
-msgstr ""
+msgstr "社区 wiki(无积分奖励,很多其他用户也能编辑 wiki 文章)"
-#: forms.py:234
+#: forms.py:295
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模å¼ï¼Œé—®ç­”ä¸è®¡ç®—积分,签å也ä¸æ˜¾ç¤ºä½œè€…ä¿¡æ¯"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "更新概è¦ï¼š"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -125,234 +142,261 @@ msgstr ""
"输入本次修改的简å•æ¦‚述(如:修改了别字,修正了语法,改进了样å¼ç­‰ã€‚éžå¿…å¡«"
"项。)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr "输入è¦æ·»åŠ æˆ–å‡åŽ»çš„分数"
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr "已认è¯"
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr "查看"
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
msgid "suspended"
msgstr "æš‚åœä½¿ç”¨"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr "冻结"
-#: forms.py:346
-#, fuzzy
+#: forms.py:405
msgid "administrator"
-msgstr "网站管ç†å‘˜"
+msgstr "管ç†å‘˜"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr "版主"
-#: forms.py:367
+#: forms.py:426
msgid "Change status to"
msgstr "修改状æ€ä¸º"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr "哪个?"
-#: forms.py:415
+#: forms.py:474
msgid "Cannot change own status"
msgstr "ä¸èƒ½ä¿®æ”¹è‡ªå·±çš„状æ€"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr "ä¸èƒ½æŠŠå…¶ä»–用户转为版主"
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr "ä¸èƒ½ä¿®æ”¹å…¶ä»–版主的状æ€"
-#: forms.py:434
-#, fuzzy
+#: forms.py:493
msgid "Cannot change status to admin"
-msgstr "ä¸èƒ½ä¿®æ”¹è‡ªå·±çš„状æ€"
+msgstr "ä¸èƒ½ä¿®æ”¹ç®¡ç†å‘˜çš„状æ€"
-#: forms.py:440
-#, fuzzy, python-format
+#: forms.py:499
+#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
-msgstr "如果你希望修改%(username)s状æ€"
+msgstr "如果你希望修改 %(username)s 的状æ€ï¼Œè¯·åšå‡ºæœ‰æ„义的选择。"
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr "主题"
-#: forms.py:456
+#: forms.py:515
msgid "Message text"
msgstr "ä¿¡æ¯æ–‡æœ¬"
-#: forms.py:542
-#, fuzzy
+#: forms.py:530
msgid "Your name (optional):"
-msgstr "用户å"
+msgstr "åå­— (å¯é€‰):"
-#: forms.py:543
-#, fuzzy
+#: forms.py:531
msgid "Email:"
-msgstr "邮件"
+msgstr "电å­é‚®ç®±:"
-#: forms.py:545
+#: forms.py:533
msgid "Your message:"
msgstr "ä½ çš„ä¿¡æ¯:"
-#: forms.py:550
+# 100%
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
-msgstr ""
+msgstr "我ä¸æƒ³ç»™å‡ºç”µå­é‚®ç®±åœ°å€æˆ–接收回应:"
-#: forms.py:572
+# 100%
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
-msgstr ""
+msgstr "请标记“我ä¸æƒ³ç»™å‡ºé‚®ç®±åœ°å€â€å­—段。"
-#: forms.py:611
-#, fuzzy
+#: forms.py:599
msgid "ask anonymously"
-msgstr "匿å"
+msgstr "匿åæé—®"
-#: forms.py:613
+# 100%
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
+msgstr "若您ä¸æƒ³åœ¨æ问此问题时公布自己的å字,请选中本项"
+
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
msgstr ""
-#: forms.py:773
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
-msgstr ""
+msgstr "您已匿åæ问,若决定公开身份,请选中此å¤é€‰æ¡†ã€‚"
-#: forms.py:777
+# 100%
+#: forms.py:773
msgid "reveal identity"
-msgstr ""
+msgstr "公布身份"
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
-msgstr ""
+msgstr "抱歉,åªæœ‰åŒ¿å问题的所有者å¯ä»¥å…¬å¼€å…¶èº«ä»½ï¼Œè¯·å–消选中å¤é€‰æ¡†"
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
+"抱歉,似乎规则已有å˜åŒ–——ä¸å†å…许匿åæ问。请选中“公开身份â€å¤é€‰æ¡†æˆ–é‡æ–°åŠ è½½æœ¬"
+"页é¢å¹¶å†æ¬¡å°è¯•ç¼–辑问题。"
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "ä¸ä¼šå…¬å¼€ï¼Œç”¨äºŽå¤´åƒæ˜¾ç¤ºæœåŠ¡"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "真实姓å"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "个人网站"
-#: forms.py:907
+# 100%
+#: forms.py:902
msgid "City"
-msgstr ""
+msgstr "城市"
-#: forms.py:916
-#, fuzzy
+#: forms.py:911
msgid "Show country"
-msgstr "æ–°å¸å·"
+msgstr "显示国家"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "生日"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "ä¸ä¼šå…¬å¼€ï¼Œåªä¼šæ˜¾ç¤ºæ‚¨çš„年龄,格å¼ä¸ºï¼šYYYY-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "个人简介"
-#: forms.py:937
+#: forms.py:932
msgid "Screen name"
msgstr "昵称"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "该电å­é‚®ä»¶å·²è¢«æ³¨å†Œï¼Œè¯·é€‰æ‹©å¦ä¸€ä¸ªå†è¯•ã€‚"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "选择邮件标签过æ¥"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "我的æé—®"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "我的回答"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "个人选项"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "整个论å›(标签过滤)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr "留言并æ交我"
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "请从以上选项中选择一项"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "试一试"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "ä¸éœ€è¦é‚®ä»¶ï¼Œè°¢è°¢"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "请从以上选项中选择一项"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
# footer.html
-#: urls.py:57
+#: urls.py:41
msgid "about/"
msgstr "关于本站/"
-#: urls.py:58
+#: urls.py:42
msgid "faq/"
msgstr "常è§é—®é¢˜/"
-#: urls.py:59
+#: urls.py:43
msgid "privacy/"
msgstr "éšç§æ”¿ç­–/"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
msgid "answers/"
msgstr "回答/"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
msgid "edit/"
msgstr "编辑/"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
msgid "revisions/"
msgstr "版本/"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "问题"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
msgid "questions/"
msgstr "问题/"
@@ -377,66 +421,74 @@ msgid "answer/"
msgstr "回答/"
#: urls.py:112
+#, fuzzy
msgid "vote/"
-msgstr "票/"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"票/\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"投票/"
+
+#: urls.py:123
+msgid "widgets/"
+msgstr "å°å·¥å…·/"
-#: urls.py:153
+#: urls.py:158
msgid "tags/"
msgstr "标签/"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
-msgstr ""
+msgstr "订阅标签/"
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
msgid "users/"
msgstr "用户/"
-#: urls.py:214
-#, fuzzy
+#: urls.py:219
msgid "subscriptions/"
-msgstr "订阅"
+msgstr "订阅/"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
-msgstr ""
+msgstr "用户/自定义头åƒæ›´æ–°/"
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
msgid "badges/"
msgstr "奖牌榜/"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr "ä¿¡æ¯/"
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr "标记已读/"
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr "上传/"
-#: urls.py:258
+#: urls.py:263
msgid "feedback/"
msgstr "问题å馈/"
-#: urls.py:300
+#: urls.py:305
msgid "question/"
msgstr "æé—®/"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
msgid "account/"
msgstr "账户/"
#: conf/access_control.py:8
-#, fuzzy
msgid "Access control settings"
-msgstr "基本设置"
+msgstr "访问控制设置"
#: conf/access_control.py:17
msgid "Allow only registered user to access the forum"
-msgstr ""
+msgstr "åªå…许注册用户访问论å›"
#: conf/badges.py:13
msgid "Badge settings"
@@ -444,11 +496,11 @@ msgstr "设置"
#: conf/badges.py:23
msgid "Disciplined: minimum upvotes for deleted post"
-msgstr ""
+msgstr "å—罚:达到删除帖å­çš„最低åŒæ„票数"
#: conf/badges.py:32
msgid "Peer Pressure: minimum downvotes for deleted post"
-msgstr ""
+msgstr "用户压力:达到删除帖å­çš„最低å¦å†³ç¥¨æ•°"
#: conf/badges.py:41
msgid "Teacher: minimum upvotes for the answer"
@@ -486,6 +538,7 @@ msgstr "å—欢迎问题:最å°æµè§ˆæ¬¡æ•°"
msgid "Notable Question: minimum views"
msgstr "关注的问题:最å°æµè§ˆæ¬¡æ•°"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
# close.html
#: conf/badges.py:122
msgid "Famous Question: minimum views"
@@ -501,7 +554,7 @@ msgstr "居民义务:最少投票数"
#: conf/badges.py:149
msgid "Enlightened Duty: minimum upvotes"
-msgstr ""
+msgstr "优良义务:最低åŒæ„票数"
#: conf/badges.py:158
msgid "Guru: minimum upvotes"
@@ -509,11 +562,11 @@ msgstr "专家:最少推è票数"
#: conf/badges.py:167
msgid "Necromancer: minimum upvotes"
-msgstr ""
+msgstr "亡çµï¼šæœ€ä½ŽåŒæ„票数"
#: conf/badges.py:176
msgid "Necromancer: minimum delay in days"
-msgstr ""
+msgstr "亡çµï¼šæœ€ä½Žå»¶è¿Ÿå¤©æ•°"
#: conf/badges.py:185
msgid "Associate Editor: minimum number of edits"
@@ -529,15 +582,15 @@ msgstr "é‡è¦é—®é¢˜:最少星数"
#: conf/badges.py:212
msgid "Commentator: minimum comments"
-msgstr ""
+msgstr "评论家:最低评论数"
#: conf/badges.py:221
msgid "Taxonomist: minimum tag use count"
-msgstr ""
+msgstr "分类学家:最低标签使用é‡"
#: conf/badges.py:230
msgid "Enthusiast: minimum days"
-msgstr ""
+msgstr "忠实粉ä¸ï¼šæœ€å°‘天数"
#: conf/email.py:15
msgid "Email and email alert settings"
@@ -552,178 +605,201 @@ msgid ""
"This setting takes default from the django settingEMAIL_SUBJECT_PREFIX. A "
"value entered here will overridethe default."
msgstr ""
+"æ­¤è®¾ç½®é»˜è®¤å– django 设置 EMAIL_SUBJECT_PREFIX 的值。此处输入的值将覆盖默认"
+"值。"
#: conf/email.py:38
+#, fuzzy
+msgid "Enable email alerts"
+msgstr "邮件åŠé‚®ä»¶æ醒设置"
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr "邮件æ醒的最大新问题数"
-#: conf/email.py:48
-#, fuzzy
+#: conf/email.py:57
msgid "Default notification frequency all questions"
-msgstr "默认新问题通知频率"
+msgstr "默认所有问题通知频率"
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
-msgstr ""
+msgstr "本选项å¯å®šä¹‰å‘é€æ›´æ–°é‚®ä»¶çš„频率:所有æ问。"
-#: conf/email.py:62
-#, fuzzy
+#: conf/email.py:71
msgid "Default notification frequency questions asked by the user"
-msgstr "默认新问题通知频率"
+msgstr "默认用户æ问通知频率"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
-msgstr ""
+msgstr "本选项å¯å®šä¹‰å‘é€æ›´æ–°é‚®ä»¶çš„频率:用户æ问。"
-#: conf/email.py:76
-#, fuzzy
+#: conf/email.py:85
msgid "Default notification frequency questions answered by the user"
-msgstr "默认新问题通知频率"
+msgstr "默认用户回答问题通知频率"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
-msgstr ""
+msgstr "本选项å¯å®šä¹‰å‘é€æ›´æ–°é‚®ä»¶çš„频率:用户回答问题。"
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
-msgstr ""
+msgstr "默认用户选择问题通知频率"
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
-msgstr ""
+msgstr "本选项å¯å®šä¹‰å‘é€æ›´æ–°é‚®ä»¶çš„频率:用户选择问题。"
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
-msgstr ""
+msgstr "默认æåŠä¸Žè¯„论通知频率"
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
-msgstr ""
+msgstr "本选项å¯å®šä¹‰å‘é€æ›´æ–°é‚®ä»¶çš„频率:æåŠä¸Žè¯„论。"
-#: conf/email.py:119
-#, fuzzy
+#: conf/email.py:128
msgid "Send periodic reminders about unanswered questions"
-msgstr "没有未回答的问题"
+msgstr "å‘é€æœªå›žç­”问题定期æ醒邮件"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
+"注æ„: 使用本功能需è¿è¡Œç®¡ç†å‘½ä»¤â€œsend_unanswered_question_remindersâ€(如通过 "
+"cron 任务——以适当频率)"
-#: conf/email.py:134
-#, fuzzy
+#: conf/email.py:143
msgid "Days before starting to send reminders about unanswered questions"
-msgstr "没有未回答的问题"
+msgstr "开始å‘é€æœªå›žç­”问题æ醒邮件之å‰çš„天数"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
-msgstr ""
+msgstr "å‘é€æœªå›žç­”问题æ醒邮件的间隔时间。"
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
-msgstr ""
+msgstr "å‘é€æ— å›žç­”æé—®æ醒邮件的最大数é‡"
-#: conf/email.py:168
-#, fuzzy
+#: conf/email.py:177
msgid "Send periodic reminders to accept the best answer"
-msgstr "没有未回答的问题"
+msgstr "定期å‘é€æŽ¥å—最佳回答的æ醒邮件"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
+"NOTE: in order to use this feature, it is necessary to run the management "
+"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
+"an appropriate frequency) "
-#: conf/email.py:183
-#, fuzzy
+#: conf/email.py:192
msgid "Days before starting to send reminders to accept an answer"
-msgstr "没有未回答的问题"
+msgstr "å‘é€æŽ¥å—最佳回答æ醒邮件å‰çš„天数"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
-msgstr ""
+msgstr "å‘é€æŽ¥å—回答æ醒的间隔天数。"
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
-msgstr ""
+msgstr "å‘é€æŽ¥æ”¶æœ€ä½³ç­”案的æ醒邮件的最大数é‡"
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr "在æ交å‰éœ€è¦é‚®ä»¶ç¡®è®¤"
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr "通过å‘é€ç¡®è®¤é‚®ä»¶å®Œæˆé‚®ä»¶æ¿€æ´»ç¡®è®¤"
-#: conf/email.py:228
+#: conf/email.py:237
msgid "Allow only one account per email address"
msgstr "æ¯ä¸ªé‚®ä»¶åœ°å€åªå…许关è”一个账户"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr "匿å用户邮件"
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr "使用这个设置没有邮件的用户图åƒ"
-#: conf/email.py:247
-#, fuzzy
+#: conf/email.py:256
msgid "Allow posting questions by email"
-msgstr "登录并æ交问题"
+msgstr "å…许邮件æé—®"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
-msgstr ""
+msgstr "å¯ç”¨æœ¬è®¾ç½®å‰ - 请在 settings.py 文件中填写 IMAP 设置"
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
-msgstr ""
+msgstr "以破折å·æ›¿ä»£æ‰€å‘é€é‚®ä»¶ä¸­æ ‡ç­¾ä¸­çš„空格"
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+"This setting applies to tags written in the subject line of questions asked "
+"by email"
-#: conf/external_keys.py:11
+#: conf/email.py:284
#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "å…许邮件æé—®"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
+#: conf/external_keys.py:11
msgid "Keys for external services"
-msgstr "LDAPæœåŠ¡URL"
+msgstr "外部æœåŠ¡ key"
#: conf/external_keys.py:19
msgid "Google site verification key"
msgstr "Google网站确认key"
#: conf/external_keys.py:21
-#, fuzzy, python-format
+#, python-format
msgid ""
"This key helps google index your site please obtain is at <a href=\"%(url)s?"
"hl=%(lang)s\">google webmasters tools site</a>"
msgstr ""
-"请æ’å…¥<a href=\"%(google_webmasters_tools_url)s\">google webmasters tools "
-"site</a>\n"
+"请æ’å…¥<a href=\"%(url)s?hl=%(lang)s\">google webmasters tools site</a>\n"
"以帮助google索引你的网站"
#: conf/external_keys.py:36
@@ -731,42 +807,42 @@ msgid "Google Analytics key"
msgstr "Google Analytics key"
#: conf/external_keys.py:38
-#, fuzzy, python-format
+#, python-format
msgid ""
"Obtain is at <a href=\"%(url)s\">Google Analytics</a> site, if you wish to "
"use Google Analytics to monitor your site"
msgstr ""
-"如果你希望使用Google Analytics监控你的网站,请在这里设置 <a href="
-"\"%(ga_site)s\">Google Analytics</a>"
+"如果你希望使用Google Analytics监控你的网站,请在这里设置 <a href=\"%(url)s"
+"\">Google Analytics</a>"
#: conf/external_keys.py:51
msgid "Enable recaptcha (keys below are required)"
msgstr "激活recaptcha(下é¢çš„keys是必须的)"
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr "Recaptcha public key"
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr "Recaptcha private key"
-#: conf/external_keys.py:70
-#, fuzzy, python-format
+#: conf/external_keys.py:72
+#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
"robots. Please get this and a public key at the <a href=\"%(url)s\">%(url)s</"
"a>"
msgstr ""
"Recaptcha这个工具帮助我们辨别出垃圾邮件中的真实用户,\n"
-"请从这里获å–public key <a href=\"http://recaptcha.net\">recaptcha.net</a>"
+"请从这里获å–public key <a href=\"%(url)s\">recaptcha.net</a>"
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr "Facebook public API key"
-#: conf/external_keys.py:84
-#, fuzzy, python-format
+#: conf/external_keys.py:86
+#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
"method at your site. Please obtain these keys at <a href=\"%(url)s"
@@ -774,18 +850,17 @@ msgid ""
msgstr ""
"Facebook API key å’Œ Facebook secret å…许用户通过Facebook Connect方法在你网站"
"上登录\n"
-"获å–这些,通过<a href=\"http://www.\n"
-"facebook.com/developers/createapp.php\">facebook create app</a> 网站"
+"获å–这些,通过<a href=\"%(url)s\">facebook create app</a> 网站"
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr "Facebook secret key"
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
msgid "Twitter consumer key"
msgstr "Twitter consumer key"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
@@ -794,15 +869,15 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr "Twitter consumer secret"
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr "LinkedIn consumer key"
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
@@ -810,16 +885,15 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr "LinkedIn consumer secret"
-#: conf/external_keys.py:147
-#, fuzzy
+#: conf/external_keys.py:149
msgid "ident.ca consumer key"
-msgstr "LinkedIn consumer key"
+msgstr "ident.ca 客户 key"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, fuzzy, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
@@ -828,27 +902,9 @@ msgstr ""
"请在这里注册你的网站 <a href=\"http://dev.twitter.com/apps/\">twitter "
"applications site</a>"
-#: conf/external_keys.py:160
-#, fuzzy
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
-msgstr "LinkedIn consumer secret"
-
-#: conf/external_keys.py:168
-#, fuzzy
-msgid "Use LDAP authentication for the password login"
-msgstr "为使用密ç ç™»å½•çš„用户进行LDAP验è¯"
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr "LDAPæœåŠ¡æ供商"
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr "LDAPæœåŠ¡URL"
-
-#: conf/external_keys.py:193
-msgid "Explain how to change LDAP password"
-msgstr "如何修改LDAP密ç "
+msgstr "ident.ca 客户 secret"
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
@@ -867,18 +923,16 @@ msgstr ""
"\" 页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
#: conf/flatpages.py:32
-#, fuzzy
msgid "Text of the Q&A forum FAQ page (html format)"
-msgstr "关于页é¢çš„Q&A讨论内容(htmlæ ¼å¼)"
+msgstr "Q&A 论å›å¸¸è§é—®é¢˜é¡µé¢æ–‡å­— (htmlæ ¼å¼)"
#: conf/flatpages.py:35
-#, fuzzy
msgid ""
"Save, then <a href=\"http://validator.w3.org/\">use HTML validator</a> on "
"the \"faq\" page to check your input."
msgstr ""
-"ä¿å­˜, 然åŽå¼€å¯ <a href=\"http://validator.w3.org/\">使用HTML验è¯</a> \"关于"
-"\" 页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
+"ä¿å­˜åŽ <a href=\"http://validator.w3.org/\">使用 HTML 验è¯å™¨</a> 检查“常è§é—®"
+"题â€é¡µé¢çš„输入是å¦æœ‰è¯¯ã€‚"
#: conf/flatpages.py:46
msgid "Text of the Q&A forum Privacy Policy (html format)"
@@ -893,34 +947,37 @@ msgstr ""
"页é¢åŽ»æ£€æŸ¥ä½ çš„输入."
#: conf/forum_data_rules.py:12
-#, fuzzy
msgid "Data entry and display rules"
-msgstr "设置数æ®æ˜¾ç¤ºæ–¹å¼"
+msgstr "æ•°æ®æ¡ç›®ä¸Žæ˜¾ç¤ºè§„则"
-#: conf/forum_data_rules.py:22
-#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
msgstr ""
+#: conf/forum_data_rules.py:23
+#, fuzzy, python-format
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
+msgstr "å¯ç”¨è§†é¢‘嵌入。<em>注: 请先 <a href=\"%(url)s>读我</a>。</em>"
+
#: conf/forum_data_rules.py:33
msgid "Check to enable community wiki feature"
msgstr "å¼€å¯ç¤¾åŒºwiki功能"
#: conf/forum_data_rules.py:42
msgid "Allow asking questions anonymously"
-msgstr ""
+msgstr "å…许匿åæé—®"
#: conf/forum_data_rules.py:44
msgid ""
"Users do not accrue reputation for anonymous questions and their identity is "
"not revealed until they change their mind"
msgstr ""
+"Users do not accrue reputation for anonymous questions and their identity is "
+"not revealed until they change their mind"
#: conf/forum_data_rules.py:56
msgid "Allow posting before logging in"
-msgstr ""
+msgstr "å…许ä¸ç™»å½•å‘帖"
#: conf/forum_data_rules.py:58
msgid ""
@@ -929,220 +986,327 @@ msgid ""
"to check for pending posts every time the user logs in. The builtin Askbot "
"login system supports this feature."
msgstr ""
+"Check if you want to allow users start posting questions or answers before "
+"logging in. Enabling this may require adjustments in the user login system "
+"to check for pending posts every time the user logs in. The builtin Askbot "
+"login system supports this feature."
#: conf/forum_data_rules.py:73
-#, fuzzy
msgid "Allow swapping answer with question"
-msgstr "回答该问题"
+msgstr "å…许对调问题与回答"
#: conf/forum_data_rules.py:75
msgid ""
"This setting will help import data from other forums such as zendesk, when "
"automatic data import fails to detect the original question correctly."
msgstr ""
+"This setting will help import data from other forums such as zendesk, when "
+"automatic data import fails to detect the original question correctly."
#: conf/forum_data_rules.py:87
msgid "Maximum length of tag (number of characters)"
msgstr "标签最大长度(字符数)"
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr "标题最å°é•¿åº¦ (字符数)"
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr "问题正文最å°é•¿åº¦ (字符数)"
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr "回答正文最å°é•¿åº¦ (字符数)"
+
+#: conf/forum_data_rules.py:126
#, fuzzy
+msgid "Are tags required?"
+msgstr " 标签ä¸èƒ½ä¸ºç©ºã€‚"
+
+#: conf/forum_data_rules.py:135
msgid "Mandatory tags"
-msgstr "更新标签"
+msgstr "必需标签"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
+"At least one of these tags will be required for any new or newly edited "
+"question. A mandatory tag may be wildcard, if the wildcard tags are active."
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
-msgstr ""
+msgstr "强制å°å†™å­—æ¯æ ‡ç­¾"
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
+"Attention: after checking this, please back up the database, and run a "
+"management command: <code>python manage.py fix_question_tags</code> to "
+"globally rename the tags"
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
-msgstr ""
+msgstr "标签列表格å¼"
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
+"Select the format to show tags in, either as a simple list, or as a tag cloud"
-#: conf/forum_data_rules.py:140
-#, fuzzy
+#: conf/forum_data_rules.py:180
msgid "Use wildcard tags"
-msgstr "相关标签"
+msgstr "使用通é…符标签"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
+"Wildcard tags can be used to follow or ignore many tags at once, a valid "
+"wildcard tag has a single wildcard at the very end"
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr "默认显示最大留言数"
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr "最大留言长度,必须å°äºŽ%(max_len)s"
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
-msgstr ""
+msgstr "é™åˆ¶ç¼–辑评论的时间"
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
-msgstr ""
+msgstr "如果å–消选中,将无编辑评论时间é™åˆ¶"
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
-msgstr ""
+msgstr "å…许编辑评论的分钟数"
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
-msgstr ""
+msgstr "è¦å¯ç”¨æœ¬è®¾ç½®ï¼Œè¯·é€‰ä¸­å‰ä¸€ä¸ªè®¾ç½®"
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
-msgstr ""
+msgstr "按“回车â€é”®ä¿å­˜è¯„论"
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr "æœç´¢æœ€å°é•¿åº¦"
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr "必须匹é…相关数æ®åº“设置"
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
-msgstr ""
+msgstr "ä¸è¦å›ºå®šæœç´¢æ–‡æœ¬è¯·æ±‚"
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
+"Check to disable the \"sticky\" behavior of the search query. This may be "
+"useful if you want to move the search bar away from the default position or "
+"do not like the default sticky behavior of the text search query."
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr "æ¯ä¸ªé—®é¢˜çš„最多标签数"
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
msgid "Number of questions to list by default"
msgstr "默认显示的问题数"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
msgid "What should \"unanswered question\" mean?"
msgstr "\"未回答\"问题是什么?"
-#: conf/license.py:13
-msgid "Content LicensContent License"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr "为使用密ç ç™»å½•çš„用户进行LDAP验è¯"
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+#, fuzzy
+msgid "LDAP Server USERID field name"
+msgstr "LDAPæœåŠ¡æ供商"
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+#, fuzzy
+msgid "LDAP Server EMAIL field name"
+msgstr "LDAPæœåŠ¡æ供商"
+
+# 100%
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "主页侧边æ "
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "用户个人档案侧边æ "
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
msgstr ""
+#: conf/leading_sidebar.py:32
+#, fuzzy
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+
+#: conf/license.py:13
+#, fuzzy
+msgid "Content License"
+msgstr "内容授æƒè®¸å¯"
+
#: conf/license.py:21
msgid "Show license clause in the site footer"
-msgstr ""
+msgstr "在网站底部显示授æƒè®¸å¯æ¡æ¬¾"
+# 100%
#: conf/license.py:30
msgid "Short name for the license"
-msgstr ""
+msgstr "授æƒè®¸å¯çŸ­å称"
+# 100%
#: conf/license.py:39
msgid "Full name of the license"
-msgstr ""
+msgstr "授æƒè®¸å¯å®Œæ•´å称"
+# 100%
#: conf/license.py:40
msgid "Creative Commons Attribution Share Alike 3.0"
-msgstr ""
+msgstr "Creative Commons Attribution Share Alike 3.0"
+# 100%
#: conf/license.py:48
msgid "Add link to the license page"
-msgstr ""
+msgstr "添加指å‘授æƒé¡µé¢çš„链接"
#: conf/license.py:57
-#, fuzzy
msgid "License homepage"
-msgstr "回到首页"
+msgstr "授æƒè®¸å¯ä¸»é¡µ"
+# 100%
#: conf/license.py:59
msgid "URL of the official page with all the license legal clauses"
-msgstr ""
+msgstr "授æƒè®¸å¯æ³•å¾‹æ¡æ¬¾å®˜æ–¹é¡µé¢ URL"
#: conf/license.py:69
-#, fuzzy
msgid "Use license logo"
-msgstr "%(site)s logo"
+msgstr "ä½¿ç”¨æŽˆæƒ logo"
+# 100%
#: conf/license.py:78
msgid "License logo image"
-msgstr ""
+msgstr "æŽˆæƒ logo 图åƒ"
+# 100%
#: conf/login_providers.py:13
msgid "Login provider setings"
-msgstr ""
+msgstr "登录æ供商设置"
+# 100%
#: conf/login_providers.py:22
msgid ""
"Show alternative login provider buttons on the password \"Sign Up\" page"
-msgstr ""
+msgstr "在密ç â€œæ³¨å†Œâ€é¡µé¢æ˜¾ç¤ºå¯é€‰çš„登录æ供商按钮"
+# 100%
#: conf/login_providers.py:31
msgid "Always display local login form and hide \"Askbot\" button."
-msgstr ""
+msgstr "总显示本地登录表å•å¹¶éšè—“Askbotâ€æŒ‰é’®ã€‚"
+# 100%
#: conf/login_providers.py:40
msgid "Activate to allow login with self-hosted wordpress site"
-msgstr ""
+msgstr "å¯ç”¨å¯å…许通过自行托管的 wordpress 网站登录"
#: conf/login_providers.py:41
msgid ""
"to activate this feature you must fill out the wordpress xml-rpc setting "
"bellow"
msgstr ""
+"to activate this feature you must fill out the wordpress xml-rpc setting "
+"bellow"
#: conf/login_providers.py:50
msgid ""
"Fill it with the wordpress url to the xml-rpc, normally http://mysite.com/"
"xmlrpc.php"
-msgstr ""
+msgstr "填写 wordpress xml-rpc 功能的 url,通常为 http://mysite.com/xmlrpc.php"
#: conf/login_providers.py:51
msgid ""
"To enable, go to Settings->Writing->Remote Publishing and check the box for "
"XML-RPC"
-msgstr ""
+msgstr "è¦å¯ç”¨ï¼Œè¯·è½¬åˆ° 设置->撰写->远程å‘布 并选中 XML-RPC çš„å¤é€‰æ¡†"
-#: conf/login_providers.py:62
+# 100%
+#: conf/login_providers.py:60
msgid "Upload your icon"
-msgstr ""
+msgstr "上传图标"
-#: conf/login_providers.py:92
-#, fuzzy, python-format
+#: conf/login_providers.py:90
+#, python-format
msgid "Activate %(provider)s login"
msgstr "ä½ çš„%(provider)s登录æˆåŠŸ"
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
"need to be set in the \"External keys\" section"
msgstr ""
+"Note: to really enable %(provider)s login some additional parameters will "
+"need to be set in the \"External keys\" section"
+# 100%
#: conf/markup.py:15
msgid "Markup in posts"
-msgstr ""
+msgstr "帖å­ä¸­çš„标记"
#: conf/markup.py:41
msgid "Enable code-friendly Markdown"
@@ -1167,7 +1331,7 @@ msgstr "Mathjax支æŒ(LaTex渲染)"
msgid ""
"If you enable this feature, <a href=\"%(url)s\">mathjax</a> must be "
"installed on your server in its own directory."
-msgstr "激活此功能, <a href=\"%(url)s\">mathjax</a> 必须安装到 %(dir)s目录"
+msgstr "激活此功能, <a href=\"%(url)s\">mathjax</a> 必须安装到 目录"
#: conf/markup.py:74
msgid "Base url of MathJax deployment"
@@ -1179,20 +1343,27 @@ msgid ""
"deploy it yourself, preferably at a separate domain and enter url pointing "
"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
msgstr ""
+"Note - <strong>MathJax is not included with askbot</strong> - you should "
+"deploy it yourself, preferably at a separate domain and enter url pointing "
+"to the \"mathjax\" directory (for example: http://mysite.com/mathjax)"
+# 100%
#: conf/markup.py:91
msgid "Enable autolinking with specific patterns"
-msgstr ""
+msgstr "å¯ç”¨ç‰¹å®šåŒ¹é…自动链接"
#: conf/markup.py:93
msgid ""
"If you enable this feature, the application will be able to detect patterns "
"and auto link to URLs"
msgstr ""
+"If you enable this feature, the application will be able to detect patterns "
+"and auto link to URLs"
+# 100%
#: conf/markup.py:106
msgid "Regexes to detect the link patterns"
-msgstr ""
+msgstr "侦测链接的正则表达å¼"
#: conf/markup.py:108
msgid ""
@@ -1202,10 +1373,16 @@ msgid ""
"to the link url template. Please look up more information about regular "
"expressions elsewhere."
msgstr ""
+"Enter valid regular expressions for the patters, one per line. For example "
+"to detect a bug pattern like #bug123, use the following regex: #bug(\\d+). "
+"The numbers captured by the pattern in the parentheses will be transferred "
+"to the link url template. Please look up more information about regular "
+"expressions elsewhere."
+# 100%
#: conf/markup.py:127
msgid "URLs for autolinking"
-msgstr ""
+msgstr "自动链接的 URL"
#: conf/markup.py:129
msgid ""
@@ -1216,10 +1393,17 @@ msgid ""
"shown above and the entry in the post #123 will produce link to the bug 123 "
"in the redhat bug tracker."
msgstr ""
+"Here, please enter url templates for the patterns entered in the previous "
+"setting, also one entry per line. <strong>Make sure that number of lines in "
+"this setting and the previous one are the same</strong> For example template "
+"https://bugzilla.redhat.com/show_bug.cgi?id=\\1 together with the pattern "
+"shown above and the entry in the post #123 will produce link to the bug 123 "
+"in the redhat bug tracker."
+# 100%
#: conf/minimum_reputation.py:12
msgid "Karma thresholds"
-msgstr ""
+msgstr "积分阈值"
#: conf/minimum_reputation.py:22
msgid "Upvote"
@@ -1230,14 +1414,12 @@ msgid "Downvote"
msgstr "投å对票"
#: conf/minimum_reputation.py:40
-#, fuzzy
msgid "Answer own question immediately"
-msgstr "回答你自己的问题"
+msgstr "ç«‹å³å›žç­”你自己的问题"
#: conf/minimum_reputation.py:49
-#, fuzzy
msgid "Accept own answer"
-msgstr "编辑问题"
+msgstr "接å—自己的回答"
#: conf/minimum_reputation.py:58
msgid "Flag offensive"
@@ -1294,20 +1476,26 @@ msgstr "关闭其他人的问题"
msgid "Lock posts"
msgstr "é”定å‘布"
+# 100%
#: conf/minimum_reputation.py:175
msgid "Remove rel=nofollow from own homepage"
-msgstr ""
+msgstr "从自己的主页移除 rel=nofollow"
#: conf/minimum_reputation.py:177
msgid ""
"When a search engine crawler will see a rel=nofollow attribute on a link - "
"the link will not count towards the rank of the users personal site."
msgstr ""
+"When a search engine crawler will see a rel=nofollow attribute on a link - "
+"the link will not count towards the rank of the users personal site."
+
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
#: conf/reputation_changes.py:13
-#, fuzzy
msgid "Karma loss and gain rules"
-msgstr "积分规则"
+msgstr "积分增å‡è§„则"
#: conf/reputation_changes.py:23
msgid "Maximum daily reputation gain per user"
@@ -1365,14 +1553,16 @@ msgstr "å‡å°‘å‘布者积分当问题被5次åŒæ ·çš„修改标记时"
msgid "Loss for post owner when upvote is canceled"
msgstr "å‡å°‘å‘布者积分当推è票å–消时"
+# 100%
#: conf/sidebar_main.py:12
msgid "Main page sidebar"
-msgstr ""
+msgstr "主页侧边æ "
+# 100%
#: conf/sidebar_main.py:20 conf/sidebar_profile.py:20
#: conf/sidebar_question.py:19
msgid "Custom sidebar header"
-msgstr ""
+msgstr "自定义侧边æ å¤´éƒ¨"
#: conf/sidebar_main.py:23 conf/sidebar_profile.py:23
#: conf/sidebar_question.py:22
@@ -1382,42 +1572,55 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Use this area to enter content at the TOP of the sidebarin HTML format. "
+"When using this option (as well as the sidebar footer), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
+# 100%
#: conf/sidebar_main.py:36
msgid "Show avatar block in sidebar"
-msgstr ""
+msgstr "在侧边æ æ˜¾ç¤ºå¤´åƒå—"
+# 100%
#: conf/sidebar_main.py:38
msgid "Uncheck this if you want to hide the avatar block from the sidebar "
-msgstr ""
+msgstr "如果您希望在侧边æ éšè—头åƒå—,请å–消选中本项"
+# 100%
#: conf/sidebar_main.py:49
msgid "Limit how many avatars will be displayed on the sidebar"
-msgstr ""
+msgstr "é™åˆ¶ä¾§è¾¹æ æ˜¾ç¤ºçš„头åƒæ•°ç›®"
+# 100%
#: conf/sidebar_main.py:59
msgid "Show tag selector in sidebar"
-msgstr ""
+msgstr "在侧边æ æ˜¾ç¤ºæ ‡ç­¾é€‰æ‹©å™¨"
#: conf/sidebar_main.py:61
msgid ""
"Uncheck this if you want to hide the options for choosing interesting and "
"ignored tags "
msgstr ""
+"Uncheck this if you want to hide the options for choosing interesting and "
+"ignored tags "
+# 100%
#: conf/sidebar_main.py:72
msgid "Show tag list/cloud in sidebar"
-msgstr ""
+msgstr "在侧边æ æ˜¾ç¤ºæ ‡ç­¾åˆ—表/云"
#: conf/sidebar_main.py:74
msgid ""
"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
msgstr ""
+"Uncheck this if you want to hide the tag cloud or tag list from the sidebar "
+# 100%
#: conf/sidebar_main.py:85 conf/sidebar_profile.py:36
#: conf/sidebar_question.py:75
msgid "Custom sidebar footer"
-msgstr ""
+msgstr "自定义侧边æ åº•éƒ¨"
#: conf/sidebar_main.py:88 conf/sidebar_profile.py:39
#: conf/sidebar_question.py:78
@@ -1427,52 +1630,59 @@ msgid ""
"validation service to make sure that your input is valid and works well in "
"all browsers."
msgstr ""
+"Use this area to enter content at the BOTTOM of the sidebarin HTML format. "
+"When using this option (as well as the sidebar header), please use the HTML "
+"validation service to make sure that your input is valid and works well in "
+"all browsers."
#: conf/sidebar_profile.py:12
-#, fuzzy
msgid "User profile sidebar"
-msgstr "用户概览"
+msgstr "用户个人档案侧边æ "
#: conf/sidebar_question.py:11
-#, fuzzy
msgid "Question page sidebar"
-msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
+msgstr "问题页é¢ä¾§è¾¹æ "
+# 100%
#: conf/sidebar_question.py:35
msgid "Show tag list in sidebar"
-msgstr ""
+msgstr "侧边æ æ˜¾ç¤ºæ ‡ç­¾åˆ—表"
+# 100%
#: conf/sidebar_question.py:37
msgid "Uncheck this if you want to hide the tag list from the sidebar "
-msgstr ""
+msgstr "若您希望在侧边æ éšè—标签列表请å–消选中本项"
+# 100%
#: conf/sidebar_question.py:48
msgid "Show meta information in sidebar"
-msgstr ""
+msgstr "侧边æ æ˜¾ç¤ºå…ƒä¿¡æ¯"
#: conf/sidebar_question.py:50
msgid ""
"Uncheck this if you want to hide the meta information about the question "
"(post date, views, last updated). "
msgstr ""
+"Uncheck this if you want to hide the meta information about the question "
+"(post date, views, last updated). "
#: conf/sidebar_question.py:62
-#, fuzzy
msgid "Show related questions in sidebar"
-msgstr "相似的问题"
+msgstr "在侧边æ æ˜¾ç¤ºç›¸å…³é—®é¢˜"
#: conf/sidebar_question.py:64
-#, fuzzy
msgid "Uncheck this if you want to hide the list of related questions. "
-msgstr "最近被更新的问题"
+msgstr "å–消选中å¯éšè—相关问题列表。"
+# 100%
#: conf/site_modes.py:64
msgid "Bootstrap mode"
-msgstr ""
+msgstr "Bootstrap 模å¼"
+# 100%
#: conf/site_modes.py:74
msgid "Activate a \"Bootstrap\" mode"
-msgstr ""
+msgstr "å¯ç”¨ Bootstrap 模å¼"
#: conf/site_modes.py:76
msgid ""
@@ -1481,10 +1691,15 @@ msgid ""
"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
"changed after you modify this setting."
msgstr ""
+"Bootstrap mode lowers reputation and certain badge thresholds, to values, "
+"more suitable for the smaller communities, <strong>WARNING:</strong> your "
+"current value for Minimum reputation, Bagde Settings and Vote Rules will be "
+"changed after you modify this setting."
+# 100%
#: conf/site_settings.py:12
msgid "URLS, keywords & greetings"
-msgstr ""
+msgstr "URLã€å…³é”®è¯ä¸Žæ¬¢è¿Žè¾ž"
#: conf/site_settings.py:21
msgid "Site title for the Q&A forum"
@@ -1506,29 +1721,28 @@ msgstr "为æœç´¢å¼•æ“Žæ·»åŠ çš„网站æè¿°"
msgid "Short name for your Q&A forum"
msgstr "网站缩写"
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr "网站根地å€,必须以http或https开头"
-#: conf/site_settings.py:79
-#, fuzzy
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
-msgstr "匿å用户邮件"
+msgstr "å¯ç”¨åŒ¿å用户问候"
-#: conf/site_settings.py:90
-#, fuzzy
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
-msgstr "为匿å用户显示的问候语"
+msgstr "对匿å用户显示的问候语"
-#: conf/site_settings.py:94
+# 100%
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
-msgstr ""
+msgstr "使用 HTML æ ¼å¼åŒ–ä¿¡æ¯"
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
msgid "Feedback site URL"
msgstr "问题å馈URL"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr "如果留空,一个简å•çš„内部å馈将被å‘é€"
@@ -1641,9 +1855,10 @@ msgstr "接å—背景色"
msgid "Foreground color for accepted answer"
msgstr "接å—回答å‰æ™¯è‰²"
+# 100%
#: conf/skin_general_settings.py:15
msgid "Logos and HTML <head> parts"
-msgstr ""
+msgstr "logo 与 HTML <head> 部分"
#: conf/skin_general_settings.py:23
msgid "Q&A site logo"
@@ -1653,21 +1868,24 @@ msgstr "网站logo"
msgid "To change the logo, select new file, then submit this whole form."
msgstr "改logo,选择一个新文件并æ交"
-#: conf/skin_general_settings.py:39
+# 100%
+#: conf/skin_general_settings.py:37
msgid "Show logo"
-msgstr ""
+msgstr "显示 logo"
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
+"Check if you want to show logo in the forum header or uncheck in the case "
+"you do not want the logo to appear in the default location"
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr "网站favicon"
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1677,21 +1895,21 @@ msgstr ""
"16x16 或 32x32åƒç´ icon图片用于区分你网站的æµè§ˆå™¨ç”¨æˆ·æŽ¥å£ã€‚请查看更多faviconä¿¡"
"æ¯åœ¨<a href=\"%(favicon_info_url)s\">this page</a>."
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr "密ç ç™»å½•æŒ‰é’®"
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr "88x38åƒç´ çš„图片被用于登录界é¢çš„密ç ç™»å½•æŒ‰é’®"
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr "显示所有UI功能给所有用户"
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
@@ -1700,19 +1918,21 @@ msgstr ""
"如果选择了,所有的网站功能将被展示给用户,ä¸ç®¡ä»–们的积分是多少.尽管使用了这些功"
"能,适度规则,积分和其他é™åˆ¶ä»ç„¶æœ‰ä½œç”¨."
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
msgid "Select skin"
msgstr "选择主题"
-#: conf/skin_general_settings.py:118
+# 100%
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
-msgstr ""
+msgstr "自定义 HTML <HEAD>"
-#: conf/skin_general_settings.py:127
+# 100%
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
-msgstr ""
+msgstr "自定义 HTML <HEAD> 部分"
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1723,12 +1943,21 @@ msgid ""
"files into the footer. <strong>Note:</strong> if you do use this setting, "
"please test the site with the W3C HTML validator service."
msgstr ""
+"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
+"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
+"of the HTML output, where elements such as &lt;script&gt;, &lt;link&gt;, &lt;"
+"meta&gt; may be added. Please, keep in mind that adding external javascript "
+"to the &lt;HEAD&gt; is not recommended because it slows loading of the "
+"pages. Instead, it will be more efficient to place links to the javascript "
+"files into the footer. <strong>Note:</strong> if you do use this setting, "
+"please test the site with the W3C HTML validator service."
-#: conf/skin_general_settings.py:151
+# 100%
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
-msgstr ""
+msgstr "自定义头部增加内容"
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1736,22 +1965,31 @@ msgid ""
"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
"sure that your input is valid and works well in all browsers."
msgstr ""
+"Header is the bar at the top of the content that contains user info and site "
+"links, and is common to all pages. Use this area to enter contents of the "
+"headerin the HTML format. When customizing the site header (as well as "
+"footer and the HTML &lt;HEAD&gt;), use the HTML validation service to make "
+"sure that your input is valid and works well in all browsers."
-#: conf/skin_general_settings.py:168
+# 100%
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
-msgstr ""
+msgstr "网站底部模å¼"
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
+"Footer is the bottom portion of the content, which is common to all pages. "
+"You can disable, customize, or use the default footer."
-#: conf/skin_general_settings.py:187
+# 100%
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
-msgstr ""
+msgstr "自定义底部(HTML æ ¼å¼ï¼‰"
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1759,22 +1997,31 @@ msgid ""
"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
"that your input is valid and works well in all browsers."
msgstr ""
+"<strong>To enable this function</strong>, please select option 'customize' "
+"in the \"Site footer mode\" above. Use this area to enter contents of the "
+"footer in the HTML format. When customizing the site footer (as well as the "
+"header and HTML &lt;HEAD&gt;), use the HTML validation service to make sure "
+"that your input is valid and works well in all browsers."
-#: conf/skin_general_settings.py:204
+# 100%
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
-msgstr ""
+msgstr "应用自定义样å¼è¡¨ï¼ˆCSS)"
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
+"Check if you want to change appearance of your form by adding custom style "
+"sheet rules (please see the next item)"
-#: conf/skin_general_settings.py:218
+# 100%
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
-msgstr ""
+msgstr "自定义样å¼è¡¨ï¼ˆCSS)"
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1782,20 +2029,28 @@ msgid ""
"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
+"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
+"option above. The CSS rules added in this window will be applied after the "
+"default style sheet rules. The custom style sheet will be served dynamically "
+"at url \"&lt;forum url&gt;/custom.css\", where the \"&lt;forum url&gt; part "
+"depends (default is empty string) on the url configuration in your urls.py."
-#: conf/skin_general_settings.py:236
+# 100%
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
-msgstr ""
+msgstr "添加自定义 javascript"
-#: conf/skin_general_settings.py:239
+# 100%
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
-msgstr ""
+msgstr "点击å¯å¯ç”¨å¯åœ¨ä¸‹ä¸€å­—段输入的 javascript"
-#: conf/skin_general_settings.py:249
+# 100%
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
-msgstr ""
+msgstr "自定义 javascript"
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1805,134 +2060,173 @@ msgid ""
"enable your custom code</strong>, check \"Add custom javascript\" option "
"above)."
msgstr ""
+"Type or paste plain javascript that you would like to run on your site. Link "
+"to the script will be inserted at the bottom of the HTML output and will be "
+"served at the url \"&lt;forum url&gt;/custom.js\". Please, bear in mind that "
+"your javascript code may break other functionalities of the site and that "
+"the behavior may not be consistent across different browsers (<strong>to "
+"enable your custom code</strong>, check \"Add custom javascript\" option "
+"above)."
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr "主题修正数字"
-#: conf/skin_general_settings.py:271
+# 100%
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
-msgstr ""
+msgstr "将自定设置但如果需è¦æ‚¨å¯ä»¥ä¿®æ”¹ã€‚"
-#: conf/skin_general_settings.py:282
+# 100%
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
-msgstr ""
+msgstr "自动更新媒体版本å·æ‰€ç”¨ hash。"
-#: conf/skin_general_settings.py:286
+# 100%
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
-msgstr ""
+msgstr "将自动设置,ä¸å¿…手动修改。"
#: conf/social_sharing.py:11
msgid "Sharing content on social networks"
msgstr "在社会化网络上共享信æ¯"
#: conf/social_sharing.py:20
-#, fuzzy
msgid "Check to enable sharing of questions on Twitter"
-msgstr "激活在Twitter和Facebook上共享问答"
+msgstr "å¯ç”¨é—®é¢˜åˆ†äº«: Twitter"
#: conf/social_sharing.py:29
-#, fuzzy
msgid "Check to enable sharing of questions on Facebook"
-msgstr "激活在Twitter和Facebook上共享问答"
+msgstr "å¯ç”¨é—®é¢˜åˆ†äº«: Facebook"
#: conf/social_sharing.py:38
-#, fuzzy
msgid "Check to enable sharing of questions on LinkedIn"
-msgstr "激活在Twitter和Facebook上共享问答"
+msgstr "å¯ç”¨é—®é¢˜åˆ†äº«: LinkedIn"
#: conf/social_sharing.py:47
-#, fuzzy
msgid "Check to enable sharing of questions on Identi.ca"
-msgstr "激活在Twitter和Facebook上共享问答"
+msgstr "å¯ç”¨é—®é¢˜åˆ†äº«: Identi.ca"
#: conf/social_sharing.py:56
-#, fuzzy
msgid "Check to enable sharing of questions on Google+"
-msgstr "激活在Twitter和Facebook上共享问答"
+msgstr "å¯ç”¨é—®é¢˜åˆ†äº«: Google+"
+# 100%
#: conf/spam_and_moderation.py:10
msgid "Akismet spam protection"
-msgstr ""
+msgstr "Akismet 垃圾ä¿æŠ¤"
#: conf/spam_and_moderation.py:18
-#, fuzzy
msgid "Enable Akismet spam detection(keys below are required)"
-msgstr "激活recaptcha(下é¢çš„keys是必须的)"
+msgstr "å¯ç”¨ Akismet spam 侦测 (需è¦åœ¨ä¸‹é¢è¾“å…¥ key)"
+# 100%
#: conf/spam_and_moderation.py:21
#, python-format
msgid "To get an Akismet key please visit <a href=\"%(url)s\">Akismet site</a>"
-msgstr ""
+msgstr "请访问 <a href=\"%(url)s\">Akismet 网站</a> èŽ·å– Akismet key"
+# 100%
#: conf/spam_and_moderation.py:31
msgid "Akismet key for spam detection"
-msgstr ""
+msgstr "垃圾侦测所需 Akismet key"
+# 100%
#: conf/super_groups.py:5
msgid "Reputation, Badges, Votes & Flags"
-msgstr ""
+msgstr "声望ã€å‹‹ç« ã€æŠ•ç¥¨ä¸Žæ ‡è®°"
+# 100%
#: conf/super_groups.py:6
msgid "Static Content, URLS & UI"
-msgstr ""
+msgstr "é™æ€å†…容ã€URL åŠ UI"
#: conf/super_groups.py:7
-#, fuzzy
msgid "Data rules & Formatting"
-msgstr "标记格å¼"
+msgstr "æ•°æ®è§„则 & æ ¼å¼"
#: conf/super_groups.py:8
-#, fuzzy
msgid "External Services"
-msgstr "其他æœåŠ¡"
+msgstr "外部æœåŠ¡"
+# 100%
#: conf/super_groups.py:9
msgid "Login, Users & Communication"
-msgstr ""
+msgstr "登录ã€ç”¨æˆ·ä¸Žäº¤æµ"
-#: conf/user_settings.py:12
-#, fuzzy
+#: conf/user_settings.py:14
msgid "User settings"
-msgstr "用户éšç§è®¾ç½®"
+msgstr "用户设置"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr "å…许修改用户昵称"
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "æ¯ä¸ªé‚®ä»¶åœ°å€åªå…许关è”一个账户"
+
+#: conf/user_settings.py:41
msgid "Allow account recovery by email"
-msgstr "å‘é€è´¦æˆ·æ¢å¤é‚®ä»¶"
+msgstr "å…许账户邮件æ¢å¤"
-#: conf/user_settings.py:39
-#, fuzzy
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
-msgstr "请添加一个或多个登录方å¼"
+msgstr "å…许添加与移除登录方å¼"
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr "用户昵称å…许的最å°é•¿åº¦"
-#: conf/user_settings.py:59
-msgid "Default Gravatar icon type"
+# 100%
+#: conf/user_settings.py:68
+#, fuzzy
+msgid "Default avatar for users"
+msgstr "默认 Gravatar 图标类型"
+
+#: conf/user_settings.py:70
+#, fuzzy
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr "改logo,选择一个新文件并æ交"
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+# 100%
+#: conf/user_settings.py:97
+msgid "Default Gravatar icon type"
+msgstr "默认 Gravatar 图标类型"
+
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
+"This option allows you to set the default avatar type for email addresses "
+"without associated gravatar images. For more information, please visit <a "
+"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
-#: conf/user_settings.py:71
-#, fuzzy
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
-msgstr "匿å用户邮件"
+msgstr "匿å用户å称"
+# 100%
#: conf/vote_rules.py:14
msgid "Vote and flag limits"
-msgstr ""
+msgstr "投票与标记é™åˆ¶"
#: conf/vote_rules.py:24
msgid "Number of votes a user can cast per day"
@@ -1951,9 +2245,8 @@ msgid "Number of days to allow canceling votes"
msgstr "æ¯å¤©å…许å–消的投票数"
#: conf/vote_rules.py:60
-#, fuzzy
msgid "Number of days required before answering own question"
-msgstr "æ¯å¤©å…许å–消的投票数"
+msgstr "回答自己的æ问之å‰å…许的天数"
#: conf/vote_rules.py:69
msgid "Number of flags required to automatically hide posts"
@@ -1968,6 +2261,42 @@ msgid ""
"Minimum days to accept an answer, if it has not been accepted by the "
"question poster"
msgstr ""
+"Minimum days to accept an answer, if it has not been accepted by the "
+"question poster"
+
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr "å¯åµŒå…¥çš„å°å·¥å…·"
+
+#: conf/widgets.py:25
+msgid "Number of questions to show"
+msgstr "显示问题数"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+
+#: conf/widgets.py:73
+msgid "CSS for the questions widget"
+msgstr "问题å°å·¥å…· CSS"
+
+#: conf/widgets.py:81
+msgid "Header for the questions widget"
+msgstr "问题å°å·¥å…·å¤´"
+
+#: conf/widgets.py:90
+msgid "Footer for the questions widget"
+msgstr "问题å°å·¥å…·å°¾"
#: const/__init__.py:10
msgid "duplicate question"
@@ -2006,346 +2335,352 @@ msgstr "垃圾广告"
msgid "too localized"
msgstr "太地域化"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "最新问题"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "按最早加入"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "活跃"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "ä¸æ´»è·ƒ"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "热门问题"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "最酷"
# "最有价值问题"
# "最新问题"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "最有价值的问题"
# "最有价值问题"
# "最新问题"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "投票最少"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "相关"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "所有"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "未回答"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "收è—"
-#: const/__init__.py:64
-#, fuzzy
+#: const/__init__.py:70
msgid "list"
-msgstr "标签列表"
+msgstr "列表"
-#: const/__init__.py:65
+# 100%
+#: const/__init__.py:71
msgid "cloud"
-msgstr ""
+msgstr "云"
-#: const/__init__.py:78
+#: const/__init__.py:79
msgid "Question has no answers"
msgstr "未回答的问题"
-#: const/__init__.py:79
+#: const/__init__.py:80
msgid "Question has no accepted answers"
msgstr "ä»æ²¡æœ‰æ­£ç¡®ç­”案的问题"
-#: const/__init__.py:122
+#: const/__init__.py:125
msgid "asked a question"
msgstr "我è¦æé—®"
-#: const/__init__.py:123
+#: const/__init__.py:126
msgid "answered a question"
msgstr "回答问题"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "评论问题"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "评论回答"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "修改问题"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "修改回答"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "获奖"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "标记最佳答案"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "投赞æˆç¥¨"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "投å对票"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "撤销投票"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "删除问题"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "删除回答"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "标记垃圾帖"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "更新标签"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "收è—"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "完æˆä¸ªäººæ‰€æœ‰èµ„æ–™"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "å‘é€é‚®ä»¶æ›´æ–°"
-#: const/__init__.py:142
-#, fuzzy
+#: const/__init__.py:145
msgid "reminder about unanswered questions sent"
-msgstr "查看没有回答的问题"
+msgstr "å·²å‘é€æœªå›žç­”问题æ醒邮件"
-#: const/__init__.py:146
-#, fuzzy
+#: const/__init__.py:149
msgid "reminder about accepting the best answer sent"
-msgstr "标记最佳答案"
+msgstr "å·²å‘é€æŽ¥å—最佳答案æ醒邮件"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr "å‘布æ醒"
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr "回答的问题"
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr "留言的问题"
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr "留言的回答"
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr "已接å—的回答"
+#, fuzzy
+msgid "answered question"
+msgstr "回答问题"
-#: const/__init__.py:206
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "修改回答"
+
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[已关闭]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[已删除]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "åˆå§‹ç‰ˆæœ¬"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "更新了标签"
-#: const/__init__.py:217
+# 100%
+#: const/__init__.py:220
msgid "off"
-msgstr ""
+msgstr "å…³"
-#: const/__init__.py:218
-#, fuzzy
+#: const/__init__.py:221
msgid "exclude ignored"
-msgstr "包å«å¿½ç•¥æ ‡ç­¾"
+msgstr "排除忽略标签"
-#: const/__init__.py:219
-#, fuzzy
+#: const/__init__.py:222
msgid "only selected"
-msgstr "个人选项"
+msgstr "仅选中"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr "ç«‹å³"
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "æ¯æ—¥"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "æ¯å‘¨"
-#: const/__init__.py:226
+#: const/__init__.py:229
msgid "no email"
msgstr "没有邮件"
-#: const/__init__.py:233
+# 100%
+#: const/__init__.py:236
msgid "identicon"
-msgstr ""
+msgstr "identicon"
-#: const/__init__.py:234
-#, fuzzy
+#: const/__init__.py:237
msgid "mystery-man"
-msgstr "昨天"
+msgstr "神秘人"
-#: const/__init__.py:235
+# 100%
+#: const/__init__.py:238
msgid "monsterid"
-msgstr ""
+msgstr "monsterid"
-#: const/__init__.py:236
-#, fuzzy
+#: const/__init__.py:239
msgid "wavatar"
-msgstr "修改头åƒ"
+msgstr "wavatar"
-#: const/__init__.py:237
+# 100%
+#: const/__init__.py:240
msgid "retro"
-msgstr ""
+msgstr "retro"
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "金牌"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "银牌"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "铜牌"
-#: const/__init__.py:298
+# 100%
+#: const/__init__.py:301
msgid "None"
-msgstr ""
+msgstr "æ— "
-#: const/__init__.py:299
-#, fuzzy
+#: const/__init__.py:302
msgid "Gravatar"
-msgstr "修改头åƒ"
+msgstr "Gravatar"
-#: const/__init__.py:300
+# 100%
+#: const/__init__.py:303
msgid "Uploaded Avatar"
-msgstr ""
+msgstr "已上传头åƒ"
-#: const/message_keys.py:15
-#, fuzzy
+#: const/message_keys.py:21
msgid "most relevant questions"
-msgstr "最新加入系统的问题"
+msgstr "最相关问题"
-#: const/message_keys.py:16
-#, fuzzy
+#: const/message_keys.py:22
msgid "click to see most relevant questions"
-msgstr "投票次数最多的问题"
+msgstr "点击查看最相关问题"
-#: const/message_keys.py:17
-#, fuzzy
+#: const/message_keys.py:23
msgid "by relevance"
-msgstr "相关"
+msgstr "按相关性"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "最新问题"
-#: const/message_keys.py:19
-#, fuzzy
+#: const/message_keys.py:25
msgid "by date"
-msgstr "æ›´æ–°"
+msgstr "按日期"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "最新问题"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "最近被更新的问题"
-#: const/message_keys.py:22
-#, fuzzy
+#: const/message_keys.py:28
msgid "by activity"
-msgstr "活跃问题"
+msgstr "按活跃程度"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "最近被更新的问题"
-#: const/message_keys.py:24
-#, fuzzy
+#: const/message_keys.py:30
msgid "click to see the least answered questions"
-msgstr "最新问题"
+msgstr "点击查看回答数最少的问题"
-#: const/message_keys.py:25
-#, fuzzy
+#: const/message_keys.py:31
msgid "by answers"
-msgstr "回答"
+msgstr "按回答数"
-#: const/message_keys.py:26
-#, fuzzy
+#: const/message_keys.py:32
msgid "click to see the most answered questions"
-msgstr "投票次数最多的问题"
+msgstr "点击查看回答数最多的问题"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
msgid "click to see least voted questions"
msgstr "投票次数最多的问题"
-#: const/message_keys.py:28
-#, fuzzy
+#: const/message_keys.py:34
msgid "by votes"
-msgstr "票"
+msgstr "按票数"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "投票次数最多的问题"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
+"Welcome! Please set email address (important!) in your profile and adjust "
+"screen name, if necessary."
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "支æŒåŸºæœ¬çš„HTML标签"
@@ -2394,11 +2729,12 @@ msgid "Your user name (<i>required</i>)"
msgstr "用户å是必需项"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "选择一个用户å"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰ç”¨æˆ·ä½¿ç”¨è¿™ä¸ªå称"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr "登录/"
@@ -2436,6 +2772,7 @@ msgid "%(site)s user name and password"
msgstr "使用%(site)s å¸å·å¯†ç ç™»å½•"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr "创建一个密ç ä¿æŠ¤è´¦æˆ·"
@@ -2521,76 +2858,77 @@ msgstr "使用%(provider)så¸å·å¯†ç ç™»å½•"
msgid "Sign in with your %(provider)s account"
msgstr "用你的%(provider)s 账户登录"
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s是ä¸æ­£ç¡®çš„"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr "很ä¸å¹¸,当链接%(provider)s时出现一些问题,请é‡è¯•æˆ–使用其他的æœåŠ¡"
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
msgid "Your new password saved"
msgstr "你的新密ç å·²ä¿å­˜"
-#: deps/django_authopenid/views.py:475
+# 100%
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
-msgstr ""
+msgstr "登陆密ç ç»„åˆä¸æ­£ç¡®"
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr "请点击下é¢ä»»ä½•ä¸€ä¸ªå›¾æ ‡ç™»å½•"
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
msgid "Account recovery email sent"
msgstr "å‘é€è´¦æˆ·æ¢å¤é‚®ä»¶"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr "请添加一个或多个登录方å¼"
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr "您å¯ä»¥æ·»åŠ ï¼Œåˆ é™¤æˆ–é‡æ–°éªŒè¯ä½ çš„登录方å¼"
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr "请ç¨ç­‰ï¼Œä½ çš„账户正在æ¢å¤..."
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr "对ä¸èµ·ï¼Œè¿™ä¸ªè´¦æˆ·æ¢å¤å·²è¿‡æœŸæˆ–ä¸æ­£ç¡®"
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr "%(provider_name)s登录方å¼ä¸å­˜åœ¨"
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
msgid "Oops, sorry - there was some error - please try again"
msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿå‡ºé”™ï¼Œè¯·é‡è¯•"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr "ä½ çš„%(provider)s登录æˆåŠŸ"
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "ä½ çš„email需è¦éªŒè¯ï¼Œçœ‹è¿™é‡Œ%(details_url)s"
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "通过邮件æ¢å¤ä½ çš„账户"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr "请检查你的邮件并访问其内部链接"
@@ -2598,255 +2936,250 @@ msgstr "请检查你的邮件并访问其内部链接"
msgid "Site"
msgstr "网站"
-#: deps/livesettings/values.py:68
+# 100%
+#: deps/livesettings/values.py:69
msgid "Main"
-msgstr ""
+msgstr "主"
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
msgid "Base Settings"
msgstr "基本设置"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr "默认值:"
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr "默认值:"
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr "默认值: %s"
# todo take these out of settings
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
-msgstr "åªå…许上传'%(file_types)s'类型的文件ï¼"
+msgstr "åªå…许上传'%(types)s'类型的文件ï¼"
-# base_content.html
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
-msgstr "æ­å–œæ‚¨ï¼Œç¤¾åŒºç»™æ‚¨é¢å‘了奖牌"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+msgid "Sites"
+msgstr "网站"
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Documentation"
+msgstr "文档"
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
-msgstr ""
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "修改密ç "
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+msgid "Log out"
+msgstr "退出登录"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+msgid "Home"
+msgstr "首页"
+
+# page title
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+msgid "Edit Group Settings"
+msgstr "修改组设置"
-#: management/commands/post_emailed_questions.py:55
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "请改正下é¢çš„错误"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
-msgstr ""
+msgid "Settings included in %(name)s."
+msgstr "设置包å«åœ¨%(name)s."
+
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
+msgstr "你没有æƒé™ä¿®æ”¹è¿™äº›å€¼"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+msgid "Edit Site Settings"
+msgstr "编辑网站设置"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
+msgstr "此功能ä¸æ”¯æŒ"
-#: management/commands/post_emailed_questions.py:61
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
+msgstr "所有é…置选项都必须在网站的settings.py文件中设置"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:66
#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
-msgstr ""
+msgid "Group settings: %(name)s"
+msgstr "组别设置: %(name)s"
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
-msgstr ""
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
+msgstr "全部收起"
+
+# base_content.html
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
+msgstr "æ­å–œæ‚¨ï¼Œç¤¾åŒºç»™æ‚¨é¢å‘了奖牌"
-#: management/commands/send_accept_answer_reminders.py:57
+# 100%
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
-msgstr ""
+msgstr "接å—您 %(question_count)d 个问题的最佳答案"
-#: management/commands/send_accept_answer_reminders.py:62
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:63
msgid "Please accept the best answer for this question:"
-msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
+msgstr "请接å—此问题的最佳答案:"
-#: management/commands/send_accept_answer_reminders.py:64
-#, fuzzy
+#: management/commands/send_accept_answer_reminders.py:65
msgid "Please accept the best answer for these questions:"
-msgstr "最新问题"
+msgstr "请接å—这些问题的最佳答案:"
-#: management/commands/send_email_alerts.py:411
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:414
+#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] "关于 %(topics)s问题有%(question_count)d 个更新"
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
-msgstr[0] "%(name)s, %(num)d 个问题的更新标题"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
+msgstr[0] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "æé—®"
-#: management/commands/send_email_alerts.py:455
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr ""
-
-#: management/commands/send_email_alerts.py:465
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr ""
-"在选择的问题上,你的订阅频率设置为'æ¯æ—¥' ,如果你æ¯å¤©æ”¶åˆ°è¶…过一å°é‚®ä»¶ï¼Œè¯·é€šçŸ¥"
-"网站管ç†å‘˜"
-
-#: management/commands/send_email_alerts.py:471
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr ""
-"在选择的问题上,你的订阅频率设置为'æ¯å‘¨' ,如果你æ¯å‘¨æ”¶åˆ°è¶…过一å°é‚®ä»¶ï¼Œè¯·é€šçŸ¥"
-"网站管ç†å‘˜"
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr "由于技术问题你å¯èƒ½ä¼šæŽ¥æ”¶åˆ°ä¸€ä¸ªä»¥å‰çœ‹è¿‡çš„链接,我们将解决此问题"
-
-#: management/commands/send_email_alerts.py:490
+#: management/commands/send_email_alerts.py:474
#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
msgstr ""
-"到%(email_settings_link)s去修改邮件更新频率或å‘é€é‚®ä»¶ç»™%(admin_email)s管ç†å‘˜"
-#: management/commands/send_unanswered_question_reminders.py:56
-#, fuzzy, python-format
+#: management/commands/send_unanswered_question_reminders.py:60
+#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] "关于 %(topics)s问题有%(question_count)d 个更新"
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
-msgstr "请登录"
+msgstr "请登录%s"
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³æœ€ä½³ç­”案因为你的账户已冻结"
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³æœ€ä½³ç­”案因为你的账户已暂åœä½¿ç”¨"
-#: models/__init__.py:334
+#: models/__init__.py:337
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "对ä¸èµ·,ä½ ä¸èƒ½è®¤å®šæˆ–å¦å†³ä½ è‡ªå·±çš„回答的自己的问题"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
+"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
-#: models/__init__.py:361
-#, fuzzy, python-format
+#: models/__init__.py:367
+#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr "对ä¸èµ·,åªæœ‰é—®é¢˜çš„æ问者 - %(username)s - å¯ä»¥è®¤å®šæœ€ä½³ç­”案"
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "ä¸èƒ½ç»™è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr "对ä¸èµ·ä½ çš„账户已冻结"
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr "对ä¸èµ·ä½ çš„账户已暂åœä½¿ç”¨"
-#: models/__init__.py:407
+#: models/__init__.py:409
#, python-format
msgid ">%(points)s points required to upvote"
msgstr "需è¦+%(points)s积分æ‰èƒ½æŠ•æ”¯æŒç¥¨ã€‚"
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "需è¦+%(points)s积分æ‰èƒ½æŠ•å对票。"
-#: models/__init__.py:428
+#: models/__init__.py:430
msgid "Sorry, blocked users cannot upload files"
msgstr "对ä¸èµ·,冻结用户ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
-#: models/__init__.py:429
+#: models/__init__.py:431
msgid "Sorry, suspended users cannot upload files"
msgstr "对ä¸èµ·,æš‚åœä½¿ç”¨ç”¨æˆ·ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "上传图片åªé™äºŽç§¯åˆ†+%(min_rep)s以上注册用户!"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr "冻结用户ä¸èƒ½å‘布信æ¯"
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
-msgstr "æš‚åœä½¿ç”¨ç”¨æˆ·ä¸èƒ½å‘布信æ¯"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
-#: models/__init__.py:478
-#, fuzzy, python-format
+#: models/__init__.py:482
+#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minute from posting"
msgid_plural ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
"minutes from posting"
-msgstr[0] "对ä¸èµ·ï¼Œç•™è¨€åªèƒ½åœ¨å‘布åŽ10分钟内å¯ç¼–辑"
+msgstr[0] "对ä¸èµ·ï¼Œç•™è¨€åªèƒ½åœ¨å‘布åŽ%(minutes)s分钟内å¯ç¼–辑"
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr "对ä¸èµ·ï¼Œåªæœ‰å‘布者或版主æ‰èƒ½ä¿®æ”¹ç•™è¨€"
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已暂åœä½¿ç”¨ï¼Œä½ åªèƒ½ç•™è¨€ä½ è‡ªå·±å‘布的信æ¯"
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
@@ -2855,40 +3188,40 @@ msgstr ""
"对ä¸èµ·ï¼Œç•™è¨€ä»»ä½•ä¿¡æ¯éƒ½éœ€è¦æœ€å°‘%(min_rep)s积分值,ä½ å¯ä»¥ç•™è¨€ä½ è‡ªå·±å‘布或回答的"
"问题"
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr "这个问题已ç»è¢«åˆ é™¤ï¼Œè€Œä¸”åªèƒ½è¢«å‘布者,网站管ç†å‘˜å’Œç‰ˆä¸»æŸ¥çœ‹"
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr "对ä¸èµ·ï¼Œåªæœ‰ç‰ˆä¸»ï¼Œç½‘站管ç†å‘˜åŠå‘布者å¯ä»¥ç¼–辑删除此信æ¯"
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½ç¼–辑信æ¯å› ä¸ºä½ çš„账户被冻结"
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr "对ä¸èµ·ï¼Œä½ åªèƒ½ç¼–辑你自己å‘布的信æ¯å› ä¸ºä½ çš„账户被暂åœä½¿ç”¨"
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œç¼–辑wikiä¿¡æ¯éœ€è¦æœ€ä½Žç§¯åˆ†%(min_rep)s"
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr "对ä¸èµ·ï¼Œç¼–辑其他人的信æ¯éœ€è¦æœ€ä½Žç§¯åˆ†%(min_rep)s"
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2897,235 +3230,259 @@ msgid_plural ""
"by other users"
msgstr[0] "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤é—®é¢˜å› ä¸ºå®ƒå·²ç»æœ‰äº†æŠ•èµžæˆç¥¨çš„答案"
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤å‘布的信æ¯ï¼Œå› ä¸ºä½ çš„账户被冻结了"
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr "对ä¸èµ·ï¼Œä½ åªèƒ½åˆ é™¤ä½ è‡ªå·±å‘布的信æ¯å› ä¸ºä½ çš„账户被暂åœä½¿ç”¨äº†"
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½åˆ é™¤åˆ«äººå‘布的信æ¯"
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已冻结你ä¸èƒ½å…³é—­é—®é¢˜"
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已暂åœä½¿ç”¨ä½ ä¸èƒ½å…³é—­é—®é¢˜"
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½å…³é—­åˆ«äººå‘布的信æ¯"
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½å…³é—­è‡ªå·±å‘布的问题"
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr "对ä¸èµ·ï¼Œåªæœ‰ç®¡ç†å‘˜ï¼Œç‰ˆä¸»å’Œæœ‰%(min_rep)s积分的å‘布者æ‰èƒ½é‡å¼€é—®é¢˜"
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä½ å¿…须有%(min_rep)s积分æ‰èƒ½é‡å¼€è‡ªå·±å‘布的问题"
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
-msgstr "ä¸èƒ½ä¸¤æ¬¡æ ‡è®°åŒä¸€ä¿¡æ¯ä¸ºåžƒåœ¾ä¿¡æ¯"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
-#: models/__init__.py:761
-msgid "blocked users cannot flag posts"
-msgstr "冻结用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
+#: models/__init__.py:783
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤å‘布的信æ¯ï¼Œå› ä¸ºä½ çš„账户被冻结了"
-#: models/__init__.py:763
-msgid "suspended users cannot flag posts"
-msgstr "æš‚åœä½¿ç”¨çš„用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
+#: models/__init__.py:794
+#, fuzzy, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr "对ä¸èµ·ï¼Œä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾å¿…须有%(min_rep)s积分值"
-#: models/__init__.py:765
+#: models/__init__.py:815
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
-msgstr "需è¦å¤§äºŽ%(min_rep)s积分值æ‰èƒ½æ ‡è®°åžƒåœ¾ä¿¡æ¯"
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
-msgstr "%(max_flags_per_day)s 被处ç†"
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
+msgstr "无法移除ä¸å­˜åœ¨çš„标记"
+
+#: models/__init__.py:833
+#, fuzzy
+msgid "Sorry, since your account is blocked you cannot remove flags"
+msgstr "对ä¸èµ·ï¼Œä½ ä¸èƒ½åˆ é™¤å‘布的信æ¯ï¼Œå› ä¸ºä½ çš„账户被冻结了"
+
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: models/__init__.py:843
+#, fuzzy, python-format
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] "对ä¸èµ·ï¼Œä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾å¿…须有%(min_rep)s积分值"
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
+msgstr "您无æƒç§»é™¤æ‰€æœ‰æ ‡è®°"
+
+#: models/__init__.py:863
+msgid "no flags for this entry"
+msgstr "本æ¡ç›®æ— æ ‡è®°"
-#: models/__init__.py:799
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr "对ä¸èµ·ï¼Œåªæœ‰å‘问者,网站管ç†å‘˜å’Œç‰ˆä¸»æ‰èƒ½ä¸ºå·²åˆ é™¤é—®é¢˜ä¿®æ”¹æ ‡ç­¾"
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr "对ä¸èµ·ï¼Œä½ çš„账户已冻结,你ä¸èƒ½ä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾"
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr "对ä¸èµ·ï¼Œä½ çš„账户已暂åœä½¿ç”¨ï¼Œä½ åªèƒ½ä¸ºä½ è‡ªå·±çš„问题修改标签"
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œä¸ºé—®é¢˜ä¿®æ”¹æ ‡ç­¾å¿…须有%(min_rep)s积分值"
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户已冻结你ä¸èƒ½åˆ é™¤ç•™è¨€"
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr "对ä¸èµ·ï¼Œå› ä¸ºä½ çš„账户暂åœä½¿ç”¨ï¼Œä½ åªèƒ½åˆ é™¤ä½ è‡ªå·±çš„留言"
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr "对ä¸èµ·ï¼Œåˆ é™¤ç•™è¨€å¿…须有%(min_rep)s积分值"
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "这个投票已ç»è¿‡æ—¶ï¼Œä¸èƒ½æ’¤é”€ã€‚"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr "在%(date)s"
-#: models/__init__.py:1341
-#, fuzzy
+#: models/__init__.py:1471
msgid "in two days"
-msgstr "登录并回答该问题"
+msgstr "两天内"
-#: models/__init__.py:1343
+# 100%
+#: models/__init__.py:1473
msgid "tomorrow"
-msgstr ""
+msgstr "明天"
-#: models/__init__.py:1345
-#, fuzzy, python-format
+#: models/__init__.py:1475
+#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] "%(hr)då°æ—¶å‰"
-#: models/__init__.py:1347
-#, fuzzy, python-format
+#: models/__init__.py:1477
+#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] "%(min)d分钟å‰"
-#: models/__init__.py:1348
+# 100%
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
-msgstr[0] ""
+msgstr[0] "%(days)d 天"
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
-msgstr ""
+msgstr "新用户需等待 %(days)s 天方å¯å›žç­”自己的æ问。还剩 %(left)s"
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
-#, fuzzy
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
msgid "Anonymous"
msgstr "匿å"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
msgid "Site Adminstrator"
msgstr "网站管ç†å‘˜"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr "论å›ç‰ˆä¸»"
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
msgid "Suspended User"
msgstr "æš‚åœè´¦æˆ·"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr "冻结账户"
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
msgid "Registered User"
msgstr "注册用户"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr "æµè§ˆç”¨æˆ·"
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr "认è¯ç”¨æˆ·"
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(username)s 积分是 %(reputation)s"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] "%(count)d 金牌"
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "%(count)d 银牌"
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "%(count)d 铜牌"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr "%(item1)s 和 %(item2)s"
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr "%(user)s 有 %(badges)s"
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, python-format
-msgid "Re: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "Re: \"%(title)s\""
-#: models/__init__.py:2200 models/__init__.py:2205
-#, python-format
-msgid "Question: \"%(title)s\""
-msgstr "问题:\"%(title)s\""
-
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
@@ -3134,9 +3491,10 @@ msgstr ""
"æ­å–œï¼Œä½ èŽ·å¾—一å—'%(badge_name)s'徽章,查看<a\n"
" href=\"%(user_profile)s\">你的资料</a>."
-#: models/__init__.py:2565 views/commands.py:396
+# 100%
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
-msgstr ""
+msgstr "您的标签订阅已ä¿å­˜ï¼Œéžå¸¸æ„Ÿè°¢!"
#: models/badges.py:129
#, python-format
@@ -3292,9 +3650,10 @@ msgid ""
"votes"
msgstr "问了一个超过%(days)s天且至少有%(votes)s投票的问题"
+# 100%
#: models/badges.py:525
msgid "Necromancer"
-msgstr ""
+msgstr "亡çµ"
#: models/badges.py:548
msgid "Citizen Patrol"
@@ -3373,16 +3732,16 @@ msgstr "热心人"
#: models/badges.py:714
#, fuzzy, python-format
msgid "Visited site every day for %(num)s days in a row"
-msgstr "过去30天æ¯å¤©éƒ½æ¥è®¿é—®ç½‘站的用户"
+msgstr "过去%(num)s天æ¯å¤©éƒ½æ¥è®¿é—®ç½‘站的用户"
#: models/badges.py:732
msgid "Commentator"
msgstr "评论员"
#: models/badges.py:736
-#, fuzzy, python-format
+#, python-format
msgid "Posted %(num_comments)s comments"
-msgstr "%(comment_count)s次评论"
+msgstr "%(num_comments)s次评论"
#: models/badges.py:752
msgid "Taxonomist"
@@ -3391,2160 +3750,3620 @@ msgstr "分类学者"
#: models/badges.py:756
#, fuzzy, python-format
msgid "Created a tag used by %(num)s questions"
-msgstr "创建一个50个问题都用到的标签"
+msgstr "创建一个%(num)s个问题都用到的标签"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "专家"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "éžå¸¸æ´»è·ƒçš„标签"
-#: models/content.py:549
+#: models/post.py:1071
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "对ä¸èµ·,此问题已删除"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr "对ä¸èµ·,你查找的问题已失效,因为问题已删除"
-#: models/content.py:572
+#: models/post.py:1094
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "对ä¸èµ·,这个问题已删除"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr "对ä¸èµ·,你查找的评论ä¸èƒ½è®¿é—®,因为问题已删除"
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr "对ä¸èµ·,你查找的评论ä¸èƒ½è®¿é—®,因为回答已删除"
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr "\" 和 \"%s\""
-#: models/question.py:66
+#: models/question.py:57
msgid "\" and more"
msgstr "查看更多"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s修改了问题"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s å‘布了 %(new_answer_count)s 新答案"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s评论了问题"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s 评论了答案"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s 评论了答案"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr "<em>被版主修改. 原因:</em> %(reason)s"
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr "%(points)s分被加给 %(username)s,因为他贡献了 %(question_title)s问题"
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr "%(username)s被å‡åŽ»%(points)s分,因为他贡献了 %(question_title)s问题"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "interesting"
msgstr "感兴趣"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "有趣的"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "忽略的"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "我问的问题"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "我答的问题"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "我选择的问题"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr "æ醒åŠç•™è¨€å›žå¤"
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr "ç«‹å³"
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "æ¯æ—¥"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "æ¯å‘¨"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "没有邮件"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "请输入你的用户å,然åŽç™»å½•"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+msgid "(or select another login method above)"
+msgstr "(或从上é¢é€‰æ‹©ä¸€ä¸ªç™»å½•æ–¹å¼)"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+msgid "Sign in"
+msgstr "注册å¸å·"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "ä¿å­˜æ‚¨çš„电å­é‚®ä»¶åœ°å€"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+msgid "Save Email"
+msgstr "ä¿å­˜é‚®ä»¶åœ°å€"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "å–消"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+msgid "Validate email"
+msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "邮件地å€æœªä¿®æ”¹"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+msgid "Email changed"
+msgstr "邮件地å€å·²æ”¹"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "邮件地å€ç¡®è®¤"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+msgid "Registration"
+msgstr "注册"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "注册"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "请从以上选项中选择一项"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "注册å¸å·"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "感谢你在我们的Q&A论å›æ³¨å†Œ"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "你的详细账户信æ¯ä¸º:"
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
msgid "Username:"
msgstr "用户å"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "密ç "
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "请在这登录"
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr "您忠实的管ç†å‘˜"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "æ¥è‡ªQ&A论å›çš„ç¥ç¦"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "请跟éšä»¥ä¸‹çš„链接æ¥ä½¿ç”¨è®ºå›:"
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr "点击上é¢çš„链接å¯ä»¥å¸®åŠ©æˆ‘们确认你的邮件地å€"
#: skins/common/templates/authopenid/email_validation.txt:9
+#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr ""
"如果你认为此消æ¯è¢«é”™è¯¯çš„å‘é€,ä¸è¦è¿›è¡Œæ›´è¿›ä¸€æ­¥çš„动作.仅仅忽略这å°é‚®ä»¶,为给您带"
"æ¥çš„ä¸ä¾¿é“æ­‰."
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, fuzzy, python-format
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "退出登录"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr "您已æˆåŠŸé€€å‡º"
+
+#: skins/common/templates/authopenid/logout.html:7
+msgid ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+msgstr ""
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "用户登录"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, python-format
msgid ""
"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
msgstr ""
"\n"
-"你好, 这是从 %(site_title)s 网站å‘出的å馈信æ¯ã€‚\n"
+"登录åŽ,你的关于 %(title)s %(summary)s 的回答将被å‘布"
+
+#: skins/common/templates/authopenid/signin.html:21
+#, python-format
+msgid ""
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr "登录åŽ,你的关于 %(title)s %(summary)s 的问题将被å‘布"
-#: skins/old/templates/authopenid/email_validation.txt:9
+#: skins/common/templates/authopenid/signin.html:28
#, fuzzy
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
msgstr ""
-"如果你认为此消æ¯è¢«é”™è¯¯çš„å‘é€,ä¸è¦è¿›è¡Œæ›´è¿›ä¸€æ­¥çš„动作.仅仅忽略这å°é‚®ä»¶,为给您带"
-"æ¥çš„ä¸ä¾¿é“æ­‰."
+"选择以下你最喜欢的方å¼ç™»å½•,你的扩展æœåŠ¡å¯†ç å°†è¢«ä¿æŠ¤ä¸”ä½ ä¸éœ€.è¦è®°ä½æˆ–创建一个"
+"新密ç ."
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-msgid "no items in counter"
-msgstr "æ— "
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
+"你最好确认你目å‰çš„登录方å¼å¯ä»¥å·¥ä½œï¼Œæˆ–者你需è¦æ·»åŠ ä¸€ä¸ªæ–°çš„登录方å¼ã€‚请点击下"
+"é¢ä»»ä½•ä¸€ä¸ªicon选择添加一个新登录方å¼ã€‚"
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr "%(username)s 图åƒ"
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
+msgstr ""
+"请通过点击以下icon添加更多永久的登录方å¼ï¼Œä»Žè€Œé¿å…æ¯æ¬¡éƒ½æ˜¯ç”¨email登录。"
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
-msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿé”™è¯¯"
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
+msgstr "点击以下icon,添加一个新的登录方å¼æˆ–者é‡éªŒè¯å·²ç»å­˜åœ¨çš„登录方å¼ã€‚"
-#: utils/decorators.py:109
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
+msgstr "ä½ ç›®å‰è¿˜æ²¡æœ‰ä¸€ä¸ªç™»å½•æ–¹å¼ï¼Œè¯·æ·»åŠ ä¸€ä¸ªæˆ–多个通过点击下é¢çš„icons。"
+
+#: skins/common/templates/authopenid/signin.html:42
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr "请检查你的邮件并访问邮件里链接é‡è¿žä½ çš„账户"
+
+#: skins/common/templates/authopenid/signin.html:89
#, fuzzy
-msgid "Please login to post"
-msgstr "请登录"
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "使用å¸å·å¯†ç ç™»å½•"
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
-msgstr ""
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "请在这登录"
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr "必填项"
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr "登录失败,请é‡è¯•"
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "选择一个用户å"
+#: skins/common/templates/authopenid/signin.html:104
+msgid "Login or email"
+msgstr "登录å或电å­é‚®ç®±åœ°å€"
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr "必填项"
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "密ç "
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "对ä¸èµ·ï¼Œç”¨æˆ·å已存在,请æ¢ä¸€ä¸ªè¯•è¯•"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr "修改密ç -请输入新密ç ä¸¤æ¬¡å¹¶æ交"
-#: utils/forms.py:54
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "对ä¸èµ·ï¼Œæ‚¨ä¸èƒ½æ³¨å†Œè¯¥ç”¨æˆ·å,请æ¢ä¸€ä¸ªè¯•è¯•"
+#: skins/common/templates/authopenid/signin.html:124
+msgid "New password"
+msgstr "新密ç "
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰ç”¨æˆ·ä½¿ç”¨è¿™ä¸ªå称"
+#: skins/common/templates/authopenid/signin.html:133
+msgid "Please, retype"
+msgstr "确认密ç "
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
-msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿä¸¥é‡é”™è¯¯-用户å被多个用户拥有"
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr "这里有你的登录方å¼"
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
-msgstr "用户ååªèƒ½ç”±å­—æ¯ï¼Œç©ºæ ¼å’Œä¸‹åˆ’线组æˆ"
+#: skins/common/templates/authopenid/signin.html:161
+msgid "provider"
+msgstr "æ供者"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "您的电å­é‚®ä»¶åœ°å€"
+#: skins/common/templates/authopenid/signin.html:162
+msgid "last used"
+msgstr "上次活动时间"
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr "必填项"
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr "å¯ä»¥åˆ é™¤"
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "请输入正确的邮件地å€"
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "删除"
-#: utils/forms.py:121
-msgid "this email is already used by someone else, please choose another"
-msgstr "该电å­é‚®ä»¶å·²è¢«æ³¨å†Œï¼Œè¯·é€‰æ‹©å¦ä¸€ä¸ªå†è¯•ã€‚"
+#: skins/common/templates/authopenid/signin.html:179
+msgid "cannot be deleted"
+msgstr "无法删除"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "密ç "
+#: skins/common/templates/authopenid/signin.html:192
+msgid "Still have trouble signing in?"
+msgstr "还有其他问题?"
-#: utils/forms.py:150
-msgid "password is required"
-msgstr "必填项"
+#: skins/common/templates/authopenid/signin.html:197
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "请输入你的邮件地å€åŠéªŒè¯ç "
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "确认密ç "
+#: skins/common/templates/authopenid/signin.html:199
+msgid "Please, enter your email address below to recover your account"
+msgstr "æ¢å¤è´¦æˆ·ï¼Œè¯·åœ¨ä¸‹é¢è¾“入你的邮件地å€"
-#: utils/forms.py:154
-msgid "please, retype your password"
-msgstr "确认密ç "
+#: skins/common/templates/authopenid/signin.html:202
+msgid "recover your account via email"
+msgstr "通过邮件æ¢å¤ä½ çš„账户"
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
-msgstr "对ä¸èµ·ï¼Œä½ è¾“入的密ç ä¸åŒ¹é…,请é‡æ–°è¾“å…¥"
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr "å‘é€ä¸€ä¸ªæ¢å¤å»º"
-#: utils/functions.py:74
-msgid "2 days ago"
-msgstr "2天å‰"
+#: skins/common/templates/authopenid/signin.html:215
+msgid "Recover your account via email"
+msgstr "通过邮件æ¢å¤ä½ çš„账户"
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "昨天"
+#: skins/common/templates/authopenid/signup_with_password.html:10
+msgid "Please register by clicking on any of the icons below"
+msgstr "请注册或点击下列任一图标"
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] "%(hr)då°æ—¶å‰"
+#: skins/common/templates/authopenid/signup_with_password.html:23
+msgid "or create a new user name and password here"
+msgstr "或在此创建新的用户å与密ç "
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] "%(min)d分钟å‰"
+#: skins/common/templates/authopenid/signup_with_password.html:25
+msgid "Create login name and password"
+msgstr "使用å¸å·å¯†ç ç™»å½•"
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
msgstr ""
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
msgstr ""
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
-msgstr ""
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr "请输入验è¯ä¿¡æ¯"
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "匿å用户ä¸èƒ½æŠ•ç¥¨"
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "或者"
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
-msgstr "对ä¸èµ·ï¼Œä½ ä»Šå¤©çš„投票已用完"
+#: skins/common/templates/authopenid/signup_with_password.html:56
+msgid "return to OpenID login"
+msgstr "返回登录"
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
-msgstr "你今天还å¯ä»¥æŠ•%(votes_left)s次票"
+#: skins/common/templates/avatar/add.html:3
+msgid "add avatar"
+msgstr "添加头åƒ"
-#: views/commands.py:122
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "对ä¸èµ·ï¼ŒåŒ¿å用户没有收件箱"
+#: skins/common/templates/avatar/add.html:5
+msgid "Change avatar"
+msgstr "修改头åƒ"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
-msgstr "对ä¸èµ·ï¼Œè¿™é‡Œå‡ºäº†äº›é—®é¢˜"
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+msgid "Your current avatar: "
+msgstr "您的当å‰å¤´åƒ:"
-#: views/commands.py:207
-msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "匿å用户ä¸èƒ½æŽ¥å—回答"
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
+msgstr "You haven't uploaded an avatar yet. Please upload one now."
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr "订阅已ä¿å­˜ï¼Œ%(email)s邮件需è¦éªŒè¯, 查看 %(details_url)s"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
+msgstr "更新新图åƒ"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "邮件更新频率已设置æˆæ¯æ—¥æ›´æ–°"
+#: skins/common/templates/avatar/change.html:4
+msgid "change avatar"
+msgstr "修改头åƒ"
+
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
+msgstr "选择新默认"
-#: views/commands.py:400
+#: skins/common/templates/avatar/change.html:22
+msgid "Upload"
+msgstr "上传"
+
+#: skins/common/templates/avatar/confirm_delete.html:2
+msgid "delete avatar"
+msgstr "删除头åƒ"
+
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
+msgstr "请选择希望删除的头åƒã€‚"
+
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
msgstr ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
-#: views/commands.py:409
-#, fuzzy, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
-msgstr "请登录"
+#: skins/common/templates/avatar/confirm_delete.html:12
+msgid "Delete These"
+msgstr "删除这些"
+
+#: skins/common/templates/question/answer_controls.html:2
+msgid "swap with question"
+msgstr "与æ问对调"
+
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "永久链接"
+
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "链接"
+
+# todo please check this in chinese
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "å–消"
-#: views/commands.py:542
+#: skins/common/templates/question/answer_controls.html:19
#, fuzzy
-msgid "Please sign in to vote"
-msgstr "请在这登录"
+msgid "remove offensive flag"
+msgstr "查看标记垃圾帖"
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "Q&Aå馈"
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+msgid "remove flag"
+msgstr "移除标签"
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "感谢你的å馈"
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "检举该帖为垃“水帖â€ï¼ˆå«å¹¿å‘Šã€äººèº«æ”»å‡»ã€æ¶æ„言论等)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "垃圾帖?"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "编辑"
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr "我们期望你的å馈"
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "该回答已被设为最佳答案"
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "%(q_num)s个问题"
+#: skins/common/templates/question/answer_vote_buttons.html:8
+msgid "mark this answer as correct (click again to undo)"
+msgstr "标记最佳答案 (å†æ¬¡ç‚¹å‡»å¯å–消)"
-#: views/readers.py:159
+#: skins/common/templates/question/closed_question_info.html:2
#, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "%(q_num)s个问题"
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr "问题因\"%(close_reason)s\"原因已被关闭"
-#: views/readers.py:199
+#: skins/common/templates/question/closed_question_info.html:4
#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] "%(badge_count)d %(badge_level)s奖章"
+msgid "close date %(closed_at)s"
+msgstr "%(closed_at)s日关闭"
-#: views/readers.py:415
-msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "对ä¸èµ·ï¼Œä½ æ‰¾çš„这个评论已ç»è¢«åˆ é™¤"
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "打开"
-#: views/users.py:211
-msgid "moderate this user"
-msgstr "设为版主"
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "关闭"
+
+#: skins/common/templates/question/question_controls.html:35
+msgid "retag"
+msgstr "更新标签"
-#: views/users.py:212
+#: skins/common/templates/widgets/edit_post.html:22
#, fuzzy
-msgid "moderate user"
-msgstr "中等用户"
+msgid ", one of these is required"
+msgstr "这些为必填项"
-#: views/users.py:386
-msgid "user profile"
-msgstr "用户概览"
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
+#, fuzzy
+msgid "tags:"
+msgstr "标签"
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "用户概览"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "å¿…å¡«"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "打开或者关闭Markdown编辑器的实时预览"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "ç¦ç”¨é¢„览"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr "个标签"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "最近活动"
+# book.html line 123 must be empty in english
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "感兴趣的标签"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "最近活动"
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+msgid "add"
+msgstr "添加"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "其他问题的回å¤å’Œè¯„论"
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "忽略标签"
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "回应 - 用户资料"
+#: skins/common/templates/widgets/tag_selector.html:38
+msgid "Display tag filter"
+msgstr "显示标签过滤器"
-#: views/users.py:860
-msgid "user vote record"
-msgstr "用户所有投票"
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr "此页未找到"
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "用户资料 - 投票"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰æ‰¾åˆ°æ‚¨è¯·æ±‚的页é¢ï¼"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "用户社区积分"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "有å¯èƒ½æ˜¯ä»¥ä¸‹åŽŸå› å¯¼è‡´ï¼š"
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "积分 - 用户资料"
+#: skins/default/templates/404.jinja.html:17
+#, fuzzy
+msgid "this question or answer has been deleted;"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"你正在查看的问题或答案已ç»è¢«åˆ é™¤ï¼›\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"你正在查看的问题或回答已ç»è¢«åˆ é™¤ï¼›"
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "用户收è—的问题"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "请求的地å€æœ‰è¯¯ - 请核实原始URL地å€ï¼›"
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "æ”¶è— - 用户资料"
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr "访问的页é¢è¢«ä¿æŠ¤æˆ–你的积分ä¸å¤Ÿï¼Œå‚è§"
+
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "常è§é—®é¢˜"
+
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "如果你确信ä¸è¯¥å‡ºçŽ°404错误,请"
+
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "报告这个问题"
+
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "返回å‰é¡µ"
+
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "查看最新问题"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "查看标签列表"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr "æœåŠ¡å™¨å†…部错误"
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr "系统错误日志已记录,此错误将尽快被解决"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "请报告这些错误给网站管ç†å‘˜"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "最新问题"
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "修改已ä¿å­˜"
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "查看标签"
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "邮件更新å–消"
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "修改回答"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "邮件订阅设置"
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "返回"
-#: views/users.py:974
-msgid "profile - email subscriptions"
-msgstr "邮件订阅"
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "版本"
-#: views/writers.py:58
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "匿å用户ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "选择版本"
-# todo take these out of settings
-#: views/writers.py:68
+# synonym of above in Edit question
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "现在修改"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "å¯ç”¨é¢„览"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
+#, fuzzy
+msgid "Ask Your Question"
+msgstr "现在æé—®"
+
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr "åªå…许上传'%(file_types)s'类型的文件ï¼"
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "奖牌"
-#: views/writers.py:91
+#: skins/default/templates/badge.html:7
#, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "åªå…许上传ä¸è¶…过%(file_size)sK大å°çš„文件ï¼"
+msgid "Badge \"%(name)s\""
+msgstr "%(name)s"
-#: views/writers.py:99
-msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr "在文件上传过程中产生了错误,请è”系管ç†å‘˜ï¼Œè°¢è°¢^_^"
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
+#, python-format
+msgid "%(description)s"
+msgstr "%(description)s"
-#: views/writers.py:191
-#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "å‘布你自己的问题"
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] "用户获得奖牌"
-#: views/writers.py:492
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "查看没有回答的问题"
+msgid "Badges"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"奖牌\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"枚奖牌"
-#: views/writers.py:598
-#, python-format
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr "æ出问题,给予回答,投出你的票 - 社区会对你的表现,授予你å„类奖牌。"
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
msgstr ""
-"对ä¸èµ·ï¼Œä½ å·²ç»é€€å‡ºï¼Œä¸æ©é‚£ä¸ªåœ¨å‘表评论,请<a href=\"%(sign_in_url)s\">登录</"
-"a>."
+"这里列出社区所有的奖牌,以åŠæ¯ç±»å¥–牌获å–的所需æ¡ä»¶ã€‚å馈请至 "
+"%(feedback_faq_url)s。\n"
-#: views/writers.py:646
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "匿å用户ä¸èƒ½ç¼–辑评论"
+#: skins/default/templates/badges.html:36
+#, fuzzy
+msgid "Community badges"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"奖牌等级\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"社区奖牌"
-#: views/writers.py:654
-#, python-format
+#: skins/default/templates/badges.html:38
+#, fuzzy
+msgid "gold badge: the highest honor and is very rare"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"金牌:å分罕è§ä¹‹æœ€é«˜å¥–励\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"金牌:å分罕è§ä¹‹æœ€é«˜è£è€€"
+
+#: skins/default/templates/badges.html:41
+#, fuzzy
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
msgstr ""
-"对ä¸èµ·ï¼Œä½ å·²ç»é€€å‡ºï¼Œä¸æ©é‚£ä¸ªåœ¨å‘表评论,请<a href=\"%(sign_in_url)s\">登录</"
-"a>."
+"金牌是å分罕è§çš„。你ä¸ä»…è¦å‚与社区的æé—®ã€å›žç­”ã€æŠ•ç¥¨ç­‰æ´»åŠ¨ï¼Œè€Œä¸”需è¦æœ‰é«˜æ·±çš„"
+"知识和能力æ‰èƒ½èŽ·å¾—。"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
-msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr "银牌:å¶å°”é¢å‘之优质奖章"
-#~ msgid "Sites"
-#~ msgstr "网站"
+#: skins/default/templates/badges.html:51
+#, fuzzy
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr "银牌:å¶å°”é¢å‘之优质奖章"
-#~ msgid "Documentation"
-#~ msgstr "文档"
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "铜牌:时常授予之特殊è£èª‰"
-#~ msgid "Change password"
-#~ msgstr "修改密ç "
+# close.html
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "关闭问题"
-#~ msgid "Log out"
-#~ msgstr "退出登录"
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "由于以下原因,你è¦å…³é—­è¿™ä¸ªé—®é¢˜"
-#~ msgid "Home"
-#~ msgstr "首页"
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "原因"
-# page title
-#~ msgid "Edit Group Settings"
-#~ msgstr "修改组设置"
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "确定关闭"
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "请改正下é¢çš„错误"
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr "问答"
-#~ msgid "Settings included in %(name)s."
-#~ msgstr "设置包å«åœ¨%(name)s."
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "常è§é—®é¢˜"
-#~ msgid "You don't have permission to edit values."
-#~ msgstr "你没有æƒé™ä¿®æ”¹è¿™äº›å€¼"
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "我å¯ä»¥åœ¨è¿™é‡Œæ问什么样的问题?"
-#~ msgid "Edit Site Settings"
-#~ msgstr "编辑网站设置"
+#: skins/default/templates/faq_static.html:7
+#, fuzzy
+msgid ""
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"毫无疑问,首先必须是和<span class=\"yellowbg\">此社区</span>相关问题\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"最é‡è¦çš„——问题应与本社区<strong>有关</strong>。"
-#~ msgid "Livesettings are disabled for this site."
-#~ msgstr "此功能ä¸æ”¯æŒ"
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
+msgstr ""
+"æ问之å‰ï¼Œå……分利用系统的自动查找ã€æ ‡ç­¾å’Œæœç´¢ï¼Œçœ‹çœ‹æ˜¯å¦å·²ç»æœ‰ä¸€æ ·çš„问题并有了"
+"答案。"
-#~ msgid ""
-#~ "All configuration options must be edited in the site settings.py file"
-#~ msgstr "所有é…置选项都必须在网站的settings.py文件中设置"
+#: skins/default/templates/faq_static.html:10
+#, fuzzy
+msgid "What kinds of questions should be avoided?"
+msgstr "什么样的问题我ä¸è¯¥åœ¨è¿™é‡Œæ问?"
-#~ msgid "Group settings: %(name)s"
-#~ msgstr "组别设置: %(name)s"
+#: skins/default/templates/faq_static.html:11
+#, fuzzy
+msgid ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"<span class=\"yellowbg\">请é¿å…引起争åµæˆ–太过于主观性等è¿èƒŒç¤¾åŒºå®—旨的内容。</"
+"span>\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"请é¿å…æ出无关ã€è¿‡äºŽä¸»è§‚性或易造æˆäº‰åµçš„问题。"
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "请输入你的用户å,然åŽç™»å½•"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "什么样的回答是ä¸å—欢迎的?"
-#~ msgid "(or select another login method above)"
-#~ msgstr "(或从上é¢é€‰æ‹©ä¸€ä¸ªç™»å½•æ–¹å¼)"
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
+msgstr ""
-#~ msgid "Sign in"
-#~ msgstr "注册å¸å·"
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "è°æ˜¯ç¤¾åŒºçš„管ç†å‘˜ï¼Ÿ"
-#~ msgid "Change email"
-#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "答案是:<span class=\"yellowbg\">æ¯ä¸ªç”¨æˆ·ã€‚</span>"
-#~ msgid "Save your email address"
-#~ msgstr "ä¿å­˜æ‚¨çš„电å­é‚®ä»¶åœ°å€"
+#: skins/default/templates/faq_static.html:17
+#, fuzzy
+msgid "This website is moderated by the users."
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"社区没有严格æ„义上的管ç†å‘˜èº«ä»½ã€‚\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"本站由用户管ç†ã€‚"
-#~ msgid "change %(email)s info"
-#~ msgstr "æ›´æ¢%(email)s电å­é‚®ä»¶"
+#: skins/default/templates/faq_static.html:18
+#, fuzzy
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"通过积分è¿ä½œï¼Œæ¯ä¸ªç”¨æˆ·éƒ½æœ‰æƒé™åˆ›å»ºæ ‡ç­¾ï¼Œå¯¹æ‰€æœ‰é—®é¢˜ã€å›žç­”投票ã€ç¼–辑ã€å…³é—­ç­‰æ“"
+"作。\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"积分系统å…许用户赢得执行多ç§ç®¡ç†æ“作的æƒé™ã€‚"
-#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "为什么邮件是必须的,查看 %(gravatar_faq_url)s"
+#: skins/default/templates/faq_static.html:20
+#, fuzzy
+msgid "How does karma system work?"
+msgstr "什么是社区积分?"
-#~ msgid "Your new Email"
-#~ msgstr "你的新邮件地å€"
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#~ msgid "Your Email"
-#~ msgstr "你的邮件"
+#: skins/default/templates/faq_static.html:22
+#, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"例如,如果你问一个有趣的问题或给别人一个有帮助的答案,你的输入将被投赞æˆç¥¨ã€‚"
+"å¦åˆ™ä½ çš„答案是误导的,你将被投å对票。\n"
+"æ¯ä¸ªèµžæˆç¥¨å°†å¢žåŠ <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong>分,æ¯ä¸ªå"
+"对票将å‡åŽ»<strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong>分,\n"
+"æ¯ä¸ªé—®é¢˜æˆ–答案都将有一个<strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong>分"
+"é™åˆ¶ã€‚下表解释了æ¯ä¸ªç›¸åº”动作的积分è¦æ±‚:"
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "投赞æˆç¥¨"
-#~ msgid "Save Email"
-#~ msgstr "ä¿å­˜é‚®ä»¶åœ°å€"
+# todo - check if it's indeed plural
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "添加评论"
-#~ msgid "Cancel"
-#~ msgstr "å–消"
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "投å对票"
-#~ msgid "Validate email"
-#~ msgstr "æ›´æ¢ç”µå­é‚®ä»¶"
+#: skins/default/templates/faq_static.html:43
+msgid " accept own answer to own questions"
+msgstr " 自己的æ问接å—自己的回答"
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr "验è¯%(email)s ä¿¡æ¯æˆ–到%(change_email_url)s"
+#: skins/default/templates/faq_static.html:47
+msgid "open and close own questions"
+msgstr "打开关闭任何人的问题"
-#~ msgid "Email not changed"
-#~ msgstr "邮件地å€æœªä¿®æ”¹"
+#: skins/default/templates/faq_static.html:51
+msgid "retag other's questions"
+msgstr "æ•´ç†æ ‡ç­¾"
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr "旧邮件%(email)s被ä¿å­˜,ä½ å¯ä»¥åŽ»%(change_email_url)s修改"
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "编辑wiki类问题"
-#~ msgid "Email changed"
-#~ msgstr "邮件地å€å·²æ”¹"
+#: skins/default/templates/faq_static.html:61
+#, fuzzy
+msgid "edit any answer"
+msgstr "\"编辑任æ„回答"
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "ä½ ç›®å‰çš„%(email)s邮件地å€å¯ä»¥è¢«ç”¨äºŽè¿™é‡Œ"
+#: skins/default/templates/faq_static.html:65
+#, fuzzy
+msgid "delete any comment"
+msgstr "\"删除任æ„评论"
-#~ msgid "Email verified"
-#~ msgstr "邮件地å€ç¡®è®¤"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
-#~ msgid "thanks for verifying email"
-#~ msgstr "感谢你确认邮件地å€"
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "我需è¦æ³¨å†Œä¸€ä¸ªæ–°ç”¨æˆ·å—?"
+
+#: skins/default/templates/faq_static.html:72
+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 "email key not sent"
-#~ msgstr "邮件地å€æœªå‘é€"
+#: skins/default/templates/faq_static.html:73
+msgid "\"Login now!\""
+msgstr "马上登录"
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr "邮件地å€æœªå‘é€%(email)s,点这里修改%(change_link)s"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "为什么其他人å¯ä»¥ä¿®æ”¹æˆ‘的问题/回答?"
-#~ msgid "Registration"
-#~ msgstr "注册"
+#: skins/default/templates/faq_static.html:76
+#, fuzzy
+msgid "Goal of this site is..."
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"此网站的木的是帮助大家更好更全é¢çš„解决自己的问题。\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"本站的目标是..."
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr "注册新 %(provider)s 账户信æ¯, 查看 %(gravatar_faq_url)s"
+#: skins/default/templates/faq_static.html:76
+#, fuzzy
+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 ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"所以问题和答案都是如Wiki一样å¯ç¼–辑的,我们希望社区能帮助用户沉淀ã€ç§¯ç´¯æ›´å¤šæœ‰"
+"用的知识和ç»éªŒã€‚\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"所以问题和答案都是如 Wiki 一样å¯ç¼–辑的,我们希望社区能帮助用户沉淀ã€ç§¯ç´¯æ›´å¤š"
+"有用的知识和ç»éªŒã€‚"
+
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "如果您ä¸å–œæ¬¢è¿™ç§æ–¹å¼ï¼Œæˆ‘们尊é‡ä½ çš„选择。"
+
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "还有其他问题?"
+
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr ""
+"请æ交你的<a href=\\\"%(ask_question_url)s\\\">ç–‘é—®<\\a>,帮助我们一起完善网站"
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "%(username)s 账户已存在,在%(provider)s找哦昂选择其他å称. Email也是必须"
-#~ "的, 查看 %(gravatar_faq_url)s"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "问题å馈"
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr "注册新扩展%(provider)s 账户信æ¯, 查看 %(gravatar_faq_url)s"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "å馈"
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr "注册新Facebook账户信æ¯, 查看 %(gravatar_faq_url)s"
+#: skins/default/templates/feedback.html:14
+#, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+"<span class='big strong'>亲爱的 %(user_name)s</span>, 我们盼望收到你的å"
+"馈. \n"
+"请å‘é€ä½ çš„å馈信æ¯ç»™æˆ‘们,以帮助我们更好的改进."
-# todo: review this message may be confusing user
-#~ msgid "This account already exists, please use another."
-#~ msgstr "输入您的新å¸å·å·²ç»å­˜åœ¨,请使用其他å¸å·ã€‚"
+#: skins/default/templates/feedback.html:21
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>亲爱的访客</span>, 我们盼望收到您的å馈。\n"
+" 请在下é¢è¾“入您的留言并å‘é€ã€‚\n"
+" "
-#~ msgid "Screen name label"
-#~ msgstr "昵称"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr "(è¦èŽ·å¾—动æ€è¯·è¾“入有效的电å­é‚®ç®±åœ°å€æˆ–选中下é¢çš„å¤é€‰æ¡†)"
-#~ msgid "Email address label"
-#~ msgstr "您的电å­é‚®ä»¶åœ°å€"
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr "必填项"
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "获å–商å“ä¿¡æ¯æ›´æ–°"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr "(请回答验è¯ç )"
-#~ msgid "please select one of the options above"
-#~ msgstr "请从以上选项中选择一项"
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "问题å馈"
-#~ msgid "Tag filter tool will be your right panel, once you log in."
-#~ msgstr "当你登录åŽ,标签过滤工具将出现在你å³è¾¹çš„é¢æ¿é‡Œ"
+#: skins/default/templates/feedback_email.txt:2
+#, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+"你好, 这是从 %(site_title)s 网站å‘出的å馈信æ¯ã€‚\n"
-#~ msgid "create account"
-#~ msgstr "创建å¸å·"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
-#~ msgid "Logout"
-#~ msgstr "退出登录"
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "回应%(username)s"
-#~ msgid "User login"
-#~ msgstr "用户登录"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "登录åŽ,你的关于 %(title)s %(summary)s 的回答将被å‘布"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr "登录åŽ,你的关于 %(title)s %(summary)s 的问题将被å‘布"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
-#~ msgid ""
-#~ "Take a pick of your favorite service below to sign in using secure OpenID "
-#~ "or similar technology. Your external service password always stays "
-#~ "confidential and you don't have to rememeber or create another one."
-#~ msgstr ""
-#~ "选择以下你最喜欢的方å¼ç™»å½•,你的扩展æœåŠ¡å¯†ç å°†è¢«ä¿æŠ¤ä¸”ä½ ä¸éœ€.è¦è®°ä½æˆ–创建一"
-#~ "个新密ç ."
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
-#~ msgid ""
-#~ "It's a good idea to make sure that your existing login methods still "
-#~ "work, or add a new one. Please click any of the icons below to check/"
-#~ "change or add new login methods."
-#~ msgstr ""
-#~ "你最好确认你目å‰çš„登录方å¼å¯ä»¥å·¥ä½œï¼Œæˆ–者你需è¦æ·»åŠ ä¸€ä¸ªæ–°çš„登录方å¼ã€‚请点击"
-#~ "下é¢ä»»ä½•ä¸€ä¸ªicon选择添加一个新登录方å¼ã€‚"
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
-#~ msgid ""
-#~ "Please add a more permanent login method by clicking one of the icons "
-#~ "below, to avoid logging in via email each time."
-#~ msgstr ""
-#~ "请通过点击以下icon添加更多永久的登录方å¼ï¼Œä»Žè€Œé¿å…æ¯æ¬¡éƒ½æ˜¯ç”¨email登录。"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
-#~ msgid ""
-#~ "Click on one of the icons below to add a new login method or re-validate "
-#~ "an existing one."
-#~ msgstr "点击以下icon,添加一个新的登录方å¼æˆ–者é‡éªŒè¯å·²ç»å­˜åœ¨çš„登录方å¼ã€‚"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
-#~ msgid ""
-#~ "You don't have a method to log in right now, please add one or more by "
-#~ "clicking any of the icons below."
-#~ msgstr "ä½ ç›®å‰è¿˜æ²¡æœ‰ä¸€ä¸ªç™»å½•æ–¹å¼ï¼Œè¯·æ·»åŠ ä¸€ä¸ªæˆ–多个通过点击下é¢çš„icons。"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr "请检查你的邮件并访问邮件里链接é‡è¿žä½ çš„账户"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr "导入 StackExchange æ•°æ®"
-#~ msgid "Login failed, please try again"
-#~ msgstr "登录失败,请é‡è¯•"
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
-#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "没有邮件"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
-#~ msgid "Password"
-#~ msgstr "密ç "
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr "导入数æ®"
-#~ msgid "Login"
-#~ msgstr "登录"
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
-#~ msgid ""
-#~ "To change your password - please enter the new one twice, then submit"
-#~ msgstr "修改密ç -请输入新密ç ä¸¤æ¬¡å¹¶æ交"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr "<p>亲爱的 %(receiving_user_name)s,</p>"
-#~ msgid "New password"
-#~ msgstr "新密ç "
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s 留下一个新留言,点击 <a href=\"%(post_url)s\">新留"
+"言</a></p>\n"
-#~ msgid "Please, retype"
-#~ msgstr "确认密ç "
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s 留下一个新留言,点击 <a href=\"%(post_url)s\">新留"
+"言</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s 回答了一个问题 \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s æ交了一个新问题 \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s 更新了问题的回答\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+"\n"
+"<p>%(update_author_name)s 更新了问题 \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgid "Here are your current login methods"
-#~ msgstr "这里有你的登录方å¼"
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>æ³¨æ„ - ä½ å¯ä»¥é€šè¿‡ <a href=\"%(user_subscriptions_url)s\">这里</a>\n"
+"修改你接收这些通知的频率或å–消订阅. 谢谢你对我们网站的关注 </p>\n"
-#~ msgid "provider"
-#~ msgstr "æ供者"
+#: skins/default/templates/instant_notification.html:42
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr "<p>忠实的<br/>网站管ç†å‘˜</p>"
-#~ msgid "last used"
-#~ msgstr "上次活动时间"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid "delete, if you like"
-#~ msgstr "å¯ä»¥åˆ é™¤"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#~ msgid "delete"
-#~ msgstr "删除"
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "å‘布我的æ问到Twitter"
-#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "å–消"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr "关注 %(alias)s"
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "还有其他问题?"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr "å–消关注 %(alias)s"
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "请输入你的邮件地å€åŠéªŒè¯ç "
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr "已关注 %(alias)s"
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "æ¢å¤è´¦æˆ·ï¼Œè¯·åœ¨ä¸‹é¢è¾“入你的邮件地å€"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "当å‰æ€»ç¥¨æ•°"
-#~ msgid "recover your account via email"
-#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
+#: skins/default/templates/macros.html:46
+msgid "anonymous user"
+msgstr "匿å用户"
-#~ msgid "Send a new recovery key"
-#~ msgstr "å‘é€ä¸€ä¸ªæ¢å¤å»º"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr "这个å‘布åƒç¤¾åŒºwiki被标记"
-#~ msgid "Recover your account via email"
-#~ msgstr "通过邮件æ¢å¤ä½ çš„账户"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
+"这个å‘布是wiki.\n"
+"任何积分为 &gt;%(wiki_min_rep)s 都å¯ä»¥æ”¹è¿›å®ƒ."
-#~ msgid "Why use OpenID?"
-#~ msgstr "为什么需è¦OpenID登录?"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "æ问于"
-#~ msgid "with openid it is easier"
-#~ msgstr ""
-#~ "构建在OpenID网络认è¯ä¸Šçš„本系统,ä¸éœ€è¦ä½ æ³¨å†Œæ–°çš„å¸å·ï¼Œå³å¯ä½¿ç”¨æˆ‘们系统的所"
-#~ "有功能"
+#: skins/default/templates/macros.html:90
+msgid "answered"
+msgstr "回答"
-#~ msgid "reuse openid"
-#~ msgstr "用åŒä¸€ä¸ªå¸å·å¯ç™»å½•äº’è”网所有激活OpenID的网站"
+#: skins/default/templates/macros.html:92
+msgid "posted"
+msgstr "å‘布"
-#~ msgid "openid is widely adopted"
-#~ msgstr "全世界有1.6亿OpenIDå¸å·ï¼Œå’Œ10,000个支æŒOpenID的站点"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "更新于"
-#~ msgid "openid is supported open standard"
-#~ msgstr "OpenID是有开放标准,并且有相关的基金组织æ供支æŒ"
+# this is how above two are supposed to be
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "查看有关%(tag)s的问题"
-#~ msgid "Find out more"
-#~ msgstr "查看更多"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "删除这个留言"
-#~ msgid "Get OpenID"
-#~ msgstr "获å–OpenID"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "%(username)s 图åƒ"
-#~ msgid "Signup"
-#~ msgstr "注册å¸å·"
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(url)s\""
+
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "上一页"
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "当å‰é¡µ"
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "第%(num)s页"
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "请点击下é¢ä»»ä½•ä¸€ä¸ªå›¾æ ‡ç™»å½•"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "下一页"
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+#: skins/default/templates/macros.html:607
+#, python-format
+msgid "responses for %(username)s"
+msgstr "回应%(username)s"
-#~ msgid "Create login name and password"
-#~ msgstr "使用å¸å·å¯†ç ç™»å½•"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "你有 %(response_count)s 个新回应"
-#~ msgid "Traditional signup info"
-#~ msgstr "传统登录信æ¯"
+#: skins/default/templates/macros.html:613
+msgid "no new responses yet"
+msgstr "ä»æ²¡æœ‰å›žåº”"
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr "请输入验è¯ä¿¡æ¯"
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "%(new)s 新标记的å‘布和之å‰æŸ¥çœ‹çš„ %(seen)s"
-#~ msgid "Create Account"
-#~ msgstr "创建å¸å·"
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, python-format
+msgid "%(new)s new flagged posts"
+msgstr "%(new)s 新标记的å‘布信æ¯"
-#~ msgid "or"
-#~ msgstr "或者"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, python-format
+msgid "%(seen)s flagged posts"
+msgstr "\"%(seen)s 已标记的å‘布信æ¯"
-#~ msgid "return to OpenID login"
-#~ msgstr "返回登录"
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "问题列表"
+#: skins/default/templates/question.html:110
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "修改头åƒ"
+msgid "post a comment / <strong>some</strong> more"
+msgstr "查看<strong>%(counter)s</strong>更多"
+#: skins/default/templates/question.html:113
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "修改标签"
+msgid "see <strong>some</strong> more"
+msgstr "查看<strong>%(counter)s</strong>更多"
+# todo - check if it's indeed plural
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "你的详细账户信æ¯ä¸º:"
+msgid "post a comment"
+msgstr "å·²å‘布10æ¡è¯„论"
-#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "修改已ä¿å­˜"
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "回答你自己的问题"
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "上传/"
+msgid "Post Your Answer"
+msgstr "您的回答"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "删除回答"
+msgid "Login/Signup to Post"
+msgstr "登录/注册åŽå›žç­”"
+# page title
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "修改问题"
+
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "删除回答"
+msgid "Retag question"
+msgstr "相似的问题"
-#~ msgid "answer permanent link"
-#~ msgstr "该回答的链接地å€"
+#: skins/default/templates/question_retag.html:21
+msgid "Retag"
+msgstr "修改标签"
-#~ msgid "permanent link"
-#~ msgstr "永久链接"
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "为什么我åªèƒ½ä¿®æ”¹é—®é¢˜æ ‡ç­¾ï¼Ÿ"
-#~ msgid "edit"
-#~ msgstr "编辑"
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr "标签使内容å¯ä»¥æ›´å¥½çš„组织åŠæœç´¢"
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr "检举该帖为垃“水帖â€ï¼ˆå«å¹¿å‘Šã€äººèº«æ”»å‡»ã€æ¶æ„言论等)"
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "修改标签的用户将授予特殊的社区奖牌"
-#~ msgid "flag offensive"
-#~ msgstr "垃圾帖?"
+# todo: remove magic numbers from this file
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "最多5个标签,æ¯ä¸ªæ ‡ç­¾é•¿åº¦å°äºŽ20个字符。"
-# todo please check this in chinese
-#~ msgid "undelete"
-#~ msgstr "å–消"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "é‡è®¾é—®é¢˜"
-#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "回答该问题"
+#: skins/default/templates/reopen.html:6
+msgid "Title"
+msgstr "标题"
-#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "最佳答案(å†æ¬¡ç‚¹å‡»å–消æ“作)"
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+"此问题已被\n"
+"<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>关闭\n"
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "这个答案已ç»è¢«%(question_author)s标记为正确答案"
+# close.html
+#: skins/default/templates/reopen.html:16
+msgid "Close reason:"
+msgstr "关闭原因"
+
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr "当:"
+
+#: skins/default/templates/reopen.html:22
+msgid "Reopen this question?"
+msgstr "确定打开这个问题"
+
+#: skins/default/templates/reopen.html:26
+msgid "Reopen this question"
+msgstr "确定打开这个问题"
+
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
+
+# revisions_answer.html
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "版本历å²"
+
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "点击éšè—或显示版本"
+
+#: skins/default/templates/revisions.html:29
+#, python-format
+msgid "revision %(number)s"
+msgstr "版本%(number)s"
+
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
+msgid "Subscribe for tags"
+msgstr "订阅标签"
+#: skins/default/templates/subscribe_for_tags.html:6
+msgid "Please, subscribe for the following tags:"
+msgstr "请订阅下述标签:"
+
+#: skins/default/templates/subscribe_for_tags.html:15
+msgid "Subscribe"
+msgstr "订阅"
+
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr "åŒ¹é… \"%(stag)s\" 的标签"
+
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "标签列表"
+
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
+msgid "Sort by &raquo;"
+msgstr "排åºæ–¹å¼ &raquo;"
+
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "按å称的字æ¯å…ˆåŽé¡ºåºæŽ’åº"
+
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "按å称排åº"
+
+#: skins/default/templates/tags.html:25
#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr "问题因\"%(close_reason)s\"原因已被关闭"
+msgid "sorted by frequency of tag use"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"按标签æµè¡Œåº¦æŽ’åº\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"按标签被使用的次数排åº"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "%(closed_at)s日关闭"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "按æµè¡Œåº¦æŽ’åº"
-#~ msgid "retag"
-#~ msgstr "更新标签"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "没有找到相关数æ®ã€‚"
-#~ msgid "reopen"
-#~ msgstr "打开"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "用户列表"
-#~ msgid "close"
-#~ msgstr "关闭"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr "查看积分最高的用户"
+
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr "积分"
+
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr "查看最新加入的用户"
+#: skins/default/templates/users.html:21
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr "必填项"
+msgid "recent"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"按最新注册\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"最新加入"
-#~ msgid "(required)"
-#~ msgstr "å¿…å¡«"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr "查看最早加入的用户"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "打开或者关闭Markdown编辑器的实时预览"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr "按å字排åºæŸ¥çœ‹ç”¨æˆ·"
-#~ msgid "hide preview"
-#~ msgstr "ç¦ç”¨é¢„览"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "按用户å"
-#~ msgid "Related tags"
-#~ msgstr "相关标签"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "匹é…查询%(suser)s用户:"
+
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "没有找到相关数æ®ã€‚"
+
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "%(q_num)s个问题"
+
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "%(author_name)s的贡献"
+
+#: skins/default/templates/main_page/headline.html:12
+msgid "Tagged"
+msgstr "已加标签"
+
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "æœç´¢ä¸»é¢˜"
+
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "é‡ç½®ä½œè€…"
+
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+msgid " or "
+msgstr "或者"
+
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "é‡ç½®æ ‡ç­¾"
+
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "é‡æ–°å¼€å§‹"
+
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr " - 通过添加更多标签和改进查询æ¥æ‰©å±•å’ŒæŒ–掘信æ¯"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "æœç´¢ä¸»é¢˜ :"
+
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "添加标签和查询æ¡ä»¶è¿›è¡Œæ›´ç²¾ç¡®æŸ¥è¯¢"
+
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "没有未回答的问题"
+
+#: skins/default/templates/main_page/nothing_found.html:7
+msgid "No questions here. "
+msgstr "此处还没有问题。"
+
+#: skins/default/templates/main_page/nothing_found.html:8
+msgid "Please follow some questions or follow some users."
+msgstr "请关注一些问题或用户。"
+
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "扩展你的查询"
+
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "é‡ç½®ä½œè€…"
# book.html line 123 must be empty in english
-#~ msgid "Interesting tags"
-#~ msgstr "感兴趣的标签"
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "é‡ç½®æ ‡ç­¾"
-#, fuzzy
-#~ msgid "add"
-#~ msgstr "添加"
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "é‡æ–°å¼€å§‹"
-#~ msgid "Ignored tags"
-#~ msgstr "忽略标签"
+#: skins/default/templates/main_page/nothing_found.html:30
+msgid "Please always feel free to ask your question!"
+msgstr "å‘布你自己的问题"
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "选择邮件标签过æ¥"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "你找的问题没有?"
-#~ msgid "Page not found"
-#~ msgstr "此页未找到"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "现在æé—®"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰æ‰¾åˆ°æ‚¨è¯·æ±‚的页é¢ï¼"
+#: skins/default/templates/main_page/tab_bar.html:10
+#, fuzzy
+msgid "subscribe to the questions feed"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"订阅最新问题\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"订阅问题 feed"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "有å¯èƒ½æ˜¯ä»¥ä¸‹åŽŸå› å¯¼è‡´ï¼š"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr "RSS"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "你正在查看的问题或答案已ç»è¢«åˆ é™¤ï¼›"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
-#~ msgid "url has error - please check it;"
-#~ msgstr "请求的地å€æœ‰è¯¯ - 请核实原始URL地å€ï¼›"
+#: skins/default/templates/meta/editor_data.html:7
+#, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "æ¯ä¸ªæ ‡ç­¾çš„长度ä¸è¶…过%(max_chars)s"
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr "访问的页é¢è¢«ä¿æŠ¤æˆ–你的积分ä¸å¤Ÿï¼Œå‚è§"
+#: skins/default/templates/meta/editor_data.html:9
+#, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "最多åªèƒ½æœ‰%(tag_count)s个标签"
-#~ msgid "faq"
-#~ msgstr "常è§é—®é¢˜"
+# todo: remove magic numbers from this file
+#: skins/default/templates/meta/editor_data.html:10
+#, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "最多%(tag_count)s个标签,æ¯ä¸ªæ ‡ç­¾é•¿åº¦å°äºŽ%(max_chars)s个字符。"
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "如果你确信ä¸è¯¥å‡ºçŽ°404错误,请"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+"%(counter)s个回答:"
-#~ msgid "report this problem"
-#~ msgstr "报告这个问题"
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr "排åº"
-#~ msgid "back to previous page"
-#~ msgstr "返回å‰é¡µ"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "最先回答显示在最å‰é¢"
-#~ msgid "see all questions"
-#~ msgstr "查看最新问题"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "最晚回答显示在最å‰é¢"
-#~ msgid "see all tags"
-#~ msgstr "查看标签列表"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "投票次数最多的显示在最å‰é¢"
-#~ msgid "Internal server error"
-#~ msgstr "æœåŠ¡å™¨å†…部错误"
+#: skins/default/templates/question/new_answer_form.html:16
+msgid "Login/Signup to Answer"
+msgstr "登录/注册åŽå›žç­”"
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr "系统错误日志已记录,此错误将尽快被解决"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "您的回答"
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "请报告这些错误给网站管ç†å‘˜"
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
-#~ msgid "see latest questions"
-#~ msgstr "最新问题"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#~ msgid "see tags"
-#~ msgstr "查看标签"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "Edit answer"
-#~ msgstr "修改回答"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "back"
-#~ msgstr "返回"
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
-#~ msgid "revision"
-#~ msgstr "版本"
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
+msgid " or"
+msgstr " 或"
-#~ msgid "select revision"
-#~ msgstr "选择版本"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "邮件"
-# synonym of above in Edit question
-#~ msgid "Save edit"
-#~ msgstr "现在修改"
+#: skins/default/templates/question/sidebar.html:6
+msgid "Question tools"
+msgstr "æ问工具"
-#~ msgid "show preview"
-#~ msgstr "å¯ç”¨é¢„览"
+#: skins/default/templates/question/sidebar.html:9
+msgid "click to unfollow this question"
+msgstr "点击å–消关注问题"
-#~ msgid "Ask a question"
-#~ msgstr "我è¦æé—®"
+#: skins/default/templates/question/sidebar.html:10
+msgid "Following"
+msgstr "已关注"
-#~ msgid "%(name)s"
-#~ msgstr "%(name)s"
+#: skins/default/templates/question/sidebar.html:11
+msgid "Unfollow"
+msgstr "å–消关注"
-#~ msgid "Badge"
-#~ msgstr "奖牌"
+#: skins/default/templates/question/sidebar.html:15
+msgid "click to follow this question"
+msgstr "点击å¯å…³æ³¨æ­¤é—®é¢˜"
-#, fuzzy
-#~ msgid "Badge \"%(name)s\""
-#~ msgstr "%(name)s"
+#: skins/default/templates/question/sidebar.html:16
+msgid "Follow"
+msgstr "关注"
-#~ msgid "%(description)s"
-#~ msgstr "%(description)s"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] "%(count)s ä½ç²‰ä¸"
-#~ msgid "user received this badge:"
-#~ msgid_plural "users received this badge:"
-#~ msgstr[0] "用户获得奖牌"
+#: skins/default/templates/question/sidebar.html:29
+msgid "email the updates"
+msgstr "邮件订阅更新"
-#~ msgid "Badges summary"
-#~ msgstr "奖牌列表"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+
+#: skins/default/templates/question/sidebar.html:37
+msgid "subscribe to this question rss feed"
+msgstr "订阅问题 rss feed"
-#~ msgid "Badges"
-#~ msgstr "奖牌"
+#: skins/default/templates/question/sidebar.html:38
+msgid "subscribe to rss feed"
+msgstr "订阅 rss feed"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr "æ出问题,给予回答,投出你的票 - 社区会对你的表现,授予你å„类奖牌。"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr "统计"
+#: skins/default/templates/question/sidebar.html:48
#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "这里列出社区所有的奖牌,以åŠæ¯ç±»å¥–牌获å–的所需æ¡ä»¶ã€‚点击<a href=\\"
-#~ "\"%(feedback_faq_url)s\\\">这里<\\a>给我们å馈。"
+msgid "Asked"
+msgstr "æ问于"
-#~ msgid "Community badges"
-#~ msgstr "奖牌等级"
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#~ msgid "gold badge: the highest honor and is very rare"
-#~ msgstr "金牌:å分罕è§ä¹‹æœ€é«˜å¥–励"
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "次"
-#~ msgid "gold badge description"
-#~ msgstr "金牌:å分罕è§ä¹‹æœ€é«˜å¥–励"
+#: skins/default/templates/question/sidebar.html:54
+#, fuzzy
+msgid "Last updated"
+msgstr "最åŽæ›´æ–°æ—¶é—´"
-#~ msgid ""
-#~ "silver badge: occasionally awarded for the very high quality contributions"
-#~ msgstr "银牌:å¶å°”é¢å‘之优质奖章"
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "相似的问题"
-#~ msgid "silver badge description"
-#~ msgstr "银牌:å¶å°”é¢å‘之优质奖章"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
+#, fuzzy
+msgid "Email me when there are any new answers"
+msgstr "当有新回答的时候æ¯å‘¨æ醒我一次"
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "铜牌:时常授予之特殊è£èª‰"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr "一旦你注册你就å¯ä»¥è®¢é˜…这里的任何更新"
-#~ msgid "bronze badge description"
-#~ msgstr "铜牌:时常授予之特殊è£èª‰"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+#, fuzzy
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+msgstr ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
-# close.html
-#~ msgid "Close question"
-#~ msgstr "关闭问题"
+#: skins/default/templates/user_profile/user.html:12
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)s用户概览"
-#~ msgid "Close the question"
-#~ msgstr "由于以下原因,你è¦å…³é—­è¿™ä¸ªé—®é¢˜"
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "修改个人资料"
-#~ msgid "Reasons"
-#~ msgstr "原因"
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "修改资料"
-#~ msgid "OK to close"
-#~ msgstr "确定关闭"
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "修改图片"
-#~ msgid "FAQ"
-#~ msgstr "问答"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr "移除"
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "常è§é—®é¢˜"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "注册用户"
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "我å¯ä»¥åœ¨è¿™é‡Œæ问什么样的问题?"
+#: skins/default/templates/user_profile/user_edit.html:39
+msgid "Screen Name"
+msgstr "用户å"
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr ""
-#~ "毫无疑问,首先必须是和<span class=\"yellowbg\">此社区</span>相关问题"
+#: skins/default/templates/user_profile/user_edit.html:59
+#, fuzzy
+msgid "(cannot be changed)"
+msgstr "无法删除"
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "æ问之å‰ï¼Œå……分利用系统的自动查找ã€æ ‡ç­¾å’Œæœç´¢ï¼Œçœ‹çœ‹æ˜¯å¦å·²ç»æœ‰ä¸€æ ·çš„问题并有"
-#~ "了答案。"
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "æ›´æ–°"
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "什么样的问题我ä¸è¯¥åœ¨è¿™é‡Œæ问?"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+msgid "subscriptions"
+msgstr "订阅"
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr ""
-#~ "<span class=\"yellowbg\">请é¿å…引起争åµæˆ–太过于主观性等è¿èƒŒç¤¾åŒºå®—旨的内"
-#~ "容。</span>"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "邮件订阅设置"
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "什么样的回答是ä¸å—欢迎的?"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
-#~ 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 ""
-#~ "希望用户针对æ问的问题回答,å¯ä»¥æ˜¯è¿›ä¸€æ­¥äº†è§£é—®é¢˜å®žè´¨ï¼Œç»™äºˆå‚考方案,或完全"
-#~ "解决问题的回答。我们希望通过问答的形å¼è§£å†³ç”¨æˆ·çš„实际问题。因此,我们ä¸æ¬¢è¿Ž"
-#~ "在回答中出现ä¸æ˜¯å›žç­”问题的内容,包括针对他人回答的讨论,和其他无æ„义的浪费"
-#~ "网络资æºè¡Œä¸ºã€‚"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
+#, fuzzy
+msgid "Stop Email"
+msgstr "你的邮件"
-#~ msgid "Who moderates this community?"
-#~ msgstr "è°æ˜¯ç¤¾åŒºçš„管ç†å‘˜ï¼Ÿ"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
+msgid "followed questions"
+msgstr "已关注问题"
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "答案是:<span class=\"yellowbg\">æ¯ä¸ªç”¨æˆ·ã€‚</span>"
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr "收件箱"
-#~ msgid "This website is moderated by the users."
-#~ msgstr "社区没有严格æ„义上的管ç†å‘˜èº«ä»½ã€‚"
+#: skins/default/templates/user_profile/user_inbox.html:34
+msgid "Sections:"
+msgstr "段"
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr ""
-#~ "通过积分è¿ä½œï¼Œæ¯ä¸ªç”¨æˆ·éƒ½æœ‰æƒé™åˆ›å»ºæ ‡ç­¾ï¼Œå¯¹æ‰€æœ‰é—®é¢˜ã€å›žç­”投票ã€ç¼–辑ã€å…³é—­ç­‰"
-#~ "æ“作。"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr "论å›å›žåº” (%(re_count)s)"
-#~ msgid "How does reputation system work?"
-#~ msgstr "什么是社区积分?"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "已标记项目 (%(flag_count)s)"
-#~ msgid "Rep system summary"
-#~ msgstr "更新概è¦ï¼š"
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
+msgid "select:"
+msgstr "选择:"
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "例如,如果你问一个有趣的问题或给别人一个有帮助的答案,你的输入将被投赞æˆ"
-#~ "票。å¦åˆ™ä½ çš„答案是误导的,你将被投å对票。\n"
-#~ "æ¯ä¸ªèµžæˆç¥¨å°†å¢žåŠ <strong>%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong>分,æ¯ä¸ª"
-#~ "å对票将å‡åŽ»<strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong>分,\n"
-#~ "æ¯ä¸ªé—®é¢˜æˆ–答案都将有一个<strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong>"
-#~ "分é™åˆ¶ã€‚下表解释了æ¯ä¸ªç›¸åº”动作的积分è¦æ±‚:"
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+msgid "seen"
+msgstr "查看"
-#~ msgid "upvote"
-#~ msgstr "投赞æˆç¥¨"
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
+msgid "new"
+msgstr "æ–°"
-#~ msgid "use tags"
-#~ msgstr "标记垃圾帖"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+msgid "none"
+msgstr "æ— "
-# todo - check if it's indeed plural
-#~ msgid "add comments"
-#~ msgstr "添加评论"
+#: skins/default/templates/user_profile/user_inbox.html:54
+msgid "mark as seen"
+msgstr "已看标记"
+
+#: skins/default/templates/user_profile/user_inbox.html:55
+msgid "mark as new"
+msgstr "新标记"
-#~ msgid "downvote"
-#~ msgstr "投å对票"
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr "驳回"
+#: skins/default/templates/user_profile/user_inbox.html:66
#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "自己接å—的第一个回答"
+msgid "remove flags"
+msgstr "移除标签"
-#~ msgid "open and close own questions"
-#~ msgstr "打开关闭任何人的问题"
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "删除"
-#~ msgid "retag other's questions"
-#~ msgstr "æ•´ç†æ ‡ç­¾"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "更新我的资料"
-#~ msgid "edit community wiki questions"
-#~ msgstr "编辑wiki类问题"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr "管ç†ç™»å½•æ–¹æ³•"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "姓å"
+
+#: skins/default/templates/user_profile/user_info.html:58
#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "编辑问题"
+msgid "member since"
+msgstr "已加入"
+
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "上次活动时间"
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "删除评论"
+msgid "website"
+msgstr "个人网站"
-#~ msgid "what is gravatar"
-#~ msgstr "什么是图åƒåŠå¦‚何修改?"
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "城市"
-#~ msgid "gravatar faq info"
-#~ msgstr "图åƒå¸¸è§é—®é¢˜"
+# user_info.html
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "年龄"
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "我需è¦æ³¨å†Œä¸€ä¸ªæ–°ç”¨æˆ·å—?"
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+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ç™»"
-#~ "录的å¸å·å°±å¯ä»¥ä½¿ç”¨ç³»ç»Ÿã€‚"
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "今日剩余投票数"
-#~ msgid "\"Login now!\""
-#~ msgstr "马上登录"
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "剩余投票数"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "为什么其他人å¯ä»¥ä¿®æ”¹æˆ‘的问题/回答?"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
+msgid "moderation"
+msgstr "管ç†"
-#~ msgid "Goal of this site is..."
-#~ msgstr "此网站的木的是帮助大家更好更全é¢çš„解决自己的问题。"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
-#~ 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一样å¯ç¼–辑的,我们希望社区能帮助用户沉淀ã€ç§¯ç´¯æ›´å¤š"
-#~ "有用的知识和ç»éªŒã€‚"
+#: skins/default/templates/user_profile/user_moderate.html:11
+msgid "User status changed"
+msgstr "用户状æ€å·²ä¿®æ”¹"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "如果您ä¸å–œæ¬¢è¿™ç§æ–¹å¼ï¼Œæˆ‘们尊é‡ä½ çš„选择。"
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "ä¿å­˜"
-#~ msgid "Still have questions?"
-#~ msgstr "还有其他问题?"
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr "你当å‰çš„积分是 %(reputation)s "
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr ""
-#~ "请æ交你的<a href=\\\"%(ask_question_url)s\\\">ç–‘é—®<\\a>,帮助我们一起完善"
-#~ "网站"
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr "用户当å‰çš„积分是 %(reputation)s"
-#~ msgid "Feedback"
-#~ msgstr "问题å馈"
+#: skins/default/templates/user_profile/user_moderate.html:31
+msgid "User reputation changed"
+msgstr "用户积分已修改"
-#~ msgid "Give us your feedback!"
-#~ msgstr "å馈"
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr "å‡åŽ»"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "<span class='big strong'>亲爱的 %(user_name)s</span>, 我们盼望收到你的å"
-#~ "馈. \n"
-#~ "请å‘é€ä½ çš„å馈信æ¯ç»™æˆ‘们,以帮助我们更好的改进."
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "添加"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>亲爱的访客</span>, 我们盼望收到你的å馈. \n"
-#~ "请å‘é€ä½ çš„å馈信æ¯ç»™æˆ‘们,以帮助我们更好的改进 ."
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, python-format
+msgid "Send message to %(username)s"
+msgstr "å‘é€ä¿¡æ¯ç»™%(username)s"
-#~ msgid "(this field is required)"
-#~ msgstr "必填项"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr "邮件将被å‘é€ç»™æŽ¥å—回å¤çš„用户地å€ï¼Œè¯·ç¡®ä¿ä½ è¾“入的邮件地å€æ˜¯æ­£ç¡®çš„"
-#~ msgid "Send Feedback"
-#~ msgstr "问题å馈"
+#: skins/default/templates/user_profile/user_moderate.html:46
+msgid "Message sent"
+msgstr "å‘é€æ¶ˆæ¯"
-#~ msgid "<p>Dear %(receiving_user_name)s,</p>"
-#~ msgstr "<p>亲爱的 %(receiving_user_name)s,</p>"
+#: skins/default/templates/user_profile/user_moderate.html:64
+msgid "Send message"
+msgstr "å‘é€æ¶ˆæ¯"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:"
-#~ "</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s 留下一个新留言,点击 <a href=\"%(post_url)s\">新"
-#~ "留言</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</"
-#~ "a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s 留下一个新留言,点击 <a href=\"%(post_url)s\">新"
-#~ "留言</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s answered a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s 回答了一个问题 \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr "“批准â€çŠ¶æ€è¡¨ç¤ºå¸¸è§„用户。"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s posted a new question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s æ交了一个新问题 \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:83
+msgid "Suspended users can only edit or delete their own posts."
+msgstr "æš‚åœä½¿ç”¨çš„用户åªèƒ½ç¼–辑或删除自己的帖å­ã€‚"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated an answer to the question\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s 更新了问题的回答\n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr "å°ç¦ç”¨æˆ·åªèƒ½ç™»å½•ä¸Žå‘站点管ç†å‘˜å‘é€å馈。"
-#~ msgid ""
-#~ "\n"
-#~ "<p>%(update_author_name)s updated a question \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<p>%(update_author_name)s 更新了问题 \n"
-#~ "<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr "网络"
-#~ msgid ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
-#~ "\">change</a>\n"
-#~ "how often you receive these notifications or unsubscribe. Thank you for "
-#~ "your interest in our forum!</p>\n"
-#~ msgstr ""
-#~ "\n"
-#~ "<div>%(content_preview)s</div>\n"
-#~ "<p>æ³¨æ„ - ä½ å¯ä»¥é€šè¿‡ <a href=\"%(user_subscriptions_url)s\">这里</a>\n"
-#~ "修改你接收这些通知的频率或å–消订阅. 谢谢你对我们网站的关注 </p>\n"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] "被 %(count)s å用户"
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr "<p>忠实的<br/>网站管ç†å‘˜</p>"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] "关注 %(count)s å用户"
-#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "å‘布我的æ问到Twitter"
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr "网络为空。是å¦å¸Œæœ›å…³æ³¨ä¸€äº›ç”¨æˆ·? - åªéœ€è®¿é—®å…¶ä¸ªäººæ¡£æ¡ˆå¹¶ç‚¹å‡»â€œå…³æ³¨â€"
-#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+#: skins/default/templates/user_profile/user_network.html:21
+#, python-format
+msgid "%(username)s's network is empty"
+msgstr "%(username)s用户概览"
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
+msgid "activity"
+msgstr "活跃问题"
-#~ msgid "current number of votes"
-#~ msgstr "当å‰æ€»ç¥¨æ•°"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr "æ¥æº"
-#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "你的积分历å²"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "%(user_name)s的积分历å²"
+
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "概览"
+
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span>个问题"
+#: skins/default/templates/user_profile/user_stats.html:16
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "匿å"
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "回答"
-#~ msgid "this post is marked as community wiki"
-#~ msgstr "这个å‘布åƒç¤¾åŒºwiki被标记"
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "该回答总共有%(answer_score)s个投票"
-#~ msgid ""
-#~ "This post is a wiki.\n"
-#~ " Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
-#~ msgstr ""
-#~ "这个å‘布是wiki.\n"
-#~ "任何积分为 &gt;%(wiki_min_rep)s 都å¯ä»¥æ”¹è¿›å®ƒ."
+#: skins/default/templates/user_profile/user_stats.html:34
+#, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "%(comment_count)s次评论"
-#~ msgid "asked"
-#~ msgstr "æ问于"
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span>投票"
-#~ msgid "answered"
-#~ msgstr "回答"
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "好"
-#~ msgid "posted"
-#~ msgstr "å‘布"
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "该用户投的赞æˆç¥¨æ€»æ•°"
-#~ msgid "updated"
-#~ msgstr "更新于"
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "å·®"
-# this is how above two are supposed to be
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "查看有关%(tag)s的问题"
+#: skins/default/templates/user_profile/user_stats.html:55
+msgid "user voted down this many times"
+msgstr "用户投的å对票总数"
-#~ msgid "delete this comment"
-#~ msgstr "删除这个留言"
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span>标签"
-#~ msgid "add comment"
-#~ msgstr "添加评论"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span>奖牌"
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "查看<strong>%(counter)s</strong>更多"
+#: skins/default/templates/user_profile/user_stats.html:120
+msgid "Answer to:"
+msgstr "回答:"
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] "查看<strong>%(counter)s</strong>更多评论"
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "用户概览"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "其他问题的回å¤å’Œè¯„论"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr "粉ä¸åŠå·²å…³æ³¨ç”¨æˆ·"
+
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
+msgid "Graph of user karma"
+msgstr "用户的社区积分历å²"
+
+#: skins/default/templates/user_profile/user_tabs.html:25
+msgid "questions that user is following"
+msgstr "用户关注的问题"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "用户所有投票"
-#~ msgid "previous"
-#~ msgstr "上一页"
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "票"
-#~ msgid "current page"
-#~ msgstr "当å‰é¡µ"
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "邮件订阅设置"
-#~ msgid "page number %(num)s"
-#~ msgstr "第%(num)s页"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
+msgid "moderate this user"
+msgstr "设为版主"
-#~ msgid "next page"
-#~ msgstr "下一页"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
-#~ msgid "posts per page"
-#~ msgstr "æ¯é¡µæ˜¾ç¤ºï¼š"
+#: skins/default/templates/widgets/answer_edit_tips.html:6
+#, fuzzy
+msgid "give an answer interesting to this community"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"请确认你的答案和这个主题相关\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"请确ä¿å›žç­”与社区有关"
-#~ msgid "responses for %(username)s"
-#~ msgstr "回应%(username)s"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "你有 %(response_count)s 个新回应"
+msgid "provide enough details"
+msgstr "请详细æ述您的问题"
-#~ msgid "no new responses yet"
-#~ msgstr "ä»æ²¡æœ‰å›žåº”"
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "我们推è您使用中文æ述问题,这样å¯ä»¥å¾—到更多的答å¤æœºä¼šã€‚"
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "%(new)s 新标记的å‘布和之å‰æŸ¥çœ‹çš„ %(seen)s"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "查看常è§é—®é¢˜"
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "%(new)s 新标记的å‘布信æ¯"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "标记æ å‚考"
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "\"%(seen)s 已标记的å‘布信æ¯"
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr "*斜体*表示*å·å†…字体为斜体"
-#~ msgid "Questions"
-#~ msgstr "问题列表"
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr "**粗体**表示2个*å·å†…字体为粗体"
-#~ msgid "Privacy policy"
-#~ msgstr "éšç§æ”¿ç­–"
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+msgid "*italic* or _italic_"
+msgstr "*斜体* , _斜体_表示*å·æˆ–_å·å†…字体为斜体"
-# page title
-#~ msgid "Edit question"
-#~ msgstr "修改问题"
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**加粗** 或者 __加粗__ "
-#~ msgid "Change tags"
-#~ msgstr "修改标签"
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "文本"
-#~ msgid "Retag"
-#~ msgstr "修改标签"
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "图片"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "为什么我åªèƒ½ä¿®æ”¹é—®é¢˜æ ‡ç­¾ï¼Ÿ"
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "列表:"
-#~ msgid "Tags help to keep the content better organized and searchable"
-#~ msgstr "标签使内容å¯ä»¥æ›´å¥½çš„组织åŠæœç´¢"
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+#, fuzzy
+msgid "basic HTML tags are also supported"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"支æŒåŸºæœ¬çš„HTML标签\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"åŒæ—¶æ”¯æŒåŸºæœ¬ HTML 标签"
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "修改标签的用户将授予特殊的社区奖牌"
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "有关Markdown详细说明"
-# todo: remove magic numbers from this file
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "最多5个标签,æ¯ä¸ªæ ‡ç­¾é•¿åº¦å°äºŽ20个字符。"
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "登录并æ交问题"
-#~ msgid "Reopen question"
-#~ msgstr "é‡è®¾é—®é¢˜"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#~ msgid "Title"
-#~ msgstr "标题"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "This question has been closed by \n"
-#~ " <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
-#~ msgstr ""
-#~ "此问题已被\n"
-#~ "<a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>关闭"
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "贡献者"
-# close.html
-#~ msgid "Close reason:"
-#~ msgstr "关闭原因"
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr "æœ¬ç«™å†…å®¹ä¾ %(license)s 授æƒ"
-#~ msgid "When:"
-#~ msgstr "当:"
+# footer.html
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "关于本站"
+
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
-#~ msgid "Reopen this question?"
-#~ msgstr "确定打开这个问题"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "éšç§æ”¿ç­–"
-#~ msgid "Reopen this question"
-#~ msgstr "确定打开这个问题"
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "问题å馈"
-# revisions_answer.html
-#~ msgid "Revision history"
-#~ msgstr "版本历å²"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "回到首页"
+
+#: skins/default/templates/widgets/logo.html:4
+#, python-format
+msgid "%(site)s logo"
+msgstr "%(site)s logo"
-#~ msgid "click to hide/show revision"
-#~ msgstr "点击éšè—或显示版本"
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "用户"
-#~ msgid "revision %(number)s"
-#~ msgstr "版本%(number)s"
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "奖牌榜"
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "标记垃圾帖"
+msgid "ask a question interesting to this community"
+msgstr ""
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"请确认你的答案和这个主题相关\n"
+"#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+"请确ä¿å›žç­”与社区有关"
+
+#: skins/default/templates/widgets/question_summary.html:12
+msgid "view"
+msgid_plural "views"
+msgstr[0] "æµè§ˆ"
+
+#: skins/default/templates/widgets/question_summary.html:29
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "回答"
+#: skins/default/templates/widgets/question_summary.html:40
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "票"
+
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr "全部"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "see unanswered questions"
+msgstr "查看没有回答的问题"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr "未回答"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "see your followed questions"
+msgstr "查看已关注问题"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr "已关注"
+
+#: skins/default/templates/widgets/scope_nav.html:14
+msgid "Please ask your question here"
+msgstr "请在此æé—®"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr "按积分排åº"
+
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+msgid "badges:"
+msgstr "奖牌榜"
+
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "问题曾以"
+msgid "sign out"
+msgstr "退出/"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "标记垃圾帖"
+msgid "Hi, there! Please sign in"
+msgstr "请在这登录"
-#~ msgid "Tag list"
-#~ msgstr "标签列表"
+# book.html line 123 must be empty in english
+#: skins/default/templates/widgets/user_navigation.html:15
+msgid "settings"
+msgstr "设置"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "排åº"
+msgid "no"
+msgstr "æ— "
-#~ msgid "sorted alphabetically"
-#~ msgstr "按å称的字æ¯å…ˆåŽé¡ºåºæŽ’åº"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿé”™è¯¯"
-#~ msgid "by name"
-#~ msgstr "按å称排åº"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr "请登录åŽå‘帖"
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "按标签æµè¡Œåº¦æŽ’åº"
+# 100%
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr "您的帖å­ä¸­ä¾¦æµ‹åˆ°åžƒåœ¾å†…容,如果是误报,我们éžå¸¸æŠ±æ­‰"
-#~ msgid "by popularity"
-#~ msgstr "按æµè¡Œåº¦æŽ’åº"
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr "必填项"
-#~ msgid "Nothing found"
-#~ msgstr "没有找到相关数æ®ã€‚"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
+msgstr "选择一个用户å"
-#~ msgid "Users"
-#~ msgstr "用户列表"
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr "必填项"
-#~ msgid "reputation"
-#~ msgstr "积分"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "对ä¸èµ·ï¼Œç”¨æˆ·å已存在,请æ¢ä¸€ä¸ªè¯•è¯•"
-#~ msgid "recent"
-#~ msgstr "按最新注册"
+#: utils/forms.py:71
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "对ä¸èµ·ï¼Œæ‚¨ä¸èƒ½æ³¨å†Œè¯¥ç”¨æˆ·å,请æ¢ä¸€ä¸ªè¯•è¯•"
-#~ msgid "by username"
-#~ msgstr "按用户å"
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰ç”¨æˆ·ä½¿ç”¨è¿™ä¸ªå称"
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "匹é…查询%(suser)s用户:"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr "对ä¸èµ·ï¼Œç³»ç»Ÿä¸¥é‡é”™è¯¯-用户å被多个用户拥有"
-#~ msgid "Nothing found."
-#~ msgstr "没有找到相关数æ®ã€‚"
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr "用户ååªèƒ½ç”±å­—æ¯ï¼Œç©ºæ ¼å’Œä¸‹åˆ’线组æˆ"
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "%(author_name)s的贡献"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr "用户å需包å«å­—æ¯"
-#~ msgid "Search tips:"
-#~ msgstr "æœç´¢ä¸»é¢˜"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#~ msgid "reset author"
-#~ msgstr "é‡ç½®ä½œè€…"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr "必填项"
-#~ msgid " or "
-#~ msgstr "或者"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "请输入正确的邮件地å€"
-#~ msgid "reset tags"
-#~ msgstr "é‡ç½®æ ‡ç­¾"
+#: utils/forms.py:141
+msgid "this email is already used by someone else, please choose another"
+msgstr "该电å­é‚®ä»¶å·²è¢«æ³¨å†Œï¼Œè¯·é€‰æ‹©å¦ä¸€ä¸ªå†è¯•ã€‚"
-#~ msgid "start over"
-#~ msgstr "é‡æ–°å¼€å§‹"
+#: utils/forms.py:170
+msgid "password is required"
+msgstr "必填项"
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " - 通过添加更多标签和改进查询æ¥æ‰©å±•å’ŒæŒ–掘信æ¯"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
-#~ msgid "Search tip:"
-#~ msgstr "æœç´¢ä¸»é¢˜ :"
+#: utils/forms.py:174
+msgid "please, retype your password"
+msgstr "确认密ç "
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "添加标签和查询æ¡ä»¶è¿›è¡Œæ›´ç²¾ç¡®æŸ¥è¯¢"
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "对ä¸èµ·ï¼Œä½ è¾“入的密ç ä¸åŒ¹é…,请é‡æ–°è¾“å…¥"
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "没有未回答的问题"
+#: utils/functions.py:82
+msgid "2 days ago"
+msgstr "2天å‰"
-#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "还没有收è—"
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "昨天"
-#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr "当你查看问题时å¯ä»¥æ”¶è—"
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] "%(hr)då°æ—¶å‰"
-#~ msgid "You can expand your search by "
-#~ msgstr "扩展你的查询"
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] "%(min)d分钟å‰"
-#~ msgid "resetting author"
-#~ msgstr "é‡ç½®ä½œè€…"
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
-# book.html line 123 must be empty in english
-#~ msgid "resetting tags"
-#~ msgstr "é‡ç½®æ ‡ç­¾"
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
-#~ msgid "starting over"
-#~ msgstr "é‡æ–°å¼€å§‹"
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "å‘布你自己的问题"
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "你找的问题没有?"
+# 100%
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr "æˆåŠŸä¸Šä¼ æ–°å¤´åƒã€‚"
-#~ msgid "Please, post your question!"
-#~ msgstr "现在æé—®"
+# 100%
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr "æˆåŠŸæ›´æ–°å¤´åƒã€‚"
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "订阅最新问题"
+# 100%
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr "æˆåŠŸåˆ é™¤æ‰€è¯·æ±‚头åƒã€‚"
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "æ¯ä¸ªæ ‡ç­¾çš„长度ä¸è¶…过%(max_chars)s"
+#: views/commands.py:83
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "对ä¸èµ·ï¼ŒåŒ¿å用户没有收件箱"
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "最多åªèƒ½æœ‰%(tag_count)s个标签"
+#: views/commands.py:112
+#, fuzzy
+msgid "Sorry, anonymous users cannot vote"
+msgstr "匿å用户ä¸èƒ½æŠ•ç¥¨"
-# todo: remove magic numbers from this file
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "最多%(tag_count)s个标签,æ¯ä¸ªæ ‡ç­¾é•¿åº¦å°äºŽ%(max_chars)s个字符。"
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr "对ä¸èµ·ï¼Œä½ ä»Šå¤©çš„投票已用完"
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ "%(counter)s个回答:"
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr "你今天还å¯ä»¥æŠ•%(votes_left)s次票"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "最先回答显示在最å‰é¢"
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr "对ä¸èµ·ï¼Œè¿™é‡Œå‡ºäº†äº›é—®é¢˜"
-#~ msgid "oldest answers"
-#~ msgstr "最先回答"
+#: views/commands.py:229
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "匿å用户ä¸èƒ½æŽ¥å—回答"
-#~ msgid "newest answers will be shown first"
-#~ msgstr "最晚回答显示在最å‰é¢"
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr "订阅已ä¿å­˜ï¼Œ%(email)s邮件需è¦éªŒè¯, 查看 %(details_url)s"
-#~ msgid "newest answers"
-#~ msgstr "最近回答"
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "邮件更新频率已设置æˆæ¯æ—¥æ›´æ–°"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "投票次数最多的显示在最å‰é¢"
+# 100%
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr "标签订阅已å–消 (<a href=\"%(url)s\">撤销</a>)。"
-#~ msgid "popular answers"
-#~ msgstr "å—欢迎的答案"
+#: views/commands.py:473
+#, fuzzy, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr "请登录"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "回答你自己的问题"
+#: views/commands.py:600
+msgid "Please sign in to vote"
+msgstr "请登录åŽæŠ•ç¥¨"
+#: views/commands.py:620
#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "登录å‘布你的答案"
+msgid "Please sign in to delete/restore posts"
+msgstr "请登录åŽæŠ•ç¥¨"
-#~ msgid "Your answer"
-#~ msgstr "您的回答"
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "关于 %(site_name)s"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå›žç­”此问题的人!"
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "Q&Aå馈"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "ä½ å¯ä»¥åŒ¿å回答,然åŽç™»å½•"
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "感谢你的å馈"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "仅仅为了回答你自己的问题而给一个答案"
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "我们期望你的å馈"
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "éšç§æ”¿ç­–"
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "登录å‘布你的答案"
+#: views/readers.py:133
+#, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "%(q_num)s个问题"
-#~ msgid "Answer the question"
-#~ msgstr "回答该问题"
+#: views/readers.py:388
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr "对ä¸èµ·ï¼Œä½ æ‰¾çš„这个评论已ç»è¢«åˆ é™¤"
-#, fuzzy
-#~ msgid " or"
-#~ msgstr "或者"
+#: views/users.py:206
+msgid "moderate user"
+msgstr "管ç†ç”¨æˆ·"
-#~ msgid "email"
-#~ msgstr "邮件"
+#: views/users.py:381
+msgid "user profile"
+msgstr "用户概览"
-#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "用户概览"
-#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "被回å¤æœ€å¤šçš„问题"
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "最近活动"
-#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "被回å¤æœ€å¤šçš„问题"
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "最近活动"
-#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "邮件更新å–消"
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "回应 - 用户资料"
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "用户资料 - 投票"
+#: views/users.py:701
#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "订阅最新问题"
+msgid "user karma"
+msgstr "用户å"
+#: views/users.py:702
#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "订阅最新问题"
+msgid "Profile - User's Karma"
+msgstr "积分 - 用户资料"
-#~ msgid "question asked"
-#~ msgstr "已问问题"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "用户收è—的问题"
-#~ msgid "question was seen"
-#~ msgstr "æµè§ˆé‡"
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "æ”¶è— - 用户资料"
-#~ msgid "times"
-#~ msgstr "次"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "修改已ä¿å­˜"
-#~ msgid "last updated"
-#~ msgstr "最åŽæ›´æ–°æ—¶é—´"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "邮件更新å–消"
-#~ msgid "Related questions"
-#~ msgstr "相似的问题"
+#: views/users.py:770
+msgid "profile - email subscriptions"
+msgstr "邮件订阅"
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "当有新回答的时候æ¯å¤©æ醒我一次"
+#: views/writers.py:60
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "匿å用户ä¸èƒ½ä¸Šä¼ æ–‡ä»¶"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "当有新回答的时候æ¯å‘¨æ醒我一次"
+# todo take these out of settings
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "åªå…许上传'%(file_types)s'类型的文件ï¼"
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "当有新回答的时候立å³æ醒我一次"
+#: views/writers.py:84
+#, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "åªå…许上传ä¸è¶…过%(file_size)sK大å°çš„文件ï¼"
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr "ä½ å¯ä»¥é€šè¿‡%(profile_url)s调整你的邮件更新频率"
+#: views/writers.py:92
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr "在文件上传过程中产生了错误,请è”系管ç†å‘˜ï¼Œè°¢è°¢^_^"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "一旦你注册你就å¯ä»¥è®¢é˜…这里的任何更新"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "%(username)s's profile"
-#~ msgstr "%(username)s用户概览"
+#: views/writers.py:466
+msgid "Please log in to answer questions"
+msgstr "请登录åŽå›žç­”"
-#~ msgid "Edit user profile"
-#~ msgstr "修改个人资料"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"对ä¸èµ·ï¼Œä½ å·²ç»é€€å‡ºï¼Œä¸æ©é‚£ä¸ªåœ¨å‘表评论,请<a href=\"%(sign_in_url)s\">登录</"
+"a>."
-#~ msgid "edit profile"
-#~ msgstr "修改资料"
+#: views/writers.py:589
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "匿å用户ä¸èƒ½ç¼–辑评论"
-#~ msgid "change picture"
-#~ msgstr "修改图片"
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+"对ä¸èµ·ï¼Œä½ å·²ç»é€€å‡ºï¼Œä¸æ©é‚£ä¸ªåœ¨å‘表评论,请<a href=\"%(sign_in_url)s\">登录</"
+"a>."
-#~ msgid "Registered user"
-#~ msgstr "注册用户"
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
-#~ msgid "Screen Name"
-#~ msgstr "用户å"
+#~ msgid "use-these-chars-in-tags"
+#~ msgstr "在标签中使用这些字符"
-#~ msgid "Update"
-#~ msgstr "æ›´æ–°"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "电å­é‚®ç®±åœ°å€å°†ä¸Ž gravatar å…³è”"
-#~ msgid "subscriptions"
-#~ msgstr "订阅"
+#~ msgid "URL for the LDAP service"
+#~ msgstr "LDAPæœåŠ¡URL"
-#~ msgid "Email subscription settings"
-#~ msgstr "邮件订阅设置"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "如何修改LDAP密ç "
-#~ msgid "email subscription settings info"
-#~ msgstr "邮件订阅设置信æ¯"
+#~ msgid "question_answered"
+#~ msgstr "回答的问题"
-#~ msgid "Stop sending email"
-#~ msgstr "åœæ­¢å‘é€é‚®ä»¶"
+#~ msgid "question_commented"
+#~ msgstr "留言的问题"
-#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "所有问题"
+#~ msgid "answer_commented"
+#~ msgstr "留言的回答"
-#~ msgid "inbox"
-#~ msgstr "收件箱"
+#~ msgid "answer_accepted"
+#~ msgstr "已接å—的回答"
-#~ msgid "Sections:"
-#~ msgstr "段"
+#~ msgid "Incorrect username."
+#~ msgstr "选择一个用户å"
-#~ msgid "forum responses (%(re_count)s)"
-#~ msgstr "论å›å›žåº” (%(re_count)s)"
+#~ msgid ""
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
+#~ msgstr ""
+#~ "This command may help you migrate to LDAP password authentication by "
+#~ "creating a record for LDAP association with each user account. There is "
+#~ "an assumption that ldap user id's are the same as user names registered "
+#~ "at the site. Before running this command it is necessary to set up LDAP "
+#~ "parameters in the \"External keys\" section of the site settings."
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "已标记项目 (%(flag_count)s)"
+#~ msgid "%(name)s, this is an update message header for %(num)d question"
+#~ msgid_plural ""
+#~ "%(name)s, this is an update message header for %(num)d questions"
+#~ msgstr[0] "%(name)s, %(num)d 个问题的更新标题"
-#~ msgid "select:"
-#~ msgstr "选择:"
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
-#~ msgid "seen"
-#~ msgstr "查看"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr ""
+#~ "在选择的问题上,你的订阅频率设置为'æ¯æ—¥' ,如果你æ¯å¤©æ”¶åˆ°è¶…过一å°é‚®ä»¶ï¼Œè¯·"
+#~ "通知网站管ç†å‘˜"
-#~ msgid "new"
-#~ msgstr "æ–°"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr ""
+#~ "在选择的问题上,你的订阅频率设置为'æ¯å‘¨' ,如果你æ¯å‘¨æ”¶åˆ°è¶…过一å°é‚®ä»¶ï¼Œè¯·"
+#~ "通知网站管ç†å‘˜"
-#~ msgid "none"
-#~ msgstr "æ— "
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr "由于技术问题你å¯èƒ½ä¼šæŽ¥æ”¶åˆ°ä¸€ä¸ªä»¥å‰çœ‹è¿‡çš„链接,我们将解决此问题"
-#~ msgid "mark as seen"
-#~ msgstr "已看标记"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr ""
+#~ "到%(email_settings_link)s去修改邮件更新频率或å‘é€é‚®ä»¶ç»™%(admin_email)s管ç†"
+#~ "员"
-#~ msgid "mark as new"
-#~ msgstr "新标记"
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "上传图片åªé™äºŽç§¯åˆ†+%(min_rep)s以上注册用户!"
-#~ msgid "dismiss"
-#~ msgstr "驳回"
+#~ msgid "blocked users cannot post"
+#~ msgstr "冻结用户ä¸èƒ½å‘布信æ¯"
-#~ msgid "update profile"
-#~ msgstr "更新我的资料"
+#~ msgid "suspended users cannot post"
+#~ msgstr "æš‚åœä½¿ç”¨ç”¨æˆ·ä¸èƒ½å‘布信æ¯"
-#~ msgid "manage login methods"
-#~ msgstr "管ç†ç™»å½•æ–¹æ³•"
+#~ msgid "cannot flag message as offensive twice"
+#~ msgstr "ä¸èƒ½ä¸¤æ¬¡æ ‡è®°åŒä¸€ä¿¡æ¯ä¸ºåžƒåœ¾ä¿¡æ¯"
-#~ msgid "real name"
-#~ msgstr "姓å"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "冻结用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
-#~ msgid "member for"
-#~ msgstr "已加入"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "æš‚åœä½¿ç”¨çš„用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
-#~ msgid "last seen"
-#~ msgstr "上次活动时间"
+#~ msgid "need > %(min_rep)s points to flag spam"
+#~ msgstr "需è¦å¤§äºŽ%(min_rep)s积分值æ‰èƒ½æ ‡è®°åžƒåœ¾ä¿¡æ¯"
-#~ msgid "user website"
-#~ msgstr "个人网站"
+#~ msgid "%(max_flags_per_day)s exceeded"
+#~ msgstr "%(max_flags_per_day)s 被处ç†"
-#~ msgid "location"
-#~ msgstr "城市"
+#~ msgid "blocked users cannot remove flags"
+#~ msgstr "冻结用户ä¸èƒ½ç§»é™¤æ ‡è®°"
-# user_info.html
-#~ msgid "age"
-#~ msgstr "年龄"
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "æš‚åœä½¿ç”¨çš„用户ä¸èƒ½ç§»é™¤æ ‡è®°"
-#~ msgid "age unit"
-#~ msgstr "å²"
+#~ msgid "need > %(min_rep)d point to remove flag"
+#~ msgid_plural "need > %(min_rep)d points to remove flag"
+#~ msgstr[0] "需è¦å¤§äºŽ%(min_rep)d积分值æ‰èƒ½æ ‡è®°åžƒåœ¾ä¿¡æ¯"
-#~ msgid "todays unused votes"
-#~ msgstr "今日剩余投票数"
+#~ msgid "cannot revoke old vote"
+#~ msgstr "这个投票已ç»è¿‡æ—¶ï¼Œä¸èƒ½æ’¤é”€ã€‚"
-#~ msgid "votes left"
-#~ msgstr "剩余投票数"
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s修改了问题"
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "版主"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s å‘布了 %(new_answer_count)s 新答案"
+
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s评论了问题"
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "%(username)s当å‰çš„状æ€æ˜¯ \"%(status)s\""
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s 评论了答案"
-#~ msgid "User status changed"
-#~ msgstr "用户状æ€å·²ä¿®æ”¹"
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s 评论了答案"
-#~ msgid "Save"
-#~ msgstr "ä¿å­˜"
+#~ msgid "change %(email)s info"
+#~ msgstr "æ›´æ¢%(email)s电å­é‚®ä»¶"
-#~ msgid "Your current reputation is %(reputation)s points"
-#~ msgstr "你当å‰çš„积分是 %(reputation)s "
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "为什么邮件是必须的,查看 %(gravatar_faq_url)s"
-#~ msgid "User's current reputation is %(reputation)s points"
-#~ msgstr "用户当å‰çš„积分是 %(reputation)s"
+#~ msgid "Your new Email"
+#~ msgstr "你的新邮件地å€"
-#~ msgid "User reputation changed"
-#~ msgstr "用户积分已修改"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr "验è¯%(email)s ä¿¡æ¯æˆ–到%(change_email_url)s"
-#~ msgid "Subtract"
-#~ msgstr "å‡åŽ»"
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr "旧邮件%(email)s被ä¿å­˜,ä½ å¯ä»¥åŽ»%(change_email_url)s修改"
+
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "ä½ ç›®å‰çš„%(email)s邮件地å€å¯ä»¥è¢«ç”¨äºŽè¿™é‡Œ"
-#~ msgid "Add"
-#~ msgstr "添加"
+#~ msgid "thanks for verifying email"
+#~ msgstr "感谢你确认邮件地å€"
-#~ msgid "Send message to %(username)s"
-#~ msgstr "å‘é€ä¿¡æ¯ç»™%(username)s"
+#~ msgid "email key not sent"
+#~ msgstr "邮件地å€æœªå‘é€"
+
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr "邮件地å€æœªå‘é€%(email)s,点这里修改%(change_link)s"
+
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr "注册新 %(provider)s 账户信æ¯, 查看 %(gravatar_faq_url)s"
#~ msgid ""
-#~ "An email will be sent to the user with 'reply-to' field set to your email "
-#~ "address. Please make sure that your address is entered correctly."
-#~ msgstr "邮件将被å‘é€ç»™æŽ¥å—回å¤çš„用户地å€ï¼Œè¯·ç¡®ä¿ä½ è¾“入的邮件地å€æ˜¯æ­£ç¡®çš„"
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "%(username)s 账户已存在,在%(provider)s找哦昂选择其他å称. Email也是必须"
+#~ "的, 查看 %(gravatar_faq_url)s"
-#~ msgid "Message sent"
-#~ msgstr "å‘é€æ¶ˆæ¯"
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr "注册新扩展%(provider)s 账户信æ¯, 查看 %(gravatar_faq_url)s"
-#~ msgid "Send message"
-#~ msgstr "å‘é€æ¶ˆæ¯"
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr "注册新Facebook账户信æ¯, 查看 %(gravatar_faq_url)s"
+# todo: review this message may be confusing user
#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "æš‚åœä½¿ç”¨çš„用户ä¸èƒ½æ ‡è®°ä¿¡æ¯"
+#~ msgid "This account already exists, please use another."
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "输入您的新å¸å·å·²ç»å­˜åœ¨,请使用其他å¸å·ã€‚\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "指定账å·å·²å­˜åœ¨ï¼Œè¯·ä½¿ç”¨å…¶ä»–è´¦å·ã€‚"
-#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "%(username)s用户概览"
+#~ msgid "Screen name label"
+#~ msgstr "昵称"
-#~ msgid "activity"
-#~ msgstr "活跃问题"
+#~ msgid "Email address label"
+#~ msgstr "您的电å­é‚®ä»¶åœ°å€"
-#, fuzzy
-#~ msgid "karma"
-#~ msgstr "按积分排åº"
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "获å–商å“ä¿¡æ¯æ›´æ–°"
-#~ msgid "Your karma change log."
-#~ msgstr "你的积分历å²"
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr "当你登录åŽ,标签过滤工具将出现在你å³è¾¹çš„é¢æ¿é‡Œ"
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "%(user_name)s的积分历å²"
+#~ msgid "create account"
+#~ msgstr "创建å¸å·"
-#~ msgid "overview"
-#~ msgstr "概览"
+#~ msgid ""
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
+#~ msgstr ""
+#~ "如果你认为此消æ¯è¢«é”™è¯¯çš„å‘é€,ä¸è¦è¿›è¡Œæ›´è¿›ä¸€æ­¥çš„动作.仅仅忽略这å°é‚®ä»¶,为给"
+#~ "您带æ¥çš„ä¸ä¾¿é“æ­‰."
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span>个问题"
+#~ msgid "Login"
+#~ msgstr "登录"
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span>个答案"
+#~ msgid "Why use OpenID?"
+#~ msgstr "为什么需è¦OpenID登录?"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "该回答总共有%(answer_score)s个投票"
+#~ msgid "with openid it is easier"
+#~ msgstr ""
+#~ "构建在OpenID网络认è¯ä¸Šçš„本系统,ä¸éœ€è¦ä½ æ³¨å†Œæ–°çš„å¸å·ï¼Œå³å¯ä½¿ç”¨æˆ‘们系统的所"
+#~ "有功能"
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "该回答已被设为最佳答案"
+#~ msgid "reuse openid"
+#~ msgstr "用åŒä¸€ä¸ªå¸å·å¯ç™»å½•äº’è”网所有激活OpenID的网站"
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "%(comment_count)s次评论"
+#~ msgid "openid is widely adopted"
+#~ msgstr "全世界有1.6亿OpenIDå¸å·ï¼Œå’Œ10,000个支æŒOpenID的站点"
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span>投票"
+#~ msgid "openid is supported open standard"
+#~ msgstr "OpenID是有开放标准,并且有相关的基金组织æ供支æŒ"
-#~ msgid "thumb up"
-#~ msgstr "好"
+#~ msgid "Find out more"
+#~ msgstr "查看更多"
-#~ msgid "user has voted up this many times"
-#~ msgstr "该用户投的赞æˆç¥¨æ€»æ•°"
+#~ msgid "Get OpenID"
+#~ msgstr "获å–OpenID"
-#~ msgid "thumb down"
-#~ msgstr "å·®"
+#~ msgid "Traditional signup info"
+#~ msgstr "传统登录信æ¯"
-#~ msgid "user voted down this many times"
-#~ msgstr "用户投的å对票总数"
+#~ msgid "Create Account"
+#~ msgstr "创建å¸å·"
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span>标签"
+#~ msgid "answer permanent link"
+#~ msgstr "该回答的链接地å€"
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span>奖牌"
+#~ msgid "remove all flags"
+#~ msgstr "移除所有标签"
-#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "å—欢迎的æé—®"
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "这个答案已ç»è¢«%(question_author)s标记为正确答案"
-#~ msgid "User profile"
-#~ msgstr "用户概览"
+#~ msgid "Related tags"
+#~ msgstr "相关标签"
-#~ msgid "graph of user reputation"
-#~ msgstr "用户的社区积分历å²"
+#~ msgid "Ask a question"
+#~ msgstr "我è¦æé—®"
-#~ msgid "reputation history"
-#~ msgstr "积分"
+#~ msgid "Badges summary"
+#~ msgstr "奖牌列表"
+
+#~ msgid "gold badge description"
+#~ msgstr "金牌:å分罕è§ä¹‹æœ€é«˜å¥–励"
+
+#~ msgid "silver badge description"
+#~ msgstr "银牌:å¶å°”é¢å‘之优质奖章"
+
+#~ msgid "bronze badge description"
+#~ msgstr "铜牌:时常授予之特殊è£èª‰"
#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "用户收è—的问题"
+#~ 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 ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "希望用户针对æ问的问题回答,å¯ä»¥æ˜¯è¿›ä¸€æ­¥äº†è§£é—®é¢˜å®žè´¨ï¼Œç»™äºˆå‚考方案,或完全"
+#~ "解决问题的回答。我们希望通过问答的形å¼è§£å†³ç”¨æˆ·çš„实际问题。因此,我们ä¸æ¬¢è¿Ž"
+#~ "在回答中出现ä¸æ˜¯å›žç­”问题的内容,包括针对他人回答的讨论,和其他无æ„义的浪费"
+#~ "网络资æºè¡Œä¸ºã€‚\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "是问答网站,而éžè®¨è®ºç¾¤ã€‚请勿在此讨论或评论答案。"
-#~ msgid "recent activity"
-#~ msgstr "最近活跃"
+#~ msgid "Rep system summary"
+#~ msgstr "更新概è¦ï¼š"
-#~ msgid "casted votes"
-#~ msgstr "投票"
+#~ msgid "use tags"
+#~ msgstr "标记垃圾帖"
-#~ msgid "votes"
-#~ msgstr "票"
+#~ msgid "what is gravatar"
+#~ msgstr "什么是图åƒåŠå¦‚何修改?"
-#~ msgid "answer tips"
-#~ msgstr "å—欢迎的æé—®"
+#~ msgid "gravatar faq info"
+#~ msgstr "图åƒå¸¸è§é—®é¢˜"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "请确认你的答案和这个主题相关"
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "这篇æ问我喜欢 (å†æ¬¡ç‚¹å‡»å¯å–消)"
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "这篇帖å­æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-#~ msgid "please try to provide details"
-#~ msgstr "请详细æ述您的问题"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "这篇æ问我ä¸å–œæ¬¢ (å†æ¬¡ç‚¹å‡»å¯å–消)"
-#~ msgid "be clear and concise"
-#~ msgstr "我们推è您使用中文æ述问题,这样å¯ä»¥å¾—到更多的答å¤æœºä¼šã€‚"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "这篇帖å­æ²¡æœ‰ä»·å€¼ï¼ˆå†æ¬¡ç‚¹å‡»å–消æ“作)"
-#~ msgid "see frequently asked questions"
-#~ msgstr "查看常è§é—®é¢˜"
+#~ msgid "add comment"
+#~ msgstr "添加评论"
-#~ msgid "Markdown tips"
-#~ msgstr "标记æ å‚考"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] "查看<strong>%(counter)s</strong>更多评论"
-#~ msgid "*italic*"
-#~ msgstr "*斜体*表示*å·å†…字体为斜体"
+#~ msgid "posts per page"
+#~ msgstr "æ¯é¡µæ˜¾ç¤ºï¼š"
-#~ msgid "**bold**"
-#~ msgstr "**粗体**表示2个*å·å†…字体为粗体"
+#~ msgid "Change tags"
+#~ msgstr "修改标签"
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*斜体* , _斜体_表示*å·æˆ–_å·å†…字体为斜体"
+#~ msgid "reputation"
+#~ msgstr "积分"
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**加粗** 或者 __加粗__ "
+#~ msgid "oldest answers"
+#~ msgstr "最先回答"
-#~ msgid "link"
-#~ msgstr "链接"
+#~ msgid "newest answers"
+#~ msgstr "最近回答"
-#~ msgid "text"
-#~ msgstr "文本"
+#, fuzzy
+#~ msgid "popular answers"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "å—欢迎的答案\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "投票最多"
-#~ msgid "image"
-#~ msgstr "图片"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "ä½ å¯ä»¥åŒ¿å回答,然åŽç™»å½•"
-#~ msgid "numbered list:"
-#~ msgstr "列表:"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "仅仅为了回答你自己的问题而给一个答案"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "支æŒåŸºæœ¬çš„HTML标签"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "建议您æ的问题是å¯ä»¥è¢«ç­”å¤çš„,而ä¸ä»…仅是å¯ä»¥è®¨è®ºã€‚"
-#~ msgid "learn more about Markdown"
-#~ msgstr "有关Markdown详细说明"
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "登录å‘布你的答案"
-#~ msgid "ask a question"
-#~ msgstr "我è¦æé—®"
+#~ msgid "Answer the question"
+#~ msgstr "回答该问题"
-#~ msgid "login to post question info"
-#~ msgstr "登录并æ交问题"
+#~ msgid "question asked"
+#~ msgstr "已问问题"
#, fuzzy
+#~ msgid "question was seen"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "æµè§ˆé‡\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "ç›®å‰æµè§ˆæ•°é‡"
+
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "当有新回答的时候æ¯å¤©æ醒我一次"
+
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "当有新回答的时候立å³æ醒我一次"
+
#~ msgid ""
-#~ "must have valid %(email)s to post, \n"
-#~ " see %(email_validation_faq_url)s\n"
-#~ " "
-#~ msgstr "必须有正确的%(email)sæ‰èƒ½å‘布,查看%(email_validation_faq_url)s"
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr "ä½ å¯ä»¥é€šè¿‡%(profile_url)s调整你的邮件更新频率"
-#~ msgid "Login/signup to post your question"
-#~ msgstr "登录并å‘布问题"
+#~ msgid "email subscription settings info"
+#~ msgstr "邮件订阅设置信æ¯"
-#~ msgid "Ask your question"
-#~ msgstr "现在æé—®"
+#~ msgid "Stop sending email"
+#~ msgstr "åœæ­¢å‘é€é‚®ä»¶"
-#~ msgid "Contributors"
-#~ msgstr "贡献者"
+#~ msgid "user website"
+#~ msgstr "个人网站"
-# footer.html
-#~ msgid "about"
-#~ msgstr "关于本站"
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] "<span class=\"count\">%(counter)s</span>个答案"
-#~ msgid "privacy policy"
-#~ msgstr "éšç§æ”¿ç­–"
+#~ msgid "reputation history"
+#~ msgstr "积分"
-#~ msgid "give feedback"
-#~ msgstr "问题å馈"
+#, fuzzy
+#~ msgid "recent activity"
+#~ msgstr ""
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "最近活跃\n"
+#~ "#-#-#-#-# django.po (0.7) #-#-#-#-#\n"
+#~ "最近活动"
-#~ msgid "back to home page"
-#~ msgstr "回到首页"
+#~ msgid "casted votes"
+#~ msgstr "投票"
-#~ msgid "%(site)s logo"
-#~ msgstr "%(site)s logo"
+#~ msgid "answer tips"
+#~ msgstr "å—欢迎的æé—®"
-#~ msgid "users"
-#~ msgstr "用户"
+#~ msgid "please try to provide details"
+#~ msgstr "请详细æ述您的问题"
-#~ msgid "badges"
-#~ msgstr "奖牌榜"
+#~ msgid "ask a question"
+#~ msgstr "我è¦æé—®"
+
+#~ msgid ""
+#~ "must have valid %(email)s to post, \n"
+#~ " see %(email_validation_faq_url)s\n"
+#~ " "
+#~ msgstr "必须有正确的%(email)sæ‰èƒ½å‘布,查看%(email_validation_faq_url)s"
+
+#~ msgid "Login/signup to post your question"
+#~ msgstr "登录并å‘布问题"
#~ msgid "question tips"
#~ msgstr "å—欢迎的æé—®"
@@ -5552,43 +7371,39 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "please ask a relevant question"
#~ msgstr "请问与此社区相关的问题"
-#~ msgid "please try provide enough details"
-#~ msgstr "请详细æ述您的问题"
+#~ msgid "logout"
+#~ msgstr "退出登录"
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "æµè§ˆ"
+#~ msgid "login"
+#~ msgstr "登录"
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "回答"
+#~ msgid "no items in counter"
+#~ msgstr "æ— "
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "票"
+#~ msgid "your email address"
+#~ msgstr "您的电å­é‚®ä»¶åœ°å€"
-#~ msgid "see unanswered questions"
-#~ msgstr "查看没有回答的问题"
+#~ msgid "choose password"
+#~ msgstr "密ç "
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "查看我收è—问题"
+#~ msgid "retype password"
+#~ msgstr "确认密ç "
-#~ msgid "karma:"
-#~ msgstr "按积分排åº"
+#~ msgid "%(badge_count)d %(badge_level)s badge"
+#~ msgid_plural "%(badge_count)d %(badge_level)s badges"
+#~ msgstr[0] "%(badge_count)d %(badge_level)s奖章"
-#~ msgid "badges:"
-#~ msgstr "奖牌榜"
+#~ msgid "user reputation in the community"
+#~ msgstr "用户社区积分"
-#~ msgid "logout"
-#~ msgstr "退出登录"
+#~ msgid "Please log in to ask questions"
+#~ msgstr "请登录åŽæé—®"
-#~ msgid "login"
-#~ msgstr "登录"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "内容至少è¦10个字符"
-# book.html line 123 must be empty in english
-#~ msgid "settings"
-#~ msgstr "设置"
+#~ msgid "Question: \"%(title)s\""
+#~ msgstr "问题:\"%(title)s\""
#~ msgid "(please enter a valid email)"
#~ msgstr "请输入正确的email地å€"
@@ -5623,9 +7438,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Question tags"
#~ msgstr "您正在æµè§ˆçš„问题å«æœ‰ä»¥ä¸‹æ ‡ç­¾"
-#~ msgid "questions"
-#~ msgstr "问题"
-
#~ msgid "search"
#~ msgstr "æœç´¢"
@@ -5639,13 +7451,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "In:"
#~ msgstr "选择:"
-#, fuzzy
-#~ msgid "followed"
-#~ msgstr "所有问题"
-
-#~ msgid "Sort by:"
-#~ msgstr "排åº"
-
#~ msgid "Email (not shared with anyone):"
#~ msgstr "电å­é‚®ä»¶"
@@ -5973,10 +7778,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "taxonomist"
#~ msgstr "分类学者"
-# todo - check if it's indeed plural
-#~ msgid "Posted 10 comments"
-#~ msgstr "å·²å‘布10æ¡è¯„论"
-
# footer.html
#~ msgid "About"
#~ msgstr "关于本站"
@@ -6043,18 +7844,12 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ "\n"
#~ "%(q_num)s个问题"
-#~ msgid "tagged"
-#~ msgstr "已加标签"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr "从感兴趣的标签列表中删除 '%(tag_name)s' 标签"
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "从忽略标签列表中删除'%(tag_name)s'标签"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "忽略问题ä¿æŒéšè—"
-
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
@@ -6390,9 +8185,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "Existing account"
#~ msgstr "å·²ç»å­˜åœ¨çš„用户"
-#~ msgid "user name"
-#~ msgstr "用户å"
-
#~ msgid "password"
#~ msgstr "密ç "
@@ -6463,11 +8255,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ "please use space to separate tags (this enables autocomplete feature)"
#~ msgstr "多个标签请用空格间隔-最多5个标签。(优先使用自动匹é…的英文标签。)"
-#~ msgid ""
-#~ "please use following characters in tags: letters 'a-z', numbers, and "
-#~ "characters '.-_#'"
-#~ msgstr "标签请使用英文字æ¯ï¼Œä¸­æ–‡æˆ–者数字字符串(. - _ # 也å¯ä»¥ï¼‰"
-
#~ msgid "profile - user preferences"
#~ msgstr "设置 - 用户资料"
@@ -6487,14 +8274,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgstr "电å­é‚®ä»¶:(ä¸ä¼šå…¬å¼€æ˜¾ç¤ºï¼‰"
#~ msgid ""
-#~ "gold badge descriptionGold 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 ""
-#~ "金牌是å分罕è§çš„。你ä¸ä»…è¦å‚与社区的æé—®ã€å›žç­”ã€æŠ•ç¥¨ç­‰æ´»åŠ¨ï¼Œè€Œä¸”需è¦æœ‰é«˜æ·±"
-#~ "的知识和能力æ‰èƒ½èŽ·å¾—。"
-
-#~ msgid ""
#~ "silver badge descriptionObtaining silver badge requires significant "
#~ "patience. If you got one, you've very significantly contributed to this "
#~ "community"
@@ -6581,9 +8360,6 @@ msgstr "对ä¸èµ·ï¼Œå¥½åƒæœ‰ä¸€äº›æŠ€æœ¯ä¸Šçš„错误。"
#~ msgid "votes total"
#~ msgstr "个投票"
-#~ msgid "Tags"
-#~ msgstr "个标签"
-
#~ msgid "New password again"
#~ msgstr "å‘é€æ–°å¯†ç "
diff --git a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo b/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo
index 84c10487..6adae0e7 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo
+++ b/askbot/locale/zh_CN/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.po b/askbot/locale/zh_CN/LC_MESSAGES/djangojs.po
index 3f498230..c8775c04 100644
--- a/askbot/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/zh_CN/LC_MESSAGES/djangojs.po
@@ -2,343 +2,367 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:00-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2012-04-18 18:58-0500\n"
+"PO-Revision-Date: 2012-01-24 18:47+0200\n"
+"Last-Translator: Dean <xslidian@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.1.6\n"
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
-msgstr ""
+msgstr "您是å¦ç¡®å®šè¦ç§»é™¤æ‚¨çš„ %s 登录?"
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:90
msgid "Please add one or more login methods."
-msgstr ""
+msgstr "请添加一或多ç§ç™»å½•æ–¹å¼ã€‚"
#: skins/common/media/jquery-openid/jquery.openid.js:93
msgid ""
"You don't have a method to log in right now, please add one or more by "
"clicking any of the icons below."
-msgstr ""
+msgstr "您目å‰è¿˜æ²¡æœ‰ç™»å½•æ–¹å¼ï¼Œè¯·ç‚¹å‡»ä¸‹åˆ—任一图标添加。"
+# 100%
#: skins/common/media/jquery-openid/jquery.openid.js:135
msgid "passwords do not match"
-msgstr ""
+msgstr "密ç ä¸åŒ¹é…"
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
-msgstr ""
+msgstr "显示/更改当å‰ç™»å½•æ–¹å¼"
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
-msgstr ""
+msgstr "请输入您的 %s 然åŽç»§ç»­"
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
-msgstr ""
+msgstr "将您的 %(provider_name)s è´¦å·è¿žæŽ¥åˆ° %(site)s"
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
-msgstr ""
+msgstr "更改您的 %s 密ç "
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
-msgstr ""
+msgstr "更改密ç "
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
-msgstr ""
+msgstr "为 %s 创建密ç "
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
-msgstr ""
+msgstr "创建密ç "
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+# 100%
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
-msgstr ""
+msgstr "创建å—密ç ä¿æŠ¤çš„è´¦å·"
#: skins/common/media/js/post.js:28
msgid "loading..."
msgstr "读å–中..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "标签ä¸èƒ½ä¸ºç©ºã€‚"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "内容ä¸èƒ½ä¸ºç©ºã€‚"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "请输入至少 %s 字符。"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "请输入标题。"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "请输入至少 %s 字符。"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "用户æƒé™ä¸åœ¨æ“作范围"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "ä¸èƒ½è®¾ç½®è‡ªå·±çš„回答为最佳答案"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "注册或者登录"
-#: skins/common/media/js/post.js:290
+# 100%
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
-msgstr ""
+msgstr "匿å用户å¯è·Ÿè¸ªæé—®"
-#: skins/common/media/js/post.js:291
+# 100%
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
-msgstr ""
+msgstr "匿å用户ä¸èƒ½è®¢é˜…æé—®"
-#: skins/common/media/js/post.js:292
+# 100%
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
-msgstr ""
+msgstr "匿å用户ä¸èƒ½æŠ•ç¥¨"
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr "确定è¦å½’类该帖为广告ã€äººèº«æ”»å‡»ã€æ¶æ„言论å—?"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "确定è¦å½’类该帖为广告ã€äººèº«æ”»å‡»ã€æ¶æ„言论å—?"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "匿å用户ä¸èƒ½æ“作,请先"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "确定è¦åˆ é™¤/撤销删除该帖å—?"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "匿å用户ä¸èƒ½åˆ é™¤æˆ–撤销删除帖å­"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "æ“作æˆåŠŸï¼è¯¥å¸–å­å·²è¢«æ¢å¤ã€‚"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "æ“作æˆåŠŸï¼è¯¥å¸–å­å·²åˆ é™¤ã€‚"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "å–消"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "删除"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "添加评论"
-#: skins/common/media/js/post.js:960
+# 100%
+#: skins/common/media/js/post.js:1209
msgid "save comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "还å¯å†™%s字符"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "还å¯å†™%s字符"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
+msgstr "ä¿å­˜è¯„论"
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "删除此评论"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "真è¦åˆ é™¤æ­¤è¯„论å—?"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+# 100%
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
-msgstr ""
+msgstr "请输入æ问标题 (>10 字符)"
+# 100%
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
-msgstr ""
+msgstr "标签“<span></span>â€åŒ¹é…下述æé—®:"
+# 100%
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
-msgstr ""
+msgstr "å¦æœ‰ %s æ¡æœªæ˜¾ç¤º..."
+# 100%
#: skins/common/media/js/user.js:14
msgid "Please select at least one item"
-msgstr ""
+msgstr "请选择至少一项"
+# 100%
#: skins/common/media/js/user.js:58
msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
+msgstr[0] "删除通知?"
+
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "删除此评论"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
msgstr[0] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "删除此评论"
+
+# 100%
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
-msgstr ""
+msgstr "请<a href=\"%(signin_url)s\">登录</a>æ–¹å¯å…³æ³¨ %(username)s"
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
-msgstr ""
+msgstr "å–消关注 %s"
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
-msgstr ""
+msgstr "正在关注 %s"
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+# 100%
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
-msgstr ""
+msgstr "关注 %s"
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr "点击消æ¯æ¡†å…³é—­"
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "粗体"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "斜体"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "超链接"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "引用"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "代ç "
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "图片"
-#: skins/common/media/js/wmd/wmd.js:36
+# 100%
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
-msgstr ""
+msgstr "附件"
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "æ•°å­—ç¼–å·åˆ—表"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "项目符å·åˆ—表"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "标题"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "水平线"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "撤销"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "é‡åš"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"<b>输入图片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我"
"的截图\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
"<b>输入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的网站\"</"
"p>"
-#: skins/common/media/js/wmd/wmd.js:55
+# 100%
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
-msgstr ""
+msgstr "上传文件附件"
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "标签ä¸èƒ½ä¸ºç©ºã€‚"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "内容ä¸èƒ½ä¸ºç©ºã€‚"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "请输入至少 %s 字符。"
+
+#~ msgid "please enter title"
+#~ msgstr "请输入标题。"
+
+#~ msgid "%s title minchars"
+#~ msgstr "请输入至少 %s 字符。"
+
+# 100%
+#~ msgid "Follow"
+#~ msgstr "跟踪"
+
+# 100%
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] "%s ä½è·Ÿè¸ªè€…"
+
+# 100%
+#~ msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
+#~ msgstr "<div>已关注</div><div class=\"unfollow\">å–消关注</div>"
+
+#~ msgid "undelete"
+#~ msgstr "å–消"
+
+#~ msgid "delete"
+#~ msgstr "删除"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "还å¯å†™%s字符"
+
+#~ msgid "%s characters left"
+#~ msgstr "还å¯å†™%s字符"
+
+# 100%
+#~ msgid "cancel"
+#~ msgstr "å–消"
+
+# 100%
+#~ msgid "confirm abandon comment"
+#~ msgstr "确认放弃评论"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "真è¦åˆ é™¤æ­¤è¯„论å—?"
+
+# 100%
+#~ msgid "click to edit this comment"
+#~ msgstr "点击编辑此评论"
+
+# 100%
+#~ msgid "edit"
+#~ msgstr "编辑"
+
+# 100%
+#~ msgid "see questions tagged '%s'"
+#~ msgstr "查看å«æ ‡ç­¾â€œ%sâ€çš„æé—®"
+
+# 100%
+#~ msgid "image description"
+#~ msgstr "图åƒæè¿°"
+
+# 100%
+#~ msgid "file name"
+#~ msgstr "文件å"
+
+# 100%
+#~ msgid "link text"
+#~ msgstr "链接文字"
diff --git a/askbot/locale/zh_TW/LC_MESSAGES/django.mo b/askbot/locale/zh_TW/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..8838b418
--- /dev/null
+++ b/askbot/locale/zh_TW/LC_MESSAGES/django.mo
Binary files differ
diff --git a/askbot/locale/zh-tw/LC_MESSAGES/django.po b/askbot/locale/zh_TW/LC_MESSAGES/django.po
index 4616cbd9..af6c0b0b 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/django.po
+++ b/askbot/locale/zh_TW/LC_MESSAGES/django.po
@@ -2,36 +2,36 @@
# Copyright (C) 2009 Gang Chen
# This file is distributed under the same license as the CNPROG package.
# Evgeny Fadeev <evgeny.fadeev@gmail.com>, 2009.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:43-0600\n"
+"POT-Creation-Date: 2012-04-18 18:52-0500\n"
"PO-Revision-Date: 2010-08-25 19:05+0800\n"
"Last-Translator: cch <cch@mail>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: exceptions.py:13
#, fuzzy
msgid "Sorry, but anonymous visitors cannot access this function"
msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
-#: feed.py:26 feed.py:100
+#: feed.py:28 feed.py:90
msgid " - "
msgstr "-"
-#: feed.py:26
+#: feed.py:28
#, fuzzy
msgid "Individual question feed"
msgstr "å·²é¸å•é¡Œ"
-#: feed.py:100
+#: feed.py:90
msgid "latest questions"
msgstr "最新å•é¡Œ"
@@ -49,7 +49,10 @@ msgstr ""
msgid "Country field is required"
msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-#: forms.py:104
+#: forms.py:104 skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
msgid "title"
msgstr "標題"
@@ -58,67 +61,82 @@ msgid "please enter a descriptive title for your question"
msgstr ""
"請輸入å°å•é¡Œå…·æœ‰æ述性質的標題 - 「幫忙ï¼ç·Šæ€¥æ±‚助ï¼ã€ä¸æ˜¯å»ºè­°çš„æå•æ–¹å¼ã€‚"
-#: forms.py:110
-msgid "title must be > 10 characters"
-msgstr "標題的長度必須大於10"
+#: forms.py:113
+#, fuzzy, python-format
+msgid "title must be > %d character"
+msgid_plural "title must be > %d characters"
+msgstr[0] "標題的長度必須大於10"
+
+#: forms.py:123
+#, python-format
+msgid "The title is too long, maximum allowed size is %d characters"
+msgstr ""
+
+#: forms.py:130
+#, python-format
+msgid "The title is too long, maximum allowed size is %d bytes"
+msgstr ""
-#: forms.py:119
+#: forms.py:149
msgid "content"
msgstr "內容"
-#: forms.py:125
-msgid "question content must be > 10 characters"
-msgstr "內容至少è¦10個字符"
-
-#: forms.py:134
+#: forms.py:185 skins/common/templates/widgets/edit_post.html:21
+#: skins/default/templates/widgets/meta_nav.html:5
msgid "tags"
msgstr "標籤"
-#: forms.py:136
+#: forms.py:188
+#, fuzzy, python-format
msgid ""
-"Tags are short keywords, with no spaces within. Up to five tags can be used."
-msgstr "標籤為關éµè©ž, 內無空格, 最多å¯ä½¿ç”¨ 5 個"
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tag can "
+"be used."
+msgid_plural ""
+"Tags are short keywords, with no spaces within. Up to %(max_tags)d tags can "
+"be used."
+msgstr[0] "標籤為關éµè©ž, 內無空格, 最多å¯ä½¿ç”¨ 5 個"
-#: forms.py:164
+#: forms.py:222 skins/default/templates/question_retag.html:58
msgid "tags are required"
msgstr " 標籤ä¸èƒ½ç‚ºç©ºã€‚"
-#: forms.py:173
+#: forms.py:232
#, fuzzy, python-format
msgid "please use %(tag_count)d tag or less"
msgid_plural "please use %(tag_count)d tags or less"
msgstr[0] "最多åªèƒ½æœ‰5個標籤"
-#: forms.py:181
+#: forms.py:240
#, python-format
msgid "At least one of the following tags is required : %(tags)s"
msgstr ""
-#: forms.py:190
+#: forms.py:249
#, fuzzy, python-format
msgid "each tag must be shorter than %(max_chars)d character"
msgid_plural "each tag must be shorter than %(max_chars)d characters"
msgstr[0] "æ¯å€‹æ¨™ç±¤çš„長度ä¸è¶…éŽ20"
-#: forms.py:198
-msgid "use-these-chars-in-tags"
-msgstr ""
+#: forms.py:258
+#, fuzzy
+msgid "In tags, please use letters, numbers and characters \"-+.#\""
+msgstr "標籤請使用英文字æ¯ï¼Œä¸­æ–‡æˆ–者數字字符串(. - _ # 也å¯ä»¥ï¼‰"
-#: forms.py:233
+#: forms.py:294
msgid "community wiki (karma is not awarded & many others can edit wiki post)"
msgstr ""
-#: forms.py:234
+#: forms.py:295
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模å¼ï¼Œå•ç­”ä¸è¨ˆç®—ç©åˆ†ï¼Œç°½å也ä¸é¡¯ç¤ºä½œè€…ä¿¡æ¯"
-#: forms.py:250
+#: forms.py:311
msgid "update summary:"
msgstr "更新概è¦ï¼š"
-#: forms.py:251
+#: forms.py:312
msgid ""
"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
"improved style, this field is optional)"
@@ -126,248 +144,274 @@ msgstr ""
"輸入本次修改的簡單概述(如:修改了別字,修正了語法,改進了樣å¼ç­‰ã€‚éžå¿…å¡«"
"項。)"
-#: forms.py:327
+#: forms.py:386
msgid "Enter number of points to add or subtract"
msgstr ""
-#: forms.py:341 const/__init__.py:250
+#: forms.py:400 const/__init__.py:253
msgid "approved"
msgstr ""
-#: forms.py:342 const/__init__.py:251
+#: forms.py:401 const/__init__.py:254
msgid "watched"
msgstr ""
-#: forms.py:343 const/__init__.py:252
+#: forms.py:402 const/__init__.py:255
#, fuzzy
msgid "suspended"
msgstr "æ›´æ–°"
-#: forms.py:344 const/__init__.py:253
+#: forms.py:403 const/__init__.py:256
msgid "blocked"
msgstr ""
-#: forms.py:346
+#: forms.py:405
#, fuzzy
msgid "administrator"
msgstr ""
"你好, \n"
" 論壇管ç†è€…"
-#: forms.py:347 const/__init__.py:249
+#: forms.py:406 const/__init__.py:252
msgid "moderator"
msgstr ""
-#: forms.py:367
+#: forms.py:426
#, fuzzy
msgid "Change status to"
msgstr "修改標籤"
-#: forms.py:394
+#: forms.py:453
msgid "which one?"
msgstr ""
-#: forms.py:415
+#: forms.py:474
#, fuzzy
msgid "Cannot change own status"
msgstr "ä¸èƒ½çµ¦è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: forms.py:421
+#: forms.py:480
msgid "Cannot turn other user to moderator"
msgstr ""
-#: forms.py:428
+#: forms.py:487
msgid "Cannot change status of another moderator"
msgstr ""
-#: forms.py:434
+#: forms.py:493
#, fuzzy
msgid "Cannot change status to admin"
msgstr "ä¸èƒ½çµ¦è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: forms.py:440
+#: forms.py:499
#, python-format
msgid ""
"If you wish to change %(username)s's status, please make a meaningful "
"selection."
msgstr ""
-#: forms.py:449
+#: forms.py:508
msgid "Subject line"
msgstr ""
-#: forms.py:456
+#: forms.py:515
#, fuzzy
msgid "Message text"
msgstr "訊æ¯"
-#: forms.py:542
+#: forms.py:530
#, fuzzy
msgid "Your name (optional):"
msgstr "用戶å"
-#: forms.py:543
+#: forms.py:531
#, fuzzy
msgid "Email:"
msgstr "email"
-#: forms.py:545
+#: forms.py:533
#, fuzzy
msgid "Your message:"
msgstr "Copyright(c)2009.CNPROG.COM"
-#: forms.py:550
+#: forms.py:538
msgid "I don't want to give my email or receive a response:"
msgstr ""
-#: forms.py:572
+#: forms.py:560
msgid "Please mark \"I dont want to give my mail\" field."
msgstr ""
-#: forms.py:611
+#: forms.py:599
#, fuzzy
msgid "ask anonymously"
msgstr "匿å者"
-#: forms.py:613
+#: forms.py:601
msgid "Check if you do not want to reveal your name when asking this question"
msgstr ""
-#: forms.py:773
+#: forms.py:624
+msgid ""
+"Subject line is expected in the format: [tag1, tag2, tag3,...] question title"
+msgstr ""
+
+#: forms.py:769
msgid ""
"You have asked this question anonymously, if you decide to reveal your "
"identity, please check this box."
msgstr ""
-#: forms.py:777
+#: forms.py:773
msgid "reveal identity"
msgstr ""
-#: forms.py:835
+#: forms.py:831
msgid ""
"Sorry, only owner of the anonymous question can reveal his or her identity, "
"please uncheck the box"
msgstr ""
-#: forms.py:848
+#: forms.py:844
msgid ""
"Sorry, apparently rules have just changed - it is no longer possible to ask "
"anonymously. Please either check the \"reveal identity\" box or reload this "
"page and try editing the question again."
msgstr ""
-#: forms.py:886
-#, fuzzy
-msgid "this email will be linked to gravatar"
-msgstr "ä¸æœƒå…¬é–‹ï¼Œç”¨æ–¼é ­åƒé¡¯ç¤ºæœå‹™"
-
-#: forms.py:893
+#: forms.py:888
msgid "Real name"
msgstr "真實姓å"
-#: forms.py:900
+#: forms.py:895
msgid "Website"
msgstr "個人網站"
-#: forms.py:907
+#: forms.py:902
msgid "City"
msgstr ""
-#: forms.py:916
+#: forms.py:911
#, fuzzy
msgid "Show country"
msgstr "新帳號"
-#: forms.py:921
+#: forms.py:916
msgid "Date of birth"
msgstr "生日"
-#: forms.py:922
+#: forms.py:917
msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
msgstr "ä¸æœƒå…¬é–‹ï¼Œåªæœƒé¡¯ç¤ºæ‚¨çš„年齡,格å¼ç‚ºï¼šYYYY-MM-DD"
-#: forms.py:928
+#: forms.py:923
msgid "Profile"
msgstr "個人簡介"
-#: forms.py:937
+#: forms.py:932
#, fuzzy
msgid "Screen name"
msgstr "姓å"
-#: forms.py:968 forms.py:969
+#: forms.py:963 forms.py:964
msgid "this email has already been registered, please use another one"
msgstr "該電å­éƒµä»¶å·²è¢«æ³¨å†Šï¼Œè«‹é¸æ“‡å¦ä¸€å€‹å†è©¦ã€‚"
-#: forms.py:976
+#: forms.py:971
msgid "Choose email tag filter"
msgstr "é¸æ“‡ Email 標籤篩é¸"
-#: forms.py:1023
+#: forms.py:1018
msgid "Asked by me"
msgstr "è©¢å•"
-#: forms.py:1026
+#: forms.py:1021
msgid "Answered by me"
msgstr "回應"
-#: forms.py:1029
+#: forms.py:1024
msgid "Individually selected"
msgstr "個別é¸å®š"
-#: forms.py:1032
+#: forms.py:1027
msgid "Entire forum (tag filtered)"
msgstr "整個論壇 (標籤篩é¸)"
-#: forms.py:1036
+#: forms.py:1031
msgid "Comments and posts mentioning me"
msgstr ""
+#: forms.py:1112
+msgid "please choose one of the options above"
+msgstr "è«‹é¸ä¸Šè¿°é¸é …之一"
+
#: forms.py:1115
msgid "okay, let's try!"
msgstr "好, 試試看"
-#: forms.py:1116
-msgid "no community email please, thanks"
+#: forms.py:1118
+#, fuzzy, python-format
+msgid "no %(sitename)s email please, thanks"
msgstr "無須設群 Email è¬è¬"
-#: forms.py:1120
-msgid "please choose one of the options above"
-msgstr "è«‹é¸ä¸Šè¿°é¸é …之一"
+#: lamson_handlers.py:126 tests/reply_by_email_tests.py:49
+msgid "======= Reply above this line. ====-=-="
+msgstr ""
+
+#: lamson_handlers.py:130
+msgid ""
+"Your message was malformed. Please make sure to qoute the "
+"original notification you received at the end of your reply."
+msgstr ""
+
+#: lamson_handlers.py:147
+msgid ""
+"You were replying to an email address unknown to the system or you "
+"were replying from a different address from the one where you "
+"received the notification."
+msgstr ""
# footer.html
-#: urls.py:57
+#: urls.py:41
#, fuzzy
msgid "about/"
msgstr "關於本站"
-#: urls.py:58
+#: urls.py:42
#, fuzzy
msgid "faq/"
msgstr "常見å•é¡Œ"
-#: urls.py:59
+#: urls.py:43
#, fuzzy
msgid "privacy/"
msgstr "éš±ç§æ”¿ç­–"
-#: urls.py:61 urls.py:66
+#: urls.py:44
+msgid "help/"
+msgstr ""
+
+#: urls.py:46 urls.py:51
#, fuzzy
msgid "answers/"
msgstr "回答"
-#: urls.py:61 urls.py:87 urls.py:207
+#: urls.py:46 urls.py:87 urls.py:212
#, fuzzy
msgid "edit/"
msgstr "編輯"
-#: urls.py:66 urls.py:117
+#: urls.py:51 urls.py:117
#, fuzzy
msgid "revisions/"
msgstr "版本"
-#: urls.py:72 urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102
-#: urls.py:107 urls.py:112 urls.py:117 urls.py:294
+#: urls.py:61
+msgid "questions"
+msgstr "å•é¡Œ"
+
+#: urls.py:82 urls.py:87 urls.py:92 urls.py:97 urls.py:102 urls.py:107
+#: urls.py:112 urls.py:117 urls.py:123 urls.py:299
#, fuzzy
msgid "questions/"
msgstr "å•é¡Œ"
@@ -402,57 +446,62 @@ msgstr "回答"
msgid "vote/"
msgstr "票"
-#: urls.py:153
+#: urls.py:123
+msgid "widgets/"
+msgstr ""
+
+#: urls.py:158
#, fuzzy
msgid "tags/"
msgstr "標籤"
-#: urls.py:196
+#: urls.py:201
msgid "subscribe-for-tags/"
msgstr ""
-#: urls.py:201 urls.py:207 urls.py:213 urls.py:221
+#: urls.py:206 urls.py:212 urls.py:218 urls.py:226
#, fuzzy
msgid "users/"
msgstr "用戶"
-#: urls.py:214
+#: urls.py:219
#, fuzzy
msgid "subscriptions/"
msgstr "email 訂閱"
-#: urls.py:226
+#: urls.py:231
msgid "users/update_has_custom_avatar/"
msgstr ""
-#: urls.py:231 urls.py:236
+#: urls.py:236 urls.py:241
#, fuzzy
msgid "badges/"
msgstr "çŽç‰Œæ¦œ"
-#: urls.py:241
+#: urls.py:246
msgid "messages/"
msgstr ""
-#: urls.py:241
+#: urls.py:246
msgid "markread/"
msgstr ""
-#: urls.py:257
+#: urls.py:262
msgid "upload/"
msgstr ""
-#: urls.py:258
+#: urls.py:263
#, fuzzy
msgid "feedback/"
msgstr "å•é¡Œå›žé¥‹"
-#: urls.py:300
+#: urls.py:305
#, fuzzy
msgid "question/"
msgstr "æå•"
-#: urls.py:307 setup_templates/settings.py:206
+#: urls.py:312 setup_templates/settings.py:210
+#: skins/common/templates/authopenid/providers_javascript.html:7
#, fuzzy
msgid "account/"
msgstr "新帳號"
@@ -589,160 +638,183 @@ msgid ""
msgstr ""
#: conf/email.py:38
+msgid "Enable email alerts"
+msgstr ""
+
+#: conf/email.py:47
msgid "Maximum number of news entries in an email alert"
msgstr ""
-#: conf/email.py:48
+#: conf/email.py:57
msgid "Default notification frequency all questions"
msgstr ""
-#: conf/email.py:50
+#: conf/email.py:59
msgid "Option to define frequency of emailed updates for: all questions."
msgstr ""
# must have extra space after in english
-#: conf/email.py:62
+#: conf/email.py:71
#, fuzzy
msgid "Default notification frequency questions asked by the user"
msgstr "查看有關"
-#: conf/email.py:64
+#: conf/email.py:73
msgid ""
"Option to define frequency of emailed updates for: Question asked by the "
"user."
msgstr ""
-#: conf/email.py:76
+#: conf/email.py:85
#, fuzzy
msgid "Default notification frequency questions answered by the user"
msgstr "刪除任何一個å•é¡Œæˆ–答案,åŠåŸ·è¡Œå…¶ä»–管ç†åŠŸèƒ½"
-#: conf/email.py:78
+#: conf/email.py:87
msgid ""
"Option to define frequency of emailed updates for: Question answered by the "
"user."
msgstr ""
-#: conf/email.py:90
+#: conf/email.py:99
msgid ""
"Default notification frequency questions individually "
"selected by the user"
msgstr ""
-#: conf/email.py:93
+#: conf/email.py:102
msgid ""
"Option to define frequency of emailed updates for: Question individually "
"selected by the user."
msgstr ""
-#: conf/email.py:105
+#: conf/email.py:114
msgid ""
"Default notification frequency for mentions and "
"comments"
msgstr ""
-#: conf/email.py:108
+#: conf/email.py:117
msgid ""
"Option to define frequency of emailed updates for: Mentions and comments."
msgstr ""
-#: conf/email.py:119
+#: conf/email.py:128
#, fuzzy
msgid "Send periodic reminders about unanswered questions"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:121
+#: conf/email.py:130
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_unanswered_question_reminders\" (for example, via a cron job "
"- with an appropriate frequency) "
msgstr ""
-#: conf/email.py:134
+#: conf/email.py:143
#, fuzzy
msgid "Days before starting to send reminders about unanswered questions"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:145
+#: conf/email.py:154
msgid ""
"How often to send unanswered question reminders (in days between the "
"reminders sent)."
msgstr ""
-#: conf/email.py:157
+#: conf/email.py:166
msgid "Max. number of reminders to send about unanswered questions"
msgstr ""
-#: conf/email.py:168
+#: conf/email.py:177
#, fuzzy
msgid "Send periodic reminders to accept the best answer"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:170
+#: conf/email.py:179
msgid ""
"NOTE: in order to use this feature, it is necessary to run the management "
"command \"send_accept_answer_reminders\" (for example, via a cron job - with "
"an appropriate frequency) "
msgstr ""
-#: conf/email.py:183
+#: conf/email.py:192
#, fuzzy
msgid "Days before starting to send reminders to accept an answer"
msgstr "無未解答å•é¡Œ"
-#: conf/email.py:194
+#: conf/email.py:203
msgid ""
"How often to send accept answer reminders (in days between the reminders "
"sent)."
msgstr ""
-#: conf/email.py:206
+#: conf/email.py:215
msgid "Max. number of reminders to send to accept the best answer"
msgstr ""
-#: conf/email.py:218
+#: conf/email.py:227
msgid "Require email verification before allowing to post"
msgstr ""
-#: conf/email.py:219
+#: conf/email.py:228
msgid ""
"Active email verification is done by sending a verification key in email"
msgstr ""
-#: conf/email.py:228
+#: conf/email.py:237
#, fuzzy
msgid "Allow only one account per email address"
msgstr "您的電å­éƒµä»¶åœ°å€"
-#: conf/email.py:237
+#: conf/email.py:246
msgid "Fake email for anonymous user"
msgstr ""
-#: conf/email.py:238
+#: conf/email.py:247
msgid "Use this setting to control gravatar for email-less user"
msgstr ""
-#: conf/email.py:247
+#: conf/email.py:256
#, fuzzy
msgid "Allow posting questions by email"
msgstr "簽入張貼å•é¡Œ"
-#: conf/email.py:249
+#: conf/email.py:258
msgid ""
"Before enabling this setting - please fill out IMAP settings in the settings."
"py file"
msgstr ""
-#: conf/email.py:260
+#: conf/email.py:269
msgid "Replace space in emailed tags with dash"
msgstr ""
-#: conf/email.py:262
+#: conf/email.py:271
msgid ""
"This setting applies to tags written in the subject line of questions asked "
"by email"
msgstr ""
+#: conf/email.py:284
+#, fuzzy
+msgid "Enable posting answers and comments by email"
+msgstr "簽入張貼å•é¡Œ"
+
+#: conf/email.py:287
+msgid "To enable this feature make sure lamson is running"
+msgstr ""
+
+#: conf/email.py:298
+msgid "Reply by email hostname"
+msgstr ""
+
+#: conf/email.py:311
+msgid ""
+"Email replies having fewer words than this number will be posted as comments "
+"instead of answers"
+msgstr ""
+
#: conf/external_keys.py:11
msgid "Keys for external services"
msgstr ""
@@ -773,15 +845,15 @@ msgstr ""
msgid "Enable recaptcha (keys below are required)"
msgstr ""
-#: conf/external_keys.py:60
+#: conf/external_keys.py:62
msgid "Recaptcha public key"
msgstr ""
-#: conf/external_keys.py:68
+#: conf/external_keys.py:70
msgid "Recaptcha private key"
msgstr ""
-#: conf/external_keys.py:70
+#: conf/external_keys.py:72
#, python-format
msgid ""
"Recaptcha is a tool that helps distinguish real people from annoying spam "
@@ -789,11 +861,11 @@ msgid ""
"a>"
msgstr ""
-#: conf/external_keys.py:82
+#: conf/external_keys.py:84
msgid "Facebook public API key"
msgstr ""
-#: conf/external_keys.py:84
+#: conf/external_keys.py:86
#, python-format
msgid ""
"Facebook API key and Facebook secret allow to use Facebook Connect login "
@@ -801,73 +873,56 @@ msgid ""
"\">facebook create app</a> site"
msgstr ""
-#: conf/external_keys.py:97
+#: conf/external_keys.py:99
msgid "Facebook secret key"
msgstr ""
-#: conf/external_keys.py:105
+#: conf/external_keys.py:107
#, fuzzy
msgid "Twitter consumer key"
msgstr " Twitter 帳號:"
-#: conf/external_keys.py:107
+#: conf/external_keys.py:109
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">twitter applications site</"
"a>"
msgstr ""
-#: conf/external_keys.py:118
+#: conf/external_keys.py:120
msgid "Twitter consumer secret"
msgstr ""
-#: conf/external_keys.py:126
+#: conf/external_keys.py:128
msgid "LinkedIn consumer key"
msgstr ""
-#: conf/external_keys.py:128
+#: conf/external_keys.py:130
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">LinkedIn developer site</a>"
msgstr ""
-#: conf/external_keys.py:139
+#: conf/external_keys.py:141
msgid "LinkedIn consumer secret"
msgstr ""
-#: conf/external_keys.py:147
+#: conf/external_keys.py:149
#, fuzzy
msgid "ident.ca consumer key"
msgstr " Twitter 帳號:"
-#: conf/external_keys.py:149
+#: conf/external_keys.py:151
#, python-format
msgid ""
"Please register your forum at <a href=\"%(url)s\">Identi.ca applications "
"site</a>"
msgstr ""
-#: conf/external_keys.py:160
+#: conf/external_keys.py:162
msgid "ident.ca consumer secret"
msgstr ""
-#: conf/external_keys.py:168
-msgid "Use LDAP authentication for the password login"
-msgstr ""
-
-#: conf/external_keys.py:177
-msgid "LDAP service provider name"
-msgstr ""
-
-#: conf/external_keys.py:185
-msgid "URL for the LDAP service"
-msgstr ""
-
-#: conf/external_keys.py:193
-#, fuzzy
-msgid "Explain how to change LDAP password"
-msgstr "帳號: 密碼已改變"
-
#: conf/flatpages.py:11
msgid "Flatpages - about, privacy policy, etc."
msgstr ""
@@ -906,11 +961,13 @@ msgstr ""
msgid "Data entry and display rules"
msgstr ""
-#: conf/forum_data_rules.py:22
+#: conf/forum_data_rules.py:21
+msgid "Enable embedding videos. "
+msgstr ""
+
+#: conf/forum_data_rules.py:23
#, python-format
-msgid ""
-"Enable embedding videos. <em>Note: please read <a href=\"%(url)s>read this</"
-"a> first.</em>"
+msgid "<em>Note: please read <a href=\"%(url)s\">read this</a> first.</em>"
msgstr ""
#: conf/forum_data_rules.py:33
@@ -954,112 +1011,182 @@ msgstr ""
msgid "Maximum length of tag (number of characters)"
msgstr ""
-#: conf/forum_data_rules.py:95
+#: conf/forum_data_rules.py:96
+msgid "Minimum length of title (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:106
+msgid "Minimum length of question body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:117
+msgid "Minimum length of answer body (number of characters)"
+msgstr ""
+
+#: conf/forum_data_rules.py:126
+#, fuzzy
+msgid "Are tags required?"
+msgstr " 標籤ä¸èƒ½ç‚ºç©ºã€‚"
+
+#: conf/forum_data_rules.py:135
#, fuzzy
msgid "Mandatory tags"
msgstr "更新標籤"
-#: conf/forum_data_rules.py:98
+#: conf/forum_data_rules.py:138
msgid ""
"At least one of these tags will be required for any new or newly edited "
"question. A mandatory tag may be wildcard, if the wildcard tags are active."
msgstr ""
-#: conf/forum_data_rules.py:110
+#: conf/forum_data_rules.py:150
msgid "Force lowercase the tags"
msgstr ""
-#: conf/forum_data_rules.py:112
+#: conf/forum_data_rules.py:152
msgid ""
"Attention: after checking this, please back up the database, and run a "
"management command: <code>python manage.py fix_question_tags</code> to "
"globally rename the tags"
msgstr ""
-#: conf/forum_data_rules.py:126
+#: conf/forum_data_rules.py:166
msgid "Format of tag list"
msgstr ""
-#: conf/forum_data_rules.py:128
+#: conf/forum_data_rules.py:168
msgid ""
"Select the format to show tags in, either as a simple list, or as a tag cloud"
msgstr ""
-#: conf/forum_data_rules.py:140
+#: conf/forum_data_rules.py:180
#, fuzzy
msgid "Use wildcard tags"
msgstr "相關標籤"
-#: conf/forum_data_rules.py:142
+#: conf/forum_data_rules.py:182
msgid ""
"Wildcard tags can be used to follow or ignore many tags at once, a valid "
"wildcard tag has a single wildcard at the very end"
msgstr ""
-#: conf/forum_data_rules.py:155
+#: conf/forum_data_rules.py:195
msgid "Default max number of comments to display under posts"
msgstr ""
-#: conf/forum_data_rules.py:166
+#: conf/forum_data_rules.py:206
#, python-format
msgid "Maximum comment length, must be < %(max_len)s"
msgstr ""
-#: conf/forum_data_rules.py:176
+#: conf/forum_data_rules.py:216
msgid "Limit time to edit comments"
msgstr ""
-#: conf/forum_data_rules.py:178
+#: conf/forum_data_rules.py:218
msgid "If unchecked, there will be no time limit to edit the comments"
msgstr ""
-#: conf/forum_data_rules.py:189
+#: conf/forum_data_rules.py:229
msgid "Minutes allowed to edit a comment"
msgstr ""
-#: conf/forum_data_rules.py:190
+#: conf/forum_data_rules.py:230
msgid "To enable this setting, check the previous one"
msgstr ""
-#: conf/forum_data_rules.py:199
+#: conf/forum_data_rules.py:239
msgid "Save comment by pressing <Enter> key"
msgstr ""
-#: conf/forum_data_rules.py:208
+#: conf/forum_data_rules.py:248
msgid "Minimum length of search term for Ajax search"
msgstr ""
-#: conf/forum_data_rules.py:209
+#: conf/forum_data_rules.py:249
msgid "Must match the corresponding database backend setting"
msgstr ""
-#: conf/forum_data_rules.py:218
+#: conf/forum_data_rules.py:258
msgid "Do not make text query sticky in search"
msgstr ""
-#: conf/forum_data_rules.py:220
+#: conf/forum_data_rules.py:260
msgid ""
"Check to disable the \"sticky\" behavior of the search query. This may be "
"useful if you want to move the search bar away from the default position or "
"do not like the default sticky behavior of the text search query."
msgstr ""
-#: conf/forum_data_rules.py:233
+#: conf/forum_data_rules.py:273
msgid "Maximum number of tags per question"
msgstr ""
-#: conf/forum_data_rules.py:245
+#: conf/forum_data_rules.py:285
#, fuzzy
msgid "Number of questions to list by default"
msgstr "å«æœ‰å•é¡Œçš„數目"
-#: conf/forum_data_rules.py:255
+#: conf/forum_data_rules.py:295
#, fuzzy
msgid "What should \"unanswered question\" mean?"
msgstr "無未解答å•é¡Œ"
+#: conf/ldap.py:9
+msgid "LDAP login configuration"
+msgstr ""
+
+#: conf/ldap.py:17
+msgid "Use LDAP authentication for the password login"
+msgstr ""
+
+#: conf/ldap.py:26
+msgid "LDAP URL"
+msgstr ""
+
+#: conf/ldap.py:35
+msgid "LDAP BASE DN"
+msgstr ""
+
+#: conf/ldap.py:43
+msgid "LDAP Search Scope"
+msgstr ""
+
+#: conf/ldap.py:52
+msgid "LDAP Server USERID field name"
+msgstr ""
+
+#: conf/ldap.py:61
+msgid "LDAP Server \"Common Name\" field name"
+msgstr ""
+
+#: conf/ldap.py:70
+msgid "LDAP Server EMAIL field name"
+msgstr ""
+
+#: conf/leading_sidebar.py:12
+#, fuzzy
+msgid "Common left sidebar"
+msgstr "å•é¡Œæ¨™ç±¤"
+
+#: conf/leading_sidebar.py:20
+#, fuzzy
+msgid "Enable left sidebar"
+msgstr "用戶資料"
+
+#: conf/leading_sidebar.py:29
+msgid "HTML for the left sidebar"
+msgstr ""
+
+#: conf/leading_sidebar.py:32
+msgid ""
+"Use this area to enter content at the LEFT sidebarin HTML format. When "
+"using this option, please use the HTML validation service to make sure that "
+"your input is valid and works well in all browsers."
+msgstr ""
+
#: conf/license.py:13
-msgid "Content LicensContent License"
+msgid "Content License"
msgstr ""
#: conf/license.py:21
@@ -1135,16 +1262,16 @@ msgid ""
"XML-RPC"
msgstr ""
-#: conf/login_providers.py:62
+#: conf/login_providers.py:60
msgid "Upload your icon"
msgstr ""
-#: conf/login_providers.py:92
+#: conf/login_providers.py:90
#, python-format
msgid "Activate %(provider)s login"
msgstr ""
-#: conf/login_providers.py:97
+#: conf/login_providers.py:95
#, python-format
msgid ""
"Note: to really enable %(provider)s login some additional parameters will "
@@ -1324,6 +1451,10 @@ msgid ""
"the link will not count towards the rank of the users personal site."
msgstr ""
+#: conf/minimum_reputation.py:190
+msgid "Post answers and comments by email"
+msgstr ""
+
#: conf/reputation_changes.py:13
msgid "Karma loss and gain rules"
msgstr ""
@@ -1527,28 +1658,28 @@ msgstr ""
msgid "Short name for your Q&A forum"
msgstr ""
-#: conf/site_settings.py:68
+#: conf/site_settings.py:67
msgid "Base URL for your Q&A forum, must start with http or https"
msgstr ""
-#: conf/site_settings.py:79
+#: conf/site_settings.py:78
msgid "Check to enable greeting for anonymous user"
msgstr ""
-#: conf/site_settings.py:90
+#: conf/site_settings.py:89
msgid "Text shown in the greeting message shown to the anonymous user"
msgstr ""
-#: conf/site_settings.py:94
+#: conf/site_settings.py:93
msgid "Use HTML to format the message "
msgstr ""
-#: conf/site_settings.py:103
+#: conf/site_settings.py:102
#, fuzzy
msgid "Feedback site URL"
msgstr "å•é¡Œå›žé¥‹"
-#: conf/site_settings.py:105
+#: conf/site_settings.py:104
msgid "If left empty, a simple internal feedback form will be used instead"
msgstr ""
@@ -1674,21 +1805,21 @@ msgstr "社å€é€šç”¨èªž"
msgid "To change the logo, select new file, then submit this whole form."
msgstr ""
-#: conf/skin_general_settings.py:39
+#: conf/skin_general_settings.py:37
msgid "Show logo"
msgstr ""
-#: conf/skin_general_settings.py:41
+#: conf/skin_general_settings.py:39
msgid ""
"Check if you want to show logo in the forum header or uncheck in the case "
"you do not want the logo to appear in the default location"
msgstr ""
-#: conf/skin_general_settings.py:53
+#: conf/skin_general_settings.py:51
msgid "Site favicon"
msgstr ""
-#: conf/skin_general_settings.py:55
+#: conf/skin_general_settings.py:53
#, python-format
msgid ""
"A small 16x16 or 32x32 pixel icon image used to distinguish your site in the "
@@ -1696,41 +1827,41 @@ msgid ""
"href=\"%(favicon_info_url)s\">this page</a>."
msgstr ""
-#: conf/skin_general_settings.py:73
+#: conf/skin_general_settings.py:69
msgid "Password login button"
msgstr ""
-#: conf/skin_general_settings.py:75
+#: conf/skin_general_settings.py:71
msgid ""
"An 88x38 pixel image that is used on the login screen for the password login "
"button."
msgstr ""
-#: conf/skin_general_settings.py:90
+#: conf/skin_general_settings.py:84
msgid "Show all UI functions to all users"
msgstr ""
-#: conf/skin_general_settings.py:92
+#: conf/skin_general_settings.py:86
msgid ""
"If checked, all forum functions will be shown to users, regardless of their "
"reputation. However to use those functions, moderation rules, reputation and "
"other limits will still apply."
msgstr ""
-#: conf/skin_general_settings.py:107
+#: conf/skin_general_settings.py:101
#, fuzzy
msgid "Select skin"
msgstr "é¸æ“‡ç‰ˆæœ¬"
-#: conf/skin_general_settings.py:118
+#: conf/skin_general_settings.py:112
msgid "Customize HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:127
+#: conf/skin_general_settings.py:121
msgid "Custom portion of the HTML <HEAD>"
msgstr ""
-#: conf/skin_general_settings.py:129
+#: conf/skin_general_settings.py:123
msgid ""
"<strong>To use this option</strong>, check \"Customize HTML &lt;HEAD&gt;\" "
"above. Contents of this box will be inserted into the &lt;HEAD&gt; portion "
@@ -1742,11 +1873,11 @@ msgid ""
"please test the site with the W3C HTML validator service."
msgstr ""
-#: conf/skin_general_settings.py:151
+#: conf/skin_general_settings.py:145
msgid "Custom header additions"
msgstr ""
-#: conf/skin_general_settings.py:153
+#: conf/skin_general_settings.py:147
msgid ""
"Header is the bar at the top of the content that contains user info and site "
"links, and is common to all pages. Use this area to enter contents of the "
@@ -1755,21 +1886,21 @@ msgid ""
"sure that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:168
+#: conf/skin_general_settings.py:162
msgid "Site footer mode"
msgstr ""
-#: conf/skin_general_settings.py:170
+#: conf/skin_general_settings.py:164
msgid ""
"Footer is the bottom portion of the content, which is common to all pages. "
"You can disable, customize, or use the default footer."
msgstr ""
-#: conf/skin_general_settings.py:187
+#: conf/skin_general_settings.py:181
msgid "Custom footer (HTML format)"
msgstr ""
-#: conf/skin_general_settings.py:189
+#: conf/skin_general_settings.py:183
msgid ""
"<strong>To enable this function</strong>, please select option 'customize' "
"in the \"Site footer mode\" above. Use this area to enter contents of the "
@@ -1778,21 +1909,21 @@ msgid ""
"that your input is valid and works well in all browsers."
msgstr ""
-#: conf/skin_general_settings.py:204
+#: conf/skin_general_settings.py:198
msgid "Apply custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:206
+#: conf/skin_general_settings.py:200
msgid ""
"Check if you want to change appearance of your form by adding custom style "
"sheet rules (please see the next item)"
msgstr ""
-#: conf/skin_general_settings.py:218
+#: conf/skin_general_settings.py:212
msgid "Custom style sheet (CSS)"
msgstr ""
-#: conf/skin_general_settings.py:220
+#: conf/skin_general_settings.py:214
msgid ""
"<strong>To use this function</strong>, check \"Apply custom style sheet\" "
"option above. The CSS rules added in this window will be applied after the "
@@ -1801,19 +1932,19 @@ msgid ""
"depends (default is empty string) on the url configuration in your urls.py."
msgstr ""
-#: conf/skin_general_settings.py:236
+#: conf/skin_general_settings.py:230
msgid "Add custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:239
+#: conf/skin_general_settings.py:233
msgid "Check to enable javascript that you can enter in the next field"
msgstr ""
-#: conf/skin_general_settings.py:249
+#: conf/skin_general_settings.py:243
msgid "Custom javascript"
msgstr ""
-#: conf/skin_general_settings.py:251
+#: conf/skin_general_settings.py:245
msgid ""
"Type or paste plain javascript that you would like to run on your site. Link "
"to the script will be inserted at the bottom of the HTML output and will be "
@@ -1824,19 +1955,19 @@ msgid ""
"above)."
msgstr ""
-#: conf/skin_general_settings.py:269
+#: conf/skin_general_settings.py:263
msgid "Skin media revision number"
msgstr ""
-#: conf/skin_general_settings.py:271
+#: conf/skin_general_settings.py:265
msgid "Will be set automatically but you can modify it if necessary."
msgstr ""
-#: conf/skin_general_settings.py:282
+#: conf/skin_general_settings.py:276
msgid "Hash to update the media revision number automatically."
msgstr ""
-#: conf/skin_general_settings.py:286
+#: conf/skin_general_settings.py:280
msgid "Will be set automatically, it is not necesary to modify manually."
msgstr ""
@@ -1903,40 +2034,67 @@ msgstr "其他æœå‹™"
msgid "Login, Users & Communication"
msgstr ""
-#: conf/user_settings.py:12
+#: conf/user_settings.py:14
#, fuzzy
msgid "User settings"
msgstr "用戶åƒæ•¸çš„設置"
-#: conf/user_settings.py:21
+#: conf/user_settings.py:23
msgid "Allow editing user screen name"
msgstr ""
-#: conf/user_settings.py:30
+#: conf/user_settings.py:32
+#, fuzzy
+msgid "Allow users change own email addresses"
+msgstr "您的電å­éƒµä»¶åœ°å€"
+
+#: conf/user_settings.py:41
#, fuzzy
msgid "Allow account recovery by email"
msgstr "修改電å­éƒµä»¶"
-#: conf/user_settings.py:39
+#: conf/user_settings.py:50
msgid "Allow adding and removing login methods"
msgstr ""
-#: conf/user_settings.py:49
+#: conf/user_settings.py:60
msgid "Minimum allowed length for screen name"
msgstr ""
-#: conf/user_settings.py:59
+#: conf/user_settings.py:68
+msgid "Default avatar for users"
+msgstr ""
+
+#: conf/user_settings.py:70
+msgid ""
+"To change the avatar image, select new file, then submit this whole form."
+msgstr ""
+
+#: conf/user_settings.py:83
+msgid "Use automatic avatars from gravatar.com"
+msgstr ""
+
+#: conf/user_settings.py:85
+msgid ""
+"Check this option if you want to allow the use of gravatar.com for avatars. "
+"Please, note that this feature might take about 10 minutes to become fully "
+"effective. You will have to enable uploaded avatars as well. For more "
+"information, please visit <a href=\"http://askbot.org/doc/optional-modules."
+"html#uploaded-avatars\">this page</a>."
+msgstr ""
+
+#: conf/user_settings.py:97
msgid "Default Gravatar icon type"
msgstr ""
-#: conf/user_settings.py:61
+#: conf/user_settings.py:99
msgid ""
"This option allows you to set the default avatar type for email addresses "
"without associated gravatar images. For more information, please visit <a "
"href=\"http://en.gravatar.com/site/implement/images/\">this page</a>."
msgstr ""
-#: conf/user_settings.py:71
+#: conf/user_settings.py:109
msgid "Name for the Anonymous user"
msgstr ""
@@ -1978,6 +2136,39 @@ msgid ""
"question poster"
msgstr ""
+#: conf/widgets.py:13
+msgid "Embeddable widgets"
+msgstr ""
+
+#: conf/widgets.py:25
+#, fuzzy
+msgid "Number of questions to show"
+msgstr "å«æœ‰å•é¡Œçš„數目"
+
+#: conf/widgets.py:28
+msgid ""
+"To embed the widget, add the following code to your site (and fill in "
+"correct base url, preferred tags, width and height):<iframe src="
+"\"{{base_url}}/widgets/questions?tags={{comma-separated-tags}}\" width=\"100%"
+"\" height=\"300\"scrolling=\"no\"><p>Your browser does not support iframes.</"
+"p></iframe>"
+msgstr ""
+
+#: conf/widgets.py:73
+#, fuzzy
+msgid "CSS for the questions widget"
+msgstr "çµæŸå•é¡Œ"
+
+#: conf/widgets.py:81
+#, fuzzy
+msgid "Header for the questions widget"
+msgstr "繼續隱è—忽視的å•é¡Œ"
+
+#: conf/widgets.py:90
+#, fuzzy
+msgid "Footer for the questions widget"
+msgstr "用戶收è—çš„å•é¡Œ"
+
#: const/__init__.py:10
msgid "duplicate question"
msgstr "完全é‡è¤‡çš„å•é¡Œ"
@@ -2015,352 +2206,366 @@ msgstr "垃圾廣告"
msgid "too localized"
msgstr "太å€åŸŸåŒ–"
-#: const/__init__.py:41
+#: const/__init__.py:43
+#: skins/default/templates/question/answer_tab_bar.html:18
msgid "newest"
msgstr "最新å•é¡Œ"
-#: const/__init__.py:42
+#: const/__init__.py:44 skins/default/templates/users.html:27
+#: skins/default/templates/question/answer_tab_bar.html:15
msgid "oldest"
msgstr "最先加入"
-#: const/__init__.py:43
+#: const/__init__.py:45
msgid "active"
msgstr "熱門å•é¡Œ"
-#: const/__init__.py:44
+#: const/__init__.py:46
msgid "inactive"
msgstr "冷門å•é¡Œ"
-#: const/__init__.py:45
+#: const/__init__.py:47
msgid "hottest"
msgstr "ç«ç†±å•é¡Œ"
-#: const/__init__.py:46
+#: const/__init__.py:48
msgid "coldest"
msgstr "éŽæ™‚"
# "最有價值å•é¡Œ"
# "最新å•é¡Œ"
-#: const/__init__.py:47
+#: const/__init__.py:49
+#: skins/default/templates/question/answer_tab_bar.html:21
msgid "most voted"
msgstr "最有價值的å•é¡Œ"
# "最有價值å•é¡Œ"
# "最新å•é¡Œ"
-#: const/__init__.py:48
+#: const/__init__.py:50
msgid "least voted"
msgstr "最ä¸è¢«æŽ¨è–¦çš„å•é¡Œ"
-#: const/__init__.py:49
+#: const/__init__.py:51
msgid "relevance"
msgstr "é—œè¯"
-#: const/__init__.py:57
+#: const/__init__.py:63
+#: skins/default/templates/user_profile/user_inbox.html:50
+#: skins/default/templates/user_profile/user_inbox.html:62
msgid "all"
msgstr "全部"
-#: const/__init__.py:58
+#: const/__init__.py:64
msgid "unanswered"
msgstr "尚未回答"
-#: const/__init__.py:59
+#: const/__init__.py:65
msgid "favorite"
msgstr "喜歡"
-#: const/__init__.py:64
+#: const/__init__.py:70
#, fuzzy
msgid "list"
msgstr "標籤列表"
-#: const/__init__.py:65
+#: const/__init__.py:71
msgid "cloud"
msgstr ""
-#: const/__init__.py:78
+#: const/__init__.py:79
#, fuzzy
msgid "Question has no answers"
msgstr "已回答的å•é¡Œ"
-#: const/__init__.py:79
+#: const/__init__.py:80
#, fuzzy
msgid "Question has no accepted answers"
msgstr "已回答的å•é¡Œ"
-#: const/__init__.py:122
+#: const/__init__.py:125
#, fuzzy
msgid "asked a question"
msgstr "我è¦æå•"
-#: const/__init__.py:123
+#: const/__init__.py:126
#, fuzzy
msgid "answered a question"
msgstr "沒有回答的å•é¡Œ"
-#: const/__init__.py:124
+#: const/__init__.py:127 const/__init__.py:203
msgid "commented question"
msgstr "è©•è«–å•é¡Œ"
-#: const/__init__.py:125
+#: const/__init__.py:128 const/__init__.py:204
msgid "commented answer"
msgstr "有評論回答"
-#: const/__init__.py:126
+#: const/__init__.py:129
msgid "edited question"
msgstr "修改å•é¡Œ"
-#: const/__init__.py:127
+#: const/__init__.py:130
msgid "edited answer"
msgstr "修改回答"
-#: const/__init__.py:128
-msgid "received award"
+#: const/__init__.py:131
+#, fuzzy
+msgid "received badge"
msgstr "ç²çŽ"
-#: const/__init__.py:129
+#: const/__init__.py:132
msgid "marked best answer"
msgstr "標記最佳答案"
-#: const/__init__.py:130
+#: const/__init__.py:133
msgid "upvoted"
msgstr "投贊æˆç¥¨"
-#: const/__init__.py:131
+#: const/__init__.py:134
msgid "downvoted"
msgstr "投åå°ç¥¨"
-#: const/__init__.py:132
+#: const/__init__.py:135
msgid "canceled vote"
msgstr "撤銷投票"
-#: const/__init__.py:133
+#: const/__init__.py:136
msgid "deleted question"
msgstr "刪除å•é¡Œ"
-#: const/__init__.py:134
+#: const/__init__.py:137
msgid "deleted answer"
msgstr "刪除回答"
-#: const/__init__.py:135
+#: const/__init__.py:138
msgid "marked offensive"
msgstr "標記垃圾帖"
-#: const/__init__.py:136
+#: const/__init__.py:139
msgid "updated tags"
msgstr "更新標籤"
-#: const/__init__.py:137
+#: const/__init__.py:140
msgid "selected favorite"
msgstr "收è—"
-#: const/__init__.py:138
+#: const/__init__.py:141
msgid "completed user profile"
msgstr "完æˆå€‹äººæ‰€æœ‰è³‡æ–™"
-#: const/__init__.py:139
+#: const/__init__.py:142
msgid "email update sent to user"
msgstr "Email 更改已通知"
-#: const/__init__.py:142
+#: const/__init__.py:145
#, fuzzy
msgid "reminder about unanswered questions sent"
msgstr "沒有回答的å•é¡Œ"
-#: const/__init__.py:146
+#: const/__init__.py:149
#, fuzzy
msgid "reminder about accepting the best answer sent"
msgstr "標記最佳答案"
-#: const/__init__.py:148
+#: const/__init__.py:151
msgid "mentioned in the post"
msgstr ""
-#: const/__init__.py:199
-msgid "question_answered"
-msgstr ""
-
-#: const/__init__.py:200
-msgid "question_commented"
-msgstr ""
-
-#: const/__init__.py:201
-msgid "answer_commented"
-msgstr ""
-
#: const/__init__.py:202
-msgid "answer_accepted"
-msgstr ""
+#, fuzzy
+msgid "answered question"
+msgstr "沒有回答的å•é¡Œ"
+
+#: const/__init__.py:205
+#, fuzzy
+msgid "accepted answer"
+msgstr "修改回答"
-#: const/__init__.py:206
+#: const/__init__.py:209
msgid "[closed]"
msgstr "[已關閉]"
-#: const/__init__.py:207
+#: const/__init__.py:210
msgid "[deleted]"
msgstr "[已刪除]"
-#: const/__init__.py:208 views/readers.py:589
+#: const/__init__.py:211 views/readers.py:566
msgid "initial version"
msgstr "åˆå§‹ç‰ˆæœ¬"
-#: const/__init__.py:209
+#: const/__init__.py:212
msgid "retagged"
msgstr "更新了標籤"
-#: const/__init__.py:217
+#: const/__init__.py:220
msgid "off"
msgstr ""
-#: const/__init__.py:218
+#: const/__init__.py:221
#, fuzzy
msgid "exclude ignored"
msgstr "特殊忽略標籤"
-#: const/__init__.py:219
+#: const/__init__.py:222
#, fuzzy
msgid "only selected"
msgstr "個別é¸å®š"
-#: const/__init__.py:223
+#: const/__init__.py:226
msgid "instantly"
msgstr ""
-#: const/__init__.py:224
+#: const/__init__.py:227
msgid "daily"
msgstr "æ¯å¤©"
-#: const/__init__.py:225
+#: const/__init__.py:228
msgid "weekly"
msgstr "æ¯æ˜ŸæœŸ"
-#: const/__init__.py:226
+#: const/__init__.py:229
#, fuzzy
msgid "no email"
msgstr "æ›´æ›é›»å­éƒµä»¶"
-#: const/__init__.py:233
+#: const/__init__.py:236
msgid "identicon"
msgstr ""
-#: const/__init__.py:234
+#: const/__init__.py:237
#, fuzzy
msgid "mystery-man"
msgstr "昨天"
-#: const/__init__.py:235
+#: const/__init__.py:238
msgid "monsterid"
msgstr ""
-#: const/__init__.py:236
+#: const/__init__.py:239
#, fuzzy
msgid "wavatar"
msgstr "大頭åƒ"
-#: const/__init__.py:237
+#: const/__init__.py:240
msgid "retro"
msgstr ""
-#: const/__init__.py:284
+#: const/__init__.py:287 skins/default/templates/badges.html:38
msgid "gold"
msgstr "第一å"
-#: const/__init__.py:285
+#: const/__init__.py:288 skins/default/templates/badges.html:48
msgid "silver"
msgstr "第二å"
-#: const/__init__.py:286
+#: const/__init__.py:289 skins/default/templates/badges.html:55
msgid "bronze"
msgstr "第三å"
-#: const/__init__.py:298
+#: const/__init__.py:301
msgid "None"
msgstr ""
-#: const/__init__.py:299
+#: const/__init__.py:302
#, fuzzy
msgid "Gravatar"
msgstr "大頭åƒ"
-#: const/__init__.py:300
+#: const/__init__.py:303
msgid "Uploaded Avatar"
msgstr ""
-#: const/message_keys.py:15
+#: const/message_keys.py:21
#, fuzzy
msgid "most relevant questions"
msgstr "最新加入的å•é¡Œ"
-#: const/message_keys.py:16
+#: const/message_keys.py:22
#, fuzzy
msgid "click to see most relevant questions"
msgstr "點é¸è§€çœ‹æŠ•ç¥¨æ¬¡æ•¸æœ€å¤šçš„å•é¡Œ"
-#: const/message_keys.py:17
+#: const/message_keys.py:23
#, fuzzy
msgid "by relevance"
msgstr "é—œè¯"
-#: const/message_keys.py:18
+#: const/message_keys.py:24
msgid "click to see the oldest questions"
msgstr "點é¸è§€çœ‹æœ€æ—©å•é¡Œ"
-#: const/message_keys.py:19
+#: const/message_keys.py:25
#, fuzzy
msgid "by date"
msgstr "æ›´æ–°"
-#: const/message_keys.py:20
+#: const/message_keys.py:26
msgid "click to see the newest questions"
msgstr "點é¸è§€çœ‹æœ€æ–°å•é¡Œ"
-#: const/message_keys.py:21
+#: const/message_keys.py:27
msgid "click to see the least recently updated questions"
msgstr "點é¸è§€çœ‹æœ€è¿‘最少被更新的å•é¡Œ"
-#: const/message_keys.py:22
+#: const/message_keys.py:28
#, fuzzy
msgid "by activity"
msgstr "熱門å•é¡Œ"
-#: const/message_keys.py:23
+#: const/message_keys.py:29
msgid "click to see the most recently updated questions"
msgstr "點é¸è§€çœ‹æœ€è¿‘最常被更新的å•é¡Œ"
-#: const/message_keys.py:24
+#: const/message_keys.py:30
#, fuzzy
msgid "click to see the least answered questions"
msgstr "點é¸è§€çœ‹æœ€æ—©å•é¡Œ"
-#: const/message_keys.py:25
+#: const/message_keys.py:31
#, fuzzy
msgid "by answers"
msgstr "回答"
-#: const/message_keys.py:26
+#: const/message_keys.py:32
#, fuzzy
msgid "click to see the most answered questions"
msgstr "點é¸è§€çœ‹æŠ•ç¥¨æ¬¡æ•¸æœ€å¤šçš„å•é¡Œ"
-#: const/message_keys.py:27
+#: const/message_keys.py:33
#, fuzzy
msgid "click to see least voted questions"
msgstr "點é¸è§€çœ‹æŠ•ç¥¨æ¬¡æ•¸æœ€å°‘çš„å•é¡Œ"
-#: const/message_keys.py:28
+#: const/message_keys.py:34
#, fuzzy
msgid "by votes"
msgstr "投票"
-#: const/message_keys.py:29
+#: const/message_keys.py:35
msgid "click to see most voted questions"
msgstr "點é¸è§€çœ‹æŠ•ç¥¨æ¬¡æ•¸æœ€å¤šçš„å•é¡Œ"
-#: deps/django_authopenid/backends.py:88
+#: const/message_keys.py:40
+msgid ""
+"Sorry, your account appears to be blocked and you cannot make new posts "
+"until this issue is resolved. Please contact the forum administrator to "
+"reach a resolution."
+msgstr ""
+
+#: const/message_keys.py:45 models/__init__.py:788
+msgid ""
+"Sorry, your account appears to be suspended and you cannot make new posts "
+"until this issue is resolved. You can, however edit your existing posts. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
+
+#: deps/django_authopenid/backends.py:166
msgid ""
"Welcome! Please set email address (important!) in your profile and adjust "
"screen name, if necessary."
msgstr ""
-#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:151
+#: deps/django_authopenid/forms.py:110 deps/django_authopenid/views.py:142
msgid "i-names are not supported"
msgstr "ä¸æ”¯æ´ i-name "
@@ -2412,11 +2617,12 @@ msgid "Your user name (<i>required</i>)"
msgstr " 使用者å稱 (<i>required</i>)"
#: deps/django_authopenid/forms.py:450
-msgid "Incorrect username."
-msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+#, fuzzy
+msgid "sorry, there is no such user name"
+msgstr "å°ä¸èµ·ï¼Œæ²’有此用戶"
#: deps/django_authopenid/urls.py:9 deps/django_authopenid/urls.py:12
-#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:206
+#: deps/django_authopenid/urls.py:15 setup_templates/settings.py:210
msgid "signin/"
msgstr ""
@@ -2456,6 +2662,7 @@ msgid "%(site)s user name and password"
msgstr "使用帳號密碼登錄"
#: deps/django_authopenid/util.py:384
+#: skins/common/templates/authopenid/signin.html:115
msgid "Create a password-protected account"
msgstr ""
@@ -2549,79 +2756,79 @@ msgstr "使用帳號密碼登錄"
msgid "Sign in with your %(provider)s account"
msgstr ""
-#: deps/django_authopenid/views.py:158
+#: deps/django_authopenid/views.py:149
#, python-format
msgid "OpenID %(openid_url)s is invalid"
msgstr "OpenID %(openid_url)s 無效"
-#: deps/django_authopenid/views.py:270 deps/django_authopenid/views.py:421
-#: deps/django_authopenid/views.py:449
+#: deps/django_authopenid/views.py:261 deps/django_authopenid/views.py:408
+#: deps/django_authopenid/views.py:436
#, python-format
msgid ""
"Unfortunately, there was some problem when connecting to %(provider)s, "
"please try again or use another provider"
msgstr ""
-#: deps/django_authopenid/views.py:371
+#: deps/django_authopenid/views.py:358
#, fuzzy
msgid "Your new password saved"
msgstr "密碼已更改"
-#: deps/django_authopenid/views.py:475
+#: deps/django_authopenid/views.py:462
msgid "The login password combination was not correct"
msgstr ""
-#: deps/django_authopenid/views.py:579
+#: deps/django_authopenid/views.py:564
msgid "Please click any of the icons below to sign in"
msgstr ""
-#: deps/django_authopenid/views.py:581
+#: deps/django_authopenid/views.py:566
#, fuzzy
msgid "Account recovery email sent"
msgstr "修改電å­éƒµä»¶"
-#: deps/django_authopenid/views.py:584
+#: deps/django_authopenid/views.py:569
msgid "Please add one or more login methods."
msgstr ""
-#: deps/django_authopenid/views.py:586
+#: deps/django_authopenid/views.py:571
msgid "If you wish, please add, remove or re-validate your login methods"
msgstr ""
-#: deps/django_authopenid/views.py:588
+#: deps/django_authopenid/views.py:573
msgid "Please wait a second! Your account is recovered, but ..."
msgstr ""
-#: deps/django_authopenid/views.py:590
+#: deps/django_authopenid/views.py:575
msgid "Sorry, this account recovery key has expired or is invalid"
msgstr ""
-#: deps/django_authopenid/views.py:663
+#: deps/django_authopenid/views.py:648
#, python-format
msgid "Login method %(provider_name)s does not exist"
msgstr ""
-#: deps/django_authopenid/views.py:669
+#: deps/django_authopenid/views.py:654
#, fuzzy
msgid "Oops, sorry - there was some error - please try again"
msgstr "å°ä¸èµ·, 密碼ä¸åˆ, è«‹é‡æ–°è¼¸å…¥"
-#: deps/django_authopenid/views.py:760
+#: deps/django_authopenid/views.py:745
#, python-format
msgid "Your %(provider)s login works fine"
msgstr ""
-#: deps/django_authopenid/views.py:1071 deps/django_authopenid/views.py:1077
+#: deps/django_authopenid/views.py:1056 deps/django_authopenid/views.py:1062
#, python-format
msgid "your email needs to be validated see %(details_url)s"
msgstr "email 須經èªè­‰, åƒè€ƒ %(details_url)s"
-#: deps/django_authopenid/views.py:1098
+#: deps/django_authopenid/views.py:1083
#, fuzzy, python-format
msgid "Recover your %(site)s account"
msgstr "請設新密碼"
-#: deps/django_authopenid/views.py:1168
+#: deps/django_authopenid/views.py:1155
msgid "Please check your email and visit the enclosed link."
msgstr ""
@@ -2630,236 +2837,241 @@ msgstr ""
msgid "Site"
msgstr "標題"
-#: deps/livesettings/values.py:68
+#: deps/livesettings/values.py:69
msgid "Main"
msgstr ""
-#: deps/livesettings/values.py:127
+#: deps/livesettings/values.py:128
#, fuzzy
msgid "Base Settings"
msgstr "帳號設置"
-#: deps/livesettings/values.py:234
+#: deps/livesettings/values.py:235
msgid "Default value: \"\""
msgstr ""
-#: deps/livesettings/values.py:241
+#: deps/livesettings/values.py:242
msgid "Default value: "
msgstr ""
-#: deps/livesettings/values.py:244
+#: deps/livesettings/values.py:245
#, python-format
msgid "Default value: %s"
msgstr ""
# todo take these out of settings
-#: deps/livesettings/values.py:622
+#: deps/livesettings/values.py:629
#, fuzzy, python-format
msgid "Allowed image file types are %(types)s"
msgstr "åªå…許上傳 '%(file_types)s' 類型的文件ï¼"
-#: importers/stackexchange/management/commands/load_stackexchange.py:141
-msgid "Congratulations, you are now an Administrator"
+#: deps/livesettings/templates/livesettings/_admin_site_views.html:4
+#, fuzzy
+msgid "Sites"
+msgstr "標題"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Documentation"
+msgstr "城市"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#: skins/common/templates/authopenid/signin.html:143
+msgid "Change password"
+msgstr "修改密碼"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:11
+#: deps/livesettings/templates/livesettings/site_settings.html:23
+#, fuzzy
+msgid "Log out"
+msgstr "登出"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:14
+#: deps/livesettings/templates/livesettings/site_settings.html:26
+#, fuzzy
+msgid "Home"
+msgstr "首é "
+
+# page title
+#: deps/livesettings/templates/livesettings/group_settings.html:15
+#, fuzzy
+msgid "Edit Group Settings"
+msgstr "修改å•é¡Œ"
+
+#: deps/livesettings/templates/livesettings/group_settings.html:22
+#: deps/livesettings/templates/livesettings/site_settings.html:50
+#, fuzzy
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "請修改下列錯誤: "
+
+#: deps/livesettings/templates/livesettings/group_settings.html:28
+#, python-format
+msgid "Settings included in %(name)s."
msgstr ""
-#: management/commands/initialize_ldap_logins.py:51
-msgid ""
-"This command may help you migrate to LDAP password authentication by "
-"creating a record for LDAP association with each user account. There is an "
-"assumption that ldap user id's are the same as user names registered at the "
-"site. Before running this command it is necessary to set up LDAP parameters "
-"in the \"External keys\" section of the site settings."
+#: deps/livesettings/templates/livesettings/group_settings.html:62
+#: deps/livesettings/templates/livesettings/site_settings.html:97
+msgid "You don't have permission to edit values."
msgstr ""
-#: management/commands/post_emailed_questions.py:35
-msgid ""
-"<p>To ask by email, please:</p>\n"
-"<ul>\n"
-" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
-" <li>Type details of your question into the email body</li>\n"
-"</ul>\n"
-"<p>Note that tags may consist of more than one word, and tags\n"
-"may be separated by a semicolon or a comma</p>\n"
+# page title
+#: deps/livesettings/templates/livesettings/site_settings.html:27
+#, fuzzy
+msgid "Edit Site Settings"
+msgstr "修改å•é¡Œ"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:43
+msgid "Livesettings are disabled for this site."
msgstr ""
-#: management/commands/post_emailed_questions.py:55
-#, python-format
-msgid ""
-"<p>Sorry, there was an error posting your question please contact the "
-"%(site)s administrator</p>"
+#: deps/livesettings/templates/livesettings/site_settings.html:44
+msgid "All configuration options must be edited in the site settings.py file"
msgstr ""
-#: management/commands/post_emailed_questions.py:61
-#, python-format
-msgid ""
-"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
-"\"%(url)s\">register first</a></p>"
+# page title
+#: deps/livesettings/templates/livesettings/site_settings.html:66
+#, fuzzy, python-format
+msgid "Group settings: %(name)s"
+msgstr "修改å•é¡Œ"
+
+#: deps/livesettings/templates/livesettings/site_settings.html:93
+msgid "Uncollapse all"
msgstr ""
-#: management/commands/post_emailed_questions.py:69
-msgid ""
-"<p>Sorry, your question could not be posted due to insufficient privileges "
-"of your user account</p>"
+#: importers/stackexchange/management/commands/load_stackexchange.py:141
+msgid "Congratulations, you are now an Administrator"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:57
+#: management/commands/send_accept_answer_reminders.py:58
#, python-format
msgid "Accept the best answer for %(question_count)d of your questions"
msgstr ""
-#: management/commands/send_accept_answer_reminders.py:62
+#: management/commands/send_accept_answer_reminders.py:63
#, fuzzy
msgid "Please accept the best answer for this question:"
msgstr "這å•é¡Œçš„第一個解答者"
-#: management/commands/send_accept_answer_reminders.py:64
+#: management/commands/send_accept_answer_reminders.py:65
#, fuzzy
msgid "Please accept the best answer for these questions:"
msgstr "點é¸è§€çœ‹æœ€æ—©å•é¡Œ"
-#: management/commands/send_email_alerts.py:411
+#: management/commands/send_email_alerts.py:414
#, python-format
msgid "%(question_count)d updated question about %(topics)s"
msgid_plural "%(question_count)d updated questions about %(topics)s"
msgstr[0] ""
-#: management/commands/send_email_alerts.py:421
+#: management/commands/send_email_alerts.py:425
#, python-format
-msgid "%(name)s, this is an update message header for %(num)d question"
-msgid_plural "%(name)s, this is an update message header for %(num)d questions"
+msgid ""
+"<p>Dear %(name)s,</p><p>The following question has been updated "
+"%(sitename)s</p>"
+msgid_plural ""
+"<p>Dear %(name)s,</p><p>The following %(num)d questions have been updated on "
+"%(sitename)s:</p>"
msgstr[0] ""
-#: management/commands/send_email_alerts.py:438
+#: management/commands/send_email_alerts.py:449
msgid "new question"
msgstr "æå•"
-#: management/commands/send_email_alerts.py:455
-#, fuzzy
-msgid ""
-"Please visit the askbot and see what's new! Could you spread the word about "
-"it - can somebody you know help answering those questions or benefit from "
-"posting one?"
-msgstr " è«‹åƒè§€è«–壇, 觀看新功能介紹! 並廣為宣傳 - 能å¦è§£ç­”或從中ç²ç›Š?"
-
-#: management/commands/send_email_alerts.py:465
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'daily' on selected questions. If "
-"you are receiving more than one email per dayplease tell about this issue to "
-"the askbot administrator."
-msgstr "你設定訂閱æ¯æ—¥æŸ¥è©¢, 如果æ¯å¤©æ”¶åˆ°ä¿¡ä»¶è¶…夠一å°, 請告知管ç†è€…."
-
-#: management/commands/send_email_alerts.py:471
-#, fuzzy
-msgid ""
-"Your most frequent subscription setting is 'weekly' if you are receiving "
-"this email more than once a week please report this issue to the askbot "
-"administrator."
-msgstr "你設定訂閱æ¯å‘¨æŸ¥è©¢, 如果æ¯å‘¨æ”¶åˆ°ä¿¡ä»¶è¶…夠一å°, 請告知管ç†è€…."
-
-#: management/commands/send_email_alerts.py:477
-msgid ""
-"There is a chance that you may be receiving links seen before - due to a "
-"technicality that will eventually go away. "
-msgstr "你有å¯èƒ½æ”¶åˆ°ä¹‹å‰çœ‹éŽçš„連çµ, 此肇因於å³å°‡çµ‚止的技術."
-
-#: management/commands/send_email_alerts.py:490
-#, fuzzy, python-format
+#: management/commands/send_email_alerts.py:474
+#, python-format
msgid ""
-"go to %(email_settings_link)s to change frequency of email updates or "
-"%(admin_email)s administrator"
-msgstr "請至 %(link)s 更改收信頻率或管ç†è€…çš„ %(email)s "
+"<p>Please remember that you can always <a hrefl\"%(email_settings_link)s"
+"\">adjust</a> frequency of the email updates or turn them off entirely.<br/"
+">If you believe that this message was sent in an error, please email about "
+"it the forum administrator at %(admin_email)s.</p><p>Sincerely,</p><p>Your "
+"friendly %(sitename)s server.</p>"
+msgstr ""
-#: management/commands/send_unanswered_question_reminders.py:56
+#: management/commands/send_unanswered_question_reminders.py:60
#, python-format
msgid "%(question_count)d unanswered question about %(topics)s"
msgid_plural "%(question_count)d unanswered questions about %(topics)s"
msgstr[0] ""
-#: middleware/forum_mode.py:31
+#: middleware/forum_mode.py:53
#, fuzzy, python-format
msgid "Please log in to use %s"
msgstr "æ­¡è¿Žæå•! "
-#: models/__init__.py:317
+#: models/__init__.py:320
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"blocked"
msgstr ""
-#: models/__init__.py:321
+#: models/__init__.py:324
msgid ""
"Sorry, you cannot accept or unaccept best answers because your account is "
"suspended"
msgstr ""
-#: models/__init__.py:334
+#: models/__init__.py:337
#, fuzzy, python-format
msgid ""
">%(points)s points required to accept or unaccept your own answer to your "
"own question"
msgstr "首次å¯ä»¥æŽ¥å—的答案"
-#: models/__init__.py:353
+#: models/__init__.py:359
#, python-format
msgid ""
"Sorry, you will be able to accept this answer only after %(will_be_able_at)s"
msgstr ""
-#: models/__init__.py:361
+#: models/__init__.py:367
#, python-format
msgid ""
"Sorry, only moderators or original author of the question - %(username)s - "
"can accept or unaccept the best answer"
msgstr ""
-#: models/__init__.py:389
-msgid "cannot vote for own posts"
+#: models/__init__.py:390
+#, fuzzy
+msgid "Sorry, you cannot vote for your own posts"
msgstr "ä¸èƒ½çµ¦è‡ªå·±çš„帖å­æŠ•ç¥¨"
-#: models/__init__.py:392
+#: models/__init__.py:394
msgid "Sorry your account appears to be blocked "
msgstr ""
-#: models/__init__.py:397
+#: models/__init__.py:399
msgid "Sorry your account appears to be suspended "
msgstr ""
-#: models/__init__.py:407
+#: models/__init__.py:409
#, fuzzy, python-format
msgid ">%(points)s points required to upvote"
msgstr "éœ€è¦ >%(points)s ç©åˆ†æ‰èƒ½æŠ•æ”¯æŒç¥¨ã€‚"
-#: models/__init__.py:413
+#: models/__init__.py:415
#, python-format
msgid ">%(points)s points required to downvote"
msgstr "需è¦+%(points)sç©åˆ†æ‰èƒ½æŠ•åå°ç¥¨ã€‚"
-#: models/__init__.py:428
+#: models/__init__.py:430
#, fuzzy
msgid "Sorry, blocked users cannot upload files"
msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:429
+#: models/__init__.py:431
#, fuzzy
msgid "Sorry, suspended users cannot upload files"
msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:431
+#: models/__init__.py:433
#, python-format
-msgid ""
-"uploading images is limited to users with >%(min_rep)s reputation points"
-msgstr "上傳圖片åªé™æ–¼ç©åˆ† >%(min_rep)s 以上注冊用戶!"
-
-#: models/__init__.py:450 models/__init__.py:517 models/__init__.py:932
-msgid "blocked users cannot post"
-msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-
-#: models/__init__.py:451 models/__init__.py:935
-msgid "suspended users cannot post"
-msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
+msgid "sorry, file uploading requires karma >%(min_rep)s"
+msgstr ""
-#: models/__init__.py:478
+#: models/__init__.py:482
#, python-format
msgid ""
"Sorry, comments (except the last one) are editable only within %(minutes)s "
@@ -2869,56 +3081,56 @@ msgid_plural ""
"minutes from posting"
msgstr[0] ""
-#: models/__init__.py:490
+#: models/__init__.py:494
msgid "Sorry, but only post owners or moderators can edit comments"
msgstr ""
-#: models/__init__.py:503
+#: models/__init__.py:519
msgid ""
"Sorry, since your account is suspended you can comment only your own posts"
msgstr ""
-#: models/__init__.py:507
+#: models/__init__.py:523
#, python-format
msgid ""
"Sorry, to comment any post a minimum reputation of %(min_rep)s points is "
"required. You can still comment your own posts and answers to your questions"
msgstr ""
-#: models/__init__.py:535
+#: models/__init__.py:553
msgid ""
"This post has been deleted and can be seen only by post owners, site "
"administrators and moderators"
msgstr ""
-#: models/__init__.py:552
+#: models/__init__.py:570
msgid ""
"Sorry, only moderators, site administrators and post owners can edit deleted "
"posts"
msgstr ""
-#: models/__init__.py:567
+#: models/__init__.py:585
msgid "Sorry, since your account is blocked you cannot edit posts"
msgstr ""
-#: models/__init__.py:571
+#: models/__init__.py:589
msgid "Sorry, since your account is suspended you can edit only your own posts"
msgstr ""
-#: models/__init__.py:576
+#: models/__init__.py:594
#, python-format
msgid ""
"Sorry, to edit wiki posts, a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:583
+#: models/__init__.py:601
#, python-format
msgid ""
"Sorry, to edit other people's posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:646
+#: models/__init__.py:664
msgid ""
"Sorry, cannot delete your question since it has an upvoted answer posted by "
"someone else"
@@ -2927,249 +3139,270 @@ msgid_plural ""
"by other users"
msgstr[0] ""
-#: models/__init__.py:661
+#: models/__init__.py:679
msgid "Sorry, since your account is blocked you cannot delete posts"
msgstr ""
-#: models/__init__.py:665
+#: models/__init__.py:683
msgid ""
"Sorry, since your account is suspended you can delete only your own posts"
msgstr ""
-#: models/__init__.py:669
+#: models/__init__.py:687
#, python-format
msgid ""
"Sorry, to deleted other people' posts, a minimum reputation of %(min_rep)s "
"is required"
msgstr ""
-#: models/__init__.py:689
+#: models/__init__.py:707
msgid "Sorry, since your account is blocked you cannot close questions"
msgstr ""
-#: models/__init__.py:693
+#: models/__init__.py:711
msgid "Sorry, since your account is suspended you cannot close questions"
msgstr ""
-#: models/__init__.py:697
+#: models/__init__.py:715
#, python-format
msgid ""
"Sorry, to close other people' posts, a minimum reputation of %(min_rep)s is "
"required"
msgstr ""
-#: models/__init__.py:706
+#: models/__init__.py:724
#, python-format
msgid ""
"Sorry, to close own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:730
+#: models/__init__.py:748
#, python-format
msgid ""
"Sorry, only administrators, moderators or post owners with reputation > "
"%(min_rep)s can reopen questions."
msgstr ""
-#: models/__init__.py:736
+#: models/__init__.py:754
#, python-format
msgid ""
"Sorry, to reopen own question a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:756
-msgid "cannot flag message as offensive twice"
+#: models/__init__.py:775
+msgid "You have flagged this question before and cannot do it more than once"
+msgstr ""
+
+#: models/__init__.py:783
+msgid "Sorry, since your account is blocked you cannot flag posts as offensive"
+msgstr ""
+
+#: models/__init__.py:794
+#, python-format
+msgid ""
+"Sorry, to flag posts as offensive a minimum reputation of %(min_rep)s is "
+"required"
+msgstr ""
+
+#: models/__init__.py:815
+#, python-format
+msgid ""
+"Sorry, you have exhausted the maximum number of %(max_flags_per_day)s "
+"offensive flags per day."
+msgstr ""
+
+#: models/__init__.py:827
+msgid "cannot remove non-existing flag"
msgstr ""
-#: models/__init__.py:761
+#: models/__init__.py:833
#, fuzzy
-msgid "blocked users cannot flag posts"
+msgid "Sorry, since your account is blocked you cannot remove flags"
msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
-#: models/__init__.py:763
-#, fuzzy
-msgid "suspended users cannot flag posts"
-msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
+#: models/__init__.py:837
+msgid ""
+"Sorry, your account appears to be suspended and you cannot remove flags. "
+"Please contact the forum administrator to reach a resolution."
+msgstr ""
-#: models/__init__.py:765
+#: models/__init__.py:843
#, python-format
-msgid "need > %(min_rep)s points to flag spam"
+msgid "Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgid_plural ""
+"Sorry, to flag posts a minimum reputation of %(min_rep)d is required"
+msgstr[0] ""
+
+#: models/__init__.py:862
+msgid "you don't have the permission to remove all flags"
msgstr ""
-#: models/__init__.py:784
-#, python-format
-msgid "%(max_flags_per_day)s exceeded"
+#: models/__init__.py:863
+msgid "no flags for this entry"
msgstr ""
-#: models/__init__.py:799
+#: models/__init__.py:887
msgid ""
"Sorry, only question owners, site administrators and moderators can retag "
"deleted questions"
msgstr ""
-#: models/__init__.py:806
+#: models/__init__.py:894
msgid "Sorry, since your account is blocked you cannot retag questions"
msgstr ""
-#: models/__init__.py:810
+#: models/__init__.py:898
msgid ""
"Sorry, since your account is suspended you can retag only your own questions"
msgstr ""
-#: models/__init__.py:814
+#: models/__init__.py:902
#, python-format
msgid ""
"Sorry, to retag questions a minimum reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:833
+#: models/__init__.py:921
msgid "Sorry, since your account is blocked you cannot delete comment"
msgstr ""
-#: models/__init__.py:837
+#: models/__init__.py:925
msgid ""
"Sorry, since your account is suspended you can delete only your own comments"
msgstr ""
-#: models/__init__.py:841
+#: models/__init__.py:929
#, python-format
msgid "Sorry, to delete comments reputation of %(min_rep)s is required"
msgstr ""
-#: models/__init__.py:864
-msgid "cannot revoke old vote"
-msgstr "這個投票已經éŽæ™‚,ä¸èƒ½æ’¤éŠ·ã€‚"
+#: models/__init__.py:953
+msgid "sorry, but older votes cannot be revoked"
+msgstr ""
-#: models/__init__.py:1339 utils/functions.py:70
+#: models/__init__.py:1469 utils/functions.py:78
#, python-format
msgid "on %(date)s"
msgstr ""
-#: models/__init__.py:1341
+#: models/__init__.py:1471
#, fuzzy
msgid "in two days"
msgstr "登錄並回答該å•é¡Œ"
-#: models/__init__.py:1343
+#: models/__init__.py:1473
msgid "tomorrow"
msgstr ""
-#: models/__init__.py:1345
+#: models/__init__.py:1475
#, python-format
msgid "in %(hr)d hour"
msgid_plural "in %(hr)d hours"
msgstr[0] ""
-#: models/__init__.py:1347
+#: models/__init__.py:1477
#, python-format
msgid "in %(min)d min"
msgid_plural "in %(min)d mins"
msgstr[0] ""
-#: models/__init__.py:1348
+#: models/__init__.py:1478
#, python-format
msgid "%(days)d day"
msgid_plural "%(days)d days"
msgstr[0] ""
-#: models/__init__.py:1350
+#: models/__init__.py:1480
#, python-format
msgid ""
"New users must wait %(days)s before answering their own question. You can "
"post an answer %(left)s"
msgstr ""
-#: models/__init__.py:1516 skins/default/templates/feedback_email.txt:9
-#: skins/old/templates/feedback_email.txt:9
+#: models/__init__.py:1653 skins/default/templates/feedback_email.txt:9
#, fuzzy
msgid "Anonymous"
msgstr "匿å者"
-#: models/__init__.py:1612 views/users.py:371
+#: models/__init__.py:1749
#, fuzzy
msgid "Site Adminstrator"
msgstr ""
"你好, \n"
" 論壇管ç†è€…"
-#: models/__init__.py:1614 views/users.py:373
+#: models/__init__.py:1751
msgid "Forum Moderator"
msgstr ""
-#: models/__init__.py:1616 views/users.py:375
+#: models/__init__.py:1753
#, fuzzy
msgid "Suspended User"
msgstr "é€å‡ºäººç‚º"
-#: models/__init__.py:1618 views/users.py:377
+#: models/__init__.py:1755
msgid "Blocked User"
msgstr ""
-#: models/__init__.py:1620 views/users.py:379
+#: models/__init__.py:1757
#, fuzzy
msgid "Registered User"
msgstr "註冊用戶"
-#: models/__init__.py:1622
+#: models/__init__.py:1759
msgid "Watched User"
msgstr ""
-#: models/__init__.py:1624
+#: models/__init__.py:1761
msgid "Approved User"
msgstr ""
-#: models/__init__.py:1733
+#: models/__init__.py:1870
#, fuzzy, python-format
msgid "%(username)s karma is %(reputation)s"
msgstr "%(user_name)s karma 更動日誌"
-#: models/__init__.py:1743
+#: models/__init__.py:1880
#, python-format
msgid "one gold badge"
msgid_plural "%(count)d gold badges"
msgstr[0] ""
-#: models/__init__.py:1750
+#: models/__init__.py:1887
#, fuzzy, python-format
msgid "one silver badge"
msgid_plural "%(count)d silver badges"
msgstr[0] "第二åçŽå‹µç´°ç¯€"
-#: models/__init__.py:1757
+#: models/__init__.py:1894
#, fuzzy, python-format
msgid "one bronze badge"
msgid_plural "%(count)d bronze badges"
msgstr[0] "第三åçŽå‹µç´°ç¯€"
-#: models/__init__.py:1768
+#: models/__init__.py:1905
#, python-format
msgid "%(item1)s and %(item2)s"
msgstr ""
-#: models/__init__.py:1772
+#: models/__init__.py:1909
#, python-format
msgid "%(user)s has %(badges)s"
msgstr ""
-#: models/__init__.py:2179 models/__init__.py:2185 models/__init__.py:2190
-#: models/__init__.py:2195
+#: models/__init__.py:2389
#, fuzzy, python-format
-msgid "Re: \"%(title)s\""
+msgid "\"%(title)s\""
msgstr "æå•"
-#: models/__init__.py:2200 models/__init__.py:2205
-#, fuzzy, python-format
-msgid "Question: \"%(title)s\""
-msgstr "æå•"
-
-#: models/__init__.py:2386
+#: models/__init__.py:2542
#, python-format
msgid ""
"Congratulations, you have received a badge '%(badge_name)s'. Check out <a "
"href=\"%(user_profile)s\">your profile</a>."
msgstr ""
-#: models/__init__.py:2565 views/commands.py:396
+#: models/__init__.py:2745 views/commands.py:460
msgid "Your tag subscription was saved, thanks!"
msgstr ""
@@ -3437,2005 +3670,3517 @@ msgstr "分類專家"
msgid "Created a tag used by %(num)s questions"
msgstr "產生被使用 50 個å•é¡Œçš„標籤"
-#: models/badges.py:776
+#: models/badges.py:774
msgid "Expert"
msgstr "專家"
-#: models/badges.py:779
+#: models/badges.py:777
msgid "Very active in one tag"
msgstr "æŸä¸€æ¨™ç±¤å¸¸å•Ÿç”¨"
-#: models/content.py:549
+#: models/post.py:1071
#, fuzzy
msgid "Sorry, this question has been deleted and is no longer accessible"
msgstr "這個å•é¡Œè¢«"
-#: models/content.py:565
+#: models/post.py:1087
msgid ""
"Sorry, the answer you are looking for is no longer available, because the "
"parent question has been removed"
msgstr ""
-#: models/content.py:572
+#: models/post.py:1094
#, fuzzy
msgid "Sorry, this answer has been removed and is no longer accessible"
msgstr "這個å•é¡Œè¢«"
-#: models/meta.py:116
+#: models/post.py:1110
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent question has been removed"
msgstr ""
-#: models/meta.py:123
+#: models/post.py:1117
msgid ""
"Sorry, the comment you are looking for is no longer accessible, because the "
"parent answer has been removed"
msgstr ""
-#: models/question.py:63
+#: models/question.py:54
#, python-format
msgid "\" and \"%s\""
msgstr ""
-#: models/question.py:66
+#: models/question.py:57
#, fuzzy
msgid "\" and more"
msgstr "查看更多"
-#: models/question.py:806
-#, python-format
-msgid "%(author)s modified the question"
-msgstr "%(author)s 已修改這個å•é¡Œ"
-
-#: models/question.py:810
-#, python-format
-msgid "%(people)s posted %(new_answer_count)s new answers"
-msgstr "%(people)s 張貼新答案 %(new_answer_count)s"
-
-#: models/question.py:815
-#, python-format
-msgid "%(people)s commented the question"
-msgstr "%(people)s è©•è«–å•é¡Œ"
-
-#: models/question.py:820
-#, python-format
-msgid "%(people)s commented answers"
-msgstr "%(people)s 評論回答"
-
-#: models/question.py:822
-#, python-format
-msgid "%(people)s commented an answer"
-msgstr "%(people)s 評論回答"
+#: models/reply_by_email.py:71
+#, fuzzy
+msgid "edited by email"
+msgstr "驗證電å­ä¿¡ç®±"
-#: models/repute.py:142
+#: models/repute.py:143
#, python-format
msgid "<em>Changed by moderator. Reason:</em> %(reason)s"
msgstr ""
-#: models/repute.py:153
+#: models/repute.py:154
#, python-format
msgid ""
"%(points)s points were added for %(username)s's contribution to question "
"%(question_title)s"
msgstr ""
-#: models/repute.py:158
+#: models/repute.py:159
#, python-format
msgid ""
"%(points)s points were subtracted for %(username)s's contribution to "
"question %(question_title)s"
msgstr ""
-#: models/tag.py:151
+#: models/tag.py:106
#, fuzzy
msgid "interesting"
msgstr "有趣"
-#: models/tag.py:151
+#: models/tag.py:106
msgid "ignored"
msgstr "忽略"
-#: models/user.py:264
+#: models/user.py:266
msgid "Entire forum"
msgstr "這論壇"
-#: models/user.py:265
+#: models/user.py:267
msgid "Questions that I asked"
msgstr "æå•å•é¡Œ"
-#: models/user.py:266
+#: models/user.py:268
msgid "Questions that I answered"
msgstr "已回答的å•é¡Œ"
-#: models/user.py:267
+#: models/user.py:269
msgid "Individually selected questions"
msgstr "å·²é¸å•é¡Œ"
-#: models/user.py:268
+#: models/user.py:270
msgid "Mentions and comment responses"
msgstr ""
-#: models/user.py:271
+#: models/user.py:273
msgid "Instantly"
msgstr ""
-#: models/user.py:272
+#: models/user.py:274
msgid "Daily"
msgstr "æ¯å¤©"
-#: models/user.py:273
+#: models/user.py:275
msgid "Weekly"
msgstr "æ¯å‘¨"
-#: models/user.py:274
+#: models/user.py:276
msgid "No email"
msgstr "ç„¡é›»å­éƒµä»¶"
+#: skins/common/templates/authopenid/authopenid_macros.html:63
+#, fuzzy
+msgid "Please enter your <span>user name</span>, then sign in"
+msgstr "使用帳號密碼登錄"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:64
+#: skins/common/templates/authopenid/signin.html:97
+#, fuzzy
+msgid "(or select another login method above)"
+msgstr "è«‹é¸å–上數é¸é …"
+
+#: skins/common/templates/authopenid/authopenid_macros.html:66
+#: skins/common/templates/authopenid/signin.html:113
+#, fuzzy
+msgid "Sign in"
+msgstr "註冊帳號"
+
+#: skins/common/templates/authopenid/changeemail.html:2
+#: skins/common/templates/authopenid/changeemail.html:8
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Change Email"
+msgstr "æ›´æ›é›»å­éƒµä»¶"
+
+#: skins/common/templates/authopenid/changeemail.html:10
+msgid "Save your email address"
+msgstr "儲存您的電å­éƒµä»¶åœ°å€"
+
+#: skins/common/templates/authopenid/changeemail.html:15
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Enter your new email into the box below</"
+"span> if \n"
+"you'd like to use another email for <strong>update subscriptions</strong>.\n"
+"<br>Currently you are using <strong>%%(email)s</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:19
+#, python-format
+msgid ""
+"<span class='strong big'>Please enter your email address in the box below.</"
+"span>\n"
+"Valid email address is required on this Q&amp;A forum. If you like, \n"
+"you can <strong>receive updates</strong> on interesting questions or entire\n"
+"forum via email. Also, your email is used to create a unique \n"
+"<a href='%%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for "
+"your\n"
+"account. Email addresses are never shown or otherwise shared with anybody\n"
+"else."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:38
+msgid ""
+"<strong>Your new Email:</strong> \n"
+"(will <strong>not</strong> be shown to anyone, must be valid)"
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:49
+#, fuzzy
+msgid "Save Email"
+msgstr "儲存電å­ä¿¡ç®±"
+
+#: skins/common/templates/authopenid/changeemail.html:51
+#: skins/default/templates/answer_edit.html:25
+#: skins/default/templates/close.html:16
+#: skins/default/templates/feedback.html:64
+#: skins/default/templates/question_edit.html:36
+#: skins/default/templates/question_retag.html:22
+#: skins/default/templates/reopen.html:27
+#: skins/default/templates/subscribe_for_tags.html:16
+#: skins/default/templates/user_profile/user_edit.html:102
+msgid "Cancel"
+msgstr "å–消"
+
+#: skins/common/templates/authopenid/changeemail.html:58
+#, fuzzy
+msgid "Validate email"
+msgstr "驗證電å­ä¿¡ç®±"
+
+#: skins/common/templates/authopenid/changeemail.html:61
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">An email with a validation link has been sent "
+"to \n"
+"%%(email)s.</span> Please <strong>follow the emailed link</strong> with "
+"your \n"
+"web browser. Email validation is necessary to help insure the proper use "
+"of \n"
+"email on <span class=\\\"orange\\\">Q&amp;A</span>. If you would like to "
+"use \n"
+"<strong>another email</strong>, please <a \n"
+"href='%%(change_email_url)s'><strong>change it again</strong></a>."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:70
+msgid "Email not changed"
+msgstr "é›»å­ä¿¡ç®±ä¸è®Š"
+
+#: skins/common/templates/authopenid/changeemail.html:73
+#, python-format
+msgid ""
+"<span class=\\\"strong big\\\">Your email address %%(email)s has not been "
+"changed.\n"
+"</span> If you decide to change it later - you can always do it by editing \n"
+"it in your user profile or by using the <a \n"
+"href='%%(change_email_url)s'><strong>previous form</strong></a> again."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:80
+#, fuzzy
+msgid "Email changed"
+msgstr "é›»å­ä¿¡ç®±å·²è®Š"
+
+#: skins/common/templates/authopenid/changeemail.html:83
+#, python-format
+msgid ""
+"\n"
+"<span class='big strong'>Your email address is now set to %%(email)s.</"
+"span> \n"
+"Updates on the questions that you like most will be sent to this address. \n"
+"Email notifications are sent once a day or less frequently - only when "
+"there \n"
+"are any news."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:91
+msgid "Email verified"
+msgstr "é©—è­‰éŽé›»å­ä¿¡ç®±"
+
+#: skins/common/templates/authopenid/changeemail.html:94
+msgid ""
+"<span class=\\\"big strong\\\">Thank you for verifying your email!</span> "
+"Now \n"
+"you can <strong>ask</strong> and <strong>answer</strong> questions. Also "
+"if \n"
+"you find a very interesting question you can <strong>subscribe for the \n"
+"updates</strong> - then will be notified about changes <strong>once a day</"
+"strong>\n"
+"or less frequently."
+msgstr ""
+
+#: skins/common/templates/authopenid/changeemail.html:102
+#, fuzzy
+msgid "Validation email not sent"
+msgstr "驗證電å­ä¿¡ç®±"
+
+#: skins/common/templates/authopenid/changeemail.html:105
+#, python-format
+msgid ""
+"<span class='big strong'>Your current email address %%(email)s has been \n"
+"validated before</span> so the new key was not sent. You can <a \n"
+"href='%%(change_link)s'>change</a> email used for update subscriptions if \n"
+"necessary."
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:21
+#, fuzzy
+msgid "Registration"
+msgstr "註冊"
+
+#: skins/common/templates/authopenid/complete.html:23
+#, fuzzy
+msgid "User registration"
+msgstr "註冊"
+
+#: skins/common/templates/authopenid/complete.html:60
+msgid "<strong>Receive forum updates by email</strong>"
+msgstr ""
+
+#: skins/common/templates/authopenid/complete.html:64
+#: skins/common/templates/authopenid/signup_with_password.html:46
+msgid "please select one of the options above"
+msgstr "è«‹é¸å–上數é¸é …"
+
+#: skins/common/templates/authopenid/complete.html:67
+#: skins/common/templates/authopenid/signup_with_password.html:4
+#: skins/common/templates/authopenid/signup_with_password.html:53
+msgid "Signup"
+msgstr "註冊帳號"
+
#: skins/common/templates/authopenid/confirm_email.txt:1
-#: skins/old/templates/authopenid/confirm_email.txt:1
msgid "Thank you for registering at our Q&A forum!"
msgstr "æ„Ÿè¬ä½ åŠ å…¥æˆ‘們的 Q&A 論壇"
#: skins/common/templates/authopenid/confirm_email.txt:3
-#: skins/old/templates/authopenid/confirm_email.txt:3
msgid "Your account details are:"
msgstr "帳號詳細: "
#: skins/common/templates/authopenid/confirm_email.txt:5
-#: skins/old/templates/authopenid/confirm_email.txt:5
#, fuzzy
msgid "Username:"
msgstr "您的大å"
#: skins/common/templates/authopenid/confirm_email.txt:6
-#: skins/old/templates/authopenid/confirm_email.txt:6
msgid "Password:"
msgstr "密碼: "
#: skins/common/templates/authopenid/confirm_email.txt:8
-#: skins/old/templates/authopenid/confirm_email.txt:8
msgid "Please sign in here:"
msgstr "請由此進入: "
#: skins/common/templates/authopenid/confirm_email.txt:11
#: skins/common/templates/authopenid/email_validation.txt:13
-#: skins/old/templates/authopenid/confirm_email.txt:11
-#: skins/old/templates/authopenid/email_validation.txt:13
+#, fuzzy
msgid ""
"Sincerely,\n"
-"Forum Administrator"
+"Q&A Forum Administrator"
msgstr ""
"你好, \n"
" 論壇管ç†è€…"
#: skins/common/templates/authopenid/email_validation.txt:1
-#: skins/old/templates/authopenid/email_validation.txt:1
msgid "Greetings from the Q&A forum"
msgstr "æ­¡è¿Ž"
#: skins/common/templates/authopenid/email_validation.txt:3
-#: skins/old/templates/authopenid/email_validation.txt:3
msgid "To make use of the Forum, please follow the link below:"
msgstr "è«‹ä¾ä¸‹åˆ—指引使用論壇: "
#: skins/common/templates/authopenid/email_validation.txt:7
-#: skins/old/templates/authopenid/email_validation.txt:7
msgid "Following the link above will help us verify your email address."
msgstr "è«‹ä¾ä¸Šåˆ—指引èªè­‰é›»å­éƒµä»¶åœ°å€"
#: skins/common/templates/authopenid/email_validation.txt:9
#, fuzzy
msgid ""
-"If you beleive that this message was sent in mistake - \n"
-"no further action is needed. Just ingore this email, we apologize\n"
+"If you believe that this message was sent in mistake - \n"
+"no further action is needed. Just ignore this email, we apologize\n"
"for any inconvenience"
msgstr "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
-#: skins/default/templates/feedback_email.txt:2
-#: skins/old/templates/feedback_email.txt:2
-#, fuzzy, python-format
+#: skins/common/templates/authopenid/logout.html:3
+msgid "Logout"
+msgstr "登出"
+
+#: skins/common/templates/authopenid/logout.html:5
+msgid "You have successfully logged out"
+msgstr ""
+
+#: skins/common/templates/authopenid/logout.html:7
msgid ""
-"\n"
-"Hello, this is a %(site_title)s forum feedback message.\n"
+"However, you still may be logged in to your OpenID provider. Please logout "
+"of your provider if you wish to do so."
msgstr ""
+
+#: skins/common/templates/authopenid/signin.html:4
+msgid "User login"
+msgstr "用戶登錄"
+
+#: skins/common/templates/authopenid/signin.html:14
+#, fuzzy, python-format
+msgid ""
"\n"
-" 你好, 這是 %(site_title)s 回饋單\n"
+" Your answer to %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
-#: skins/old/templates/authopenid/email_validation.txt:9
-#, fuzzy
+#: skins/common/templates/authopenid/signin.html:21
+#, fuzzy, python-format
msgid ""
-"If you believe that this message was sent in mistake - \n"
-"no further action is needed. Just ignore this email, we apologize\n"
-"for any inconvenience."
-msgstr "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
+"Your question \n"
+" %(title)s %(summary)s will be posted once you log in\n"
+" "
+msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
-#: templatetags/extra_filters.py:145 templatetags/extra_filters_jinja.py:240
-#, fuzzy
-msgid "no items in counter"
-msgstr "ç„¡"
+#: skins/common/templates/authopenid/signin.html:28
+msgid ""
+"Choose your favorite service below to sign in using secure OpenID or similar "
+"technology. Your external service password always stays confidential and you "
+"don't have to rememeber or create another one."
+msgstr ""
-#: templatetags/extra_tags.py:43
-#, python-format
-msgid "%(username)s gravatar image"
-msgstr "%(username)s 大頭貼"
+#: skins/common/templates/authopenid/signin.html:31
+msgid ""
+"It's a good idea to make sure that your existing login methods still work, "
+"or add a new one. Please click any of the icons below to check/change or add "
+"new login methods."
+msgstr ""
-#: utils/decorators.py:90 views/commands.py:112 views/commands.py:132
-msgid "Oops, apologies - there was some error"
+#: skins/common/templates/authopenid/signin.html:33
+msgid ""
+"Please add a more permanent login method by clicking one of the icons below, "
+"to avoid logging in via email each time."
msgstr ""
-#: utils/decorators.py:109
-msgid "Please login to post"
+#: skins/common/templates/authopenid/signin.html:37
+msgid ""
+"Click on one of the icons below to add a new login method or re-validate an "
+"existing one."
msgstr ""
-#: utils/decorators.py:205
-msgid "Spam was detected on your post, sorry for if this is a mistake"
+#: skins/common/templates/authopenid/signin.html:39
+msgid ""
+"You don't have a method to log in right now, please add one or more by "
+"clicking any of the icons below."
msgstr ""
-#: utils/forms.py:32
-msgid "this field is required"
-msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
+#: skins/common/templates/authopenid/signin.html:42
+#, fuzzy
+msgid ""
+"Please check your email and visit the enclosed link to re-connect to your "
+"account"
+msgstr "請輸入密碼"
-#: utils/forms.py:46
-msgid "choose a username"
-msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+#: skins/common/templates/authopenid/signin.html:89
+#, fuzzy
+msgid "or enter your <span>user name and password</span>, then sign in"
+msgstr "使用帳號密碼登錄"
-#: utils/forms.py:52
-msgid "user name is required"
-msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
+#: skins/common/templates/authopenid/signin.html:93
+#, fuzzy
+msgid "Please, sign in"
+msgstr "請由此進入: "
-#: utils/forms.py:53
-msgid "sorry, this name is taken, please choose another"
-msgstr "å°ä¸èµ·ï¼Œè©²ç”¨æˆ¶å已註冊,請æ›ä¸€å€‹è©¦è©¦"
+#: skins/common/templates/authopenid/signin.html:100
+msgid "Login failed, please try again"
+msgstr ""
-#: utils/forms.py:54
+#: skins/common/templates/authopenid/signin.html:104
#, fuzzy
-msgid "sorry, this name is not allowed, please choose another"
-msgstr "å°ä¸èµ·ï¼Œè©²ç”¨æˆ¶åä¸èƒ½è¨»å†Šï¼Œè«‹æ›ä¸€å€‹è©¦è©¦"
+msgid "Login or email"
+msgstr "æ›´æ›é›»å­éƒµä»¶"
-#: utils/forms.py:55
-msgid "sorry, there is no user with this name"
-msgstr "å°ä¸èµ·ï¼Œæ²’有此用戶"
+#: skins/common/templates/authopenid/signin.html:108 utils/forms.py:169
+msgid "Password"
+msgstr "密碼"
-#: utils/forms.py:56
-msgid "sorry, we have a serious error - user name is taken by several users"
-msgstr "å°ä¸èµ·ï¼Œè¨±å¤šäººä½¿ç”¨è©²ç”¨æˆ¶, 造æˆéŒ¯èª¤"
+#: skins/common/templates/authopenid/signin.html:120
+msgid "To change your password - please enter the new one twice, then submit"
+msgstr ""
-#: utils/forms.py:57
-msgid "user name can only consist of letters, empty space and underscore"
-msgstr "用戶å字須由字元, 空白, 下標字組æˆ"
+#: skins/common/templates/authopenid/signin.html:124
+#, fuzzy
+msgid "New password"
+msgstr "é‡è¨­å¯†ç¢¼"
-#: utils/forms.py:118
-msgid "your email address"
-msgstr "您的電å­éƒµä»¶åœ°å€"
+#: skins/common/templates/authopenid/signin.html:133
+#, fuzzy
+msgid "Please, retype"
+msgstr "確èªå¯†ç¢¼"
-#: utils/forms.py:119
-msgid "email address is required"
-msgstr " é›»å­éƒµä»¶åœ°å€ä¸èƒ½ç‚ºç©ºç™½"
+#: skins/common/templates/authopenid/signin.html:157
+msgid "Here are your current login methods"
+msgstr ""
-#: utils/forms.py:120
-msgid "please enter a valid email address"
-msgstr "請輸入åˆæ³•é›»å­éƒµä»¶åœ°å€"
+#: skins/common/templates/authopenid/signin.html:161
+#, fuzzy
+msgid "provider"
+msgstr "打開"
-#: utils/forms.py:121
+#: skins/common/templates/authopenid/signin.html:162
#, fuzzy
-msgid "this email is already used by someone else, please choose another"
-msgstr "該電å­éƒµä»¶å·²è¢«æ³¨å†Šï¼Œè«‹é¸æ“‡å¦ä¸€å€‹å†è©¦ã€‚"
+msgid "last used"
+msgstr "上次活動時間"
-#: utils/forms.py:149
-msgid "choose password"
-msgstr "密碼"
+#: skins/common/templates/authopenid/signin.html:163
+msgid "delete, if you like"
+msgstr ""
-#: utils/forms.py:150
-msgid "password is required"
-msgstr " 密碼ä¸èƒ½ç‚ºç©ºç™½ã€‚"
+#: skins/common/templates/authopenid/signin.html:177
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "delete"
+msgstr "刪除"
-#: utils/forms.py:153
-msgid "retype password"
-msgstr "確èªå¯†ç¢¼"
+#: skins/common/templates/authopenid/signin.html:179
+#, fuzzy
+msgid "cannot be deleted"
+msgstr "å–消使用者"
-#: utils/forms.py:154
+#: skins/common/templates/authopenid/signin.html:192
#, fuzzy
-msgid "please, retype your password"
-msgstr "確èªå¯†ç¢¼"
+msgid "Still have trouble signing in?"
+msgstr "還有其他å•é¡Œï¼Ÿ"
-#: utils/forms.py:155
-msgid "sorry, entered passwords did not match, please try again"
-msgstr "å°ä¸èµ·, 密碼ä¸åˆ, è«‹é‡æ–°è¼¸å…¥"
+#: skins/common/templates/authopenid/signin.html:197
+#, fuzzy
+msgid "Please, enter your email address below and obtain a new key"
+msgstr "請輸入密碼"
-#: utils/functions.py:74
+#: skins/common/templates/authopenid/signin.html:199
#, fuzzy
-msgid "2 days ago"
-msgstr "二天å‰"
+msgid "Please, enter your email address below to recover your account"
+msgstr "請輸入密碼"
-#: utils/functions.py:76
-msgid "yesterday"
-msgstr "昨天"
+#: skins/common/templates/authopenid/signin.html:202
+#, fuzzy
+msgid "recover your account via email"
+msgstr "請設新密碼"
-#: utils/functions.py:79
-#, python-format
-msgid "%(hr)d hour ago"
-msgid_plural "%(hr)d hours ago"
-msgstr[0] ""
+#: skins/common/templates/authopenid/signin.html:213
+msgid "Send a new recovery key"
+msgstr ""
-#: utils/functions.py:85
-#, python-format
-msgid "%(min)d min ago"
-msgid_plural "%(min)d mins ago"
-msgstr[0] ""
+#: skins/common/templates/authopenid/signin.html:215
+#, fuzzy
+msgid "Recover your account via email"
+msgstr "請設新密碼"
-#: views/avatar_views.py:99
-msgid "Successfully uploaded a new avatar."
-msgstr ""
+#: skins/common/templates/authopenid/signup_with_password.html:10
+#, fuzzy
+msgid "Please register by clicking on any of the icons below"
+msgstr "è«‹é¸å–上數é¸é …"
-#: views/avatar_views.py:140
-msgid "Successfully updated your avatar."
+#: skins/common/templates/authopenid/signup_with_password.html:23
+#, fuzzy
+msgid "or create a new user name and password here"
+msgstr "新增帳號密碼"
+
+#: skins/common/templates/authopenid/signup_with_password.html:25
+#, fuzzy
+msgid "Create login name and password"
+msgstr "新增帳號密碼"
+
+#: skins/common/templates/authopenid/signup_with_password.html:26
+msgid ""
+"<span class='strong big'>If you prefer, create your forum login name and \n"
+"password here. However</span>, please keep in mind that we also support \n"
+"<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can \n"
+"simply reuse your external login (e.g. Gmail or AOL) without ever sharing \n"
+"your login details with anyone and having to remember yet another password."
msgstr ""
-#: views/avatar_views.py:180
-msgid "Successfully deleted the requested avatars."
+#: skins/common/templates/authopenid/signup_with_password.html:41
+msgid "<strong>Receive periodic updates by email</strong>"
msgstr ""
-#: views/commands.py:39
-msgid "anonymous users cannot vote"
-msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+#: skins/common/templates/authopenid/signup_with_password.html:50
+msgid ""
+"Please read and type in the two words below to help us prevent automated "
+"account creation."
+msgstr "請讀å–並輸入下列的字, 以防止自動場產生的帳號. "
-#: views/commands.py:59
-msgid "Sorry you ran out of votes for today"
+#: skins/common/templates/authopenid/signup_with_password.html:55
+msgid "or"
+msgstr "或者"
+
+#: skins/common/templates/authopenid/signup_with_password.html:56
+#, fuzzy
+msgid "return to OpenID login"
+msgstr "返回 OpenID 登錄"
+
+#: skins/common/templates/avatar/add.html:3
+#, fuzzy
+msgid "add avatar"
+msgstr "大頭åƒ"
+
+#: skins/common/templates/avatar/add.html:5
+#, fuzzy
+msgid "Change avatar"
+msgstr "修改標籤"
+
+#: skins/common/templates/avatar/add.html:6
+#: skins/common/templates/avatar/change.html:7
+#, fuzzy
+msgid "Your current avatar: "
+msgstr "帳號詳細: "
+
+#: skins/common/templates/avatar/add.html:9
+#: skins/common/templates/avatar/change.html:11
+msgid "You haven't uploaded an avatar yet. Please upload one now."
msgstr ""
-#: views/commands.py:65
-#, python-format
-msgid "You have %(votes_left)s votes left for today"
+#: skins/common/templates/avatar/add.html:13
+msgid "Upload New Image"
msgstr ""
-#: views/commands.py:122
+#: skins/common/templates/avatar/change.html:4
#, fuzzy
-msgid "Sorry, but anonymous users cannot access the inbox"
-msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+msgid "change avatar"
+msgstr "儲存修改"
-#: views/commands.py:192
-msgid "Sorry, something is not right here..."
+#: skins/common/templates/avatar/change.html:17
+msgid "Choose new Default"
msgstr ""
-#: views/commands.py:207
+#: skins/common/templates/avatar/change.html:22
#, fuzzy
-msgid "Sorry, but anonymous users cannot accept answers"
-msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
-
-#: views/commands.py:288
-#, python-format
-msgid "subscription saved, %(email)s needs validation, see %(details_url)s"
-msgstr "訂閱暫存, 需用 %(email)s èªè­‰, åƒè€ƒ %(details_url)s"
+msgid "Upload"
+msgstr "個人資料"
-#: views/commands.py:295
-msgid "email update frequency has been set to daily"
-msgstr "é›»å­éƒµä»¶æ¯æ—¥æ›´æ–°"
+#: skins/common/templates/avatar/confirm_delete.html:2
+#, fuzzy
+msgid "delete avatar"
+msgstr "刪除回答"
-#: views/commands.py:400
-#, python-format
-msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+#: skins/common/templates/avatar/confirm_delete.html:4
+msgid "Please select the avatars that you would like to delete."
msgstr ""
-#: views/commands.py:409
+#: skins/common/templates/avatar/confirm_delete.html:6
#, python-format
-msgid "Please sign in to subscribe for: %(tags)s"
+msgid ""
+"You have no avatars to delete. Please <a href=\"%(avatar_change_url)s"
+"\">upload one</a> now."
msgstr ""
-#: views/commands.py:542
+#: skins/common/templates/avatar/confirm_delete.html:12
#, fuzzy
-msgid "Please sign in to vote"
-msgstr "請由此進入: "
+msgid "Delete These"
+msgstr "刪除回答"
-#: views/meta.py:84
-msgid "Q&A forum feedback"
-msgstr "Q&A 論壇回饋"
+#: skins/common/templates/question/answer_controls.html:2
+#, fuzzy
+msgid "swap with question"
+msgstr "回答å•é¡Œ"
-#: views/meta.py:85
-msgid "Thanks for the feedback!"
-msgstr "è¬è¬å›žé¥‹"
+#: skins/common/templates/question/answer_controls.html:7
+msgid "permanent link"
+msgstr "永久連çµ"
-#: views/meta.py:94
-msgid "We look forward to hearing your feedback! Please, give it next time :)"
-msgstr "期待你的回饋"
+#: skins/common/templates/question/answer_controls.html:8
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/question_edit_tips.html:40
+msgid "link"
+msgstr "è¯çµ"
-#: views/readers.py:151
-#, fuzzy, python-format
-msgid "%(q_num)s question, tagged"
-msgid_plural "%(q_num)s questions, tagged"
-msgstr[0] "第 %(q_num)s 個å•é¡Œ"
+# todo please check this in chinese
+#: skins/common/templates/question/answer_controls.html:13
+#: skins/common/templates/question/question_controls.html:4
+msgid "undelete"
+msgstr "æ¢å¾©"
-#: views/readers.py:159
+#: skins/common/templates/question/answer_controls.html:19
+#, fuzzy
+msgid "remove offensive flag"
+msgstr "標記垃圾帖"
+
+#: skins/common/templates/question/answer_controls.html:21
+#: skins/common/templates/question/question_controls.html:16
+#, fuzzy
+msgid "remove flag"
+msgstr "查看標籤列表"
+
+#: skins/common/templates/question/answer_controls.html:26
+#: skins/common/templates/question/answer_controls.html:35
+#: skins/common/templates/question/question_controls.html:14
+#: skins/common/templates/question/question_controls.html:20
+#: skins/common/templates/question/question_controls.html:27
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "檢舉該帖為「惡æ„帖ã€ï¼ˆå«å»£å‘Šã€äººèº«æ”»æ“Šã€æƒ¡æ„言論等)"
+
+#: skins/common/templates/question/answer_controls.html:28
+#: skins/common/templates/question/answer_controls.html:37
+#: skins/common/templates/question/question_controls.html:22
+#: skins/common/templates/question/question_controls.html:29
+msgid "flag offensive"
+msgstr "標記惡æ„帖"
+
+#: skins/common/templates/question/answer_controls.html:41
+#: skins/common/templates/question/question_controls.html:36
+#: skins/default/templates/macros.html:311
+#: skins/default/templates/revisions.html:38
+#: skins/default/templates/revisions.html:41
+msgid "edit"
+msgstr "編輯"
+
+#: skins/common/templates/question/answer_vote_buttons.html:6
+#: skins/default/templates/user_profile/user_stats.html:24
+msgid "this answer has been selected as correct"
+msgstr "該回答已被èªç‚ºæ­£ç¢º"
+
+#: skins/common/templates/question/answer_vote_buttons.html:8
+#, fuzzy
+msgid "mark this answer as correct (click again to undo)"
+msgstr "標記為最佳答案(å†æ¬¡é»žæ“Šå–消æ“作)"
+
+#: skins/common/templates/question/closed_question_info.html:2
#, fuzzy, python-format
-msgid "%(q_num)s question"
-msgid_plural "%(q_num)s questions"
-msgstr[0] "第 %(q_num)s 個å•é¡Œ"
+msgid ""
+"The question has been closed for the following reason <b>\"%(close_reason)s"
+"\"</b> <i>by"
+msgstr "å•é¡Œå·²å›  \"%(close_reason)s\" 的原因被關閉"
-#: views/readers.py:199
+#: skins/common/templates/question/closed_question_info.html:4
#, python-format
-msgid "%(badge_count)d %(badge_level)s badge"
-msgid_plural "%(badge_count)d %(badge_level)s badges"
-msgstr[0] ""
+msgid "close date %(closed_at)s"
+msgstr "關閉日期 %(closed_at)s "
+
+#: skins/common/templates/question/question_controls.html:6
+msgid "reopen"
+msgstr "打開"
-#: views/readers.py:415
+#: skins/common/templates/question/question_controls.html:8
+#: skins/default/templates/user_profile/user_inbox.html:67
+msgid "close"
+msgstr "關閉"
+
+#: skins/common/templates/question/question_controls.html:35
#, fuzzy
-msgid ""
-"Sorry, the comment you are looking for has been deleted and is no longer "
-"accessible"
-msgstr "這個å•é¡Œè¢«"
+msgid "retag"
+msgstr "更新了標籤"
-#: views/users.py:211
+#: skins/common/templates/widgets/edit_post.html:22
#, fuzzy
-msgid "moderate this user"
-msgstr "管ç†ç”¨æˆ¶"
+msgid ", one of these is required"
+msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-#: views/users.py:212
+#: skins/common/templates/widgets/edit_post.html:31
+#: skins/common/templates/widgets/edit_post.html:36
#, fuzzy
-msgid "moderate user"
-msgstr "管ç†ç”¨æˆ¶"
+msgid "tags:"
+msgstr "標籤"
-#: views/users.py:386
-msgid "user profile"
-msgstr "用戶資料"
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# #, python-format
+# msgid ""
+# "must have valid %(email)s to post, \n"
+# " see %(email_validation_faq_url)s\n"
+# " "
+# msgstr "使用正確 %(email)s 張貼, \"
+# " åƒè€ƒ %(email_validation_faq_url)s\n"
+# " "
+# #-#-#-#-# django.po (0.7) #-#-#-#-#
+# #, python-format
+# msgid ""
+# "must have valid %(email)s to post, \n"
+# " see %(email_validation_faq_url)s\n"
+# " "
+# msgstr "使用正確 %(email)s 張貼, \"
+# " åƒè€ƒ %(email_validation_faq_url)s\n"
+#: skins/common/templates/widgets/edit_post.html:32
+msgid "(required)"
+msgstr "(å¿…è¦çš„)"
+
+#: skins/common/templates/widgets/edit_post.html:58
+msgid "Toggle the real time Markdown editor preview"
+msgstr "切æ›ç‚º Markdown 編輯器的å³æ™‚é è¦½"
+
+#: skins/common/templates/widgets/edit_post.html:60
+#: skins/default/templates/answer_edit.html:61
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:49 skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:73
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:85
+#: skins/default/templates/question/javascript.html:88
+msgid "hide preview"
+msgstr "ç¦ç”¨é è¦½"
+
+#: skins/common/templates/widgets/related_tags.html:3
+#: skins/default/templates/tags.html:4
+msgid "Tags"
+msgstr "標籤"
-#: views/users.py:387
-msgid "user profile overview"
-msgstr "用戶概覽"
+# book.html line 123 must be empty in english
+#: skins/common/templates/widgets/tag_selector.html:4
+msgid "Interesting tags"
+msgstr "有趣的標籤"
-#: views/users.py:698
-msgid "recent user activity"
-msgstr "最近活動"
+#: skins/common/templates/widgets/tag_selector.html:19
+#: skins/common/templates/widgets/tag_selector.html:36
+#, fuzzy
+msgid "add"
+msgstr "增加"
-#: views/users.py:699
-msgid "profile - recent activity"
-msgstr "最近活動"
+#: skins/common/templates/widgets/tag_selector.html:21
+msgid "Ignored tags"
+msgstr "忽視標籤"
-#: views/users.py:785
-msgid "comments and answers to others questions"
-msgstr "其他用戶的回覆和評論"
+#: skins/common/templates/widgets/tag_selector.html:38
+#, fuzzy
+msgid "Display tag filter"
+msgstr "é¸æ“‡ Email 標籤篩é¸"
-#: views/users.py:786
-msgid "profile - responses"
-msgstr "用戶資料 - 回應 "
+#: skins/default/templates/404.jinja.html:3
+#: skins/default/templates/404.jinja.html:10
+msgid "Page not found"
+msgstr ""
-#: views/users.py:860
-msgid "user vote record"
-msgstr "用戶投票記錄"
+#: skins/default/templates/404.jinja.html:13
+msgid "Sorry, could not find the page you requested."
+msgstr "å°ä¸èµ·ï¼Œæ²’有找到您è¦çš„é é¢ï¼"
-#: views/users.py:861
-msgid "profile - votes"
-msgstr "用戶資料 - 投票"
+#: skins/default/templates/404.jinja.html:15
+msgid "This might have happened for the following reasons:"
+msgstr "å¯èƒ½æ˜¯ä»¥ä¸‹åŽŸå› å°Žè‡´ï¼š"
-#: views/users.py:896
-msgid "user reputation in the community"
-msgstr "用戶社å€ç©åˆ†"
+#: skins/default/templates/404.jinja.html:17
+msgid "this question or answer has been deleted;"
+msgstr "你正在查看的å•é¡Œæˆ–者回答已經被刪除;"
-#: views/users.py:897
-msgid "profile - user reputation"
-msgstr "用戶資料 - ç©åˆ†"
+#: skins/default/templates/404.jinja.html:18
+msgid "url has error - please check it;"
+msgstr "請求的地å€æœ‰èª¤ - 請核實原始 URL 地å€ï¼›"
-#: views/users.py:924
-msgid "users favorite questions"
-msgstr "用戶收è—çš„å•é¡Œ"
+#: skins/default/templates/404.jinja.html:19
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr "訪å•çš„é é¢è¢«ä¿è­·æˆ–ä½ çš„ç©åˆ†ä¸å¤ ï¼Œåƒè¦‹"
-#: views/users.py:925
-msgid "profile - favorite questions"
-msgstr "用戶資料 - 收è—"
+#: skins/default/templates/404.jinja.html:19
+#: skins/default/templates/widgets/footer.html:39
+msgid "faq"
+msgstr "常見å•é¡Œ"
-#: views/users.py:945 views/users.py:949
-msgid "changes saved"
-msgstr "儲存修改"
+#: skins/default/templates/404.jinja.html:20
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "如果你確信ä¸è©²å‡ºç¾ 404 錯誤,請"
-#: views/users.py:955
-msgid "email updates canceled"
-msgstr "å–消電å­éƒµä»¶æ›´æ–°"
+#: skins/default/templates/404.jinja.html:21
+msgid "report this problem"
+msgstr "回報這個å•é¡Œ"
-#: views/users.py:973
-msgid "email subscription settings"
-msgstr "email 訂閱設定"
+#: skins/default/templates/404.jinja.html:30
+#: skins/default/templates/500.jinja.html:11
+msgid "back to previous page"
+msgstr "返回å‰é "
-#: views/users.py:974
-#, fuzzy
-msgid "profile - email subscriptions"
-msgstr "用戶資料 - email 訂閱"
+#: skins/default/templates/404.jinja.html:31
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "see all questions"
+msgstr "查看最新å•é¡Œ"
+
+#: skins/default/templates/404.jinja.html:32
+msgid "see all tags"
+msgstr "查看標籤列表"
+
+#: skins/default/templates/500.jinja.html:3
+#: skins/default/templates/500.jinja.html:5
+msgid "Internal server error"
+msgstr ""
+
+#: skins/default/templates/500.jinja.html:8
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr "系統已記錄錯誤, 並將盡快處ç†"
+
+#: skins/default/templates/500.jinja.html:9
+msgid "please report the error to the site administrators if you wish"
+msgstr "如果你願æ„, 請將錯誤回報管ç†è€…"
+
+#: skins/default/templates/500.jinja.html:12
+msgid "see latest questions"
+msgstr "請看最新å•é¡Œ"
+
+#: skins/default/templates/500.jinja.html:13
+msgid "see tags"
+msgstr "請看標籤"
-#: views/writers.py:58
+#: skins/default/templates/answer_edit.html:4
+#: skins/default/templates/answer_edit.html:10
+msgid "Edit answer"
+msgstr "修改回答"
+
+#: skins/default/templates/answer_edit.html:10
+#: skins/default/templates/question_edit.html:9
+#: skins/default/templates/question_retag.html:5
+#: skins/default/templates/revisions.html:7
+msgid "back"
+msgstr "返回"
+
+#: skins/default/templates/answer_edit.html:14
+msgid "revision"
+msgstr "版本"
+
+#: skins/default/templates/answer_edit.html:17
+#: skins/default/templates/question_edit.html:16
+msgid "select revision"
+msgstr "é¸æ“‡ç‰ˆæœ¬"
+
+# synonym of above in Edit question
+#: skins/default/templates/answer_edit.html:24
+#: skins/default/templates/question_edit.html:35
+msgid "Save edit"
+msgstr "儲存修改"
+
+#: skins/default/templates/answer_edit.html:64
+#: skins/default/templates/ask.html:52
+#: skins/default/templates/question_edit.html:76
+#: skins/default/templates/question/javascript.html:88
+msgid "show preview"
+msgstr "顯示é è¦½"
+
+#: skins/default/templates/ask.html:4
+#: skins/default/templates/widgets/ask_button.html:5
+#: skins/default/templates/widgets/ask_form.html:43
#, fuzzy
-msgid "Sorry, anonymous users cannot upload files"
-msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+msgid "Ask Your Question"
+msgstr "ç¾åœ¨æå•"
-# todo take these out of settings
-#: views/writers.py:68
+#: skins/default/templates/badge.html:5 skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:19
+#: skins/default/templates/user_profile/user_stats.html:108
#, python-format
-msgid "allowed file types are '%(file_types)s'"
-msgstr "åªå…許上傳 '%(file_types)s' 類型的文件ï¼"
+msgid "%(name)s"
+msgstr ""
+
+# #, python-format
+# msgid ""
+# "must have valid %(email)s to post, \n"
+# " see %(email_validation_faq_url)s\n"
+# " "
+# msgstr "使用正確 %(email)s 張貼, \"
+# " åƒè€ƒ %(email_validation_faq_url)s\n"
+# " "
+#: skins/default/templates/badge.html:5
+msgid "Badge"
+msgstr "çŽç‰Œ"
+
+#: skins/default/templates/badge.html:7
+#, python-format
+msgid "Badge \"%(name)s\""
+msgstr ""
-#: views/writers.py:91
+#: skins/default/templates/badge.html:9
+#: skins/default/templates/user_profile/user_recent.html:17
+#: skins/default/templates/user_profile/user_stats.html:106
#, fuzzy, python-format
-msgid "maximum upload file size is %(file_size)sK"
-msgstr "åªå…許上傳 %s K大å°çš„文件ï¼"
+msgid "%(description)s"
+msgstr "email 訂閱"
-#: views/writers.py:99
-#, fuzzy
-msgid "Error uploading file. Please contact the site administrator. Thank you."
-msgstr "在文件上傳éŽç¨‹ä¸­ç”¢ç”Ÿäº†éŒ¯èª¤ï¼Œè«‹è¯ç³»ç®¡ç†å“¡ï¼Œè¬è¬^_^"
+#: skins/default/templates/badge.html:14
+msgid "user received this badge:"
+msgid_plural "users received this badge:"
+msgstr[0] ""
+
+#: skins/default/templates/badges.html:3 skins/default/templates/badges.html:5
+msgid "Badges"
+msgstr "çŽå‹µ"
-#: views/writers.py:191
+#: skins/default/templates/badges.html:7
+msgid "Community gives you awards for your questions, answers and votes."
+msgstr "社群將ä¾ä½ æ出的å•é¡Œï¼Œå›žç­”,投票的表ç¾ï¼ŒçŽå‹µä½ ã€‚"
+
+#: skins/default/templates/badges.html:8
+#, fuzzy, python-format
+msgid ""
+"Below is the list of available badges and number \n"
+" of times each type of badge has been awarded. Have ideas about fun \n"
+"badges? Please, give us your <a href='%%(feedback_faq_url)s'>feedback</a>\n"
+msgstr ""
+"下列為çŽå‹µ, 數目明細 \n"
+" 歡迎給予 %(feedback_faq_url)s 回饋。\n"
+" "
+
+#: skins/default/templates/badges.html:36
+msgid "Community badges"
+msgstr "社群çŽå‹µ"
+
+#: skins/default/templates/badges.html:38
+msgid "gold badge: the highest honor and is very rare"
+msgstr "金牌:å分罕見之最高榮耀"
+
+#: skins/default/templates/badges.html:41
#, fuzzy
-msgid "Please log in to ask questions"
-msgstr "æ­¡è¿Žæå•! "
+msgid ""
+"Gold badge is the highest award in this community. To obtain it have to "
+"show \n"
+"profound knowledge and ability in addition to your active participation."
+msgstr ""
+"金牌是å分罕見的。你ä¸åƒ…è¦åƒèˆ‡ç¤¾å€çš„æå•ã€å›žç­”ã€æŠ•ç¥¨ç­‰æ´»å‹•ï¼Œè€Œä¸”需è¦æœ‰åšæ·±çš„"
+"知識和能力æ‰èƒ½ç²å¾—。"
+
+#: skins/default/templates/badges.html:47
+msgid ""
+"silver badge: occasionally awarded for the very high quality contributions"
+msgstr "銀牌:å¶çˆ¾é ’發之優質çŽç« "
-#: views/writers.py:492
+#: skins/default/templates/badges.html:51
#, fuzzy
-msgid "Please log in to answer questions"
-msgstr "沒有回答的å•é¡Œ"
+msgid ""
+"msgid \"silver badge: occasionally awarded for the very high quality "
+"contributions"
+msgstr "銀牌:å¶çˆ¾é ’發之優質çŽç« "
-#: views/writers.py:598
-#, python-format
+#: skins/default/templates/badges.html:54
+#: skins/default/templates/badges.html:58
+msgid "bronze badge: often given as a special honor"
+msgstr "第三åçŽå‹µ:授予之特殊榮譽"
+
+# close.html
+#: skins/default/templates/close.html:3 skins/default/templates/close.html:5
+msgid "Close question"
+msgstr "çµæŸå•é¡Œ"
+
+#: skins/default/templates/close.html:6
+msgid "Close the question"
+msgstr "çµæŸå•é¡Œ"
+
+#: skins/default/templates/close.html:11
+msgid "Reasons"
+msgstr "原因"
+
+#: skins/default/templates/close.html:15
+msgid "OK to close"
+msgstr "確定關閉"
+
+#: skins/default/templates/faq_static.html:3
+#: skins/default/templates/faq_static.html:5
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16 views/meta.py:61
+msgid "FAQ"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:5
+msgid "Frequently Asked Questions "
+msgstr "常見å•é¡Œ"
+
+#: skins/default/templates/faq_static.html:6
+msgid "What kinds of questions can I ask here?"
+msgstr "我å¯ä»¥åœ¨é€™è£æå•ä»€éº¼æ¨£çš„å•é¡Œï¼Ÿ"
+
+#: skins/default/templates/faq_static.html:7
msgid ""
-"Sorry, you appear to be logged out and cannot post comments. Please <a href="
-"\"%(sign_in_url)s\">sign in</a>."
+"Most importanly - questions should be <strong>relevant</strong> to this "
+"community."
+msgstr "é‡é»žæ˜¯ - å•é¡Œå¿…須是和這社群 <strong>相關</strong>ï¼"
+
+#: skins/default/templates/faq_static.html:8
+#, fuzzy
+msgid ""
+"Before you ask - please make sure to search for a similar question. You can "
+"search questions by their title or tags."
msgstr ""
+"æå•ä¹‹å‰ï¼Œå……分利用系統的自動查找ã€æ¨™ç±¤å’Œæœç´¢ï¼Œçœ‹çœ‹æ˜¯å¦å·²ç¶“有一樣的å•é¡Œä¸¦æœ‰äº†"
+"答案。"
-#: views/writers.py:646
+#: skins/default/templates/faq_static.html:10
#, fuzzy
-msgid "Sorry, anonymous users cannot edit comments"
-msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+msgid "What kinds of questions should be avoided?"
+msgstr "什麼樣的å•é¡Œæˆ‘ä¸è©²åœ¨æ­¤æå•ï¼Ÿ"
-#: views/writers.py:654
-#, python-format
+#: skins/default/templates/faq_static.html:11
msgid ""
-"Sorry, you appear to be logged out and cannot delete comments. Please <a "
-"href=\"%(sign_in_url)s\">sign in</a>."
-msgstr ""
+"Please avoid asking questions that are not relevant to this community, too "
+"subjective and argumentative."
+msgstr "è«‹é¿å…æå•ç„¡é—œçš„,éŽæ–¼ä¸»è§€æ€§ï¼Œæ˜“造æˆçˆ­åµçš„å•é¡Œã€‚"
-#: views/writers.py:675
-msgid "sorry, we seem to have some technical difficulties"
+#: skins/default/templates/faq_static.html:13
+msgid "What should I avoid in my answers?"
+msgstr "什麼樣的回答是ä¸å—歡迎的?"
+
+#: skins/default/templates/faq_static.html:14
+msgid ""
+"is a <strong>question and answer</strong> site - <strong>it is not a "
+"discussion group</strong>. Please avoid holding debates in your answers as "
+"they tend to dilute the essense of questions and answers. For the brief "
+"discussions please use commenting facility."
msgstr ""
+#: skins/default/templates/faq_static.html:15
+msgid "Who moderates this community?"
+msgstr "誰是社群的管ç†å“¡ï¼Ÿ"
+
+#: skins/default/templates/faq_static.html:16
+msgid "The short answer is: <strong>you</strong>."
+msgstr "答案是:<strong>你</strong>。"
+
+#: skins/default/templates/faq_static.html:17
+msgid "This website is moderated by the users."
+msgstr "社群沒有嚴格æ„義上的管ç†å“¡èº«ä»½ï¼Œæ¯å€‹äººçš†å¯ç‚ºç®¡ç†å“¡"
+
+#: skins/default/templates/faq_static.html:18
#, fuzzy
-#~ msgid "Sites"
-#~ msgstr "標題"
+msgid ""
+"Karma system allows users to earn rights to perform a variety of moderation "
+"tasks"
+msgstr "通éŽç©åˆ†ç³»çµ±é‹ä½œï¼Œæ¯å€‹ç”¨æˆ¶å¯ä»¥å­¸ç¿’管ç†è€…的事務。"
+#: skins/default/templates/faq_static.html:20
#, fuzzy
-#~ msgid "Documentation"
-#~ msgstr "城市"
+msgid "How does karma system work?"
+msgstr "社群ç©åˆ†ç³»çµ±å¦‚何é‹ä½œï¼Ÿ"
+
+#: skins/default/templates/faq_static.html:21
+msgid ""
+"When a question or answer is upvoted, the user who posted them will gain "
+"some points, which are called \\\"karma points\\\". These points serve as a "
+"rough measure of the community trust to him/her. Various moderation tasks "
+"are gradually assigned to the users based on those points."
+msgstr ""
-#~ msgid "Change password"
-#~ msgstr "修改密碼"
+#: skins/default/templates/faq_static.html:22
+#, fuzzy, python-format
+msgid ""
+"For example, if you ask an interesting question or give a helpful answer, "
+"your input will be upvoted. On the other hand if the answer is misleading - "
+"it will be downvoted. Each vote in favor will generate <strong>"
+"%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
+"subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. There "
+"is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> points that "
+"can be accumulated for a question or answer per day. The table below "
+"explains reputation point requirements for each type of moderation task."
+msgstr ""
+"例如, 如你æ出一個有趣的å•é¡Œæˆ–有幫助的答案, ç©åˆ†æœƒä¸Šå‡, å之, 如果造æˆèª¤å°Ž, "
+"ç©åˆ†å‰‡ä¸‹é™, æ¯ä¸€å€‹è´ŠæˆæŠ•ç¥¨åŠ  <strong>10</strong> 分, æ¯ä¸€å€‹ä¸å–œæ­¡çš„投票則減 "
+"<strong>10</strong> 分, 總分最高 <strong>200</strong> 分, 表格下方為åƒèˆ‡ç®¡ç†"
+"者事務所需ç©åˆ†ã€‚"
+
+#: skins/default/templates/faq_static.html:32
+#: skins/default/templates/user_profile/user_votes.html:13
+msgid "upvote"
+msgstr "投贊æˆç¥¨"
+# todo - check if it's indeed plural
+#: skins/default/templates/faq_static.html:36
+msgid "add comments"
+msgstr "添加評論"
+
+#: skins/default/templates/faq_static.html:40
+#: skins/default/templates/user_profile/user_votes.html:15
+msgid "downvote"
+msgstr "投åå°ç¥¨"
+
+#: skins/default/templates/faq_static.html:43
#, fuzzy
-#~ msgid "Log out"
-#~ msgstr "登出"
+msgid " accept own answer to own questions"
+msgstr "首次å¯ä»¥æŽ¥å—的答案"
+#: skins/default/templates/faq_static.html:47
#, fuzzy
-#~ msgid "Home"
-#~ msgstr "首é "
+msgid "open and close own questions"
+msgstr "打開關閉任何人的å•é¡Œ"
-# page title
+#: skins/default/templates/faq_static.html:51
#, fuzzy
-#~ msgid "Edit Group Settings"
-#~ msgstr "修改å•é¡Œ"
+msgid "retag other's questions"
+msgstr "給任何å•é¡Œæ•´ç†æ¨™ç±¤"
+#: skins/default/templates/faq_static.html:56
+msgid "edit community wiki questions"
+msgstr "編輯 wiki é¡žå•é¡Œ"
+
+#: skins/default/templates/faq_static.html:61
#, fuzzy
-#~ msgid "Please correct the error below."
-#~ msgid_plural "Please correct the errors below."
-#~ msgstr[0] "請修改下列錯誤: "
+msgid "edit any answer"
+msgstr "編輯任何答案"
+#: skins/default/templates/faq_static.html:65
#, fuzzy
-#~ msgid "Please enter your <span>user name</span>, then sign in"
-#~ msgstr "使用帳號密碼登錄"
+msgid "delete any comment"
+msgstr "刪除æ¯ä¸€å€‹è©•è«–"
+#: skins/default/templates/faq_static.html:69
+msgid "How to change my picture (gravatar) and what is gravatar?"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:70
+msgid ""
+"<p>The picture that appears on the users profiles is called "
+"<strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</"
+"strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a "
+"<strong>cryptographic key</strong> (unbreakable code) is calculated from "
+"your email address. You upload your picture (or your favorite alter ego "
+"image) the website <a href='http://gravatar.com'><strong>gravatar.com</"
+"strong></a> from where we later retreive your image using the key.</"
+"p><p>This way all the websites you trust can show your image next to your "
+"posts and your email address remains private.</p><p>Please "
+"<strong>personalize your account</strong> with an image - just register at "
+"<a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please "
+"be sure to use the same email address that you used to register with us). "
+"Default image that looks like a kitchen tile is generated automatically.</p>"
+msgstr ""
+
+#: skins/default/templates/faq_static.html:71
+msgid "To register, do I need to create new password?"
+msgstr "注冊需è¦ä¸€å€‹æ–°å¯†ç¢¼å—Žï¼Ÿ"
+
+#: skins/default/templates/faq_static.html:72
#, fuzzy
-#~ msgid "(or select another login method above)"
-#~ 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 登錄的帳號就å¯ä»¥ä½¿ç”¨ç³»çµ±ã€‚"
+#: skins/default/templates/faq_static.html:73
#, fuzzy
-#~ msgid "Sign in"
-#~ msgstr "註冊帳號"
+msgid "\"Login now!\""
+msgstr "馬上登錄"
-#~ msgid "Change email"
-#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
+#: skins/default/templates/faq_static.html:75
+msgid "Why other people can edit my questions/answers?"
+msgstr "為什麼其他人å¯ä»¥ä¿®æ”¹æˆ‘çš„å•é¡Œ/回答?"
-#~ msgid "Save your email address"
-#~ msgstr "儲存您的電å­éƒµä»¶åœ°å€"
+#: skins/default/templates/faq_static.html:76
+msgid "Goal of this site is..."
+msgstr "此網站的目的為 ... "
-#~ msgid "change %(email)s info"
-#~ msgstr "æ›´æ› %(email)s é›»å­éƒµä»¶"
+#: skins/default/templates/faq_static.html:76
+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 "here is why email is required, see %(gravatar_faq_url)s"
-#~ msgstr "email å¿…è¦, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+#: skins/default/templates/faq_static.html:77
+msgid "If this approach is not for you, we respect your choice."
+msgstr "如果您ä¸å–œæ­¡é€™ç¨®æ–¹å¼ï¼Œæˆ‘們尊é‡ä½ çš„é¸æ“‡ã€‚"
-#~ msgid "Your new Email"
-#~ msgstr "æ–°é›»å­ä¿¡ç®±"
+#: skins/default/templates/faq_static.html:79
+msgid "Still have questions?"
+msgstr "還有其他å•é¡Œï¼Ÿ"
-#~ msgid "Your Email"
-#~ msgstr "é›»å­ä¿¡ç®±"
+#: skins/default/templates/faq_static.html:80
+#, fuzzy, python-format
+msgid ""
+"Please <a href='%%(ask_question_url)s'>ask</a> your question, help make our "
+"community better!"
+msgstr "å¦‚æžœæ‚¨å° %(ask_question_url)s 還有其他疑å•ï¼Œè«‹ä¸€èµ·ä¾†æ”¹å–„! "
-#, fuzzy
-#~ msgid "Save Email"
-#~ msgstr "儲存電å­ä¿¡ç®±"
+#: skins/default/templates/feedback.html:3
+msgid "Feedback"
+msgstr "å•é¡Œå›žé¥‹"
-#~ msgid "Cancel"
-#~ msgstr "å–消"
+#: skins/default/templates/feedback.html:5
+msgid "Give us your feedback!"
+msgstr "回饋"
+#: skins/default/templates/feedback.html:14
+#, fuzzy, python-format
+msgid ""
+"\n"
+" <span class='big strong'>Dear %(user_name)s</span>, we look forward "
+"to hearing your feedback. \n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>敬愛的 %(user_name)s</span>, 我們樂於收到任何回饋, "
+"請由下方輸入æ„見. \n"
+" "
+
+#: skins/default/templates/feedback.html:21
#, fuzzy
-#~ msgid "Validate email"
-#~ msgstr "驗證電å­ä¿¡ç®±"
+msgid ""
+"\n"
+" <span class='big strong'>Dear visitor</span>, we look forward to "
+"hearing your feedback.\n"
+" Please type and send us your message below.\n"
+" "
+msgstr ""
+"\n"
+" <span class='big strong'>敬愛的åƒè§€è€…</span>, 我們樂於收到任何回饋, 請由下方"
+"輸入æ„見. \n"
+" "
-#~ msgid "validate %(email)s info or go to %(change_email_url)s"
-#~ msgstr "驗證 %(email)s 資料或到 %(change_email_url)s"
+#: skins/default/templates/feedback.html:30
+msgid "(to hear from us please enter a valid email or check the box below)"
+msgstr ""
-#~ msgid "Email not changed"
-#~ msgstr "é›»å­ä¿¡ç®±ä¸è®Š"
+#: skins/default/templates/feedback.html:37
+#: skins/default/templates/feedback.html:46
+msgid "(this field is required)"
+msgstr " (此欄ä¸èƒ½ç‚ºç©ºç™½)"
-#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
-#~ msgstr "如果你è¦åˆ° %(change_email_url)s 舊 %(email)s ä»ä¿ç•™"
+#: skins/default/templates/feedback.html:55
+msgid "(Please solve the captcha)"
+msgstr ""
-#, fuzzy
-#~ msgid "Email changed"
-#~ msgstr "é›»å­ä¿¡ç®±å·²è®Š"
+#: skins/default/templates/feedback.html:63
+msgid "Send Feedback"
+msgstr "é€å‡ºå•é¡Œå›žé¥‹"
-#~ msgid "your current %(email)s can be used for this"
-#~ msgstr "å¯ä»¥ç”¨é›»å­ä¿¡ç®± %(email)s "
+#: skins/default/templates/feedback_email.txt:2
+#, fuzzy, python-format
+msgid ""
+"\n"
+"Hello, this is a %(site_title)s forum feedback message.\n"
+msgstr ""
+"\n"
+" 你好, 這是 %(site_title)s 回饋單\n"
-#~ msgid "Email verified"
-#~ msgstr "é©—è­‰éŽé›»å­ä¿¡ç®±"
+#: skins/default/templates/help.html:2 skins/default/templates/help.html:4
+msgid "Help"
+msgstr ""
-#~ msgid "thanks for verifying email"
-#~ msgstr "æ„Ÿè¬é©—證電å­ä¿¡ç®±"
+#: skins/default/templates/help.html:7
+#, fuzzy, python-format
+msgid "Welcome %(username)s,"
+msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
-#~ msgid "email key not sent"
-#~ msgstr "é›»å­ä¿¡ç®± key 未傳é€"
+#: skins/default/templates/help.html:9
+msgid "Welcome,"
+msgstr ""
-#~ msgid "email key not sent %(email)s change email here %(change_link)s"
-#~ msgstr "%(change_link)s 未傳é€é›»å­ä¿¡ç®± key %(email)s"
+#: skins/default/templates/help.html:13
+#, python-format
+msgid "Thank you for using %(app_name)s, here is how it works."
+msgstr ""
-#, fuzzy
-#~ msgid "Registration"
-#~ msgstr "註冊"
+#: skins/default/templates/help.html:16
+msgid ""
+"This site is for asking and answering questions, not for open-ended "
+"discussions."
+msgstr ""
-#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr "註冊 %(provider)s 帳號, åƒè€ƒ %(gravatar_faq_url)s"
+#: skins/default/templates/help.html:17
+msgid ""
+"We encourage everyone to use “question†space for asking and “answer†for "
+"answering."
+msgstr ""
-#~ msgid ""
-#~ "%(username)s already exists, choose another name for \n"
-#~ " %(provider)s. Email is required too, see "
-#~ "%(gravatar_faq_url)s\n"
-#~ " "
-#~ msgstr ""
-#~ "%(username)s 已註冊, è«‹é¸ç”¨ %(provider)s 其他帳號 \n"
-#~ " åŒæ™‚也需è¦é›»å­ä¿¡ç®±, è«‹åƒè€ƒ %(gravatar_faq_url)s\n"
-#~ " "
+#: skins/default/templates/help.html:20
+msgid ""
+"Despite that, each question and answer can be commented – \n"
+" the comments are good for the limited discussions."
+msgstr ""
-#~ msgid ""
-#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
-#~ msgstr "註冊外在 %(provider)s 帳號, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+#: skins/default/templates/help.html:24
+#, python-format
+msgid ""
+"Voting in %(app_name)s helps to select best answers and thank most helpful "
+"users."
+msgstr ""
-#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
-#~ msgstr "註冊臉書新帳號, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+#: skins/default/templates/help.html:26
+#, python-format
+msgid ""
+"Please vote when you find helpful information,\n"
+" it really helps the %(app_name)s community."
+msgstr ""
-# todo: review this message may be confusing user
-#~ msgid "This account already exists, please use another."
-#~ msgstr "指定帳號已經存在, 請使用別的帳號。"
+#: skins/default/templates/help.html:29
+msgid ""
+"Besides, you can @mention users anywhere in the text to point their "
+"attention,\n"
+" follow users and conversations and report inappropriate content by "
+"flagging it."
+msgstr ""
-#~ msgid "Screen name label"
-#~ msgstr "ç•«é¢æ¨™é¡Œ"
+#: skins/default/templates/help.html:32
+msgid "Enjoy."
+msgstr ""
-#, fuzzy
-#~ msgid "Email address label"
-#~ msgstr "您的電å­éƒµä»¶åœ°å€"
+#: skins/default/templates/import_data.html:2
+#: skins/default/templates/import_data.html:4
+msgid "Import StackExchange data"
+msgstr ""
-#~ msgid "receive updates motivational blurb"
-#~ msgstr "接收到更新的簡介"
+#: skins/default/templates/import_data.html:13
+msgid ""
+"<em>Warning:</em> if your database is not empty, please back it up\n"
+" before attempting this operation."
+msgstr ""
-#~ msgid "please select one of the options above"
-#~ msgstr "è«‹é¸å–上數é¸é …"
+#: skins/default/templates/import_data.html:16
+msgid ""
+"Upload your stackexchange dump .zip file, then wait until\n"
+" the data import completes. This process may take several minutes.\n"
+" Please note that feedback will be printed in plain text.\n"
+" "
+msgstr ""
-#~ msgid "Tag filter tool will be your right panel, once you log in."
-#~ msgstr "一旦簽入, 標籤供èšæœƒåœ¨å³æ¬„"
+#: skins/default/templates/import_data.html:25
+msgid "Import data"
+msgstr ""
-#~ msgid "create account"
-#~ msgstr "新增帳號"
+#: skins/default/templates/import_data.html:27
+msgid ""
+"In the case you experience any difficulties in using this import tool,\n"
+" please try importing your data via command line: <code>python manage."
+"py load_stackexchange path/to/your-data.zip</code>"
+msgstr ""
-#~ msgid "Logout"
-#~ msgstr "登出"
+#: skins/default/templates/instant_notification.html:1
+#, python-format
+msgid "<p>Dear %(receiving_user_name)s,</p>"
+msgstr ""
-#~ msgid "User login"
-#~ msgstr "用戶登錄"
+#: skins/default/templates/instant_notification.html:3
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a>:</"
+"p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " Your answer to %(title)s %(summary)s will be posted once you log "
-#~ "in\n"
-#~ " "
-#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
+#: skins/default/templates/instant_notification.html:8
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s left a <a href=\"%(post_url)s\">new comment</a></"
+"p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "Your question \n"
-#~ " %(title)s %(summary)s will be posted once you log in\n"
-#~ " "
-#~ msgstr "一旦登入, ä½ é‡å° %(title)s %(summary)s 的答覆將會被貼"
+#: skins/default/templates/instant_notification.html:13
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s answered a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "Please check your email and visit the enclosed link to re-connect to your "
-#~ "account"
-#~ msgstr "請輸入密碼"
+#: skins/default/templates/instant_notification.html:19
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s posted a new question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid "Please enter your <span>user name and password</span>, then sign in"
-#~ msgstr "使用帳號密碼登錄"
+#: skins/default/templates/instant_notification.html:25
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated an answer to the question\n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+#: skins/default/templates/instant_notification.html:31
+#, python-format
+msgid ""
+"\n"
+"<p>%(update_author_name)s updated a question \n"
+"<a href=\"%(post_url)s\">%(origin_post_title)s</a></p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:37
+#, python-format
+msgid ""
+"\n"
+"<div>%(content_preview)s</div>\n"
+"<p>Please note - you can easily <a href=\"%(user_subscriptions_url)s"
+"\">change</a>\n"
+"how often you receive these notifications or unsubscribe. Thank you for your "
+"interest in our forum!</p>\n"
+msgstr ""
+
+#: skins/default/templates/instant_notification.html:42
#, fuzzy
-#~ msgid "Login or email"
-#~ msgstr "æ›´æ›é›»å­éƒµä»¶"
+msgid "<p>Sincerely,<br/>Forum Administrator</p>"
+msgstr ""
+"你好, \n"
+" 論壇管ç†è€…"
-#~ msgid "Password"
-#~ msgstr "密碼"
+#: skins/default/templates/instant_notification_reply_by_email.html:3
+msgid ""
+"\n"
+"\n"
+"======= Reply above this line. ====-=-=\n"
+msgstr ""
-#~ msgid "Login"
-#~ msgstr "登錄"
+#: skins/default/templates/instant_notification_reply_by_email.html:8
+#, python-format
+msgid ""
+"\n"
+"You can post an answer or a comment by replying to email notifications. To "
+"do that\n"
+"you need %(reply_by_email_karma_threshold)s karma, you have "
+"%(receiving_user_karma)s karma. \n"
+msgstr ""
-#, fuzzy
-#~ msgid "New password"
-#~ msgstr "é‡è¨­å¯†ç¢¼"
+#: skins/default/templates/macros.html:5
+#, fuzzy, python-format
+msgid "Share this question on %(site)s"
+msgstr "發布我的æå•åˆ°æˆ‘çš„ Twitter "
-#, fuzzy
-#~ msgid "Please, retype"
-#~ msgstr "確èªå¯†ç¢¼"
+#: skins/default/templates/macros.html:16
+#: skins/default/templates/macros.html:436
+#, python-format
+msgid "follow %(alias)s"
+msgstr ""
-#, fuzzy
-#~ msgid "provider"
-#~ msgstr "打開"
+#: skins/default/templates/macros.html:19
+#: skins/default/templates/macros.html:439
+#, python-format
+msgid "unfollow %(alias)s"
+msgstr ""
-#, fuzzy
-#~ msgid "last used"
-#~ msgstr "上次活動時間"
+#: skins/default/templates/macros.html:20
+#: skins/default/templates/macros.html:440
+#, python-format
+msgid "following %(alias)s"
+msgstr ""
-#~ msgid "delete"
-#~ msgstr "刪除"
+#: skins/default/templates/macros.html:33
+msgid "current number of votes"
+msgstr "當å‰ç¸½ç¥¨æ•¸"
+#: skins/default/templates/macros.html:46
#, fuzzy
-#~ msgid "cannot be deleted"
-#~ msgstr "å–消使用者"
+msgid "anonymous user"
+msgstr "匿å者"
-#, fuzzy
-#~ msgid "Still have trouble signing in?"
-#~ msgstr "還有其他å•é¡Œï¼Ÿ"
+#: skins/default/templates/macros.html:79
+msgid "this post is marked as community wiki"
+msgstr ""
-#, fuzzy
-#~ msgid "Please, enter your email address below and obtain a new key"
-#~ msgstr "請輸入密碼"
+#: skins/default/templates/macros.html:82
+#, python-format
+msgid ""
+"This post is a wiki.\n"
+" Anyone with karma &gt;%(wiki_min_rep)s is welcome to improve it."
+msgstr ""
-#, fuzzy
-#~ msgid "Please, enter your email address below to recover your account"
-#~ msgstr "請輸入密碼"
+#: skins/default/templates/macros.html:88
+msgid "asked"
+msgstr "æå•æ–¼"
+#: skins/default/templates/macros.html:90
#, fuzzy
-#~ msgid "recover your account via email"
-#~ msgstr "請設新密碼"
+msgid "answered"
+msgstr "回答"
+#: skins/default/templates/macros.html:92
#, fuzzy
-#~ msgid "Recover your account via email"
-#~ msgstr "請設新密碼"
+msgid "posted"
+msgstr "發表"
-#~ msgid "Why use OpenID?"
-#~ msgstr "為什麼使用 OpenID 登錄?"
-
-#~ msgid "with openid it is easier"
-#~ msgstr "使用 OpenID 更為容易"
+#: skins/default/templates/macros.html:122
+msgid "updated"
+msgstr "æ›´æ–°"
-#~ msgid "reuse openid"
-#~ msgstr "用åŒä¸€å€‹ opedid 帳號"
+# this is how above two are supposed to be
+#: skins/default/templates/macros.html:202
+#, python-format
+msgid "see questions tagged '%(tag)s'"
+msgstr "查看有關 '%(tag)s' çš„å•é¡Œ"
-#~ msgid "openid is widely adopted"
-#~ msgstr "OpenID 廣為被人利用"
+#: skins/default/templates/macros.html:304
+msgid "delete this comment"
+msgstr "刪除任何一個評論"
-#~ msgid "openid is supported open standard"
-#~ msgstr "OpenID 為開放標準"
+#: skins/default/templates/macros.html:507 templatetags/extra_tags.py:43
+#, python-format
+msgid "%(username)s gravatar image"
+msgstr "%(username)s 大頭貼"
-#~ msgid "Find out more"
-#~ msgstr "查看更多"
+#: skins/default/templates/macros.html:516
+#, fuzzy, python-format
+msgid "%(username)s's website is %(url)s"
+msgstr "%(user_name)s karma 更動日誌"
-#~ msgid "Get OpenID"
-#~ msgstr "ç²å– OpenID"
+#: skins/default/templates/macros.html:531
+#: skins/default/templates/macros.html:532
+#: skins/default/templates/macros.html:570
+#: skins/default/templates/macros.html:571
+msgid "previous"
+msgstr "上一é "
+
+#: skins/default/templates/macros.html:543
+#: skins/default/templates/macros.html:582
+msgid "current page"
+msgstr "當å‰é "
+
+#: skins/default/templates/macros.html:545
+#: skins/default/templates/macros.html:552
+#: skins/default/templates/macros.html:584
+#: skins/default/templates/macros.html:591
+#, fuzzy, python-format
+msgid "page %(num)s"
+msgstr "第 %(num)s é "
-#~ msgid "Signup"
-#~ msgstr "註冊帳號"
+#: skins/default/templates/macros.html:556
+#: skins/default/templates/macros.html:595
+msgid "next page"
+msgstr "下一é "
-#, fuzzy
-#~ msgid "Please register by clicking on any of the icons below"
-#~ msgstr "è«‹é¸å–上數é¸é …"
+#: skins/default/templates/macros.html:607
+#, fuzzy, python-format
+msgid "responses for %(username)s"
+msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
-#, fuzzy
-#~ msgid "or create a new user name and password here"
-#~ msgstr "新增帳號密碼"
+#: skins/default/templates/macros.html:610
+#, fuzzy, python-format
+msgid "you have %(response_count)s new response"
+msgid_plural "you have %(response_count)s new responses"
+msgstr[0] "回應"
+#: skins/default/templates/macros.html:613
#, fuzzy
-#~ msgid "Create login name and password"
-#~ msgstr "新增帳號密碼"
+msgid "no new responses yet"
+msgstr "回應"
-#~ msgid "Traditional signup info"
-#~ msgstr "傳統登入事項"
+#: skins/default/templates/macros.html:628
+#: skins/default/templates/macros.html:629
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts and %(seen)s previous"
+msgstr "第一個標記張貼"
-#~ msgid ""
-#~ "Please read and type in the two words below to help us prevent automated "
-#~ "account creation."
-#~ msgstr "請讀å–並輸入下列的字, 以防止自動場產生的帳號. "
+#: skins/default/templates/macros.html:631
+#: skins/default/templates/macros.html:632
+#, fuzzy, python-format
+msgid "%(new)s new flagged posts"
+msgstr "第一個標記張貼"
-#, fuzzy
-#~ msgid "Create Account"
-#~ msgstr "新增帳號"
+#: skins/default/templates/macros.html:637
+#: skins/default/templates/macros.html:638
+#, fuzzy, python-format
+msgid "%(seen)s flagged posts"
+msgstr "第一個標記張貼"
-#~ msgid "or"
-#~ msgstr "或者"
+#: skins/default/templates/main_page.html:11
+msgid "Questions"
+msgstr "å•é¡Œåˆ—表"
+#: skins/default/templates/question.html:110
#, fuzzy
-#~ msgid "return to OpenID login"
-#~ msgstr "返回 OpenID 登錄"
+msgid "post a comment / <strong>some</strong> more"
+msgstr "詳見 <strong>%(counter)s</strong>"
+#: skins/default/templates/question.html:113
#, fuzzy
-#~ msgid "add avatar"
-#~ msgstr "大頭åƒ"
+msgid "see <strong>some</strong> more"
+msgstr "詳見 <strong>%(counter)s</strong>"
+#: skins/default/templates/question.html:117
+#: skins/default/templates/question/javascript.html:20
#, fuzzy
-#~ msgid "Change avatar"
-#~ msgstr "修改標籤"
+msgid "post a comment"
+msgstr "添加評論"
-#, fuzzy
-#~ msgid "Your current avatar: "
-#~ msgstr "帳號詳細: "
+#: skins/default/templates/question.html:135
+#: skins/default/templates/question/content.html:40
+msgid "Answer Your Own Question"
+msgstr "回答å•é¡Œ"
+#: skins/default/templates/question.html:140
#, fuzzy
-#~ msgid "change avatar"
-#~ msgstr "儲存修改"
+msgid "Post Your Answer"
+msgstr "您的回答"
+#: skins/default/templates/question.html:146
+#: skins/default/templates/widgets/ask_form.html:41
#, fuzzy
-#~ msgid "Upload"
-#~ msgstr "個人資料"
+msgid "Login/Signup to Post"
+msgstr "登錄並回答該å•é¡Œ"
-#, fuzzy
-#~ msgid "delete avatar"
-#~ msgstr "刪除回答"
+# page title
+#: skins/default/templates/question_edit.html:4
+#: skins/default/templates/question_edit.html:9
+msgid "Edit question"
+msgstr "修改å•é¡Œ"
+#: skins/default/templates/question_retag.html:3
+#: skins/default/templates/question_retag.html:5
#, fuzzy
-#~ msgid "Delete These"
-#~ msgstr "刪除回答"
+msgid "Retag question"
+msgstr "相似的å•é¡Œ"
-#~ msgid "answer permanent link"
-#~ msgstr "回答的連çµåœ°å€"
+#: skins/default/templates/question_retag.html:21
+#, fuzzy
+msgid "Retag"
+msgstr "標籤"
-#~ msgid "permanent link"
-#~ msgstr "永久連çµ"
+#: skins/default/templates/question_retag.html:28
+msgid "Why use and modify tags?"
+msgstr "為什麼è¦ç”¨æˆ–修改標籤?"
-#~ msgid "edit"
-#~ msgstr "編輯"
+#: skins/default/templates/question_retag.html:30
+msgid "Tags help to keep the content better organized and searchable"
+msgstr ""
-#~ msgid ""
-#~ "report as offensive (i.e containing spam, advertising, malicious text, "
-#~ "etc.)"
-#~ msgstr "檢舉該帖為「惡æ„帖ã€ï¼ˆå«å»£å‘Šã€äººèº«æ”»æ“Šã€æƒ¡æ„言論等)"
+#: skins/default/templates/question_retag.html:32
+msgid "tag editors receive special awards from the community"
+msgstr "將授予修改標籤的用戶特殊的社å€çŽå‹µ"
-#~ msgid "flag offensive"
-#~ msgstr "標記惡æ„帖"
+# todo: remove magic numbers from this file
+#: skins/default/templates/question_retag.html:59
+msgid "up to 5 tags, less than 20 characters each"
+msgstr "最多 5 個標籤,æ¯å€‹æ¨™ç±¤é•·åº¦å°æ–¼ 20 個字元。"
-# todo please check this in chinese
-#~ msgid "undelete"
-#~ msgstr "æ¢å¾©"
+#: skins/default/templates/reopen.html:3 skins/default/templates/reopen.html:5
+msgid "Reopen question"
+msgstr "é‡å•Ÿå•é¡Œ"
+#: skins/default/templates/reopen.html:6
#, fuzzy
-#~ msgid "swap with question"
-#~ msgstr "回答å•é¡Œ"
+msgid "Title"
+msgstr "標題"
+
+#: skins/default/templates/reopen.html:11
+#, python-format
+msgid ""
+"This question has been closed by \n"
+" <a href=\"%(closed_by_profile_url)s\">%(closed_by_username)s</a>\n"
+msgstr ""
+# close.html
+#: skins/default/templates/reopen.html:16
#, fuzzy
-#~ msgid "mark this answer as correct (click again to undo)"
-#~ msgstr "標記為最佳答案(å†æ¬¡é»žæ“Šå–消æ“作)"
+msgid "Close reason:"
+msgstr "çµæŸå•é¡Œ"
+#: skins/default/templates/reopen.html:19
+msgid "When:"
+msgstr ""
+
+#: skins/default/templates/reopen.html:22
#, fuzzy
-#~ msgid "%(question_author)s has selected this answer as correct"
-#~ msgstr "這個答案已經被æå•ä½œè€…標記為最佳答案"
+msgid "Reopen this question?"
+msgstr "é‡å•Ÿé€™å€‹å•é¡Œ"
+#: skins/default/templates/reopen.html:26
#, fuzzy
-#~ msgid ""
-#~ "The question has been closed for the following reason <b>\"%(close_reason)"
-#~ "s\"</b> <i>by"
-#~ msgstr "å•é¡Œå·²å›  \"%(close_reason)s\" 的原因被關閉"
+msgid "Reopen this question"
+msgstr "é‡å•Ÿé€™å€‹å•é¡Œ"
-#~ msgid "close date %(closed_at)s"
-#~ msgstr "關閉日期 %(closed_at)s "
+#: skins/default/templates/reply_by_email_error.html:1
+msgid ""
+"\n"
+"<p>The system was unable to process your message successfully, the reason "
+"being:<p>\n"
+msgstr ""
-#, fuzzy
-#~ msgid "retag"
-#~ msgstr "更新了標籤"
+# revisions_answer.html
+#: skins/default/templates/revisions.html:4
+#: skins/default/templates/revisions.html:7
+msgid "Revision history"
+msgstr "版本歷å²"
-#~ msgid "reopen"
-#~ msgstr "打開"
+#: skins/default/templates/revisions.html:23
+msgid "click to hide/show revision"
+msgstr "é»žé¸ éš±è—/展開 版本"
-#~ msgid "close"
-#~ msgstr "關閉"
+#: skins/default/templates/revisions.html:29
+#, fuzzy, python-format
+msgid "revision %(number)s"
+msgstr "版本"
+#: skins/default/templates/subscribe_for_tags.html:3
+#: skins/default/templates/subscribe_for_tags.html:5
#, fuzzy
-#~ msgid "one of these is required"
-#~ msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-
-# #, python-format
-# msgid ""
-# "must have valid %(email)s to post, \n"
-# " see %(email_validation_faq_url)s\n"
-# " "
-# msgstr "使用正確 %(email)s 張貼, \"
-# " åƒè€ƒ %(email_validation_faq_url)s\n"
-# " "
-#~ msgid "(required)"
-#~ msgstr "(å¿…è¦çš„)"
+msgid "Subscribe for tags"
+msgstr "使用標籤"
-#~ msgid "Toggle the real time Markdown editor preview"
-#~ msgstr "切æ›ç‚º Markdown 編輯器的å³æ™‚é è¦½"
+#: skins/default/templates/subscribe_for_tags.html:6
+#, fuzzy
+msgid "Please, subscribe for the following tags:"
+msgstr "å•é¡Œæ›¾å› ä¸‹è¿°åŽŸå› çµæŸ"
-#~ msgid "hide preview"
-#~ msgstr "ç¦ç”¨é è¦½"
+#: skins/default/templates/subscribe_for_tags.html:15
+#, fuzzy
+msgid "Subscribe"
+msgstr "使用標籤"
-#~ msgid "Related tags"
-#~ msgstr "相關標籤"
+#: skins/default/templates/tags.html:8
+#, python-format
+msgid "Tags, matching \"%(stag)s\""
+msgstr ""
-# book.html line 123 must be empty in english
-#~ msgid "Interesting tags"
-#~ msgstr "有趣的標籤"
+#: skins/default/templates/tags.html:10
+msgid "Tag list"
+msgstr "標籤列表"
+#: skins/default/templates/tags.html:14 skins/default/templates/users.html:9
+#: skins/default/templates/main_page/tab_bar.html:15
#, fuzzy
-#~ msgid "add"
-#~ msgstr "增加"
-
-#~ msgid "Ignored tags"
-#~ msgstr "忽視標籤"
+msgid "Sort by &raquo;"
+msgstr "查詢性質: "
-#, fuzzy
-#~ msgid "Display tag filter"
-#~ msgstr "é¸æ“‡ Email 標籤篩é¸"
+#: skins/default/templates/tags.html:19
+msgid "sorted alphabetically"
+msgstr "按å稱的字æ¯å…ˆå¾Œé †åºæŽ’åº"
-#~ msgid "Sorry, could not find the page you requested."
-#~ msgstr "å°ä¸èµ·ï¼Œæ²’有找到您è¦çš„é é¢ï¼"
+#: skins/default/templates/tags.html:20
+msgid "by name"
+msgstr "按å稱排åº"
-#~ msgid "This might have happened for the following reasons:"
-#~ msgstr "å¯èƒ½æ˜¯ä»¥ä¸‹åŽŸå› å°Žè‡´ï¼š"
+#: skins/default/templates/tags.html:25
+msgid "sorted by frequency of tag use"
+msgstr "按標籤被使用的次數排åº"
-#~ msgid "this question or answer has been deleted;"
-#~ msgstr "你正在查看的å•é¡Œæˆ–者回答已經被刪除;"
+#: skins/default/templates/tags.html:26
+msgid "by popularity"
+msgstr "按æµè¡Œç¨‹åº¦æŽ’åº"
-#~ msgid "url has error - please check it;"
-#~ msgstr "請求的地å€æœ‰èª¤ - 請核實原始 URL 地å€ï¼›"
+#: skins/default/templates/tags.html:31 skins/default/templates/tags.html:56
+msgid "Nothing found"
+msgstr "毫無所ç²"
-#~ msgid ""
-#~ "the page you tried to visit is protected or you don't have sufficient "
-#~ "points, see"
-#~ msgstr "訪å•çš„é é¢è¢«ä¿è­·æˆ–ä½ çš„ç©åˆ†ä¸å¤ ï¼Œåƒè¦‹"
+#: skins/default/templates/users.html:4 skins/default/templates/users.html:6
+msgid "Users"
+msgstr "用戶列表"
-#~ msgid "faq"
-#~ msgstr "常見å•é¡Œ"
+#: skins/default/templates/users.html:14
+msgid "see people with the highest reputation"
+msgstr ""
-#~ msgid "if you believe this error 404 should not have occured, please"
-#~ msgstr "如果你確信ä¸è©²å‡ºç¾ 404 錯誤,請"
+#: skins/default/templates/users.html:15
+#: skins/default/templates/user_profile/user_info.html:25
+#: skins/default/templates/user_profile/user_reputation.html:4
+#: skins/default/templates/user_profile/user_tabs.html:23
+msgid "karma"
+msgstr ""
-#~ msgid "report this problem"
-#~ msgstr "回報這個å•é¡Œ"
+#: skins/default/templates/users.html:20
+msgid "see people who joined most recently"
+msgstr ""
-#~ msgid "back to previous page"
-#~ msgstr "返回å‰é "
+#: skins/default/templates/users.html:21
+msgid "recent"
+msgstr "最新加入"
-#~ msgid "see all questions"
-#~ msgstr "查看最新å•é¡Œ"
+#: skins/default/templates/users.html:26
+msgid "see people who joined the site first"
+msgstr ""
-#~ msgid "see all tags"
-#~ msgstr "查看標籤列表"
+#: skins/default/templates/users.html:32
+msgid "see people sorted by name"
+msgstr ""
-#~ msgid ""
-#~ "system error log is recorded, error will be fixed as soon as possible"
-#~ msgstr "系統已記錄錯誤, 並將盡快處ç†"
+#: skins/default/templates/users.html:33
+msgid "by username"
+msgstr "用戶å"
-#~ msgid "please report the error to the site administrators if you wish"
-#~ msgstr "如果你願æ„, 請將錯誤回報管ç†è€…"
+#: skins/default/templates/users.html:39
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr "åˆä¹Ž %(suser)s 查詢的所有用戶å:"
-#~ msgid "see latest questions"
-#~ msgstr "請看最新å•é¡Œ"
+#: skins/default/templates/users.html:42
+msgid "Nothing found."
+msgstr "沒有找到相關數據。"
-#~ msgid "see tags"
-#~ msgstr "請看標籤"
+#: skins/default/templates/main_page/headline.html:4 views/readers.py:135
+#, fuzzy, python-format
+msgid "%(q_num)s question"
+msgid_plural "%(q_num)s questions"
+msgstr[0] "第 %(q_num)s 個å•é¡Œ"
-#~ msgid "Edit answer"
-#~ msgstr "修改回答"
+#: skins/default/templates/main_page/headline.html:6
+#, python-format
+msgid "with %(author_name)s's contributions"
+msgstr "%(author_name)s çš„è²¢ç»"
-#~ msgid "back"
-#~ msgstr "返回"
+#: skins/default/templates/main_page/headline.html:12
+#, fuzzy
+msgid "Tagged"
+msgstr "標記"
-#~ msgid "revision"
-#~ msgstr "版本"
+#: skins/default/templates/main_page/headline.html:24
+msgid "Search tips:"
+msgstr "æœå°‹æŠ€å·§: "
-#~ msgid "select revision"
-#~ msgstr "é¸æ“‡ç‰ˆæœ¬"
+#: skins/default/templates/main_page/headline.html:27
+msgid "reset author"
+msgstr "é‡è¨­ä½œè€…"
-# synonym of above in Edit question
-#~ msgid "Save edit"
-#~ msgstr "儲存修改"
+#: skins/default/templates/main_page/headline.html:29
+#: skins/default/templates/main_page/headline.html:32
+#: skins/default/templates/main_page/nothing_found.html:18
+#: skins/default/templates/main_page/nothing_found.html:21
+#, fuzzy
+msgid " or "
+msgstr "或者"
-#~ msgid "show preview"
-#~ msgstr "顯示é è¦½"
+#: skins/default/templates/main_page/headline.html:30
+msgid "reset tags"
+msgstr "é‡è¨­æ¨™ç±¤"
-#~ msgid "Ask a question"
-#~ msgstr "我è¦æå•"
+#: skins/default/templates/main_page/headline.html:33
+#: skins/default/templates/main_page/headline.html:36
+msgid "start over"
+msgstr "é‡æ–°é–‹å§‹"
-# #, python-format
-# msgid ""
-# "must have valid %(email)s to post, \n"
-# " see %(email_validation_faq_url)s\n"
-# " "
-# msgstr "使用正確 %(email)s 張貼, \"
-# " åƒè€ƒ %(email_validation_faq_url)s\n"
-# " "
-#~ msgid "Badge"
-#~ msgstr "çŽç‰Œ"
+#: skins/default/templates/main_page/headline.html:38
+msgid " - to expand, or dig in by adding more tags and revising the query."
+msgstr " - 使用更多的標籤更改查詢找資料"
-#, fuzzy
-#~ msgid "%(description)s"
-#~ msgstr "email 訂閱"
+#: skins/default/templates/main_page/headline.html:41
+msgid "Search tip:"
+msgstr "查詢技巧: "
-#~ msgid "Badges summary"
-#~ msgstr "çŽå‹µåˆ—表"
+#: skins/default/templates/main_page/headline.html:41
+msgid "add tags and a query to focus your search"
+msgstr "增加標籤和查詢加強æœå°‹"
-#~ msgid "Badges"
-#~ msgstr "çŽå‹µ"
+#: skins/default/templates/main_page/nothing_found.html:4
+msgid "There are no unanswered questions here"
+msgstr "無未解答å•é¡Œ"
-#~ msgid "Community gives you awards for your questions, answers and votes."
-#~ msgstr "社群將ä¾ä½ æ出的å•é¡Œï¼Œå›žç­”,投票的表ç¾ï¼ŒçŽå‹µä½ ã€‚"
+#: skins/default/templates/main_page/nothing_found.html:7
+#, fuzzy
+msgid "No questions here. "
+msgstr "無被收è—å•é¡Œ"
+#: skins/default/templates/main_page/nothing_found.html:8
#, fuzzy
-#~ msgid ""
-#~ "Below is the list of available badges and number \n"
-#~ "of times each type of badge has been awarded. Give us feedback at "
-#~ "%(feedback_faq_url)s.\n"
-#~ msgstr ""
-#~ "下列為çŽå‹µ, 數目明細 \n"
-#~ " 歡迎給予 %(feedback_faq_url)s 回饋。\n"
-#~ " "
+msgid "Please follow some questions or follow some users."
+msgstr "一旦開始觀看請記錄å•é¡Œ"
-#~ msgid "Community badges"
-#~ msgstr "社群çŽå‹µ"
+#: skins/default/templates/main_page/nothing_found.html:13
+msgid "You can expand your search by "
+msgstr "廣泛æœå°‹å¯ç”±"
-#~ msgid "gold badge: the highest honor and is very rare"
-#~ msgstr "金牌:å分罕見之最高榮耀"
+#: skins/default/templates/main_page/nothing_found.html:16
+msgid "resetting author"
+msgstr "é‡è¨­ä½œè€…"
-#~ msgid "gold badge description"
-#~ msgstr "第一åçŽå‹µç´°ç¯€"
+# book.html line 123 must be empty in english
+#: skins/default/templates/main_page/nothing_found.html:19
+msgid "resetting tags"
+msgstr "é‡è¨­æ¨™ç±¤"
-#~ msgid ""
-#~ "silver badge: occasionally awarded for the very high quality contributions"
-#~ msgstr "銀牌:å¶çˆ¾é ’發之優質çŽç« "
+#: skins/default/templates/main_page/nothing_found.html:22
+#: skins/default/templates/main_page/nothing_found.html:25
+msgid "starting over"
+msgstr "é‡æ–°é–‹å§‹"
-#~ msgid "silver badge description"
-#~ msgstr "第二åçŽå‹µç´°ç¯€"
+#: skins/default/templates/main_page/nothing_found.html:30
+#, fuzzy
+msgid "Please always feel free to ask your question!"
+msgstr "æ­¡è¿Žæå•! "
-#~ msgid "bronze badge: often given as a special honor"
-#~ msgstr "第三åçŽå‹µ:授予之特殊榮譽"
+#: skins/default/templates/main_page/questions_loop.html:11
+msgid "Did not find what you were looking for?"
+msgstr "找ä¸åˆ°çµæžœ? "
-#~ msgid "bronze badge description"
-#~ msgstr "第三åçŽå‹µç´°ç¯€"
+#: skins/default/templates/main_page/questions_loop.html:12
+msgid "Please, post your question!"
+msgstr "ç¾åœ¨æå•"
-# close.html
-#~ msgid "Close question"
-#~ msgstr "çµæŸå•é¡Œ"
+#: skins/default/templates/main_page/tab_bar.html:10
+msgid "subscribe to the questions feed"
+msgstr "訂閱最新å•é¡Œ"
-#~ msgid "Close the question"
-#~ msgstr "çµæŸå•é¡Œ"
+#: skins/default/templates/main_page/tab_bar.html:11
+msgid "RSS"
+msgstr ""
-#~ msgid "Reasons"
-#~ msgstr "原因"
+#: skins/default/templates/meta/bottom_scripts.html:7
+#, python-format
+msgid ""
+"Please note: %(app_name)s requires javascript to work properly, please "
+"enable javascript in your browser, <a href=\"%(noscript_url)s\">here is how</"
+"a>"
+msgstr ""
-#~ msgid "OK to close"
-#~ msgstr "確定關閉"
+#: skins/default/templates/meta/editor_data.html:7
+#, fuzzy, python-format
+msgid "each tag must be shorter that %(max_chars)s character"
+msgid_plural "each tag must be shorter than %(max_chars)s characters"
+msgstr[0] "æ¯å€‹æ¨™ç±¤çš„長度ä¸è¶…éŽ%(max_chars)s"
-#~ msgid "Frequently Asked Questions "
-#~ msgstr "常見å•é¡Œ"
+#: skins/default/templates/meta/editor_data.html:9
+#, fuzzy, python-format
+msgid "please use %(tag_count)s tag"
+msgid_plural "please use %(tag_count)s tags or less"
+msgstr[0] "最多åªèƒ½æœ‰%(tag_count)s個標籤"
-#~ msgid "What kinds of questions can I ask here?"
-#~ msgstr "我å¯ä»¥åœ¨é€™è£æå•ä»€éº¼æ¨£çš„å•é¡Œï¼Ÿ"
+# todo: remove magic numbers from this file
+#: skins/default/templates/meta/editor_data.html:10
+#, fuzzy, python-format
+msgid ""
+"please use up to %(tag_count)s tags, less than %(max_chars)s characters each"
+msgstr "最多 5 個標籤,æ¯å€‹æ¨™ç±¤é•·åº¦å°æ–¼ %(tag_count)s 個字元。"
-#~ msgid ""
-#~ "Most importanly - questions should be <strong>relevant</strong> to this "
-#~ "community."
-#~ msgstr "é‡é»žæ˜¯ - å•é¡Œå¿…須是和這社群 <strong>相關</strong>ï¼"
+#: skins/default/templates/question/answer_tab_bar.html:3
+#, fuzzy, python-format
+msgid ""
+"\n"
+" %(counter)s Answer\n"
+" "
+msgid_plural ""
+"\n"
+" %(counter)s Answers\n"
+" "
+msgstr[0] ""
+"\n"
+" %(counter)s 答案:"
-#~ msgid ""
-#~ "Before asking the question - please make sure to use search to see "
-#~ "whether your question has alredy been answered."
-#~ msgstr ""
-#~ "æå•ä¹‹å‰ï¼Œå……分利用系統的自動查找ã€æ¨™ç±¤å’Œæœç´¢ï¼Œçœ‹çœ‹æ˜¯å¦å·²ç¶“有一樣的å•é¡Œä¸¦æœ‰"
-#~ "了答案。"
+#: skins/default/templates/question/answer_tab_bar.html:11
+#, fuzzy
+msgid "Sort by »"
+msgstr "查詢性質: "
-#~ msgid "What questions should I avoid asking?"
-#~ msgstr "什麼樣的å•é¡Œæˆ‘ä¸è©²åœ¨æ­¤æå•ï¼Ÿ"
+#: skins/default/templates/question/answer_tab_bar.html:14
+msgid "oldest answers will be shown first"
+msgstr "最先回答將顯示在最å‰é¢"
-#~ msgid ""
-#~ "Please avoid asking questions that are not relevant to this community, "
-#~ "too subjective and argumentative."
-#~ msgstr "è«‹é¿å…æå•ç„¡é—œçš„,éŽæ–¼ä¸»è§€æ€§ï¼Œæ˜“造æˆçˆ­åµçš„å•é¡Œã€‚"
+#: skins/default/templates/question/answer_tab_bar.html:17
+msgid "newest answers will be shown first"
+msgstr "最晚回答將顯示在最å‰é¢"
-#~ msgid "What should I avoid in my answers?"
-#~ msgstr "什麼樣的回答是ä¸å—歡迎的?"
+#: skins/default/templates/question/answer_tab_bar.html:20
+msgid "most voted answers will be shown first"
+msgstr "投票次數最多的將顯示在最å‰é¢"
-#~ 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 " 此為 å•é¡Œ/回答 網站,éžè¨Žè«–å€ï¼Œè«‹å‹¿åœ¨æ­¤è¨Žè«–或評論答案。"
+#: skins/default/templates/question/new_answer_form.html:16
+#, fuzzy
+msgid "Login/Signup to Answer"
+msgstr "登錄並回答該å•é¡Œ"
-#~ msgid "Who moderates this community?"
-#~ msgstr "誰是社群的管ç†å“¡ï¼Ÿ"
+#: skins/default/templates/question/new_answer_form.html:24
+msgid "Your answer"
+msgstr "您的回答"
-#~ msgid "The short answer is: <strong>you</strong>."
-#~ msgstr "答案是:<strong>你</strong>。"
+#: skins/default/templates/question/new_answer_form.html:26
+msgid "Be the first one to answer this question!"
+msgstr "這å•é¡Œçš„第一個解答者"
-#~ msgid "This website is moderated by the users."
-#~ msgstr "社群沒有嚴格æ„義上的管ç†å“¡èº«ä»½ï¼Œæ¯å€‹äººçš†å¯ç‚ºç®¡ç†å“¡"
+#: skins/default/templates/question/new_answer_form.html:32
+msgid ""
+"<span class='strong big'>Please start posting your answer anonymously</span> "
+"- your answer will be saved within the current session and published after "
+"you log in or create a new account. Please try to give a <strong>substantial "
+"answer</strong>, for discussions, <strong>please use comments</strong> and "
+"<strong>please do remember to vote</strong> (after you log in)!"
+msgstr ""
-#~ msgid ""
-#~ "The reputation system allows users earn the authorization to perform a "
-#~ "variety of moderation tasks."
-#~ msgstr "通éŽç©åˆ†ç³»çµ±é‹ä½œï¼Œæ¯å€‹ç”¨æˆ¶å¯ä»¥å­¸ç¿’管ç†è€…的事務。"
+#: skins/default/templates/question/new_answer_form.html:36
+msgid ""
+"<span class='big strong'>You are welcome to answer your own question</span>, "
+"but please make sure to give an <strong>answer</strong>. Remember that you "
+"can always <strong>revise your original question</strong>. Please "
+"<strong>use comments for discussions</strong> and <strong>please don't "
+"forget to vote :)</strong> for the answers that you liked (or perhaps did "
+"not like)!"
+msgstr ""
-#~ msgid "How does reputation system work?"
-#~ msgstr "社群ç©åˆ†ç³»çµ±å¦‚何é‹ä½œï¼Ÿ"
+#: skins/default/templates/question/new_answer_form.html:38
+msgid ""
+"<span class='big strong'>Please try to give a substantial answer</span>. If "
+"you wanted to comment on the question or answer, just <strong>use the "
+"commenting tool</strong>. Please remember that you can always <strong>revise "
+"your answers</strong> - no need to answer the same question twice. Also, "
+"please <strong>don't forget to vote</strong> - it really helps to select the "
+"best questions and answers!"
+msgstr ""
-#~ msgid "Rep system summary"
-#~ msgstr "更新概è¦ï¼š"
+#: skins/default/templates/question/sharing_prompt_phrase.html:2
+#, python-format
+msgid ""
+"Know someone who can answer? Share a <a href=\"%(question_url)s\">link</a> "
+"to this question via"
+msgstr ""
+#: skins/default/templates/question/sharing_prompt_phrase.html:8
#, fuzzy
-#~ msgid ""
-#~ "For example, if you ask an interesting question or give a helpful answer, "
-#~ "your input will be upvoted. On the other hand if the answer is misleading "
-#~ "- it will be downvoted. Each vote in favor will generate <strong>"
-#~ "%(REP_GAIN_FOR_RECEIVING_UPVOTE)s</strong> points, each vote against will "
-#~ "subtract <strong>%(REP_LOSS_FOR_RECEIVING_DOWNVOTE)s</strong> points. "
-#~ "There is a limit of <strong>%(MAX_REP_GAIN_PER_USER_PER_DAY)s</strong> "
-#~ "points that can be accumulated for a question or answer per day. The "
-#~ "table below explains reputation point requirements for each type of "
-#~ "moderation task."
-#~ msgstr ""
-#~ "例如, 如你æ出一個有趣的å•é¡Œæˆ–有幫助的答案, ç©åˆ†æœƒä¸Šå‡, å之, 如果造æˆèª¤"
-#~ "å°Ž, ç©åˆ†å‰‡ä¸‹é™, æ¯ä¸€å€‹è´ŠæˆæŠ•ç¥¨åŠ  <strong>10</strong> 分, æ¯ä¸€å€‹ä¸å–œæ­¡çš„投"
-#~ "票則減 <strong>10</strong> 分, 總分最高 <strong>200</strong> 分, 表格下方"
-#~ "為åƒèˆ‡ç®¡ç†è€…事務所需ç©åˆ†ã€‚"
+msgid " or"
+msgstr "或者"
-#~ msgid "upvote"
-#~ msgstr "投贊æˆç¥¨"
+#: skins/default/templates/question/sharing_prompt_phrase.html:10
+msgid "email"
+msgstr "email"
+#: skins/default/templates/question/sidebar.html:6
#, fuzzy
-#~ msgid "use tags"
-#~ msgstr "使用標籤"
+msgid "Question tools"
+msgstr "å•é¡Œæ¨™ç±¤"
-# todo - check if it's indeed plural
-#~ msgid "add comments"
-#~ msgstr "添加評論"
+#: skins/default/templates/question/sidebar.html:9
+#, fuzzy
+msgid "click to unfollow this question"
+msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
-#~ msgid "downvote"
-#~ msgstr "投åå°ç¥¨"
+#: skins/default/templates/question/sidebar.html:10
+#, fuzzy
+msgid "Following"
+msgstr "所有å•é¡Œ"
+#: skins/default/templates/question/sidebar.html:11
#, fuzzy
-#~ msgid " accept own answer to own questions"
-#~ msgstr "首次å¯ä»¥æŽ¥å—的答案"
+msgid "Unfollow"
+msgstr "所有å•é¡Œ"
+#: skins/default/templates/question/sidebar.html:15
#, fuzzy
-#~ msgid "open and close own questions"
-#~ msgstr "打開關閉任何人的å•é¡Œ"
+msgid "click to follow this question"
+msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
+#: skins/default/templates/question/sidebar.html:16
#, fuzzy
-#~ msgid "retag other's questions"
-#~ msgstr "給任何å•é¡Œæ•´ç†æ¨™ç±¤"
+msgid "Follow"
+msgstr "所有å•é¡Œ"
-#~ msgid "edit community wiki questions"
-#~ msgstr "編輯 wiki é¡žå•é¡Œ"
+#: skins/default/templates/question/sidebar.html:23
+#, python-format
+msgid "%(count)s follower"
+msgid_plural "%(count)s followers"
+msgstr[0] ""
+#: skins/default/templates/question/sidebar.html:29
#, fuzzy
-#~ msgid "\"edit any answer"
-#~ msgstr "編輯任何答案"
+msgid "email the updates"
+msgstr "å–消電å­éƒµä»¶æ›´æ–°"
+#: skins/default/templates/question/sidebar.html:32
+msgid ""
+"<strong>Here</strong> (once you log in) you will be able to sign up for the "
+"periodic email updates about this question."
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:37
#, fuzzy
-#~ msgid "\"delete any comment"
-#~ msgstr "刪除æ¯ä¸€å€‹è©•è«–"
+msgid "subscribe to this question rss feed"
+msgstr "訂閱最新å•é¡Œ"
-#~ msgid "what is gravatar"
-#~ msgstr "何謂大頭貼æœå‹™"
+#: skins/default/templates/question/sidebar.html:38
+#, fuzzy
+msgid "subscribe to rss feed"
+msgstr "訂閱最新å•é¡Œ"
-#~ msgid "gravatar faq info"
-#~ msgstr "大頭貼æœå‹™å¸¸å•é›†"
+#: skins/default/templates/question/sidebar.html:46
+msgid "Stats"
+msgstr ""
+
+#: skins/default/templates/question/sidebar.html:48
+#, fuzzy
+msgid "Asked"
+msgstr "æå•æ–¼"
+
+#: skins/default/templates/question/sidebar.html:51
+msgid "Seen"
+msgstr ""
-#~ msgid "To register, do I need to create new password?"
-#~ msgstr "注冊需è¦ä¸€å€‹æ–°å¯†ç¢¼å—Žï¼Ÿ"
+#: skins/default/templates/question/sidebar.html:51
+msgid "times"
+msgstr "次"
+#: skins/default/templates/question/sidebar.html:54
#, fuzzy
-#~ 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 "Last updated"
+msgstr "最後更新時間"
+
+#: skins/default/templates/question/sidebar.html:62
+msgid "Related questions"
+msgstr "相似的å•é¡Œ"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:5
#, fuzzy
-#~ msgid "\"Login now!\""
-#~ msgstr "馬上登錄"
+msgid "Email me when there are any new answers"
+msgstr "若有新答案請知會我"
-#~ msgid "Why other people can edit my questions/answers?"
-#~ msgstr "為什麼其他人å¯ä»¥ä¿®æ”¹æˆ‘çš„å•é¡Œ/回答?"
+#: skins/default/templates/question/subscribe_by_email_prompt.html:11
+msgid "once you sign in you will be able to subscribe for any updates here"
+msgstr "一旦é·å…¥ä½ å¯ä»¥è¨‚閱任何更新"
-#~ msgid "Goal of this site is..."
-#~ msgstr "此網站的目的為 ... "
+#: skins/default/templates/question/subscribe_by_email_prompt.html:12
+msgid ""
+"<span class='strong'>Here</span> (once you log in) you will be able to sign "
+"up for the periodic email updates about this question."
+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 一樣å¯ç·¨è¼¯çš„,進而ç©ç´¯æ›´å¤šæœ‰ç”¨çš„知識和經驗。"
+#: skins/default/templates/user_profile/user.html:12
+#, fuzzy, python-format
+msgid "%(username)s's profile"
+msgstr "用戶資料"
-#~ msgid "If this approach is not for you, we respect your choice."
-#~ msgstr "如果您ä¸å–œæ­¡é€™ç¨®æ–¹å¼ï¼Œæˆ‘們尊é‡ä½ çš„é¸æ“‡ã€‚"
+#: skins/default/templates/user_profile/user_edit.html:4
+msgid "Edit user profile"
+msgstr "修改個人資料"
-#~ msgid "Still have questions?"
-#~ msgstr "還有其他å•é¡Œï¼Ÿ"
+#: skins/default/templates/user_profile/user_edit.html:7
+msgid "edit profile"
+msgstr "修改資料"
-#, fuzzy
-#~ msgid ""
-#~ "Please ask your question at %(ask_question_url)s, help make our community "
-#~ "better!"
-#~ msgstr "å¦‚æžœæ‚¨å° %(ask_question_url)s 還有其他疑å•ï¼Œè«‹ä¸€èµ·ä¾†æ”¹å–„! "
+#: skins/default/templates/user_profile/user_edit.html:21
+#: skins/default/templates/user_profile/user_info.html:15
+msgid "change picture"
+msgstr "æ›´æ›ç…§ç‰‡"
-#~ msgid "Feedback"
-#~ msgstr "å•é¡Œå›žé¥‹"
+#: skins/default/templates/user_profile/user_edit.html:25
+#: skins/default/templates/user_profile/user_info.html:19
+msgid "remove"
+msgstr ""
-#~ msgid "Give us your feedback!"
-#~ msgstr "回饋"
+#: skins/default/templates/user_profile/user_edit.html:32
+msgid "Registered user"
+msgstr "註冊用戶"
+#: skins/default/templates/user_profile/user_edit.html:39
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear %(user_name)s</span>, we look "
-#~ "forward to hearing your feedback. \n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>敬愛的 %(user_name)s</span>, 我們樂於收到任何回"
-#~ "饋, 請由下方輸入æ„見. \n"
-#~ " "
+msgid "Screen Name"
+msgstr "當é "
+#: skins/default/templates/user_profile/user_edit.html:59
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " <span class='big strong'>Dear visitor</span>, we look forward to "
-#~ "hearing your feedback.\n"
-#~ " Please type and send us your message below.\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ " <span class='big strong'>敬愛的åƒè§€è€…</span>, 我們樂於收到任何回饋, è«‹ç”±"
-#~ "下方輸入æ„見. \n"
-#~ " "
+msgid "(cannot be changed)"
+msgstr "å–消使用者"
+
+#: skins/default/templates/user_profile/user_edit.html:101
+#: skins/default/templates/user_profile/user_email_subscriptions.html:22
+msgid "Update"
+msgstr "æ›´æ–°"
-#~ msgid "(this field is required)"
-#~ msgstr " (此欄ä¸èƒ½ç‚ºç©ºç™½)"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:4
+#: skins/default/templates/user_profile/user_tabs.html:42
+#, fuzzy
+msgid "subscriptions"
+msgstr "email 訂閱"
-#~ msgid "Send Feedback"
-#~ msgstr "é€å‡ºå•é¡Œå›žé¥‹"
+#: skins/default/templates/user_profile/user_email_subscriptions.html:7
+msgid "Email subscription settings"
+msgstr "Email 訂閱設定"
+
+#: skins/default/templates/user_profile/user_email_subscriptions.html:9
+msgid ""
+"<span class='big strong'>Adjust frequency of email updates.</span> Receive "
+"updates on interesting questions by email, <strong><br/>help the community</"
+"strong> by answering questions of your colleagues. If you do not wish to "
+"receive emails - select 'no email' on all items below.<br/>Updates are only "
+"sent when there is any new activity on selected items."
+msgstr ""
+#: skins/default/templates/user_profile/user_email_subscriptions.html:23
#, fuzzy
-#~ msgid "<p>Sincerely,<br/>Forum Administrator</p>"
-#~ msgstr ""
-#~ "你好, \n"
-#~ " 論壇管ç†è€…"
+msgid "Stop Email"
+msgstr "é›»å­ä¿¡ç®±"
+#: skins/default/templates/user_profile/user_favorites.html:4
+#: skins/default/templates/user_profile/user_tabs.html:27
#, fuzzy
-#~ msgid "Share this question on %(site)s"
-#~ msgstr "發布我的æå•åˆ°æˆ‘çš„ Twitter "
+msgid "followed questions"
+msgstr "所有å•é¡Œ"
+
+#: skins/default/templates/user_profile/user_inbox.html:18
+#: skins/default/templates/user_profile/user_tabs.html:12
+msgid "inbox"
+msgstr ""
+#: skins/default/templates/user_profile/user_inbox.html:34
#, fuzzy
-#~ msgid "i like this question (click again to cancel)"
-#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
+msgid "Sections:"
+msgstr "å•é¡Œ"
-#~ msgid "i like this answer (click again to cancel)"
-#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
+#: skins/default/templates/user_profile/user_inbox.html:38
+#, python-format
+msgid "forum responses (%(re_count)s)"
+msgstr ""
-#~ msgid "current number of votes"
-#~ msgstr "當å‰ç¸½ç¥¨æ•¸"
+#: skins/default/templates/user_profile/user_inbox.html:43
+#, fuzzy, python-format
+msgid "flagged items (%(flag_count)s)"
+msgstr "最多åªèƒ½æœ‰%(tag_count)s個標籤"
+#: skins/default/templates/user_profile/user_inbox.html:49
+#: skins/default/templates/user_profile/user_inbox.html:61
#, fuzzy
-#~ msgid "i dont like this question (click again to cancel)"
-#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
+msgid "select:"
+msgstr "刪除"
-#~ msgid "i dont like this answer (click again to cancel)"
-#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
+#: skins/default/templates/user_profile/user_inbox.html:51
+#: skins/default/templates/user_profile/user_inbox.html:63
+#, fuzzy
+msgid "seen"
+msgstr "查看"
+#: skins/default/templates/user_profile/user_inbox.html:52
+#: skins/default/templates/user_profile/user_inbox.html:64
#, fuzzy
-#~ msgid "anonymous user"
-#~ msgstr "匿å者"
+msgid "new"
+msgstr "最新å•é¡Œ"
-#~ msgid "asked"
-#~ msgstr "æå•æ–¼"
+#: skins/default/templates/user_profile/user_inbox.html:53
+#: skins/default/templates/user_profile/user_inbox.html:65
+#, fuzzy
+msgid "none"
+msgstr "第三å"
+#: skins/default/templates/user_profile/user_inbox.html:54
#, fuzzy
-#~ msgid "answered"
-#~ msgstr "回答"
+msgid "mark as seen"
+msgstr "上次活動時間"
+#: skins/default/templates/user_profile/user_inbox.html:55
#, fuzzy
-#~ msgid "posted"
-#~ msgstr "發表"
+msgid "mark as new"
+msgstr "標記最佳答案"
+
+#: skins/default/templates/user_profile/user_inbox.html:56
+msgid "dismiss"
+msgstr ""
-#~ msgid "updated"
-#~ msgstr "æ›´æ–°"
+#: skins/default/templates/user_profile/user_inbox.html:66
+#, fuzzy
+msgid "remove flags"
+msgstr "查看標籤列表"
-# this is how above two are supposed to be
-#~ msgid "see questions tagged '%(tag)s'"
-#~ msgstr "查看有關 '%(tag)s' çš„å•é¡Œ"
+#: skins/default/templates/user_profile/user_inbox.html:68
+#, fuzzy
+msgid "delete post"
+msgstr "刪除"
-#~ msgid "delete this comment"
-#~ msgstr "刪除任何一個評論"
+#: skins/default/templates/user_profile/user_info.html:36
+msgid "update profile"
+msgstr "更新我的資料"
-#~ msgid "add comment"
-#~ msgstr "添加評論"
+#: skins/default/templates/user_profile/user_info.html:40
+msgid "manage login methods"
+msgstr ""
-#~ msgid "see <strong>%(counter)s</strong> more"
-#~ msgid_plural "see <strong>%(counter)s</strong> more"
-#~ msgstr[0] "詳見 <strong>%(counter)s</strong>"
+#: skins/default/templates/user_profile/user_info.html:53
+msgid "real name"
+msgstr "真å"
+#: skins/default/templates/user_profile/user_info.html:58
#, fuzzy
-#~ msgid "see <strong>%(counter)s</strong> more comment"
-#~ msgid_plural ""
-#~ "see <strong>%(counter)s</strong> more comments\n"
-#~ " "
-#~ msgstr[0] "更多評論, 詳見 <strong>%(counter)s</strong>"
+msgid "member since"
+msgstr "已加入"
+#: skins/default/templates/user_profile/user_info.html:63
+msgid "last seen"
+msgstr "上次活動時間"
+
+#: skins/default/templates/user_profile/user_info.html:69
#, fuzzy
-#~ msgid "%(username)s's website is %(url)s"
-#~ msgstr "%(user_name)s karma 更動日誌"
+msgid "website"
+msgstr "個人網站"
-#~ msgid "previous"
-#~ msgstr "上一é "
+#: skins/default/templates/user_profile/user_info.html:75
+msgid "location"
+msgstr "城市"
-#~ msgid "current page"
-#~ msgstr "當å‰é "
+# user_info.html
+#: skins/default/templates/user_profile/user_info.html:82
+msgid "age"
+msgstr "年齡"
-#, fuzzy
-#~ msgid "page number %(num)s"
-#~ msgstr "第 %(num)s é "
+#: skins/default/templates/user_profile/user_info.html:83
+msgid "age unit"
+msgstr "æ­²"
-#~ msgid "next page"
-#~ msgstr "下一é "
+#: skins/default/templates/user_profile/user_info.html:88
+msgid "todays unused votes"
+msgstr "今日剩餘投票數"
-#~ msgid "posts per page"
-#~ msgstr "æ¯é é¡¯ç¤ºï¼š"
+#: skins/default/templates/user_profile/user_info.html:89
+msgid "votes left"
+msgstr "票"
+#: skins/default/templates/user_profile/user_moderate.html:4
+#: skins/default/templates/user_profile/user_tabs.html:48
#, fuzzy
-#~ msgid "responses for %(username)s"
-#~ msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+msgid "moderation"
+msgstr "城市"
+#: skins/default/templates/user_profile/user_moderate.html:8
+#, fuzzy, python-format
+msgid "%(username)s's current status is \"%(status)s\""
+msgstr "%(user_name)s karma 更動日誌"
+
+#: skins/default/templates/user_profile/user_moderate.html:11
#, fuzzy
-#~ msgid "you have a new response"
-#~ msgid_plural "you have %(response_count)s new responses"
-#~ msgstr[0] "回應"
+msgid "User status changed"
+msgstr "用戶社å€ç©åˆ†"
+
+#: skins/default/templates/user_profile/user_moderate.html:20
+msgid "Save"
+msgstr "儲存"
+
+#: skins/default/templates/user_profile/user_moderate.html:25
+#, python-format
+msgid "Your current reputation is %(reputation)s points"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:27
+#, python-format
+msgid "User's current reputation is %(reputation)s points"
+msgstr ""
+#: skins/default/templates/user_profile/user_moderate.html:31
#, fuzzy
-#~ msgid "no new responses yet"
-#~ msgstr "回應"
+msgid "User reputation changed"
+msgstr "用戶社å€ç©åˆ†"
+
+#: skins/default/templates/user_profile/user_moderate.html:38
+msgid "Subtract"
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:39
+msgid "Add"
+msgstr "增加"
+
+#: skins/default/templates/user_profile/user_moderate.html:43
+#, fuzzy, python-format
+msgid "Send message to %(username)s"
+msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+#: skins/default/templates/user_profile/user_moderate.html:44
+msgid ""
+"An email will be sent to the user with 'reply-to' field set to your email "
+"address. Please make sure that your address is entered correctly."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:46
#, fuzzy
-#~ msgid "%(new)s new flagged posts and %(seen)s previous"
-#~ msgstr "第一個標記張貼"
+msgid "Message sent"
+msgstr "訊æ¯"
+#: skins/default/templates/user_profile/user_moderate.html:64
#, fuzzy
-#~ msgid "%(new)s new flagged posts"
-#~ msgstr "第一個標記張貼"
+msgid "Send message"
+msgstr "Copyright(c)2009.CNPROG.COM"
+
+#: skins/default/templates/user_profile/user_moderate.html:74
+msgid ""
+"Administrators have privileges of normal users, but in addition they can "
+"assign/revoke any status to any user, and are exempt from the reputation "
+"limits."
+msgstr ""
+#: skins/default/templates/user_profile/user_moderate.html:77
+msgid ""
+"Moderators have the same privileges as administrators, but cannot add or "
+"remove user status of 'moderator' or 'administrator'."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:80
+msgid "'Approved' status means the same as regular user."
+msgstr ""
+
+#: skins/default/templates/user_profile/user_moderate.html:83
#, fuzzy
-#~ msgid "%(seen)s flagged posts"
-#~ msgstr "第一個標記張貼"
+msgid "Suspended users can only edit or delete their own posts."
+msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#~ msgid "Questions"
-#~ msgstr "å•é¡Œåˆ—表"
+#: skins/default/templates/user_profile/user_moderate.html:86
+msgid ""
+"Blocked users can only login and send feedback to the site administrators."
+msgstr ""
-#~ msgid "Privacy policy"
-#~ msgstr "éš±ç§æ”¿ç­–"
+#: skins/default/templates/user_profile/user_network.html:5
+#: skins/default/templates/user_profile/user_tabs.html:18
+msgid "network"
+msgstr ""
-# page title
-#~ msgid "Edit question"
-#~ msgstr "修改å•é¡Œ"
+#: skins/default/templates/user_profile/user_network.html:10
+#, python-format
+msgid "Followed by %(count)s person"
+msgid_plural "Followed by %(count)s people"
+msgstr[0] ""
-#~ msgid "Change tags"
-#~ msgstr "修改標籤"
+#: skins/default/templates/user_profile/user_network.html:14
+#, python-format
+msgid "Following %(count)s person"
+msgid_plural "Following %(count)s people"
+msgstr[0] ""
+
+#: skins/default/templates/user_profile/user_network.html:19
+msgid ""
+"Your network is empty. Would you like to follow someone? - Just visit their "
+"profiles and click \"follow\""
+msgstr ""
+#: skins/default/templates/user_profile/user_network.html:21
+#, fuzzy, python-format
+msgid "%(username)s's network is empty"
+msgstr "用戶資料"
+
+#: skins/default/templates/user_profile/user_recent.html:4
+#: skins/default/templates/user_profile/user_tabs.html:29
+#: skins/default/templates/user_profile/user_tabs.html:31
#, fuzzy
-#~ msgid "Retag"
-#~ msgstr "標籤"
+msgid "activity"
+msgstr "熱門å•é¡Œ"
-#~ msgid "Why use and modify tags?"
-#~ msgstr "為什麼è¦ç”¨æˆ–修改標籤?"
+#: skins/default/templates/user_profile/user_recent.html:24
+#: skins/default/templates/user_profile/user_recent.html:28
+msgid "source"
+msgstr ""
-#~ msgid "tag editors receive special awards from the community"
-#~ msgstr "將授予修改標籤的用戶特殊的社å€çŽå‹µ"
+#: skins/default/templates/user_profile/user_reputation.html:11
+msgid "Your karma change log."
+msgstr "karma 更動日誌"
-# todo: remove magic numbers from this file
-#~ msgid "up to 5 tags, less than 20 characters each"
-#~ msgstr "最多 5 個標籤,æ¯å€‹æ¨™ç±¤é•·åº¦å°æ–¼ 20 個字元。"
+#: skins/default/templates/user_profile/user_reputation.html:13
+#, python-format
+msgid "%(user_name)s's karma change log"
+msgstr "%(user_name)s karma 更動日誌"
-#~ msgid "Reopen question"
-#~ msgstr "é‡å•Ÿå•é¡Œ"
+#: skins/default/templates/user_profile/user_stats.html:5
+#: skins/default/templates/user_profile/user_tabs.html:7
+msgid "overview"
+msgstr "概覽"
-#, fuzzy
-#~ msgid "Title"
-#~ msgstr "標題"
+#: skins/default/templates/user_profile/user_stats.html:11
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Question"
+msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
+msgstr[0] "<span class=\"count\">%(counter)s</span> å•é¡Œ"
-# close.html
+#: skins/default/templates/user_profile/user_stats.html:16
#, fuzzy
-#~ msgid "Close reason:"
-#~ msgstr "çµæŸå•é¡Œ"
+msgid "Answer"
+msgid_plural "Answers"
+msgstr[0] "回答"
+#: skins/default/templates/user_profile/user_stats.html:24
+#, python-format
+msgid "the answer has been voted for %(answer_score)s times"
+msgstr "該回答總共有 %(answer_score)s 個投票"
+
+#: skins/default/templates/user_profile/user_stats.html:34
+#, fuzzy, python-format
+msgid "(%(comment_count)s comment)"
+msgid_plural "the answer has been commented %(comment_count)s times"
+msgstr[0] "(%(comment_count)s è©•è«–)"
+
+#: skins/default/templates/user_profile/user_stats.html:44
+#, python-format
+msgid "<span class=\"count\">%(cnt)s</span> Vote"
+msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
+msgstr[0] "<span class=\"count\">%(cnt)s</span> 票"
+
+#: skins/default/templates/user_profile/user_stats.html:50
+msgid "thumb up"
+msgstr "è´ŠåŒ"
+
+#: skins/default/templates/user_profile/user_stats.html:51
+msgid "user has voted up this many times"
+msgstr "用戶已投贊æˆç¥¨æ•¸æ¬¡"
+
+#: skins/default/templates/user_profile/user_stats.html:54
+msgid "thumb down"
+msgstr "åå°"
+
+#: skins/default/templates/user_profile/user_stats.html:55
#, fuzzy
-#~ msgid "Reopen this question?"
-#~ msgstr "é‡å•Ÿé€™å€‹å•é¡Œ"
+msgid "user voted down this many times"
+msgstr "用戶已投åå°ç¥¨æ•¸æ¬¡"
+
+#: skins/default/templates/user_profile/user_stats.html:63
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Tag"
+msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
+msgstr[0] "<span class=\"count\">%(counter)s</span> 標籤"
+#: skins/default/templates/user_profile/user_stats.html:97
+#, python-format
+msgid "<span class=\"count\">%(counter)s</span> Badge"
+msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
+msgstr[0] "<span class=\"count\">%(counter)s</span> 標記"
+
+#: skins/default/templates/user_profile/user_stats.html:120
#, fuzzy
-#~ msgid "Reopen this question"
-#~ msgstr "é‡å•Ÿé€™å€‹å•é¡Œ"
+msgid "Answer to:"
+msgstr "æå•æŠ€å·§"
-# revisions_answer.html
-#~ msgid "Revision history"
-#~ msgstr "版本歷å²"
+#: skins/default/templates/user_profile/user_tabs.html:5
+msgid "User profile"
+msgstr "用戶資料"
-#~ msgid "click to hide/show revision"
-#~ msgstr "é»žé¸ éš±è—/展開 版本"
+#: skins/default/templates/user_profile/user_tabs.html:10 views/users.py:638
+msgid "comments and answers to others questions"
+msgstr "其他用戶的回覆和評論"
+
+#: skins/default/templates/user_profile/user_tabs.html:16
+msgid "followers and followed users"
+msgstr ""
+#: skins/default/templates/user_profile/user_tabs.html:21
#, fuzzy
-#~ msgid "revision %(number)s"
-#~ msgstr "版本"
+msgid "Graph of user karma"
+msgstr "用戶的社群ç©åˆ†åœ–示"
+#: skins/default/templates/user_profile/user_tabs.html:25
#, fuzzy
-#~ msgid "Subscribe for tags"
-#~ msgstr "使用標籤"
+msgid "questions that user is following"
+msgstr "用戶收è—çš„å•é¡Œ"
+
+#: skins/default/templates/user_profile/user_tabs.html:34 views/users.py:679
+msgid "user vote record"
+msgstr "用戶投票記錄"
+
+#: skins/default/templates/user_profile/user_tabs.html:36
+#: skins/default/templates/user_profile/user_votes.html:4
+msgid "votes"
+msgstr "投票"
+
+#: skins/default/templates/user_profile/user_tabs.html:40 views/users.py:769
+msgid "email subscription settings"
+msgstr "email 訂閱設定"
+#: skins/default/templates/user_profile/user_tabs.html:46 views/users.py:205
#, fuzzy
-#~ msgid "Please, subscribe for the following tags:"
-#~ msgstr "å•é¡Œæ›¾å› ä¸‹è¿°åŽŸå› çµæŸ"
+msgid "moderate this user"
+msgstr "管ç†ç”¨æˆ¶"
+#: skins/default/templates/widgets/answer_edit_tips.html:3
+#: skins/default/templates/widgets/question_edit_tips.html:3
+msgid "Tips"
+msgstr ""
+
+#: skins/default/templates/widgets/answer_edit_tips.html:6
#, fuzzy
-#~ msgid "Subscribe"
-#~ msgstr "使用標籤"
+msgid "give an answer interesting to this community"
+msgstr "請回應相關答案"
-#~ msgid "Tag list"
-#~ msgstr "標籤列表"
+#: skins/default/templates/widgets/answer_edit_tips.html:9
+msgid "try to give an answer, rather than engage into a discussion"
+msgstr "盡é‡ç­”覆å•é¡Œï¼Œè€Œéžè¨Žè«–。"
+#: skins/default/templates/widgets/answer_edit_tips.html:12
+#: skins/default/templates/widgets/question_edit_tips.html:8
#, fuzzy
-#~ msgid "Sort by &raquo;"
-#~ msgstr "查詢性質: "
+msgid "provide enough details"
+msgstr "請詳細æ述您的å•é¡Œã€‚"
-#~ msgid "sorted alphabetically"
-#~ msgstr "按å稱的字æ¯å…ˆå¾Œé †åºæŽ’åº"
+#: skins/default/templates/widgets/answer_edit_tips.html:15
+#: skins/default/templates/widgets/question_edit_tips.html:11
+msgid "be clear and concise"
+msgstr "簡單扼è¦"
-#~ msgid "by name"
-#~ msgstr "按å稱排åº"
+#: skins/default/templates/widgets/answer_edit_tips.html:20
+#: skins/default/templates/widgets/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "查看常見å•é¡Œ"
-#~ msgid "sorted by frequency of tag use"
-#~ msgstr "按標籤被使用的次數排åº"
+#: skins/default/templates/widgets/answer_edit_tips.html:27
+#: skins/default/templates/widgets/question_edit_tips.html:22
+#, fuzzy
+msgid "Markdown basics"
+msgstr "Markdown 快速åƒè€ƒ"
-#~ msgid "by popularity"
-#~ msgstr "按æµè¡Œç¨‹åº¦æŽ’åº"
+#: skins/default/templates/widgets/answer_edit_tips.html:31
+#: skins/default/templates/widgets/question_edit_tips.html:26
+msgid "*italic*"
+msgstr ""
-#~ msgid "Nothing found"
-#~ msgstr "毫無所ç²"
+#: skins/default/templates/widgets/answer_edit_tips.html:34
+#: skins/default/templates/widgets/question_edit_tips.html:29
+msgid "**bold**"
+msgstr ""
-#~ msgid "Users"
-#~ msgstr "用戶列表"
+#: skins/default/templates/widgets/answer_edit_tips.html:38
+#: skins/default/templates/widgets/question_edit_tips.html:33
+#, fuzzy
+msgid "*italic* or _italic_"
+msgstr "*斜體* 或者 _斜體_"
-#~ msgid "reputation"
-#~ msgstr "ç©åˆ†"
+#: skins/default/templates/widgets/answer_edit_tips.html:41
+#: skins/default/templates/widgets/question_edit_tips.html:36
+msgid "**bold** or __bold__"
+msgstr "**加粗** 或者 __加粗__ "
-#~ msgid "recent"
-#~ msgstr "最新加入"
+#: skins/default/templates/widgets/answer_edit_tips.html:45
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:40
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "text"
+msgstr "文字"
-#~ msgid "by username"
-#~ msgstr "用戶å"
+#: skins/default/templates/widgets/answer_edit_tips.html:49
+#: skins/default/templates/widgets/question_edit_tips.html:45
+msgid "image"
+msgstr "圖片"
-#~ msgid "users matching query %(suser)s:"
-#~ msgstr "åˆä¹Ž %(suser)s 查詢的所有用戶å:"
+#: skins/default/templates/widgets/answer_edit_tips.html:53
+#: skins/default/templates/widgets/question_edit_tips.html:49
+msgid "numbered list:"
+msgstr "有åºåˆ—表:"
-#~ msgid "Nothing found."
-#~ msgstr "沒有找到相關數據。"
+#: skins/default/templates/widgets/answer_edit_tips.html:58
+#: skins/default/templates/widgets/question_edit_tips.html:54
+msgid "basic HTML tags are also supported"
+msgstr "支æ´åŸºæœ¬çš„HTML標籤"
-#~ msgid "with %(author_name)s's contributions"
-#~ msgstr "%(author_name)s çš„è²¢ç»"
+#: skins/default/templates/widgets/answer_edit_tips.html:63
+#: skins/default/templates/widgets/question_edit_tips.html:59
+msgid "learn more about Markdown"
+msgstr "有關 Markdown 詳細說明"
-#~ msgid "Search tips:"
-#~ msgstr "æœå°‹æŠ€å·§: "
+#: skins/default/templates/widgets/ask_form.html:6
+msgid "login to post question info"
+msgstr "簽入張貼å•é¡Œ"
-#~ msgid "reset author"
-#~ msgstr "é‡è¨­ä½œè€…"
+#: skins/default/templates/widgets/ask_form.html:7
+msgid ""
+"<span class=\\\"strong big\\\">You are welcome to start submitting your "
+"question anonymously</span>. When you submit the post, you will be "
+"redirected to the login/signup page. Your question will be saved in the "
+"current session and will be published after you log in. Login/signup process "
+"is very simple. Login takes about 30 seconds, initial signup takes a minute "
+"or less."
+msgstr ""
-#, fuzzy
-#~ msgid " or "
-#~ msgstr "或者"
+#: skins/default/templates/widgets/ask_form.html:11
+#, python-format
+msgid ""
+"<span class='strong big'>Looks like your email address, %%(email)s has not "
+"yet been validated.</span> To post messages you must verify your email, "
+"please see <a href='%%(email_validation_faq_url)s'>more details here</a>."
+"<br>You can submit your question now and validate email after that. Your "
+"question will saved as pending meanwhile."
+msgstr ""
-#~ msgid "reset tags"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#: skins/default/templates/widgets/contributors.html:3
+msgid "Contributors"
+msgstr "è²¢ç»è€…"
+
+#: skins/default/templates/widgets/footer.html:33
+#, python-format
+msgid "Content on this site is licensed under a %(license)s"
+msgstr ""
+
+# footer.html
+#: skins/default/templates/widgets/footer.html:38
+msgid "about"
+msgstr "關於本站"
-#~ msgid "start over"
-#~ msgstr "é‡æ–°é–‹å§‹"
+#: skins/default/templates/widgets/footer.html:40
+#: skins/default/templates/widgets/user_navigation.html:17
+msgid "help"
+msgstr ""
-#~ msgid " - to expand, or dig in by adding more tags and revising the query."
-#~ msgstr " - 使用更多的標籤更改查詢找資料"
+#: skins/default/templates/widgets/footer.html:42
+msgid "privacy policy"
+msgstr "éš±ç§æ”¿ç­–"
-#~ msgid "Search tip:"
-#~ msgstr "查詢技巧: "
+#: skins/default/templates/widgets/footer.html:51
+msgid "give feedback"
+msgstr "å•é¡Œå›žé¥‹"
-#~ msgid "add tags and a query to focus your search"
-#~ msgstr "增加標籤和查詢加強æœå°‹"
+#: skins/default/templates/widgets/logo.html:3
+msgid "back to home page"
+msgstr "回到首é "
-#~ msgid "There are no unanswered questions here"
-#~ msgstr "無未解答å•é¡Œ"
+#: skins/default/templates/widgets/logo.html:4
+#, fuzzy, python-format
+msgid "%(site)s logo"
+msgstr "社å€é€šç”¨èªž"
+#: skins/default/templates/widgets/meta_nav.html:10
+msgid "users"
+msgstr "用戶"
+
+#: skins/default/templates/widgets/meta_nav.html:15
+msgid "badges"
+msgstr "çŽå‹µæ¦œ"
+
+#: skins/default/templates/widgets/question_edit_tips.html:5
#, fuzzy
-#~ msgid "No questions here. "
-#~ msgstr "無被收è—å•é¡Œ"
+msgid "ask a question interesting to this community"
+msgstr "請回應相關答案"
+#: skins/default/templates/widgets/question_summary.html:12
#, fuzzy
-#~ msgid "Please follow some questions or follow some users."
-#~ msgstr "一旦開始觀看請記錄å•é¡Œ"
+msgid "view"
+msgid_plural "views"
+msgstr[0] "ç€è¦½"
-#~ msgid "You can expand your search by "
-#~ msgstr "廣泛æœå°‹å¯ç”±"
+#: skins/default/templates/widgets/question_summary.html:29
+#, fuzzy
+msgid "answer"
+msgid_plural "answers"
+msgstr[0] "回答"
-#~ msgid "resetting author"
-#~ msgstr "é‡è¨­ä½œè€…"
+#: skins/default/templates/widgets/question_summary.html:40
+#, fuzzy
+msgid "vote"
+msgid_plural "votes"
+msgstr[0] "票"
-# book.html line 123 must be empty in english
-#~ msgid "resetting tags"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#: skins/default/templates/widgets/scope_nav.html:6
+msgid "ALL"
+msgstr ""
-#~ msgid "starting over"
-#~ msgstr "é‡æ–°é–‹å§‹"
+#: skins/default/templates/widgets/scope_nav.html:8
+#, fuzzy
+msgid "see unanswered questions"
+msgstr "沒有回答的å•é¡Œ"
+
+#: skins/default/templates/widgets/scope_nav.html:8
+msgid "UNANSWERED"
+msgstr ""
+#: skins/default/templates/widgets/scope_nav.html:11
#, fuzzy
-#~ msgid "Please always feel free to ask your question!"
-#~ msgstr "æ­¡è¿Žæå•! "
+msgid "see your followed questions"
+msgstr "用戶收è—çš„å•é¡Œ"
+
+#: skins/default/templates/widgets/scope_nav.html:11
+msgid "FOLLOWED"
+msgstr ""
-#~ msgid "Did not find what you were looking for?"
-#~ msgstr "找ä¸åˆ°çµæžœ? "
+#: skins/default/templates/widgets/scope_nav.html:14
+#, fuzzy
+msgid "Please ask your question here"
+msgstr "ç¾åœ¨æå•"
-#~ msgid "Please, post your question!"
-#~ msgstr "ç¾åœ¨æå•"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:3
+msgid "karma:"
+msgstr ""
-#~ msgid "subscribe to the questions feed"
-#~ msgstr "訂閱最新å•é¡Œ"
+#: skins/default/templates/widgets/user_long_score_and_badge_summary.html:7
+#, fuzzy
+msgid "badges:"
+msgstr "çŽå‹µæ¦œ"
+#: skins/default/templates/widgets/user_navigation.html:9
#, fuzzy
-#~ msgid "each tag must be shorter that %(max_chars)s character"
-#~ msgid_plural "each tag must be shorter than %(max_chars)s characters"
-#~ msgstr[0] "æ¯å€‹æ¨™ç±¤çš„長度ä¸è¶…éŽ%(max_chars)s"
+msgid "sign out"
+msgstr "登出"
+#: skins/default/templates/widgets/user_navigation.html:12
#, fuzzy
-#~ msgid "please use %(tag_count)s tag"
-#~ msgid_plural "please use %(tag_count)s tags or less"
-#~ msgstr[0] "最多åªèƒ½æœ‰%(tag_count)s個標籤"
+msgid "Hi, there! Please sign in"
+msgstr "請由此進入: "
-# todo: remove magic numbers from this file
+# book.html line 123 must be empty in english
+#: skins/default/templates/widgets/user_navigation.html:15
#, fuzzy
-#~ msgid ""
-#~ "please use up to %(tag_count)s tags, less than %(max_chars)s characters "
-#~ "each"
-#~ msgstr "最多 5 個標籤,æ¯å€‹æ¨™ç±¤é•·åº¦å°æ–¼ %(tag_count)s 個字元。"
+msgid "settings"
+msgstr "é‡è¨­æ¨™ç±¤"
+#: templatetags/extra_filters_jinja.py:279
#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ " %(counter)s Answer\n"
-#~ " "
-#~ msgid_plural ""
-#~ "\n"
-#~ " %(counter)s Answers\n"
-#~ " "
-#~ msgstr[0] ""
-#~ "\n"
-#~ " %(counter)s 答案:"
+msgid "no"
+msgstr "第三å"
-#~ msgid "oldest answers will be shown first"
-#~ msgstr "最先回答將顯示在最å‰é¢"
+#: utils/decorators.py:90 views/commands.py:73 views/commands.py:93
+msgid "Oops, apologies - there was some error"
+msgstr ""
-#~ msgid "oldest answers"
-#~ msgstr "最先回答"
+#: utils/decorators.py:109
+msgid "Please login to post"
+msgstr ""
-#~ msgid "newest answers will be shown first"
-#~ msgstr "最晚回答將顯示在最å‰é¢"
+#: utils/decorators.py:205
+msgid "Spam was detected on your post, sorry for if this is a mistake"
+msgstr ""
-#~ msgid "newest answers"
-#~ msgstr "最近回答"
+#: utils/forms.py:33
+msgid "this field is required"
+msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-#~ msgid "most voted answers will be shown first"
-#~ msgstr "投票次數最多的將顯示在最å‰é¢"
+#: utils/forms.py:60
+#, fuzzy
+msgid "Choose a screen name"
+msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
-#~ msgid "popular answers"
-#~ msgstr "投票最多"
+#: utils/forms.py:69
+msgid "user name is required"
+msgstr " 標籤ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-#~ msgid "Answer Your Own Question"
-#~ msgstr "回答å•é¡Œ"
+#: utils/forms.py:70
+msgid "sorry, this name is taken, please choose another"
+msgstr "å°ä¸èµ·ï¼Œè©²ç”¨æˆ¶å已註冊,請æ›ä¸€å€‹è©¦è©¦"
+#: utils/forms.py:71
#, fuzzy
-#~ msgid "Login/Signup to Answer"
-#~ msgstr "登錄並回答該å•é¡Œ"
+msgid "sorry, this name is not allowed, please choose another"
+msgstr "å°ä¸èµ·ï¼Œè©²ç”¨æˆ¶åä¸èƒ½è¨»å†Šï¼Œè«‹æ›ä¸€å€‹è©¦è©¦"
-#~ msgid "Your answer"
-#~ msgstr "您的回答"
+#: utils/forms.py:72
+msgid "sorry, there is no user with this name"
+msgstr "å°ä¸èµ·ï¼Œæ²’有此用戶"
-#~ msgid "Be the first one to answer this question!"
-#~ msgstr "這å•é¡Œçš„第一個解答者"
+#: utils/forms.py:73
+msgid "sorry, we have a serious error - user name is taken by several users"
+msgstr "å°ä¸èµ·ï¼Œè¨±å¤šäººä½¿ç”¨è©²ç”¨æˆ¶, 造æˆéŒ¯èª¤"
-#~ msgid "you can answer anonymously and then login"
-#~ msgstr "ä½ å¯ä»¥åŒ¿å回應å†ç°½å…¥"
+#: utils/forms.py:74
+msgid "user name can only consist of letters, empty space and underscore"
+msgstr "用戶å字須由字元, 空白, 下標字組æˆ"
-#~ msgid "answer your own question only to give an answer"
-#~ msgstr "自å•è‡ªç­”"
+#: utils/forms.py:75
+msgid "please use at least some alphabetic characters in the user name"
+msgstr ""
-#~ msgid "please only give an answer, no discussions"
-#~ msgstr "請答複å•é¡Œï¼Œè€Œéžè¨Žè«–。"
+#: utils/forms.py:138
+msgid "Your email <i>(never shared)</i>"
+msgstr ""
-#, fuzzy
-#~ msgid "Login/Signup to Post Your Answer"
-#~ msgstr "登錄並回答該å•é¡Œ"
+#: utils/forms.py:139
+msgid "email address is required"
+msgstr " é›»å­éƒµä»¶åœ°å€ä¸èƒ½ç‚ºç©ºç™½"
-#~ msgid "Answer the question"
-#~ msgstr "回答å•é¡Œ"
+#: utils/forms.py:140
+msgid "please enter a valid email address"
+msgstr "請輸入åˆæ³•é›»å­éƒµä»¶åœ°å€"
+#: utils/forms.py:141
#, fuzzy
-#~ msgid " or"
-#~ msgstr "或者"
+msgid "this email is already used by someone else, please choose another"
+msgstr "該電å­éƒµä»¶å·²è¢«æ³¨å†Šï¼Œè«‹é¸æ“‡å¦ä¸€å€‹å†è©¦ã€‚"
+
+#: utils/forms.py:170
+msgid "password is required"
+msgstr " 密碼ä¸èƒ½ç‚ºç©ºç™½ã€‚"
-#~ msgid "email"
-#~ msgstr "email"
+#: utils/forms.py:173
+msgid "Password <i>(please retype)</i>"
+msgstr ""
+#: utils/forms.py:174
#, fuzzy
-#~ msgid "Question tools"
-#~ msgstr "å•é¡Œæ¨™ç±¤"
+msgid "please, retype your password"
+msgstr "確èªå¯†ç¢¼"
+#: utils/forms.py:175
+msgid "sorry, entered passwords did not match, please try again"
+msgstr "å°ä¸èµ·, 密碼ä¸åˆ, è«‹é‡æ–°è¼¸å…¥"
+
+#: utils/functions.py:82
#, fuzzy
-#~ msgid "click to unfollow this question"
-#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
+msgid "2 days ago"
+msgstr "二天å‰"
+
+#: utils/functions.py:84
+msgid "yesterday"
+msgstr "昨天"
+
+#: utils/functions.py:87
+#, python-format
+msgid "%(hr)d hour ago"
+msgid_plural "%(hr)d hours ago"
+msgstr[0] ""
+
+#: utils/functions.py:93
+#, python-format
+msgid "%(min)d min ago"
+msgid_plural "%(min)d mins ago"
+msgstr[0] ""
+
+#: utils/mail.py:147
+msgid ""
+"<p>To ask by email, please:</p>\n"
+"<ul>\n"
+" <li>Format the subject line as: [Tag1; Tag2] Question title</li>\n"
+" <li>Type details of your question into the email body</li>\n"
+"</ul>\n"
+"<p>Note that tags may consist of more than one word, and tags\n"
+"may be separated by a semicolon or a comma</p>\n"
+msgstr ""
+
+#: utils/mail.py:167
+#, python-format
+msgid ""
+"<p>Sorry, there was an error posting your question please contact the "
+"%(site)s administrator</p>"
+msgstr ""
+
+#: utils/mail.py:173
+#, python-format
+msgid ""
+"<p>Sorry, in order to post questions on %(site)s by email, please <a href="
+"\"%(url)s\">register first</a></p>"
+msgstr ""
+
+#: utils/mail.py:181
+msgid ""
+"<p>Sorry, your question could not be posted due to insufficient privileges "
+"of your user account</p>"
+msgstr ""
+
+#: views/avatar_views.py:99
+msgid "Successfully uploaded a new avatar."
+msgstr ""
+
+#: views/avatar_views.py:140
+msgid "Successfully updated your avatar."
+msgstr ""
+
+#: views/avatar_views.py:180
+msgid "Successfully deleted the requested avatars."
+msgstr ""
+#: views/commands.py:83
#, fuzzy
-#~ msgid "click to follow this question"
-#~ msgstr "點é¸è§€çœ‹æœ€ç†±é–€çš„å•é¡Œ"
+msgid "Sorry, but anonymous users cannot access the inbox"
+msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+#: views/commands.py:112
#, fuzzy
-#~ msgid "email the updates"
-#~ msgstr "å–消電å­éƒµä»¶æ›´æ–°"
+msgid "Sorry, anonymous users cannot vote"
+msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+#: views/commands.py:129
+msgid "Sorry you ran out of votes for today"
+msgstr ""
+
+#: views/commands.py:135
+#, python-format
+msgid "You have %(votes_left)s votes left for today"
+msgstr ""
+
+#: views/commands.py:210
+msgid "Sorry, something is not right here..."
+msgstr ""
+
+#: views/commands.py:229
#, fuzzy
-#~ msgid "subscribe to this question rss feed"
-#~ msgstr "訂閱最新å•é¡Œ"
+msgid "Sorry, but anonymous users cannot accept answers"
+msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+
+#: views/commands.py:339
+#, fuzzy, python-format
+msgid ""
+"Your subscription is saved, but email address %(email)s needs to be "
+"validated, please see <a href=\"%(details_url)s\">more details here</a>"
+msgstr "訂閱暫存, 需用 %(email)s èªè­‰, åƒè€ƒ %(details_url)s"
+
+#: views/commands.py:348
+msgid "email update frequency has been set to daily"
+msgstr "é›»å­éƒµä»¶æ¯æ—¥æ›´æ–°"
+#: views/commands.py:464
+#, python-format
+msgid "Tag subscription was canceled (<a href=\"%(url)s\">undo</a>)."
+msgstr ""
+
+#: views/commands.py:473
+#, python-format
+msgid "Please sign in to subscribe for: %(tags)s"
+msgstr ""
+
+#: views/commands.py:600
#, fuzzy
-#~ msgid "subsribe to rss feed"
-#~ msgstr "訂閱最新å•é¡Œ"
+msgid "Please sign in to vote"
+msgstr "請由此進入: "
+#: views/commands.py:620
#, fuzzy
-#~ msgid "question asked"
-#~ msgstr "æå•æ™‚é–“"
+msgid "Please sign in to delete/restore posts"
+msgstr "請由此進入: "
-#~ msgid "question was seen"
-#~ msgstr "ç›®å‰å•é¡Œ"
+#: views/meta.py:37
+#, fuzzy, python-format
+msgid "About %(site)s"
+msgstr "關於本站"
-#~ msgid "times"
-#~ msgstr "次"
+#: views/meta.py:92
+msgid "Q&A forum feedback"
+msgstr "Q&A 論壇回饋"
-#~ msgid "last updated"
-#~ msgstr "最後更新時間"
+#: views/meta.py:93
+msgid "Thanks for the feedback!"
+msgstr "è¬è¬å›žé¥‹"
-#~ msgid "Related questions"
-#~ msgstr "相似的å•é¡Œ"
+#: views/meta.py:102
+msgid "We look forward to hearing your feedback! Please, give it next time :)"
+msgstr "期待你的回饋"
-#, fuzzy
-#~ msgid "Notify me once a day when there are any new answers"
-#~ msgstr "若有新答案請知會我"
+#: views/meta.py:106
+msgid "Privacy policy"
+msgstr "éš±ç§æ”¿ç­–"
-#~ msgid "Notify me weekly when there are any new answers"
-#~ msgstr "若有新答案請知會我"
+#: views/readers.py:133
+#, fuzzy, python-format
+msgid "%(q_num)s question, tagged"
+msgid_plural "%(q_num)s questions, tagged"
+msgstr[0] "第 %(q_num)s 個å•é¡Œ"
+#: views/readers.py:388
#, fuzzy
-#~ msgid "Notify me immediately when there are any new answers"
-#~ msgstr "若有新答案請知會我"
+msgid ""
+"Sorry, the comment you are looking for has been deleted and is no longer "
+"accessible"
+msgstr "這個å•é¡Œè¢«"
-#~ msgid ""
-#~ "You can always adjust frequency of email updates from your %(profile_url)s"
-#~ msgstr "ä½ å¯å¾ž %(profile_url)s 調整 email 更新頻率"
+#: views/users.py:206
+#, fuzzy
+msgid "moderate user"
+msgstr "管ç†ç”¨æˆ¶"
+
+#: views/users.py:381
+msgid "user profile"
+msgstr "用戶資料"
+
+#: views/users.py:382
+msgid "user profile overview"
+msgstr "用戶概覽"
+
+#: views/users.py:551
+msgid "recent user activity"
+msgstr "最近活動"
+
+#: views/users.py:552
+msgid "profile - recent activity"
+msgstr "最近活動"
+
+#: views/users.py:639
+msgid "profile - responses"
+msgstr "用戶資料 - 回應 "
+
+#: views/users.py:680
+msgid "profile - votes"
+msgstr "用戶資料 - 投票"
-#~ msgid "once you sign in you will be able to subscribe for any updates here"
-#~ msgstr "一旦é·å…¥ä½ å¯ä»¥è¨‚閱任何更新"
+#: views/users.py:701
+#, fuzzy
+msgid "user karma"
+msgstr "用戶å"
+#: views/users.py:702
#, fuzzy
-#~ msgid "%(username)s's profile"
-#~ msgstr "用戶資料"
+msgid "Profile - User's Karma"
+msgstr "用戶資料 - ç©åˆ†"
-#~ msgid "Edit user profile"
-#~ msgstr "修改個人資料"
+#: views/users.py:720
+msgid "users favorite questions"
+msgstr "用戶收è—çš„å•é¡Œ"
-#~ msgid "edit profile"
-#~ msgstr "修改資料"
+#: views/users.py:721
+msgid "profile - favorite questions"
+msgstr "用戶資料 - 收è—"
-#~ msgid "change picture"
-#~ msgstr "æ›´æ›ç…§ç‰‡"
+#: views/users.py:741 views/users.py:745
+msgid "changes saved"
+msgstr "儲存修改"
-#~ msgid "Registered user"
-#~ msgstr "註冊用戶"
+#: views/users.py:751
+msgid "email updates canceled"
+msgstr "å–消電å­éƒµä»¶æ›´æ–°"
+#: views/users.py:770
#, fuzzy
-#~ msgid "Screen Name"
-#~ msgstr "當é "
+msgid "profile - email subscriptions"
+msgstr "用戶資料 - email 訂閱"
-#~ msgid "Update"
-#~ msgstr "æ›´æ–°"
+#: views/writers.py:60
+#, fuzzy
+msgid "Sorry, anonymous users cannot upload files"
+msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+# todo take these out of settings
+#: views/writers.py:73
+#, python-format
+msgid "allowed file types are '%(file_types)s'"
+msgstr "åªå…許上傳 '%(file_types)s' 類型的文件ï¼"
+
+#: views/writers.py:84
+#, fuzzy, python-format
+msgid "maximum upload file size is %(file_size)sK"
+msgstr "åªå…許上傳 %s K大å°çš„文件ï¼"
+
+#: views/writers.py:92
#, fuzzy
-#~ msgid "subscriptions"
-#~ msgstr "email 訂閱"
+msgid "Error uploading file. Please contact the site administrator. Thank you."
+msgstr "在文件上傳éŽç¨‹ä¸­ç”¢ç”Ÿäº†éŒ¯èª¤ï¼Œè«‹è¯ç³»ç®¡ç†å“¡ï¼Œè¬è¬^_^"
-#~ msgid "Email subscription settings"
-#~ msgstr "Email 訂閱設定"
+#: views/writers.py:189
+msgid ""
+"<span class=\"strong big\">You are welcome to start submitting your question "
+"anonymously</span>. When you submit the post, you will be redirected to the "
+"login/signup page. Your question will be saved in the current session and "
+"will be published after you log in. Login/signup process is very simple. "
+"Login takes about 30 seconds, initial signup takes a minute or less."
+msgstr ""
-#~ msgid "email subscription settings info"
-#~ msgstr "Email 訂閱設定資料"
+#: views/writers.py:466
+#, fuzzy
+msgid "Please log in to answer questions"
+msgstr "沒有回答的å•é¡Œ"
-#~ msgid "Stop sending email"
-#~ msgstr "åœæ­¢é€å‡º email"
+#: views/writers.py:572
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot post comments. Please <a href="
+"\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+#: views/writers.py:589
#, fuzzy
-#~ msgid "followed questions"
-#~ msgstr "所有å•é¡Œ"
+msgid "Sorry, anonymous users cannot edit comments"
+msgstr "匿å用戶ä¸èƒ½æŠ•ç¥¨"
+
+#: views/writers.py:619
+#, python-format
+msgid ""
+"Sorry, you appear to be logged out and cannot delete comments. Please <a "
+"href=\"%(sign_in_url)s\">sign in</a>."
+msgstr ""
+
+#: views/writers.py:640
+msgid "sorry, we seem to have some technical difficulties"
+msgstr ""
#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "å•é¡Œ"
+#~ msgid "this email will be linked to gravatar"
+#~ msgstr "ä¸æœƒå…¬é–‹ï¼Œç”¨æ–¼é ­åƒé¡¯ç¤ºæœå‹™"
#, fuzzy
-#~ msgid "flagged items (%(flag_count)s)"
-#~ msgstr "最多åªèƒ½æœ‰%(tag_count)s個標籤"
+#~ msgid "Explain how to change LDAP password"
+#~ msgstr "帳號: 密碼已改變"
+
+#~ msgid "Incorrect username."
+#~ msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
#, fuzzy
-#~ msgid "select:"
-#~ msgstr "刪除"
+#~ msgid ""
+#~ "Please visit the askbot and see what's new! Could you spread the word "
+#~ "about it - can somebody you know help answering those questions or "
+#~ "benefit from posting one?"
+#~ msgstr " è«‹åƒè§€è«–壇, 觀看新功能介紹! 並廣為宣傳 - 能å¦è§£ç­”或從中ç²ç›Š?"
#, fuzzy
-#~ msgid "seen"
-#~ msgstr "查看"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'daily' on selected questions. "
+#~ "If you are receiving more than one email per dayplease tell about this "
+#~ "issue to the askbot administrator."
+#~ msgstr "你設定訂閱æ¯æ—¥æŸ¥è©¢, 如果æ¯å¤©æ”¶åˆ°ä¿¡ä»¶è¶…夠一å°, 請告知管ç†è€…."
#, fuzzy
-#~ msgid "new"
-#~ msgstr "最新å•é¡Œ"
+#~ msgid ""
+#~ "Your most frequent subscription setting is 'weekly' if you are receiving "
+#~ "this email more than once a week please report this issue to the askbot "
+#~ "administrator."
+#~ msgstr "你設定訂閱æ¯å‘¨æŸ¥è©¢, 如果æ¯å‘¨æ”¶åˆ°ä¿¡ä»¶è¶…夠一å°, 請告知管ç†è€…."
+
+#~ msgid ""
+#~ "There is a chance that you may be receiving links seen before - due to a "
+#~ "technicality that will eventually go away. "
+#~ msgstr "你有å¯èƒ½æ”¶åˆ°ä¹‹å‰çœ‹éŽçš„連çµ, 此肇因於å³å°‡çµ‚止的技術."
#, fuzzy
-#~ msgid "none"
-#~ msgstr "第三å"
+#~ msgid ""
+#~ "go to %(email_settings_link)s to change frequency of email updates or "
+#~ "%(admin_email)s administrator"
+#~ msgstr "請至 %(link)s 更改收信頻率或管ç†è€…çš„ %(email)s "
+
+#~ msgid ""
+#~ "uploading images is limited to users with >%(min_rep)s reputation points"
+#~ msgstr "上傳圖片åªé™æ–¼ç©åˆ† >%(min_rep)s 以上注冊用戶!"
+
+#~ msgid "blocked users cannot post"
+#~ msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
+
+#~ msgid "suspended users cannot post"
+#~ msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
#, fuzzy
-#~ msgid "mark as seen"
-#~ msgstr "上次活動時間"
+#~ msgid "blocked users cannot flag posts"
+#~ msgstr "被隔離使用者ä¸èƒ½å¼µè²¼"
#, fuzzy
-#~ msgid "mark as new"
-#~ msgstr "標記最佳答案"
+#~ msgid "suspended users cannot flag posts"
+#~ msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#~ msgid "update profile"
-#~ msgstr "更新我的資料"
+#, fuzzy
+#~ msgid "suspended users cannot remove flags"
+#~ msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
-#~ msgid "real name"
-#~ msgstr "真å"
+#~ msgid "cannot revoke old vote"
+#~ msgstr "這個投票已經éŽæ™‚,ä¸èƒ½æ’¤éŠ·ã€‚"
-#~ msgid "member for"
-#~ msgstr "已加入"
+#~ msgid "%(author)s modified the question"
+#~ msgstr "%(author)s 已修改這個å•é¡Œ"
-#~ msgid "last seen"
-#~ msgstr "上次活動時間"
+#~ msgid "%(people)s posted %(new_answer_count)s new answers"
+#~ msgstr "%(people)s 張貼新答案 %(new_answer_count)s"
-#~ msgid "user website"
-#~ msgstr "個人網站"
+#~ msgid "%(people)s commented the question"
+#~ msgstr "%(people)s è©•è«–å•é¡Œ"
-#~ msgid "location"
-#~ msgstr "城市"
+#~ msgid "%(people)s commented answers"
+#~ msgstr "%(people)s 評論回答"
-# user_info.html
-#~ msgid "age"
-#~ msgstr "年齡"
+#~ msgid "%(people)s commented an answer"
+#~ msgstr "%(people)s 評論回答"
-#~ msgid "age unit"
-#~ msgstr "æ­²"
+#~ msgid "change %(email)s info"
+#~ msgstr "æ›´æ› %(email)s é›»å­éƒµä»¶"
-#~ msgid "todays unused votes"
-#~ msgstr "今日剩餘投票數"
+#~ msgid "here is why email is required, see %(gravatar_faq_url)s"
+#~ msgstr "email å¿…è¦, è«‹åƒè€ƒ %(gravatar_faq_url)s"
-#~ msgid "votes left"
-#~ msgstr "票"
+#~ msgid "Your new Email"
+#~ msgstr "æ–°é›»å­ä¿¡ç®±"
-#, fuzzy
-#~ msgid "moderation"
-#~ msgstr "城市"
+#~ msgid "validate %(email)s info or go to %(change_email_url)s"
+#~ msgstr "驗證 %(email)s 資料或到 %(change_email_url)s"
-#, fuzzy
-#~ msgid "%(username)s's current status is \"%(status)s\""
-#~ msgstr "%(user_name)s karma 更動日誌"
+#~ msgid "old %(email)s kept, if you like go to %(change_email_url)s"
+#~ msgstr "如果你è¦åˆ° %(change_email_url)s 舊 %(email)s ä»ä¿ç•™"
-#, fuzzy
-#~ msgid "User status changed"
-#~ msgstr "用戶社å€ç©åˆ†"
+#~ msgid "your current %(email)s can be used for this"
+#~ msgstr "å¯ä»¥ç”¨é›»å­ä¿¡ç®± %(email)s "
-#~ msgid "Save"
-#~ msgstr "儲存"
+#~ msgid "thanks for verifying email"
+#~ msgstr "æ„Ÿè¬é©—證電å­ä¿¡ç®±"
-#, fuzzy
-#~ msgid "User reputation changed"
-#~ msgstr "用戶社å€ç©åˆ†"
+#~ msgid "email key not sent"
+#~ msgstr "é›»å­ä¿¡ç®± key 未傳é€"
-#~ msgid "Add"
-#~ msgstr "增加"
+#~ msgid "email key not sent %(email)s change email here %(change_link)s"
+#~ msgstr "%(change_link)s 未傳é€é›»å­ä¿¡ç®± key %(email)s"
-#, fuzzy
-#~ msgid "Send message to %(username)s"
-#~ msgstr "é¸æ“‡ä¸€å€‹ç”¨æˆ¶å"
+#~ msgid "register new %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr "註冊 %(provider)s 帳號, åƒè€ƒ %(gravatar_faq_url)s"
+
+#~ msgid ""
+#~ "%(username)s already exists, choose another name for \n"
+#~ " %(provider)s. Email is required too, see "
+#~ "%(gravatar_faq_url)s\n"
+#~ " "
+#~ msgstr ""
+#~ "%(username)s 已註冊, è«‹é¸ç”¨ %(provider)s 其他帳號 \n"
+#~ " åŒæ™‚也需è¦é›»å­ä¿¡ç®±, è«‹åƒè€ƒ %(gravatar_faq_url)s\n"
+#~ " "
+
+#~ msgid ""
+#~ "register new external %(provider)s account info, see %(gravatar_faq_url)s"
+#~ msgstr "註冊外在 %(provider)s 帳號, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+
+#~ msgid "register new Facebook connect account info, see %(gravatar_faq_url)s"
+#~ msgstr "註冊臉書新帳號, è«‹åƒè€ƒ %(gravatar_faq_url)s"
+
+# todo: review this message may be confusing user
+#~ msgid "This account already exists, please use another."
+#~ msgstr "指定帳號已經存在, 請使用別的帳號。"
+
+#~ msgid "Screen name label"
+#~ msgstr "ç•«é¢æ¨™é¡Œ"
#, fuzzy
-#~ msgid "Message sent"
-#~ msgstr "訊æ¯"
+#~ msgid "Email address label"
+#~ msgstr "您的電å­éƒµä»¶åœ°å€"
+
+#~ msgid "receive updates motivational blurb"
+#~ msgstr "接收到更新的簡介"
+
+#~ msgid "Tag filter tool will be your right panel, once you log in."
+#~ msgstr "一旦簽入, 標籤供èšæœƒåœ¨å³æ¬„"
+
+#~ msgid "create account"
+#~ msgstr "新增帳號"
#, fuzzy
-#~ msgid "Send message"
-#~ msgstr "Copyright(c)2009.CNPROG.COM"
+#~ msgid ""
+#~ "If you beleive that this message was sent in mistake - \n"
+#~ "no further action is needed. Just ingore this email, we apologize\n"
+#~ "for any inconvenience"
+#~ msgstr "如你肯定這訊æ¯è¢«èª¤é€, ä¸éœ€åšä»»ä½•å‹•ä½œ, 並忽略此信, éžå¸¸æŠ±æ­‰ \n"
+
+#~ msgid "Login"
+#~ msgstr "登錄"
+
+#~ msgid "Why use OpenID?"
+#~ msgstr "為什麼使用 OpenID 登錄?"
+
+#~ msgid "with openid it is easier"
+#~ msgstr "使用 OpenID 更為容易"
+
+#~ msgid "reuse openid"
+#~ msgstr "用åŒä¸€å€‹ opedid 帳號"
+
+#~ msgid "openid is widely adopted"
+#~ msgstr "OpenID 廣為被人利用"
+
+#~ msgid "openid is supported open standard"
+#~ msgstr "OpenID 為開放標準"
+
+#~ msgid "Find out more"
+#~ msgstr "查看更多"
+
+#~ msgid "Get OpenID"
+#~ msgstr "ç²å– OpenID"
+
+#~ msgid "Traditional signup info"
+#~ msgstr "傳統登入事項"
#, fuzzy
-#~ msgid "Suspended users can only edit or delete their own posts."
-#~ msgstr "被åœç”¨ä½¿ç”¨è€…ä¸èƒ½å¼µè²¼"
+#~ msgid "Create Account"
+#~ msgstr "新增帳號"
+
+#~ msgid "answer permanent link"
+#~ msgstr "回答的連çµåœ°å€"
#, fuzzy
-#~ msgid "%(username)s's network is empty"
-#~ msgstr "用戶資料"
+#~ msgid "remove all flags"
+#~ msgstr "查看標籤列表"
#, fuzzy
-#~ msgid "activity"
-#~ msgstr "熱門å•é¡Œ"
+#~ msgid "%(question_author)s has selected this answer as correct"
+#~ msgstr "這個答案已經被æå•ä½œè€…標記為最佳答案"
-#~ msgid "Your karma change log."
-#~ msgstr "karma 更動日誌"
+#~ msgid "Related tags"
+#~ msgstr "相關標籤"
-#~ msgid "%(user_name)s's karma change log"
-#~ msgstr "%(user_name)s karma 更動日誌"
+#~ msgid "Ask a question"
+#~ msgstr "我è¦æå•"
-#~ msgid "overview"
-#~ msgstr "概覽"
+#~ msgid "Badges summary"
+#~ msgstr "çŽå‹µåˆ—表"
-#~ msgid "<span class=\"count\">%(counter)s</span> Question"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Questions"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> å•é¡Œ"
+#~ msgid "gold badge description"
+#~ msgstr "第一åçŽå‹µç´°ç¯€"
-#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> 答案"
+#~ msgid "silver badge description"
+#~ msgstr "第二åçŽå‹µç´°ç¯€"
+
+#~ msgid "bronze badge description"
+#~ msgstr "第三åçŽå‹µç´°ç¯€"
-#~ msgid "the answer has been voted for %(answer_score)s times"
-#~ msgstr "該回答總共有 %(answer_score)s 個投票"
+#~ 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 " 此為 å•é¡Œ/回答 網站,éžè¨Žè«–å€ï¼Œè«‹å‹¿åœ¨æ­¤è¨Žè«–或評論答案。"
-#~ msgid "this answer has been selected as correct"
-#~ msgstr "該回答已被èªç‚ºæ­£ç¢º"
+#~ msgid "Rep system summary"
+#~ msgstr "更新概è¦ï¼š"
#, fuzzy
-#~ msgid "(%(comment_count)s comment)"
-#~ msgid_plural "the answer has been commented %(comment_count)s times"
-#~ msgstr[0] "(%(comment_count)s è©•è«–)"
+#~ msgid "use tags"
+#~ msgstr "使用標籤"
-#~ msgid "<span class=\"count\">%(cnt)s</span> Vote"
-#~ msgid_plural "<span class=\"count\">%(cnt)s</span> Votes "
-#~ msgstr[0] "<span class=\"count\">%(cnt)s</span> 票"
+#~ msgid "what is gravatar"
+#~ msgstr "何謂大頭貼æœå‹™"
-#~ msgid "thumb up"
-#~ msgstr "è´ŠåŒ"
+#~ msgid "gravatar faq info"
+#~ msgstr "大頭貼æœå‹™å¸¸å•é›†"
-#~ msgid "user has voted up this many times"
-#~ msgstr "用戶已投贊æˆç¥¨æ•¸æ¬¡"
+#, fuzzy
+#~ msgid "i like this question (click again to cancel)"
+#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
-#~ msgid "thumb down"
-#~ msgstr "åå°"
+#~ msgid "i like this answer (click again to cancel)"
+#~ msgstr "這篇帖å­æœ‰åƒ¹å€¼ï¼ˆå†æ¬¡é»žæ“Šå–消æ“作)"
#, fuzzy
-#~ msgid "user voted down this many times"
-#~ msgstr "用戶已投åå°ç¥¨æ•¸æ¬¡"
-
-#~ msgid "<span class=\"count\">%(counter)s</span> Tag"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Tags"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> 標籤"
+#~ msgid "i dont like this question (click again to cancel)"
+#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
-#~ msgid "<span class=\"count\">%(counter)s</span> Badge"
-#~ msgid_plural "<span class=\"count\">%(counter)s</span> Badges"
-#~ msgstr[0] "<span class=\"count\">%(counter)s</span> 標記"
+#~ msgid "i dont like this answer (click again to cancel)"
+#~ msgstr "這篇帖å­æ²’有價值(å†æ¬¡é»žæ“Šå–消æ“作)"
#, fuzzy
-#~ msgid "Answer to:"
-#~ msgstr "æå•æŠ€å·§"
+#~ msgid "see <strong>%(counter)s</strong> more comment"
+#~ msgid_plural ""
+#~ "see <strong>%(counter)s</strong> more comments\n"
+#~ " "
+#~ msgstr[0] "更多評論, 詳見 <strong>%(counter)s</strong>"
-#~ msgid "User profile"
-#~ msgstr "用戶資料"
+#~ msgid "posts per page"
+#~ msgstr "æ¯é é¡¯ç¤ºï¼š"
-#~ msgid "graph of user reputation"
-#~ msgstr "用戶的社群ç©åˆ†åœ–示"
+#~ msgid "Change tags"
+#~ msgstr "修改標籤"
-#~ msgid "reputation history"
-#~ msgstr "ç©åˆ†æ­·å²"
+#~ msgid "reputation"
+#~ msgstr "ç©åˆ†"
-#, fuzzy
-#~ msgid "questions that user is following"
-#~ msgstr "用戶收è—çš„å•é¡Œ"
+#~ msgid "oldest answers"
+#~ msgstr "最先回答"
-#~ msgid "recent activity"
-#~ msgstr "最近活動"
+#~ msgid "newest answers"
+#~ msgstr "最近回答"
-#~ msgid "casted votes"
-#~ msgstr "決定性投票"
+#~ msgid "popular answers"
+#~ msgstr "投票最多"
-#~ msgid "votes"
-#~ msgstr "投票"
+#~ msgid "you can answer anonymously and then login"
+#~ msgstr "ä½ å¯ä»¥åŒ¿å回應å†ç°½å…¥"
-#~ msgid "answer tips"
-#~ msgstr "æå•æŠ€å·§"
+#~ msgid "answer your own question only to give an answer"
+#~ msgstr "自å•è‡ªç­”"
-#~ msgid "please make your answer relevant to this community"
-#~ msgstr "請回應相關答案"
+#~ msgid "please only give an answer, no discussions"
+#~ msgstr "請答複å•é¡Œï¼Œè€Œéžè¨Žè«–。"
-#~ msgid "try to give an answer, rather than engage into a discussion"
-#~ msgstr "盡é‡ç­”覆å•é¡Œï¼Œè€Œéžè¨Žè«–。"
+#, fuzzy
+#~ msgid "Login/Signup to Post Your Answer"
+#~ msgstr "登錄並回答該å•é¡Œ"
-#~ msgid "please try to provide details"
-#~ msgstr "請詳細æ述細節"
+#~ msgid "Answer the question"
+#~ msgstr "回答å•é¡Œ"
-#~ msgid "be clear and concise"
-#~ msgstr "簡單扼è¦"
+#, fuzzy
+#~ msgid "question asked"
+#~ msgstr "æå•æ™‚é–“"
-#~ msgid "see frequently asked questions"
-#~ msgstr "查看常見å•é¡Œ"
+#~ msgid "question was seen"
+#~ msgstr "ç›®å‰å•é¡Œ"
-#~ msgid "Markdown tips"
-#~ msgstr "Markdown 快速åƒè€ƒ"
+#, fuzzy
+#~ msgid "Notify me once a day when there are any new answers"
+#~ msgstr "若有新答案請知會我"
#, fuzzy
-#~ msgid "*italic* or _italic_"
-#~ msgstr "*斜體* 或者 _斜體_"
+#~ msgid "Notify me immediately when there are any new answers"
+#~ msgstr "若有新答案請知會我"
-#~ msgid "**bold** or __bold__"
-#~ msgstr "**加粗** 或者 __加粗__ "
+#~ msgid ""
+#~ "You can always adjust frequency of email updates from your %(profile_url)s"
+#~ msgstr "ä½ å¯å¾ž %(profile_url)s 調整 email 更新頻率"
+
+#~ msgid "email subscription settings info"
+#~ msgstr "Email 訂閱設定資料"
-#~ msgid "link"
-#~ msgstr "è¯çµ"
+#~ msgid "Stop sending email"
+#~ msgstr "åœæ­¢é€å‡º email"
-#~ msgid "text"
-#~ msgstr "文字"
+#~ msgid "user website"
+#~ msgstr "個人網站"
+
+#~ msgid "<span class=\"count\">%(counter)s</span> Answer"
+#~ msgid_plural "<span class=\"count\">%(counter)s</span> Answers"
+#~ msgstr[0] "<span class=\"count\">%(counter)s</span> 答案"
+
+#~ msgid "reputation history"
+#~ msgstr "ç©åˆ†æ­·å²"
-#~ msgid "image"
-#~ msgstr "圖片"
+#~ msgid "recent activity"
+#~ msgstr "最近活動"
-#~ msgid "numbered list:"
-#~ msgstr "有åºåˆ—表:"
+#~ msgid "casted votes"
+#~ msgstr "決定性投票"
-#~ msgid "basic HTML tags are also supported"
-#~ msgstr "支æ´åŸºæœ¬çš„HTML標籤"
+#~ msgid "answer tips"
+#~ msgstr "æå•æŠ€å·§"
-#~ msgid "learn more about Markdown"
-#~ msgstr "有關 Markdown 詳細說明"
+#~ msgid "please try to provide details"
+#~ msgstr "請詳細æ述細節"
#~ msgid "ask a question"
#~ msgstr "我è¦æå•"
-#~ msgid "login to post question info"
-#~ msgstr "簽入張貼å•é¡Œ"
-
#, fuzzy
#~ msgid ""
#~ "must have valid %(email)s to post, \n"
@@ -5448,81 +7193,44 @@ msgstr ""
#~ msgid "Login/signup to post your question"
#~ msgstr "請 Login/signup 進去張貼"
-#~ msgid "Ask your question"
-#~ msgstr "ç¾åœ¨æå•"
-
-#~ msgid "Contributors"
-#~ msgstr "è²¢ç»è€…"
-
-# footer.html
-#~ msgid "about"
-#~ msgstr "關於本站"
-
-#~ msgid "privacy policy"
-#~ msgstr "éš±ç§æ”¿ç­–"
-
-#~ msgid "give feedback"
-#~ msgstr "å•é¡Œå›žé¥‹"
-
-#~ msgid "back to home page"
-#~ msgstr "回到首é "
-
-#, fuzzy
-#~ msgid "%(site)s logo"
-#~ msgstr "社å€é€šç”¨èªž"
-
-#~ msgid "users"
-#~ msgstr "用戶"
-
-#~ msgid "badges"
-#~ msgstr "çŽå‹µæ¦œ"
-
#~ msgid "question tips"
#~ msgstr "æå•æŠ€å·§"
#~ msgid "please ask a relevant question"
#~ msgstr "我è¦æå•"
-#~ msgid "please try provide enough details"
-#~ msgstr "請詳細æ述您的å•é¡Œã€‚"
+#~ msgid "logout"
+#~ msgstr "登出"
-#, fuzzy
-#~ msgid "view"
-#~ msgid_plural "views"
-#~ msgstr[0] "ç€è¦½"
+#~ msgid "login"
+#~ msgstr "登錄"
#, fuzzy
-#~ msgid "answer"
-#~ msgid_plural "answers"
-#~ msgstr[0] "回答"
+#~ msgid "no items in counter"
+#~ msgstr "ç„¡"
-#, fuzzy
-#~ msgid "vote"
-#~ msgid_plural "votes"
-#~ msgstr[0] "票"
+#~ msgid "your email address"
+#~ msgstr "您的電å­éƒµä»¶åœ°å€"
-#, fuzzy
-#~ msgid "see unanswered questions"
-#~ msgstr "沒有回答的å•é¡Œ"
+#~ msgid "choose password"
+#~ msgstr "密碼"
-#, fuzzy
-#~ msgid "see your followed questions"
-#~ msgstr "用戶收è—çš„å•é¡Œ"
+#~ msgid "retype password"
+#~ msgstr "確èªå¯†ç¢¼"
-#, fuzzy
-#~ msgid "badges:"
-#~ msgstr "çŽå‹µæ¦œ"
+#~ msgid "user reputation in the community"
+#~ msgstr "用戶社å€ç©åˆ†"
-#~ msgid "logout"
-#~ msgstr "登出"
+#, fuzzy
+#~ msgid "Please log in to ask questions"
+#~ msgstr "æ­¡è¿Žæå•! "
-#~ msgid "login"
-#~ msgstr "登錄"
+#~ msgid "question content must be > 10 characters"
+#~ msgstr "內容至少è¦10個字符"
-# book.html line 123 must be empty in english
#, fuzzy
-#~ msgid "settings"
-#~ msgstr "é‡è¨­æ¨™ç±¤"
+#~ msgid "Question: \"%(title)s\""
+#~ msgstr "æå•"
#, fuzzy
#~ msgid "(please enter a valid email)"
@@ -5559,9 +7267,6 @@ msgstr ""
#~ msgid "Question tags"
#~ msgstr "å•é¡Œæ¨™ç±¤"
-#~ msgid "questions"
-#~ msgstr "å•é¡Œ"
-
#~ msgid "search"
#~ msgstr "æœç´¢"
@@ -5573,13 +7278,6 @@ msgstr ""
#~ msgstr "In:"
#, fuzzy
-#~ msgid "followed"
-#~ msgstr "所有å•é¡Œ"
-
-#~ msgid "Sort by:"
-#~ msgstr "查詢性質: "
-
-#, fuzzy
#~ msgid "Email (not shared with anyone):"
#~ msgstr "é›»å­éƒµä»¶ï¼ˆ<i>用於頭åƒé¡¯ç¤ºæœå‹™</i>)"
@@ -5856,18 +7554,12 @@ msgstr ""
#~ "\n"
#~ " %(counter)s 答案:\n"
-#~ msgid "tagged"
-#~ msgstr "標記"
-
#~ msgid "remove '%(tag_name)s' from the list of interesting tags"
#~ msgstr "從有趣的標籤, 去除 '%(tag_name)s'"
#~ msgid "remove '%(tag_name)s' from the list of ignored tags"
#~ msgstr "從忽視的標籤, 去除 '%(tag_name)s'"
-#~ msgid "keep ignored questions hidden"
-#~ msgstr "繼續隱è—忽視的å•é¡Œ"
-
#~ msgid ""
#~ "All tags matching '<span class=\"darkred\"><strong>%(stag)s</strong></"
#~ "span>'"
@@ -6201,9 +7893,6 @@ msgstr ""
#~ msgid "Existing account"
#~ msgstr "已經存在的用戶"
-#~ msgid "user name"
-#~ msgstr "用戶å"
-
#~ msgid "password"
#~ msgstr "密碼"
@@ -6427,11 +8116,6 @@ msgstr ""
#~ "please use space to separate tags (this enables autocomplete feature)"
#~ msgstr "多個標籤請用空格間隔(優先使用自動匹é…的英文標籤。)"
-#~ msgid ""
-#~ "please use following characters in tags: letters 'a-z', numbers, and "
-#~ "characters '.-_#'"
-#~ msgstr "標籤請使用英文字æ¯ï¼Œä¸­æ–‡æˆ–者數字字符串(. - _ # 也å¯ä»¥ï¼‰"
-
#~ msgid "profile - user preferences"
#~ msgstr "用戶資料 - 設置"
@@ -6453,14 +8137,6 @@ msgstr ""
#~ msgstr "é›»å­éƒµä»¶:(ä¸æœƒå…¬é–‹é¡¯ç¤ºï¼‰"
#~ msgid ""
-#~ "gold badge descriptionGold 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 ""
-#~ "金牌是å分罕見的。你ä¸åƒ…è¦åƒèˆ‡ç¤¾å€çš„æå•ã€å›žç­”ã€æŠ•ç¥¨ç­‰æ´»å‹•ï¼Œè€Œä¸”需è¦æœ‰åšæ·±"
-#~ "的知識和能力æ‰èƒ½ç²å¾—。"
-
-#~ msgid ""
#~ "silver badge descriptionObtaining silver badge requires significant "
#~ "patience. If you got one, you've very significantly contributed to this "
#~ "community"
@@ -6481,10 +8157,6 @@ msgstr ""
#~ msgstr "銅牌會在你活èºæ–¼ç¤¾å€æ™‚產生,它相å°å®¹æ˜“ç²å¾—,但也是一種特殊的榮譽。"
#, fuzzy
-#~ msgid "About us"
-#~ msgstr "關於本站"
-
-#, fuzzy
#~ msgid "Contact"
#~ msgstr "è¯ç³»æˆ‘們"
@@ -6555,9 +8227,6 @@ msgstr ""
#~ msgid "votes total"
#~ msgstr "投票總數"
-#~ msgid "Tags"
-#~ msgstr "標籤"
-
#~ msgid "New password again"
#~ msgstr "新密碼"
diff --git a/askbot/locale/zh_TW/LC_MESSAGES/djangojs.mo b/askbot/locale/zh_TW/LC_MESSAGES/djangojs.mo
new file mode 100644
index 00000000..4b816e14
--- /dev/null
+++ b/askbot/locale/zh_TW/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.po b/askbot/locale/zh_TW/LC_MESSAGES/djangojs.po
index a8e1e67e..57ffb4ac 100644
--- a/askbot/locale/zh-tw/LC_MESSAGES/djangojs.po
+++ b/askbot/locale/zh_TW/LC_MESSAGES/djangojs.po
@@ -2,23 +2,23 @@
# 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.
-#
msgid ""
msgstr ""
"Project-Id-Version: 0.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-27 02:00-0600\n"
+"POT-Creation-Date: 2012-04-18 18:52-0500\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"
-"Language: \n"
+"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Translate Toolkit 1.9.0\n"
#: skins/common/media/jquery-openid/jquery.openid.js:73
-#, c-format
+#, perl-format
msgid "Are you sure you want to remove your %s login?"
msgstr ""
@@ -36,38 +36,38 @@ msgstr ""
msgid "passwords do not match"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:162
+#: skins/common/media/jquery-openid/jquery.openid.js:161
msgid "Show/change current login methods"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:223
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:226
+#, perl-format
msgid "Please enter your %s, then proceed"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:225
+#: skins/common/media/jquery-openid/jquery.openid.js:228
msgid "Connect your %(provider_name)s account to %(site)s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:319
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:322
+#, perl-format
msgid "Change your %s password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:320
+#: skins/common/media/jquery-openid/jquery.openid.js:323
msgid "Change password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:323
-#, c-format
+#: skins/common/media/jquery-openid/jquery.openid.js:326
+#, perl-format
msgid "Create a password for %s"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:324
+#: skins/common/media/jquery-openid/jquery.openid.js:327
msgid "Create password"
msgstr ""
-#: skins/common/media/jquery-openid/jquery.openid.js:340
+#: skins/common/media/jquery-openid/jquery.openid.js:343
msgid "Create a password-protected account"
msgstr ""
@@ -75,146 +75,77 @@ msgstr ""
msgid "loading..."
msgstr "讀å–中..."
-#: skins/common/media/js/post.js:128 skins/common/media/js/post.js.c:859
-msgid "tags cannot be empty"
-msgstr "標籤ä¸èƒ½ç‚ºç©ºç™½"
-
-#: skins/common/media/js/post.js:134
-msgid "content cannot be empty"
-msgstr "內容ä¸èƒ½ç‚ºç©ºç™½"
-
-#: skins/common/media/js/post.js:135
-#, c-format
-msgid "%s content minchars"
-msgstr "請輸入至少 %s 字符。"
-
-#: skins/common/media/js/post.js:138
-msgid "please enter title"
-msgstr "請輸入標題。"
-
-#: skins/common/media/js/post.js:139 skins/common/media/js/post.js.c:987
-#, c-format
-msgid "%s title minchars"
-msgstr "請輸入至少 %s 字符。"
-
-#: skins/common/media/js/post.js:282
+#: skins/common/media/js/post.js:318
msgid "insufficient privilege"
msgstr "權é™ä¸è¶³"
-#: skins/common/media/js/post.js:283
+#: skins/common/media/js/post.js:319
msgid "cannot pick own answer as best"
msgstr "ä¸èƒ½è”½æŽƒè‡ªç"
-#: skins/common/media/js/post.js:288
+#: skins/common/media/js/post.js:324
msgid "please login"
msgstr "請先登錄"
-#: skins/common/media/js/post.js:290
+#: skins/common/media/js/post.js:326
msgid "anonymous users cannot follow questions"
msgstr ""
-#: skins/common/media/js/post.js:291
+#: skins/common/media/js/post.js:327
msgid "anonymous users cannot subscribe to questions"
msgstr ""
-#: skins/common/media/js/post.js:292
+#: skins/common/media/js/post.js:328
msgid "anonymous users cannot vote"
msgstr ""
-#: skins/common/media/js/post.js:294
+#: skins/common/media/js/post.js:330
msgid "please confirm offensive"
msgstr "確定è¦æ­¸é¡žè©²å¸–為廣告ã€äººèº«æ”»æ“Šã€æƒ¡æ„言論嗎?"
-#: skins/common/media/js/post.js:295
+#: skins/common/media/js/post.js:331
+#, fuzzy
+msgid "please confirm removal of offensive flag"
+msgstr "確定è¦æ­¸é¡žè©²å¸–為廣告ã€äººèº«æ”»æ“Šã€æƒ¡æ„言論嗎?"
+
+#: skins/common/media/js/post.js:332
msgid "anonymous users cannot flag offensive posts"
msgstr "匿å用戶ä¸èƒ½æ“作"
-#: skins/common/media/js/post.js:296
+#: skins/common/media/js/post.js:333
msgid "confirm delete"
msgstr "確定刪除"
-#: skins/common/media/js/post.js:297
+#: skins/common/media/js/post.js:334
msgid "anonymous users cannot delete/undelete"
msgstr "匿å用戶ä¸èƒ½åˆªé™¤æˆ–æ¢å¾©å¸–å­"
-#: skins/common/media/js/post.js:298
+#: skins/common/media/js/post.js:335
msgid "post recovered"
msgstr "æ“作æˆåŠŸï¼è©²å¸–å­å·²è¢«æ¢è¤‡ã€‚"
-#: skins/common/media/js/post.js:299
+#: skins/common/media/js/post.js:336
msgid "post deleted"
msgstr "æ“作æˆåŠŸï¼è©²å¸–å­å·²åˆªé™¤ã€‚"
-#: skins/common/media/js/post.js:539 skins/old/media/js/post.js:535
-msgid "Follow"
-msgstr ""
-
-#: skins/common/media/js/post.js:548 skins/common/media/js/post.js.c:557
-#: skins/old/media/js/post.js:544 skins/old/media/js/post.js.c:553
-#, c-format
-msgid "%s follower"
-msgid_plural "%s followers"
-msgstr[0] ""
-msgstr[1] ""
-
-#: skins/common/media/js/post.js:553 skins/old/media/js/post.js:549
-msgid "<div>Following</div><div class=\"unfollow\">Unfollow</div>"
-msgstr ""
-
-#: skins/common/media/js/post.js:615
-msgid "undelete"
-msgstr "å–消"
-
-#: skins/common/media/js/post.js:620
-msgid "delete"
-msgstr "刪除"
-
-#: skins/common/media/js/post.js:957
+#: skins/common/media/js/post.js:1206
msgid "add comment"
msgstr "添加評論"
-#: skins/common/media/js/post.js:960
+#: skins/common/media/js/post.js:1209
msgid "save comment"
msgstr ""
-#: skins/common/media/js/post.js:990
-#, c-format
-msgid "enter %s more characters"
-msgstr "é‚„å¯å¯«%så­—"
-
-#: skins/common/media/js/post.js:995
-#, c-format
-msgid "%s characters left"
-msgstr "é‚„å¯å¯«%så­—"
-
-#: skins/common/media/js/post.js:1066
-msgid "cancel"
-msgstr ""
-
-#: skins/common/media/js/post.js:1109
-msgid "confirm abandon comment"
-msgstr ""
-
-#: skins/common/media/js/post.js:1183
-msgid "delete this comment"
-msgstr "刪除此評論"
-
-#: skins/common/media/js/post.js:1387
-msgid "confirm delete comment"
-msgstr "刪除評論確èª"
-
-#: skins/common/media/js/post.js:1628 skins/old/media/js/post.js:1621
+#: skins/common/media/js/post.js:1874
msgid "Please enter question title (>10 characters)"
msgstr ""
#: skins/common/media/js/tag_selector.js:15
-#: skins/old/media/js/tag_selector.js:15
msgid "Tag \"<span></span>\" matches:"
msgstr ""
#: skins/common/media/js/tag_selector.js:84
-#: skins/old/media/js/tag_selector.js:84
-#, c-format
+#, perl-format
msgid "and %s more, not shown..."
msgstr ""
@@ -227,118 +158,148 @@ msgid "Delete this notification?"
msgid_plural "Delete these notifications?"
msgstr[0] ""
-#: skins/common/media/js/user.js:125 skins/old/media/js/user.js:129
+#: skins/common/media/js/user.js:65
+#, fuzzy
+msgid "Close this entry?"
+msgid_plural "Close these entries?"
+msgstr[0] "刪除此評論"
+
+#: skins/common/media/js/user.js:72
+msgid "Remove all flags on this entry?"
+msgid_plural "Remove all flags on these entries?"
+msgstr[0] ""
+
+#: skins/common/media/js/user.js:79
+#, fuzzy
+msgid "Delete this entry?"
+msgid_plural "Delete these entries?"
+msgstr[0] "刪除此評論"
+
+#: skins/common/media/js/user.js:159
msgid "Please <a href=\"%(signin_url)s\">signin</a> to follow %(username)s"
msgstr ""
-#: skins/common/media/js/user.js:157 skins/old/media/js/user.js:161
-#, c-format
+#: skins/common/media/js/user.js:191
+#, perl-format
msgid "unfollow %s"
msgstr ""
-#: skins/common/media/js/user.js:160 skins/old/media/js/user.js:164
-#, c-format
+#: skins/common/media/js/user.js:194
+#, perl-format
msgid "following %s"
msgstr ""
-#: skins/common/media/js/user.js:166 skins/old/media/js/user.js:170
-#, c-format
+#: skins/common/media/js/user.js:200
+#, perl-format
msgid "follow %s"
msgstr ""
-#: skins/common/media/js/utils.js:43
+#: skins/common/media/js/utils.js:44
msgid "click to close"
msgstr "點擊消æ¯æ¡†é—œé–‰"
-#: skins/common/media/js/utils.js:214
-msgid "click to edit this comment"
-msgstr ""
-
-#: skins/common/media/js/utils.js:215
-msgid "edit"
-msgstr ""
-
-#: skins/common/media/js/utils.js:369
-#, c-format
-msgid "see questions tagged '%s'"
-msgstr ""
-
-#: skins/common/media/js/wmd/wmd.js:30
+#: skins/common/media/js/wmd/wmd.js:26
msgid "bold"
msgstr "ç²—é«”"
-#: skins/common/media/js/wmd/wmd.js:31
+#: skins/common/media/js/wmd/wmd.js:27
msgid "italic"
msgstr "斜體"
-#: skins/common/media/js/wmd/wmd.js:32
+#: skins/common/media/js/wmd/wmd.js:28
msgid "link"
msgstr "超連接"
-#: skins/common/media/js/wmd/wmd.js:33
+#: skins/common/media/js/wmd/wmd.js:29
msgid "quote"
msgstr "引用"
-#: skins/common/media/js/wmd/wmd.js:34
+#: skins/common/media/js/wmd/wmd.js:30
msgid "preformatted text"
msgstr "代碼"
-#: skins/common/media/js/wmd/wmd.js:35
+#: skins/common/media/js/wmd/wmd.js:31
msgid "image"
msgstr "圖片"
-#: skins/common/media/js/wmd/wmd.js:36
+#: skins/common/media/js/wmd/wmd.js:32
msgid "attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:37
+#: skins/common/media/js/wmd/wmd.js:33
msgid "numbered list"
msgstr "數字編號列表"
-#: skins/common/media/js/wmd/wmd.js:38
+#: skins/common/media/js/wmd/wmd.js:34
msgid "bulleted list"
msgstr "項目符號列表"
-#: skins/common/media/js/wmd/wmd.js:39
+#: skins/common/media/js/wmd/wmd.js:35
msgid "heading"
msgstr "標題"
-#: skins/common/media/js/wmd/wmd.js:40
+#: skins/common/media/js/wmd/wmd.js:36
msgid "horizontal bar"
msgstr "水平線"
-#: skins/common/media/js/wmd/wmd.js:41
+#: skins/common/media/js/wmd/wmd.js:37
msgid "undo"
msgstr "撤銷"
-#: skins/common/media/js/wmd/wmd.js:42 skins/common/media/js/wmd/wmd.js:1116
+#: skins/common/media/js/wmd/wmd.js:38 skins/common/media/js/wmd/wmd.js:1053
msgid "redo"
msgstr "é‡åš"
-#: skins/common/media/js/wmd/wmd.js:53
+#: skins/common/media/js/wmd/wmd.js:47
msgid "enter image url"
msgstr ""
"<b>輸入圖片地å€</b></p><p>示例:<br />http://www.example.com/image.jpg \"我"
"的截圖\""
-#: skins/common/media/js/wmd/wmd.js:54
+#: skins/common/media/js/wmd/wmd.js:48
msgid "enter url"
msgstr ""
"<b>輸入Web地å€</b></p><p>示例:<br />http://www.cnprog.com/ \"我的網站\"</"
"p>"
-#: skins/common/media/js/wmd/wmd.js:55
+#: skins/common/media/js/wmd/wmd.js:49
msgid "upload file attachment"
msgstr ""
-#: skins/common/media/js/wmd/wmd.js:1778
-msgid "image description"
-msgstr ""
+#~ msgid "tags cannot be empty"
+#~ msgstr "標籤ä¸èƒ½ç‚ºç©ºç™½"
-#: skins/common/media/js/wmd/wmd.js:1781
-msgid "file name"
-msgstr ""
+#~ msgid "content cannot be empty"
+#~ msgstr "內容ä¸èƒ½ç‚ºç©ºç™½"
-#: skins/common/media/js/wmd/wmd.js:1785
-msgid "link text"
-msgstr ""
+#~ msgid "%s content minchars"
+#~ msgstr "請輸入至少 %s 字符。"
+
+#~ msgid "please enter title"
+#~ msgstr "請輸入標題。"
+
+#~ msgid "%s title minchars"
+#~ msgstr "請輸入至少 %s 字符。"
+
+#, fuzzy
+#~ msgid "%s follower"
+#~ msgid_plural "%s followers"
+#~ msgstr[0] ""
+#~ "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+#~ "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+#~ msgstr[1] "#-#-#-#-# djangojs.po (0.7) #-#-#-#-#\n"
+
+#~ msgid "undelete"
+#~ msgstr "å–消"
+
+#~ msgid "delete"
+#~ msgstr "刪除"
+
+#~ msgid "enter %s more characters"
+#~ msgstr "é‚„å¯å¯«%så­—"
+
+#~ msgid "%s characters left"
+#~ msgstr "é‚„å¯å¯«%så­—"
+
+#~ msgid "confirm delete comment"
+#~ msgstr "刪除評論確èª"
diff --git a/askbot/mail/__init__.py b/askbot/mail/__init__.py
new file mode 100644
index 00000000..7ff8a2d3
--- /dev/null
+++ b/askbot/mail/__init__.py
@@ -0,0 +1,393 @@
+"""functions that send email in askbot
+these automatically catch email-related exceptions
+"""
+import os
+import smtplib
+import logging
+from django.core import mail
+from django.conf import settings as django_settings
+from django.core.exceptions import PermissionDenied
+from django.forms import ValidationError
+from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import string_concat
+from django.template import Context
+from askbot import exceptions
+from askbot import const
+from askbot.conf import settings as askbot_settings
+from askbot.utils import url_utils
+from askbot.utils.file_utils import store_file
+#todo: maybe send_mail functions belong to models
+#or the future API
+def prefix_the_subject_line(subject):
+ """prefixes the subject line with the
+ EMAIL_SUBJECT_LINE_PREFIX either from
+ from live settings, which take default from django
+ """
+ prefix = askbot_settings.EMAIL_SUBJECT_PREFIX
+ if prefix != '':
+ subject = prefix.strip() + ' ' + subject.strip()
+ return subject
+
+def extract_first_email_address(text):
+ """extract first matching email address
+ from text string
+ returns ``None`` if there are no matches
+ """
+ match = const.EMAIL_REGEX.search(text)
+ if match:
+ return match.group(0)
+ else:
+ return None
+
+def thread_headers(post, orig_post, update):
+ """modify headers for email messages, so
+ that emails appear as threaded conversations in gmail"""
+ suffix_id = django_settings.SERVER_EMAIL
+ if update == const.TYPE_ACTIVITY_ASK_QUESTION:
+ msg_id = "NQ-%s-%s" % (post.id, suffix_id)
+ headers = {'Message-ID': msg_id}
+ elif update == const.TYPE_ACTIVITY_ANSWER:
+ msg_id = "NA-%s-%s" % (post.id, suffix_id)
+ orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
+ headers = {'Message-ID': msg_id,
+ 'In-Reply-To': orig_id}
+ elif update == const.TYPE_ACTIVITY_UPDATE_QUESTION:
+ msg_id = "UQ-%s-%s-%s" % (post.id, post.last_edited_at, suffix_id)
+ orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
+ headers = {'Message-ID': msg_id,
+ 'In-Reply-To': orig_id}
+ elif update == const.TYPE_ACTIVITY_COMMENT_QUESTION:
+ msg_id = "CQ-%s-%s" % (post.id, suffix_id)
+ orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
+ headers = {'Message-ID': msg_id,
+ 'In-Reply-To': orig_id}
+ elif update == const.TYPE_ACTIVITY_UPDATE_ANSWER:
+ msg_id = "UA-%s-%s-%s" % (post.id, post.last_edited_at, suffix_id)
+ orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
+ headers = {'Message-ID': msg_id,
+ 'In-Reply-To': orig_id}
+ elif update == const.TYPE_ACTIVITY_COMMENT_ANSWER:
+ msg_id = "CA-%s-%s" % (post.id, suffix_id)
+ orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
+ headers = {'Message-ID': msg_id,
+ 'In-Reply-To': orig_id}
+ else:
+ # Unknown type -> Can't set headers
+ return {}
+
+ return headers
+
+def send_mail(
+ subject_line = None,
+ body_text = None,
+ from_email = django_settings.DEFAULT_FROM_EMAIL,
+ recipient_list = None,
+ activity_type = None,
+ related_object = None,
+ headers = None,
+ raise_on_failure = False,
+ ):
+ """
+ todo: remove parameters not relevant to the function
+ sends email message
+ logs email sending activity
+ and any errors are reported as critical
+ in the main log file
+
+ related_object is not mandatory, other arguments
+ are. related_object (if given, will be saved in
+ the activity record)
+
+ if raise_on_failure is True, exceptions.EmailNotSent is raised
+ """
+ try:
+ assert(subject_line is not None)
+ subject_line = prefix_the_subject_line(subject_line)
+ msg = mail.EmailMessage(
+ subject_line,
+ body_text,
+ from_email,
+ recipient_list,
+ headers = headers
+ )
+ msg.content_subtype = 'html'
+ msg.send()
+ if related_object is not None:
+ assert(activity_type is not None)
+ except Exception, error:
+ logging.critical(unicode(error))
+ if raise_on_failure == True:
+ raise exceptions.EmailNotSent(unicode(error))
+
+def mail_moderators(
+ subject_line = '',
+ body_text = '',
+ raise_on_failure = False):
+ """sends email to forum moderators and admins
+ """
+ from django.db.models import Q
+ from askbot.models import User
+ recipient_list = User.objects.filter(
+ Q(status='m') | Q(is_superuser=True)
+ ).filter(
+ is_active = True
+ ).values_list('email', flat=True)
+ recipient_list = set(recipient_list)
+
+ from_email = ''
+ if hasattr(django_settings, 'DEFAULT_FROM_EMAIL'):
+ from_email = django_settings.DEFAULT_FROM_EMAIL
+
+ try:
+ mail.send_mail(subject_line, body_text, from_email, recipient_list)
+ except smtplib.SMTPException, error:
+ logging.critical(unicode(error))
+ if raise_on_failure == True:
+ raise exceptions.EmailNotSent(unicode(error))
+
+INSTRUCTIONS_PREAMBLE = _('<p>To ask by email, please:</p>')
+QUESTION_TITLE_INSTRUCTION = _(
+ '<li>Type title in the subject line</li>'
+)
+QUESTION_DETAILS_INSTRUCTION = _(
+ '<li>Type details of your question into the email body</li>'
+)
+OPTIONAL_TAGS_INSTRUCTION = _(
+"""<li>The beginning of the subject line can contain tags,
+<em>enclosed in the square brackets</em> like so: [Tag1; Tag2]</li>"""
+)
+REQUIRED_TAGS_INSTRUCTION = _(
+"""<li>In the beginning of the subject add at least one tag
+<em>enclosed in the brackets</em> like so: [Tag1; Tag2].</li>"""
+)
+TAGS_INSTRUCTION_FOOTNOTE = _(
+"""<p>Note that a tag may consist of more than one word, to separate
+the tags, use a semicolon or a comma, for example, [One tag; Other tag]</p>"""
+)
+
+def bounce_email(
+ email, subject, reason = None, body_text = None, reply_to = None
+):
+ """sends a bounce email at address ``email``, with the subject
+ line ``subject``, accepts several reasons for the bounce:
+ * ``'problem_posting'``, ``unknown_user`` and ``permission_denied``
+ * ``body_text`` in an optional parameter that allows to append
+ extra text to the message
+ """
+ if reason == 'problem_posting':
+ error_message = _(
+ '<p>Sorry, there was an error posting your question '
+ 'please contact the %(site)s administrator</p>'
+ ) % {'site': askbot_settings.APP_SHORT_NAME}
+
+ if askbot_settings.TAGS_ARE_REQUIRED:
+ error_message = string_concat(
+ INSTRUCTIONS_PREAMBLE,
+ '<ul>',
+ QUESTION_TITLE_INSTRUCTION,
+ REQUIRED_TAGS_INSTRUCTION,
+ QUESTION_DETAILS_INSTRUCTION,
+ '</ul>',
+ TAGS_INSTRUCTION_FOOTNOTE
+ )
+ else:
+ error_message = string_concat(
+ INSTRUCTIONS_PREAMBLE,
+ '<ul>',
+ QUESTION_TITLE_INSTRUCTION,
+ QUESTION_DETAILS_INSTRUCTION,
+ OPTIONAL_TAGS_INSTRUCTION,
+ '</ul>',
+ TAGS_INSTRUCTION_FOOTNOTE
+ )
+
+ elif reason == 'unknown_user':
+ error_message = _(
+ '<p>Sorry, in order to post questions on %(site)s '
+ 'by email, please <a href="%(url)s">register first</a></p>'
+ ) % {
+ 'site': askbot_settings.APP_SHORT_NAME,
+ 'url': url_utils.get_login_url()
+ }
+ elif reason == 'permission_denied' and body_text is None:
+ error_message = _(
+ '<p>Sorry, your question could not be posted '
+ 'due to insufficient privileges of your user account</p>'
+ )
+ elif body_text:
+ error_message = body_text
+ else:
+ raise ValueError('unknown reason to bounce an email: "%s"' % reason)
+
+
+ #print 'sending email'
+ #print email
+ #print subject
+ #print error_message
+ headers = {}
+ if reply_to:
+ headers['Reply-To'] = reply_to
+
+ send_mail(
+ recipient_list = (email,),
+ subject_line = 'Re: ' + subject,
+ body_text = error_message,
+ headers = headers
+ )
+
+def extract_reply(text):
+ """take the part above the separator
+ and discard the last line above the separator"""
+ if const.REPLY_SEPARATOR_REGEX.search(text):
+ text = const.REPLY_SEPARATOR_REGEX.split(text)[0]
+ return '\n'.join(text.splitlines(True)[:-3])
+ else:
+ return text
+
+def process_attachment(attachment):
+ """will save a single
+ attachment and return
+ link to file in the markdown format and the
+ file storage object
+ """
+ file_storage, file_name, file_url = store_file(attachment)
+ markdown_link = '[%s](%s) ' % (attachment.name, file_url)
+ file_extension = os.path.splitext(attachment.name)[1]
+ #todo: this is a hack - use content type
+ if file_extension.lower() in ('.png', '.jpg', '.jpeg', '.gif'):
+ markdown_link = '!' + markdown_link
+ return markdown_link, file_storage
+
+def extract_user_signature(text, reply_code):
+ """extracts email signature as text trailing
+ the reply code"""
+ if reply_code in text:
+ #extract the signature
+ tail = list()
+ for line in reversed(text.splitlines()):
+ #scan backwards from the end until the magic line
+ if reply_code in line:
+ break
+ tail.insert(0, line)
+
+ #strip off the leading quoted lines, there could be one or two
+ #also strip empty lines
+ while tail and (tail[0].startswith('>') or tail[0].strip() == ''):
+ tail.pop(0)
+
+ return '\n'.join(tail)
+ else:
+ return ''
+
+
+def process_parts(parts, reply_code = None):
+ """Process parts will upload the attachments and parse out the
+ body, if body is multipart. Secondly - links to attachments
+ will be added to the body of the question.
+ Returns ready to post body of the message and the list
+ of uploaded files.
+ """
+ body_markdown = ''
+ stored_files = list()
+ attachments_markdown = ''
+ for (part_type, content) in parts:
+ if part_type == 'attachment':
+ markdown, stored_file = process_attachment(content)
+ stored_files.append(stored_file)
+ attachments_markdown += '\n\n' + markdown
+ elif part_type == 'body':
+ body_markdown += '\n\n' + content.strip('\n\t ')
+ elif part_type == 'inline':
+ markdown, stored_file = process_attachment(content)
+ stored_files.append(stored_file)
+ body_markdown += markdown
+
+ #if the response separator is present -
+ #split the body with it, and discard the "so and so wrote:" part
+ if reply_code:
+ signature = extract_user_signature(body_markdown, reply_code)
+ else:
+ signature = None
+ body_markdown = extract_reply(body_markdown)
+
+ body_markdown += attachments_markdown
+ return body_markdown.strip(), stored_files, signature
+
+
+def process_emailed_question(
+ from_address, subject, body_text, stored_files, tags = None
+):
+ """posts question received by email or bounces the message"""
+ #a bunch of imports here, to avoid potential circular import issues
+ from askbot.forms import AskByEmailForm
+ from askbot.models import ReplyAddress, User
+ from askbot.mail import messages
+
+ reply_to = None
+ try:
+ #todo: delete uploaded files when posting by email fails!!!
+ data = {
+ 'sender': from_address,
+ 'subject': subject,
+ 'body_text': body_text
+ }
+ form = AskByEmailForm(data)
+ if form.is_valid():
+ email_address = form.cleaned_data['email']
+ user = User.objects.get(
+ email__iexact = email_address
+ )
+
+ if user.can_post_by_email() == False:
+ raise PermissionDenied(messages.insufficient_reputation(user))
+
+ if user.email_isvalid == False:
+ reply_to = ReplyAddress.objects.create_new(
+ user = user,
+ reply_action = 'validate_email'
+ ).as_email_address()
+ message = messages.ask_for_signature(user, footer_code = reply_to)
+ raise PermissionDenied(message)
+
+ tagnames = form.cleaned_data['tagnames']
+ title = form.cleaned_data['title']
+ body_text = form.cleaned_data['body_text']
+
+ #defect - here we might get "too many tags" issue
+ if tags:
+ tagnames += ' ' + ' '.join(tags)
+
+ stripped_body_text = user.strip_email_signature(body_text)
+ if stripped_body_text == body_text and user.email_signature:
+ #todo: send an email asking to update the signature
+ raise ValueError('email signature changed')
+
+ user.post_question(
+ title = title,
+ tags = tagnames.strip(),
+ body_text = stripped_body_text,
+ by_email = True,
+ email_address = from_address
+ )
+ else:
+ raise ValidationError()
+
+ except User.DoesNotExist:
+ bounce_email(email_address, subject, reason = 'unknown_user')
+ except User.MultipleObjectsReturned:
+ bounce_email(email_address, subject, reason = 'problem_posting')
+ except PermissionDenied, error:
+ bounce_email(
+ email_address,
+ subject,
+ reason = 'permission_denied',
+ body_text = unicode(error),
+ reply_to = reply_to
+ )
+ except ValidationError:
+ if from_address:
+ bounce_email(
+ from_address,
+ subject,
+ reason = 'problem_posting',
+ )
diff --git a/askbot/mail/lamson_handlers.py b/askbot/mail/lamson_handlers.py
new file mode 100644
index 00000000..f7053414
--- /dev/null
+++ b/askbot/mail/lamson_handlers.py
@@ -0,0 +1,317 @@
+import re
+import functools
+from django.core.files.uploadedfile import SimpleUploadedFile
+from django.conf import settings as django_settings
+from django.template import Context
+from django.utils.translation import ugettext as _
+from lamson.routing import route, stateless
+from lamson.server import Relay
+from askbot.models import ReplyAddress, Tag
+from askbot import mail
+from askbot.conf import settings as askbot_settings
+from askbot.skins.loaders import get_template
+
+
+#we might end up needing to use something like this
+#to distinguish the reply text from the quoted original message
+"""
+def _strip_message_qoute(message_text):
+ import re
+ result = message_text
+ pattern = "(?P<qoute>" + \
+ "On ([a-zA-Z0-9, :/<>@\.\"\[\]]* wrote:.*)|" + \
+ "From: [\w@ \.]* \[mailto:[\w\.]*@[\w\.]*\].*|" + \
+ "From: [\w@ \.]*(\n|\r\n)+Sent: [\*\w@ \.,:/]*(\n|\r\n)+To:.*(\n|\r\n)+.*|" + \
+ "[- ]*Forwarded by [\w@ \.,:/]*.*|" + \
+ "From: [\w@ \.<>\-]*(\n|\r\n)To: [\w@ \.<>\-]*(\n|\r\n)Date: [\w@ \.<>\-:,]*\n.*|" + \
+ "From: [\w@ \.<>\-]*(\n|\r\n)To: [\w@ \.<>\-]*(\n|\r\n)Sent: [\*\w@ \.,:/]*(\n|\r\n).*|" + \
+ "From: [\w@ \.<>\-]*(\n|\r\n)To: [\w@ \.<>\-]*(\n|\r\n)Subject:.*|" + \
+ "(-| )*Original Message(-| )*.*)"
+ groups = re.search(pattern, email_text, re.IGNORECASE + re.DOTALL)
+ qoute = None
+ if not groups is None:
+ if groups.groupdict().has_key("qoute"):
+ qoute = groups.groupdict()["qoute"]
+ if qoute:
+ result = reslut.split(qoute)[0]
+ #if the last line contains an email message remove that one too
+ lines = result.splitlines(True)
+ if re.search(r'[\w\.]*@[\w\.]*\].*', lines[-1]):
+ result = '\n'.join(lines[:-1])
+ return result
+"""
+
+def get_disposition(part):
+ """return list of part's content dispositions
+ or an empty list
+ """
+ dispositions = part.content_encoding.get('Content-Disposition', None)
+ if dispositions:
+ return dispositions[0]
+ else:
+ return list()
+
+def get_attachment_info(part):
+ return part.content_encoding['Content-Disposition'][1]
+
+def is_attachment(part):
+ """True if part content disposition is
+ attachment"""
+ return get_disposition(part) == 'attachment'
+
+def is_inline_attachment(part):
+ """True if part content disposition is
+ inline"""
+ return get_disposition(part) == 'inline'
+
+def format_attachment(part):
+ """takes message part and turns it into SimpleUploadedFile object"""
+ att_info = get_attachment_info(part)
+ name = att_info.get('filename', None)
+ content_type = get_content_type(part)
+ return SimpleUploadedFile(name, part.body, content_type)
+
+def get_content_type(part):
+ """return content type of the message part"""
+ return part.content_encoding.get('Content-Type', (None,))[0]
+
+def is_body(part):
+ """True, if part is plain text and is not attachment"""
+ if get_content_type(part) == 'text/plain':
+ if not is_attachment(part):
+ return True
+ return False
+
+def get_part_type(part):
+ if is_body(part):
+ return 'body'
+ elif is_attachment(part):
+ return 'attachment'
+ elif is_inline_attachment(part):
+ return 'inline'
+
+def get_parts(message):
+ """returns list of tuples (<part_type>, <formatted_part>),
+ where <part-type> is one of 'body', 'attachment', 'inline'
+ and <formatted-part> - will be in the directly usable form:
+ * if it is 'body' - then it will be unicode text
+ * for attachment - it will be django's SimpleUploadedFile instance
+
+ There may be multiple 'body' parts as well as others
+ usually the body is split when there are inline attachments present.
+ """
+
+ parts = list()
+
+ simple_body = ''
+ if message.body():
+ simple_body = message.body()
+ parts.append(('body', simple_body))
+
+ for part in message.walk():
+ part_type = get_part_type(part)
+ if part_type == 'body':
+ part_content = part.body
+ if part_content == simple_body:
+ continue#avoid duplication
+ elif part_type in ('attachment', 'inline'):
+ part_content = format_attachment(part)
+ else:
+ continue
+ parts.append((part_type, part_content))
+ return parts
+
+def process_reply(func):
+ @functools.wraps(func)
+ def wrapped(message, host = None, address = None):
+ """processes forwarding rules, and run the handler
+ in the case of error, send a bounce email
+ """
+ try:
+ for rule in django_settings.LAMSON_FORWARD:
+ if re.match(rule['pattern'], message.base['to']):
+ relay = Relay(host=rule['host'],
+ port=rule['port'], debug=1)
+ relay.deliver(message)
+ return
+ except AttributeError:
+ pass
+
+ error = None
+ try:
+ reply_address = ReplyAddress.objects.get(
+ address = address,
+ allowed_from_email = message.From
+ )
+
+ #here is the business part of this function
+ func(
+ from_address = message.From,
+ subject_line = message['Subject'],
+ parts = get_parts(message),
+ reply_address_object = reply_address
+ )
+
+ except ReplyAddress.DoesNotExist:
+ error = _("You were replying to an email address\
+ unknown to the system or you were replying from a different address from the one where you\
+ received the notification.")
+ except Exception, e:
+ import sys
+ sys.stderr.write(str(e))
+ import traceback
+ sys.stderr.write(traceback.format_exc())
+
+ if error is not None:
+ template = get_template('email/reply_by_email_error.html')
+ body_text = template.render(Context({'error':error}))
+ mail.send_mail(
+ subject_line = "Error posting your reply",
+ body_text = body_text,
+ recipient_list = [message.From],
+ )
+
+ return wrapped
+
+@route('(addr)@(host)', addr = '.+')
+@stateless
+def ASK(message, host = None, addr = None):
+ """lamson handler for asking by email,
+ to the forum in general and to a specific group"""
+
+ #we need to exclude some other emails by prefix
+ if addr.startswith('reply-'):
+ return
+ if addr.startswith('welcome-'):
+ return
+
+ parts = get_parts(message)
+ from_address = message.From
+ #why lamson does not give it normally?
+ subject = message['Subject'].strip('\n\t ')
+ body_text, stored_files, unused = mail.process_parts(parts)
+ if addr == 'ask':
+ mail.process_emailed_question(
+ from_address, subject, body_text, stored_files
+ )
+ else:
+ if askbot_settings.GROUP_EMAIL_ADDRESSES_ENABLED == False:
+ return
+ try:
+ group_tag = Tag.group_tags.get(
+ deleted = False,
+ name__iexact = addr
+ )
+ mail.process_emailed_question(
+ from_address, subject, body_text, stored_files,
+ tags = [group_tag.name, ]
+ )
+ except Tag.DoesNotExist:
+ #do nothing because this handler will match all emails
+ return
+ except Tag.MultipleObjectsReturned:
+ return
+
+@route('welcome-(address)@(host)', address='.+')
+@stateless
+@process_reply
+def VALIDATE_EMAIL(
+ parts = None,
+ reply_address_object = None,
+ from_address = None,
+ **kwargs
+):
+ """process the validation email and save
+ the email signature
+ todo: go a step further and
+ """
+ reply_code = reply_address_object.address
+ try:
+ content, stored_files, signature = mail.process_parts(parts, reply_code)
+ user = reply_address_object.user
+ if signature and signature != user.email_signature:
+ user.email_signature = signature
+ user.email_isvalid = True
+ user.save()
+
+ data = {
+ 'site_name': askbot_settings.APP_SHORT_NAME,
+ 'site_url': askbot_settings.APP_URL,
+ 'ask_address': 'ask@' + askbot_settings.REPLY_BY_EMAIL_HOSTNAME
+ }
+ template = get_template('email/re_welcome_lamson_on.html')
+
+ mail.send_mail(
+ subject_line = _('Re: Welcome to %(site_name)s') % data,
+ body_text = template.render(Context(data)),
+ recipient_list = [from_address,]
+ )
+ except ValueError:
+ raise ValueError(
+ _(
+ 'Please reply to the welcome email '
+ 'without editing it'
+ )
+ )
+
+@route('reply-(address)@(host)', address='.+')
+@stateless
+@process_reply
+def PROCESS(
+ parts = None,
+ reply_address_object = None,
+ subject_line = None,
+ from_address = None,
+ **kwargs
+):
+ """handler to process the emailed message
+ and make a post to askbot based on the contents of
+ the email, including the text body and the file attachments"""
+ #1) get actual email content
+ # todo: factor this out into the process_reply decorator
+ reply_code = reply_address_object.address
+ body_text, stored_files, signature = mail.process_parts(parts, reply_code)
+
+ #2) process body text and email signature
+ user = reply_address_object.user
+ if signature:#if there, then it was stripped
+ if signature != user.email_signature:
+ user.email_signature = signature
+ else:#try to strip signature
+ stripped_body_text = user.strip_email_signature(body_text)
+ #todo: add test cases for emails without the signature
+ if stripped_body_text == body_text and user.email_signature:
+ #todo: send an email asking to update the signature
+ raise ValueError('email signature changed or unknown')
+ body_text = stripped_body_text
+
+ #3) validate email address and save user
+ user.email_isvalid = True
+ user.save()#todo: actually, saving is not necessary, if nothing changed
+
+ #4) actually make an edit in the forum
+ robj = reply_address_object
+ add_post_actions = ('post_comment', 'post_answer', 'auto_answer_or_comment')
+ if robj.reply_action == 'replace_content':
+ robj.edit_post(body_text, title = subject_line)
+ elif robj.reply_action == 'append_content':
+ robj.edit_post(body_text)#in this case we don't touch the title
+ elif robj.reply_action in add_post_actions:
+ if robj.was_used:
+ robj.edit_post(body_text, edit_response = True)
+ else:
+ robj.create_reply(body_text)
+ elif robj.reply_action == 'validate_email':
+ #todo: this is copy-paste - factor it out to askbot.mail.messages
+ data = {
+ 'site_name': askbot_settings.APP_SHORT_NAME,
+ 'site_url': askbot_settings.APP_URL,
+ 'ask_address': 'ask@' + askbot_settings.REPLY_BY_EMAIL_HOSTNAME
+ }
+ template = get_template('email/re_welcome_lamson_on.html')
+
+ mail.send_mail(
+ subject_line = _('Re: %s') % subject_line,
+ body_text = template.render(Context(data)),
+ recipient_list = [from_address,]
+ )
diff --git a/askbot/mail/messages.py b/askbot/mail/messages.py
new file mode 100644
index 00000000..24091971
--- /dev/null
+++ b/askbot/mail/messages.py
@@ -0,0 +1,52 @@
+"""functions in this module return body text
+of email messages for various occasions
+"""
+import functools
+from django.template import Context
+from askbot.conf import settings as askbot_settings
+from askbot.skins.loaders import get_template
+from askbot.utils import html as html_utils
+
+def message(template = None):
+ """a decorator that creates a function
+ which returns formatted message using the
+ template and data"""
+ def decorate(func):
+ @functools.wraps(func)
+ def wrapped(*args, **kwargs):
+ template_object = get_template(template)
+ data = func(*args, **kwargs)
+ return template_object.render(Context(data))
+ return wrapped
+ return decorate
+
+@message(template = 'email/ask_for_signature.html')
+def ask_for_signature(user, footer_code = None):
+ """tells that we don't have user's signature
+ and because of that he/she cannot make posts
+ the message will ask to make a simple response
+ """
+ return {
+ 'username': user.username,
+ 'site_name': askbot_settings.APP_SHORT_NAME,
+ 'footer_code': footer_code
+ }
+
+@message(template = 'email/insufficient_rep_to_post_by_email.html')
+def insufficient_reputation(user):
+ """tells user that he does not have
+ enough rep and suggests to ask on the web
+ """
+ min_rep = askbot_settings.MIN_REP_TO_POST_BY_EMAIL
+ min_upvotes = 1 + \
+ (min_rep/askbot_settings.REP_GAIN_FOR_RECEIVING_UPVOTE)
+ site_link = html_utils.site_link(
+ 'ask',
+ askbot_settings.APP_SHORT_NAME
+ )
+ return {
+ 'username': user.username,
+ 'site_name': askbot_settings.APP_SHORT_NAME,
+ 'site_link': site_link,
+ 'min_upvotes': min_upvotes
+ }
diff --git a/askbot/management/commands/askbot_add_test_content.py b/askbot/management/commands/askbot_add_test_content.py
index 81bbc71e..ace629d0 100644
--- a/askbot/management/commands/askbot_add_test_content.py
+++ b/askbot/management/commands/askbot_add_test_content.py
@@ -14,21 +14,23 @@ NUM_COMMENTS = 20
# karma. This can be calculated dynamically - max of MIN_REP_TO_... settings
INITIAL_REPUTATION = 500
+BAD_STUFF = "<script>alert('hohoho')</script>"
+
# Defining template inputs.
-USERNAME_TEMPLATE = "test_user_%s"
+USERNAME_TEMPLATE = BAD_STUFF + "test_user_%s"
PASSWORD_TEMPLATE = "test_password_%s"
EMAIL_TEMPLATE = "test_user_%s@askbot.org"
-TITLE_TEMPLATE = "Test question title No.%s"
-TAGS_TEMPLATE = ["tag-%s-0", "tag-%s-1"] # len(TAGS_TEMPLATE) tags per question
+TITLE_TEMPLATE = "Test question title No.%s" + BAD_STUFF
+TAGS_TEMPLATE = [BAD_STUFF + "tag-%s-0", BAD_STUFF + "tag-%s-1"] # len(TAGS_TEMPLATE) tags per question
-CONTENT_TEMPLATE = """Lorem lean startup ipsum product market fit customer
+CONTENT_TEMPLATE = BAD_STUFF + """Lorem lean startup ipsum product market fit customer
development acquihire technical cofounder. User engagement
**A/B** testing *shrink* a market venture capital pitch."""
-ANSWER_TEMPLATE = """Accelerator photo sharing business school drop out ramen
+ANSWER_TEMPLATE = BAD_STUFF + """Accelerator photo sharing business school drop out ramen
hustle crush it revenue traction platforms."""
-COMMENT_TEMPLATE = """Main differentiators business model micro economics
+COMMENT_TEMPLATE = BAD_STUFF + """Main differentiators business model micro economics
marketplace equity augmented reality human computer"""
@@ -47,6 +49,12 @@ class Command(NoArgsCommand):
"Create the users and return an array of created users"
users = []
+ #add admin with the same password
+ admin = User.objects.create_user('admin', 'admin@example.com')
+ admin.set_password('admin')
+ self.print_if_verbose("Created User 'admin'")
+ users.append(admin)
+
# Keeping the created users in array - we will iterate over them
# several times, we don't want querying the model each and every time.
for i in range(NUM_USERS):
@@ -58,6 +66,7 @@ class Command(NoArgsCommand):
user.save()
self.print_if_verbose("Created User '%s'" % user.username)
users.append(user)
+
return users
@@ -69,7 +78,8 @@ class Command(NoArgsCommand):
active_question = None
last_vote = False
# Each user posts a question
- for user in users[:NUM_QUESTIONS]:
+ for i in range(NUM_QUESTIONS):
+ user = users[i]
# Downvote/upvote the questions - It's reproducible, yet
# gives good randomized data
if not active_question is None:
@@ -87,13 +97,15 @@ class Command(NoArgsCommand):
# len(TAGS_TEMPLATE) tags per question - each tag is different
tags = " ".join([t%user.id for t in TAGS_TEMPLATE])
+ if i < NUM_QUESTIONS/2:
+ tags += ' one-tag'
active_question = user.post_question(
title = TITLE_TEMPLATE % user.id,
body_text = CONTENT_TEMPLATE,
tags = tags,
)
self.print_if_verbose("Created Question '%s' with tags: '%s'" % (
- active_question.title, tags,)
+ active_question.thread.title, tags,)
)
return active_question
@@ -220,14 +232,14 @@ class Command(NoArgsCommand):
)
self.print_if_verbose("User has edited the active answer")
- active_answer_comment.user.edit_comment(
- comment = active_answer_comment,
+ active_answer_comment.author.edit_comment(
+ comment_post = active_answer_comment,
body_text = ANSWER_TEMPLATE
)
self.print_if_verbose("User has edited the active answer comment")
- active_question_comment.user.edit_comment(
- comment = active_question_comment,
+ active_question_comment.author.edit_comment(
+ comment_post = active_question_comment,
body_text = ANSWER_TEMPLATE
)
self.print_if_verbose("User has edited the active question comment")
diff --git a/askbot/management/commands/askbot_create_test_fixture.py b/askbot/management/commands/askbot_create_test_fixture.py
index 23a7b2e4..e7045e8c 100644
--- a/askbot/management/commands/askbot_create_test_fixture.py
+++ b/askbot/management/commands/askbot_create_test_fixture.py
@@ -18,6 +18,7 @@ EXCLUDE_APPS = ['contenttypes',
'askbot.activity',
'askbot.activityauditstatus',
'askbot.badgedata',
+ 'askbot.Post',
'askbot.EmailFeedSetting',
'auth.Message']
diff --git a/askbot/management/commands/build_livesettings_cache.py b/askbot/management/commands/build_livesettings_cache.py
new file mode 100644
index 00000000..1898fc6a
--- /dev/null
+++ b/askbot/management/commands/build_livesettings_cache.py
@@ -0,0 +1,12 @@
+from django.core.management.base import NoArgsCommand
+
+class Command(NoArgsCommand):
+ '''Loads livesettings values to cache helping speed up
+ initial load time for the users'''
+
+ def handle_noargs(self, **options):
+ from askbot.conf import settings
+ #Just loads all the settings that way they will be in the cache
+ for key, value in settings._ConfigSettings__instance.items():
+ empty1 = getattr(settings, key)
+ print 'cache pre-loaded'
diff --git a/askbot/management/commands/build_thread_summary_cache.py b/askbot/management/commands/build_thread_summary_cache.py
new file mode 100644
index 00000000..854843fe
--- /dev/null
+++ b/askbot/management/commands/build_thread_summary_cache.py
@@ -0,0 +1,10 @@
+from django.core.management.base import NoArgsCommand
+from askbot.models import Thread
+from askbot.utils.console import ProgressBar
+
+class Command(NoArgsCommand):
+ def handle_noargs(self, **options):
+ message = "Rebuilding thread summary cache"
+ count = Thread.objects.count()
+ for thread in ProgressBar(Thread.objects.iterator(), count, message):
+ thread.update_summary_html()
diff --git a/askbot/management/commands/delete_contextless_activities.py b/askbot/management/commands/delete_contextless_activities.py
new file mode 100644
index 00000000..553217bf
--- /dev/null
+++ b/askbot/management/commands/delete_contextless_activities.py
@@ -0,0 +1,23 @@
+from django.core.management.base import NoArgsCommand
+from askbot.utils.console import ProgressBar
+from askbot.models import Activity
+from askbot import const
+
+class Command(NoArgsCommand):
+ def handle_noargs(self, **options):
+ acts = Activity.objects.all()
+ deleted_count = 0
+ message = "Searching for context-less activity objects:"
+ for act in ProgressBar(acts.iterator(), acts.count(), message):
+ try:
+ if act.object_id != None and act.content_object == None:
+ act.delete()
+ deleted_count += 1
+ except:
+ #this can happen if we have a stale content type
+ act.delete()
+
+ if deleted_count:
+ print "%d activity objects deleted" % deleted_count
+ else:
+ print "None found"
diff --git a/askbot/management/commands/delete_contextless_badge_award_activities.py b/askbot/management/commands/delete_contextless_badge_award_activities.py
new file mode 100644
index 00000000..8116d335
--- /dev/null
+++ b/askbot/management/commands/delete_contextless_badge_award_activities.py
@@ -0,0 +1,20 @@
+from django.core.management.base import NoArgsCommand
+from askbot.utils.console import ProgressBar
+from askbot.models import Activity
+from askbot import const
+
+class Command(NoArgsCommand):
+ def handle_noargs(self, **options):
+ act_type = const.TYPE_ACTIVITY_PRIZE
+ acts = Activity.objects.filter(activity_type = act_type)
+ deleted_count = 0
+ message = "Searching for context-less award activity objects:"
+ for act in ProgressBar(acts.iterator(), acts.count(), message):
+ if act.content_object == None:
+ act.delete()
+ deleted_count += 1
+ if deleted_count:
+ print "%d activity objects deleted" % deleted_count
+ else:
+ print "None found"
+
diff --git a/askbot/management/commands/delete_unused_tags.py b/askbot/management/commands/delete_unused_tags.py
index acb28fa7..9b7c3c1b 100644
--- a/askbot/management/commands/delete_unused_tags.py
+++ b/askbot/management/commands/delete_unused_tags.py
@@ -13,7 +13,7 @@ class Command(NoArgsCommand):
total = tags.count()
deleted_tags = list()
for tag in tags:
- if tag.questions.all().count() == 0:
+ if not tag.threads.exists():
deleted_tags.append(tag.name)
tag.delete()
transaction.commit()
diff --git a/askbot/management/commands/fix_answer_counts.py b/askbot/management/commands/fix_answer_counts.py
index 3e438ae7..9f22422e 100644
--- a/askbot/management/commands/fix_answer_counts.py
+++ b/askbot/management/commands/fix_answer_counts.py
@@ -23,6 +23,5 @@ class Command(NoArgsCommand):
"""function that handles the command job
"""
self.remove_save_signals()
- questions = models.Question.objects.all()
- for question in questions:
- question.update_answer_count()
+ for thread in models.Thread.objects.all():
+ thread.update_answer_count()
diff --git a/askbot/management/commands/fix_question_tags.py b/askbot/management/commands/fix_question_tags.py
index 47fc4102..d575e651 100644
--- a/askbot/management/commands/fix_question_tags.py
+++ b/askbot/management/commands/fix_question_tags.py
@@ -39,33 +39,33 @@ class Command(NoArgsCommand):
transaction.commit()
#go through questions and fix tag records on each
- questions = models.Question.objects.all()
+ threads = models.Thread.objects.all()
checked_count = 0
found_count = 0
- total_count = questions.count()
+ total_count = threads.count()
print "Searching for questions with inconsistent tag records:",
- for question in questions:
- tags = question.tags.all()
- denorm_tag_set = set(question.get_tag_names())
- norm_tag_set = set(question.tags.values_list('name', flat=True))
+ for thread in threads:
+ tags = thread.tags.all()
+ denorm_tag_set = set(thread.get_tag_names())
+ norm_tag_set = set(thread.tags.values_list('name', flat=True))
if norm_tag_set != denorm_tag_set:
- if question.last_edited_by:
- user = question.last_edited_by
- timestamp = question.last_edited_at
+ if thread.last_edited_by:
+ user = thread.last_edited_by
+ timestamp = thread.last_edited_at
else:
- user = question.author
- timestamp = question.added_at
+ user = thread.author
+ timestamp = thread.added_at
- tagnames = forms.TagNamesField().clean(question.tagnames)
+ tagnames = forms.TagNamesField().clean(thread.tagnames)
- question.update_tags(
+ thread.update_tags(
tagnames = tagnames,
user = user,
timestamp = timestamp
)
- question.tagnames = tagnames
- question.save()
+ thread.tagnames = tagnames
+ thread.save()
found_count += 1
transaction.commit()
diff --git a/askbot/management/commands/fix_revisionless_posts.py b/askbot/management/commands/fix_revisionless_posts.py
index 92c03425..9535bef3 100644
--- a/askbot/management/commands/fix_revisionless_posts.py
+++ b/askbot/management/commands/fix_revisionless_posts.py
@@ -7,11 +7,11 @@ from django.db.models import signals, Count
from askbot import models
from askbot import const
-def fix_revisionless_posts(post_class, post_name):
+def fix_revisionless_posts(post_class):
posts = post_class.objects.annotate(
rev_count = Count('revisions')
).filter(rev_count = 0)
- print 'have %d corrupted %ss' % (len(posts), post_name)
+ print 'have %d corrupted posts' % len(posts)
for post in posts:
post.add_revision(
author = post.author,
@@ -39,5 +39,4 @@ class Command(NoArgsCommand):
"""function that handles the command job
"""
self.remove_save_signals()
- fix_revisionless_posts(models.Question, 'question')
- fix_revisionless_posts(models.Answer, 'answer')
+ fix_revisionless_posts(models.Post)
diff --git a/askbot/management/commands/get_tag_stats.py b/askbot/management/commands/get_tag_stats.py
index c30643b3..b065a6a1 100644
--- a/askbot/management/commands/get_tag_stats.py
+++ b/askbot/management/commands/get_tag_stats.py
@@ -2,6 +2,7 @@ import sys
import optparse
from django.core.management.base import BaseCommand, CommandError
from askbot import models
+from askbot import const
def get_tag_lines(tag_marks, width = 25):
output = list()
@@ -120,15 +121,30 @@ class Command(BaseCommand):
for bad_tag in user.ignored_tags.split():
ignored_tags.append(bad_tag)
+ subscribed_tags = list()
+ subscribed_tags.extend(
+ tag_marks.filter(
+ reason='subscribed'
+ ).values_list(
+ 'tag__name', flat = True
+ )
+ )
+
+ for subscribed_tag in user.subscribed_tags.split():
+ subscribed_tags.append(subscribed_tag)
+
followed_count = len(followed_tags)
ignored_count = len(ignored_tags)
- if followed_count == 0 and ignored_count == 0 and print_empty == False:
+ subscribed_count = len(subscribed_tags)
+ total_count = followed_count + ignored_count + subscribed_count
+ if total_count == 0 and print_empty == False:
continue
if item_count == 0:
- print '%-28s %25s %25s' % ('User (id)', 'Interesting tags', 'Ignored tags')
- print '%-28s %25s %25s' % ('=========', '================', '============')
+ print '%-28s %25s %25s %25s' % ('User (id)', 'Interesting tags', 'Ignored tags', 'Subscribed tags')
+ print '%-28s %25s %25s %25s' % ('=========', '================', '============', '===============')
followed_lines = get_tag_lines(followed_tags, width = 25)
ignored_lines = get_tag_lines(ignored_tags, width = 25)
+ subscribed_lines = get_tag_lines(subscribed_tags, width = 25)
follow = '*'
if user.email_tag_filter_strategy == const.INCLUDE_INTERESTING:
@@ -138,7 +154,8 @@ class Command(BaseCommand):
[user_string,],
followed_lines,
ignored_lines,
- format_string = '%-28s %25s %25s'
+ subscribed_lines,
+ format_string = '%-28s %25s %25s %25s'
)
item_count += 1
for line in output_lines:
@@ -163,16 +180,23 @@ class Command(BaseCommand):
interesting_tags = models.Tag.objects.get_by_wildcards(wk)
for tag in interesting_tags:
if tag.name not in wild:
- wild[tag.name] = [0, 0]
+ wild[tag.name] = [0, 0, 0]
wild[tag.name][0] += 1
wk = user.ignored_tags.strip().split()
ignored_tags = models.Tag.objects.get_by_wildcards(wk)
for tag in ignored_tags:
if tag.name not in wild:
- wild[tag.name] = [0, 0]
+ wild[tag.name] = [0, 0, 0]
wild[tag.name][1] += 1
+ wk = user.subscribed_tags.strip().split()
+ subscribed_tags = models.Tag.objects.get_by_wildcards(wk)
+ for tag in subscribed_tags:
+ if tag.name not in wild:
+ wild[tag.name] = [0, 0, 0]
+ wild[tag.name][2] += 1
+
return wild
def print_sub_counts(self, print_empty):
@@ -185,6 +209,7 @@ class Command(BaseCommand):
for tag in tags:
wild_follow = 0
wild_ignore = 0
+ wild_sub = 0
if tag.name in wild_tags:
(wild_follow, wild_ignore) = wild_tags[tag.name]
@@ -193,17 +218,22 @@ class Command(BaseCommand):
+ wild_follow
ignore_count = tag_marks.filter(reason='bad').count() \
+ wild_ignore
+ subscribe_count = tag_marks.filter(reason='subscribe').count() \
+ + wild_sub
follow_str = '%d (%d)' % (follow_count, wild_follow)
ignore_str = '%d (%d)' % (ignore_count, wild_ignore)
+ subscribe_str = '%d (%d)' % (subscribe_count, wild_sub)
+ counts = (11-len(subscribe_str)) * ' ' + subscribe_str + ' '
counts = (11-len(follow_str)) * ' ' + follow_str + ' '
counts += (11-len(ignore_str)) * ' ' + ignore_str
- if follow_count + ignore_count == 0 and print_empty == False:
+ total_count = follow_count + ignore_count + subscribe_count
+ if total_count == 0 and print_empty == False:
continue
if item_count == 0:
- print '%-32s %12s %12s' % ('', 'Interesting', 'Ignored ')
- print '%-32s %12s %12s' % ('Tag name', 'Total(wild)', 'Total(wild)')
- print '%-32s %12s %12s' % ('========', '===========', '===========')
+ print '%-32s %12s %12s %12s' % ('', 'Subscribed', 'Ignored ', 'Interesting')
+ print '%-32s %12s %12s %12s' % ('Tag name', 'Total(wild)', 'Total(wild)', 'Total(wild)')
+ print '%-32s %12s %12s %12s' % ('========', '===========', '===========', '===========')
print '%-32s %s' % (tag.name, counts)
item_count += 1
diff --git a/askbot/management/commands/init_postgresql_full_text_search.py b/askbot/management/commands/init_postgresql_full_text_search.py
index f30ed2e6..cd709be0 100644
--- a/askbot/management/commands/init_postgresql_full_text_search.py
+++ b/askbot/management/commands/init_postgresql_full_text_search.py
@@ -1,23 +1,16 @@
from django.core.management.base import NoArgsCommand
-from django.db import connection
+from django.db import transaction
import os.path
+import askbot
+from askbot.search.postgresql import setup_full_text_search
class Command(NoArgsCommand):
+ @transaction.commit_on_success
def handle_noargs(self, **options):
-
- dir = os.path.dirname(__file__)
- sql_file_name = 'setup_postgresql_full_text_search.plsql'
- sql_file_name = os.path.join(dir, sql_file_name)
- fts_init_query = open(sql_file_name).read()
-
- cursor = connection.cursor()
- try:
- #test if language exists
- cursor.execute("SELECT * FROM pg_language WHERE lanname='plpgsql'")
- lang_exists = cursor.fetchone()
- if not lang_exists:
- cursor.execute("CREATE LANGUAGE plpgsql")
- #run the main query
- cursor.execute(fts_init_query)
- finally:
- cursor.close()
+ script_path = os.path.join(
+ askbot.get_install_directory(),
+ 'search',
+ 'postgresql',
+ 'thread_and_post_models_01162012.plsql'
+ )
+ setup_full_text_search(script_path)
diff --git a/askbot/management/commands/initialize_ldap_logins.py b/askbot/management/commands/initialize_ldap_logins.py
deleted file mode 100644
index 96ee74e5..00000000
--- a/askbot/management/commands/initialize_ldap_logins.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""Management command to create LDAP login method for all users.
-Please see description of the command in its ``help_text``.
-"""
-import datetime
-from django.core.management.base import CommandError
-from django.utils.translation import ugettext as _
-from askbot.management import NoArgsJob
-from askbot import models
-from askbot.deps.django_authopenid.models import UserAssociation
-from askbot.conf import settings as askbot_settings
-
-def create_ldap_login_for_user(user):
- """a unit job that creates LDAP account record for
- the user, assuming that his or her LDAP user name
- is the same as the user name on the forum site.
- If the record already exists, LDAP provider name
- will be updated according to the live setting,
- otherwise a new record will be created.
- Always returns ``True``.
- """
- ldap_url = askbot_settings.LDAP_URL
- ldap_provider_name = askbot_settings.LDAP_PROVIDER_NAME
- if '' in (ldap_url, ldap_provider_name):
- raise CommandError(
- 'Please, first set up LDAP settings '
- 'at url /settings/EXTERNAL_KEYS,'
- 'relative to the base url of your forum site'
- )
- try:
- assoc = UserAssociation.objects.get(
- openid_url = user.username,
- user = user
- )
- except UserAssociation.DoesNotExist:
- assoc = UserAssociation(
- openid_url = user.username,
- user = user
- )
- assoc.provider_name = ldap_provider_name
- assoc.last_used_timestamp = datetime.datetime.now()
- assoc.save()
- return True
-
-class Command(NoArgsJob):
- """definition of the job that
- runs through all users and creates LDAP login
- methods, assuming that LDAP user ID's are the same
- as values ``~askbot.User.username``
- """
- help = _(
- 'This command may help you migrate to LDAP '
- 'password authentication by creating a record '
- 'for LDAP association with each user account. '
- 'There is an assumption that ldap user id\'s are '
- 'the same as user names registered at the site. '
- 'Before running this command it is necessary to '
- 'set up LDAP parameters in the "External keys" section '
- 'of the site settings.'
- )
- def __init__(self, *args, **kwargs):
- self.batches = ({
- 'title': 'Initializing LDAP logins for all users: ',
- 'query_set': models.User.objects.all(),
- 'function': create_ldap_login_for_user,
- 'changed_count_message': 'Created LDAP logins for %d users',
- 'nothing_changed_message': 'All users already have LDAP login methods'
- },)
- super(Command, self).__init__(*args, **kwargs)
diff --git a/askbot/management/commands/merge_users.py b/askbot/management/commands/merge_users.py
index 3c7069e5..9eb76756 100644
--- a/askbot/management/commands/merge_users.py
+++ b/askbot/management/commands/merge_users.py
@@ -1,6 +1,14 @@
from django.core.management.base import CommandError, BaseCommand
from askbot.models import User
+# TODO: this command is broken - doesn't take into account UNIQUE constraints
+# and therefore causes db errors:
+# In SQLite: "Warning: columns feed_type, subscriber_id are not unique"
+# In MySQL: "Warning: (1062, "Duplicate entry 'm_and_c-2' for key 'askbot_emailfeedsetting_feed_type_6da6fdcd_uniq'")"
+# In PostgreSQL: "Warning: duplicate key value violates unique constraint "askbot_emailfeedsetting_feed_type_6da6fdcd_uniq"
+# "DETAIL: Key (feed_type, subscriber_id)=(m_and_c, 619) already exists."
+# (followed by series of "current transaction is aborted, commands ignored until end of transaction block" warnings)
+
class MergeUsersBaseCommand(BaseCommand):
args = '<from_user_id> <to_user_id>'
help = 'Merge an account and all information from a <user_id> to a <user_id>, deleting the <from_user>'
diff --git a/askbot/management/commands/post_emailed_questions.py b/askbot/management/commands/post_emailed_questions.py
index 0a038b62..acddcf43 100644
--- a/askbot/management/commands/post_emailed_questions.py
+++ b/askbot/management/commands/post_emailed_questions.py
@@ -21,75 +21,14 @@ import quopri
import base64
from django.conf import settings as django_settings
from django.core.management.base import NoArgsCommand, CommandError
-from django.core import exceptions
-from django.utils.translation import ugettext_lazy as _
-from django.utils.translation import string_concat
-from django.core.urlresolvers import reverse
from askbot.conf import settings as askbot_settings
-from askbot.utils import mail
-from askbot.utils import url_utils
-from askbot import models
-from askbot.forms import AskByEmailForm
-
-USAGE = _(
-"""<p>To ask by email, please:</p>
-<ul>
- <li>Format the subject line as: [Tag1; Tag2] Question title</li>
- <li>Type details of your question into the email body</li>
-</ul>
-<p>Note that tags may consist of more than one word, and tags
-may be separated by a semicolon or a comma</p>
-"""
-)
-
-def bounce_email(email, subject, reason = None, body_text = None):
- """sends a bounce email at address ``email``, with the subject
- line ``subject``, accepts several reasons for the bounce:
-
- * ``'problem_posting'``, ``unknown_user`` and ``permission_denied``
- * ``body_text`` in an optional parameter that allows to append
- extra text to the message
- """
- if reason == 'problem_posting':
- error_message = _(
- '<p>Sorry, there was an error posting your question '
- 'please contact the %(site)s administrator</p>'
- ) % {'site': askbot_settings.APP_SHORT_NAME}
- error_message = string_concat(error_message, USAGE)
- elif reason == 'unknown_user':
- error_message = _(
- '<p>Sorry, in order to post questions on %(site)s '
- 'by email, please <a href="%(url)s">register first</a></p>'
- ) % {
- 'site': askbot_settings.APP_SHORT_NAME,
- 'url': url_utils.get_login_url()
- }
- elif reason == 'permission_denied':
- error_message = _(
- '<p>Sorry, your question could not be posted '
- 'due to insufficient privileges of your user account</p>'
- )
- else:
- raise ValueError('unknown reason to bounce an email: "%s"' % reason)
-
- if body_text != None:
- error_message = string_concat(error_message, body_text)
-
- #print 'sending email'
- #print email
- #print subject
- #print error_message
- mail.send_mail(
- recipient_list = (email,),
- subject_line = 'Re: ' + subject,
- body_text = error_message
- )
+from askbot import mail
class CannotParseEmail(Exception):
"""This exception will bounce the email"""
- def __init__(self, email, subject):
+ def __init__(self, email_address, subject):
super(CannotParseEmail, self).__init__()
- bounce_email(email, subject, reason = 'problem_posting')
+ mail.bounce_email(email_address, subject, reason = 'problem_posting')
def parse_message(msg):
"""returns a tuple
@@ -105,7 +44,7 @@ def parse_message(msg):
if isinstance(msg, list):
raise CannotParseEmail(sender, subject)
- ctype = msg.get_content_type()#text/plain only
+ #ctype = msg.get_content_type()#text/plain only
raw_body = msg.get_payload()#text/plain only
encoding = msg.get('Content-Transfer-Encoding')
if encoding == 'base64':
@@ -118,6 +57,7 @@ def parse_message(msg):
class Command(NoArgsCommand):
+ """the django management command class"""
def handle_noargs(self, **options):
"""reads all emails from the INBOX of
imap server and posts questions based on
@@ -145,7 +85,7 @@ class Command(NoArgsCommand):
imap.select('INBOX')
#get message ids
- status, ids = imap.search(None, 'ALL')
+ junk, ids = imap.search(None, 'ALL')
if len(ids[0].strip()) == 0:
#with empty inbox - close and exit
@@ -154,58 +94,19 @@ class Command(NoArgsCommand):
return
#for each id - read a message, parse it and post a question
- for id in ids[0].split(' '):
- t, data = imap.fetch(id, '(RFC822)')
- message_body = data[0][1]
+ for msg_id in ids[0].split(' '):
+ junk, data = imap.fetch(msg_id, '(RFC822)')
+ #message_body = data[0][1]
msg = email.message_from_string(data[0][1])
- imap.store(id, '+FLAGS', '\\Deleted')
+ imap.store(msg_id, '+FLAGS', '\\Deleted')
try:
(sender, subject, body) = parse_message(msg)
- except CannotParseEmail, e:
+ except CannotParseEmail:
continue
- data = {
- 'sender': sender,
- 'subject': subject,
- 'body_text': body
- }
- form = AskByEmailForm(data)
- print data
- if form.is_valid():
- email_address = form.cleaned_data['email']
- try:
- user = models.User.objects.get(
- email__iexact = email_address
- )
- except models.User.DoesNotExist:
- bounce_email(email_address, subject, reason = 'unknown_user')
- except models.User.MultipleObjectsReturned:
- bounce_email(email_address, subject, reason = 'problem_posting')
- tagnames = form.cleaned_data['tagnames']
- title = form.cleaned_data['title']
- body_text = form.cleaned_data['body_text']
+ sender = mail.extract_first_email_address(sender)
+ mail.process_emailed_question(sender, subject, body)
- try:
- user.post_question(
- title = title,
- tags = tagnames,
- body_text = body_text
- )
- except exceptions.PermissionDenied, e:
- bounce_email(
- email_address,
- subject,
- reason = 'permission_denied',
- body_text = unicode(e)
- )
- else:
- email_address = mail.extract_first_email_address(sender)
- if email_address:
- bounce_email(
- email_address,
- subject,
- reason = 'problem_posting'
- )
imap.expunge()
imap.close()
imap.logout()
diff --git a/askbot/management/commands/rename_tags_id.py b/askbot/management/commands/rename_tags_id.py
index 6e67b441..90dc2916 100644
--- a/askbot/management/commands/rename_tags_id.py
+++ b/askbot/management/commands/rename_tags_id.py
@@ -121,7 +121,7 @@ or repost a bug, if that does not help"""
print "%d questions match." % question_count
print "First 10 are:"
for question in questions[:10]:
- print '* %s' % question.title.strip()
+ print '* %s' % question.thread.title.strip()
from_tag_names = format_tag_name_list(from_tags)
to_tag_names = format_tag_name_list(to_tags)
diff --git a/askbot/management/commands/send_accept_answer_reminders.py b/askbot/management/commands/send_accept_answer_reminders.py
index 58b07b45..3a20ba27 100644
--- a/askbot/management/commands/send_accept_answer_reminders.py
+++ b/askbot/management/commands/send_accept_answer_reminders.py
@@ -6,13 +6,15 @@ from askbot import const
from askbot.conf import settings as askbot_settings
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
-from askbot.utils import mail
+from askbot import mail
from askbot.utils.classes import ReminderSchedule
DEBUG_THIS_COMMAND = False
class Command(NoArgsCommand):
def handle_noargs(self, **options):
+ if askbot_settings.ENABLE_EMAIL_ALERTS == False:
+ return
if askbot_settings.ENABLE_ACCEPT_ANSWER_REMINDERS == False:
return
#get questions without answers, excluding closed and deleted
@@ -24,15 +26,15 @@ class Command(NoArgsCommand):
askbot_settings.MAX_ACCEPT_ANSWER_REMINDERS
)
- questions = models.Question.objects.exclude(
+ questions = models.Post.objects.get_questions().exclude(
deleted = True
).added_between(
start = schedule.start_cutoff_date,
end = schedule.end_cutoff_date
).filter(
- answer_count__gt = 0
+ thread__answer_count__gt = 0
).filter(
- answer_accepted = False
+ thread__accepted_answer__isnull=True #answer_accepted = False
).order_by('-added_at')
#for all users, excluding blocked
#for each user, select a tag filtered subset
@@ -52,7 +54,6 @@ class Command(NoArgsCommand):
if question_count == 0:
continue
- #tag_summary = get_tag_summary_from_questions(final_question_list)
subject_line = _(
'Accept the best answer for %(question_count)d of your questions'
) % {'question_count': question_count}
@@ -69,7 +70,7 @@ class Command(NoArgsCommand):
% (
askbot_settings.APP_URL,
question.get_absolute_url(),
- question.title
+ question.thread.title
)
body_text += '</ul>'
diff --git a/askbot/management/commands/send_email.py b/askbot/management/commands/send_email.py
index 2493c51b..ff36b19f 100644
--- a/askbot/management/commands/send_email.py
+++ b/askbot/management/commands/send_email.py
@@ -1,4 +1,4 @@
-from askbot.utils.mail import send_mail
+from askbot.mail import send_mail
from django.core.exceptions import ValidationError
from django.core.management.base import BaseCommand, CommandError
from django.core.validators import validate_email
diff --git a/askbot/management/commands/send_email_alerts.py b/askbot/management/commands/send_email_alerts.py
index c904cdde..e890452d 100644
--- a/askbot/management/commands/send_email_alerts.py
+++ b/askbot/management/commands/send_email_alerts.py
@@ -3,10 +3,8 @@ from django.core.management.base import NoArgsCommand
from django.core.urlresolvers import reverse
from django.db import connection
from django.db.models import Q, F
-from askbot.models import User, Question, Answer, Tag, PostRevision
+from askbot.models import User, Post, PostRevision, Thread
from askbot.models import Activity, EmailFeedSetting
-from askbot.models import Comment
-from askbot.models.question import get_tag_summary_from_questions
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from django.conf import settings as django_settings
@@ -14,7 +12,7 @@ from askbot.conf import settings as askbot_settings
from django.utils.datastructures import SortedDict
from django.contrib.contenttypes.models import ContentType
from askbot import const
-from askbot.utils import mail
+from askbot import mail
from askbot.utils.slug import slugify
DEBUG_THIS_COMMAND = False
@@ -77,13 +75,14 @@ def format_action_count(string, number, output):
class Command(NoArgsCommand):
def handle_noargs(self, **options):
- try:
+ if askbot_settings.ENABLE_EMAIL_ALERTS:
try:
- self.send_email_alerts()
- except Exception, e:
- print e
- finally:
- connection.close()
+ try:
+ self.send_email_alerts()
+ except Exception, e:
+ print e
+ finally:
+ connection.close()
def get_updated_questions_for_user(self,user):
"""
@@ -128,17 +127,20 @@ class Command(NoArgsCommand):
#base question query set for this user
#basic things - not deleted, not closed, not too old
#not last edited by the same user
- base_qs = Question.objects.exclude(
- last_activity_by=user
+ base_qs = Post.objects.get_questions().exclude(
+ thread__last_activity_by=user
).exclude(
- last_activity_at__lt=user.date_joined#exclude old stuff
+ thread__last_activity_at__lt=user.date_joined#exclude old stuff
).exclude(
deleted=True
).exclude(
- closed=True
- ).order_by('-last_activity_at')
+ thread__closed=True
+ ).order_by('-thread__last_activity_at')
+
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ base_qs = base_qs.filter(approved = True)
#todo: for some reason filter on did not work as expected ~Q(viewed__who=user) |
- # Q(viewed__who=user,viewed__when__lt=F('last_activity_at'))
+ # Q(viewed__who=user,viewed__when__lt=F('thread__last_activity_at'))
#returns way more questions than you might think it should
#so because of that I've created separate query sets Q_set2 and Q_set3
#plus two separate queries run faster!
@@ -151,7 +153,7 @@ class Command(NoArgsCommand):
seen_before_last_mod_qs = base_qs.filter(
Q(
viewed__who=user,
- viewed__when__lt=F('last_activity_at')
+ viewed__when__lt=F('thread__last_activity_at')
)
)
@@ -180,9 +182,9 @@ class Command(NoArgsCommand):
cutoff_time = feed.get_previous_report_cutoff_time()
if feed.feed_type == 'q_sel':
- q_sel_A = Q_set_A.filter(followed_by=user)
+ q_sel_A = Q_set_A.filter(thread__followed_by=user)
q_sel_A.cutoff_time = cutoff_time #store cutoff time per query set
- q_sel_B = Q_set_B.filter(followed_by=user)
+ q_sel_B = Q_set_B.filter(thread__followed_by=user)
q_sel_B.cutoff_time = cutoff_time #store cutoff time per query set
elif feed.feed_type == 'q_ask':
@@ -192,11 +194,11 @@ class Command(NoArgsCommand):
q_ask_B.cutoff_time = cutoff_time
elif feed.feed_type == 'q_ans':
- q_ans_A = Q_set_A.filter(answers__author=user)
+ q_ans_A = Q_set_A.filter(thread__posts__author=user, thread__posts__post_type='answer')
q_ans_A = q_ans_A[:askbot_settings.MAX_ALERTS_PER_EMAIL]
q_ans_A.cutoff_time = cutoff_time
- q_ans_B = Q_set_B.filter(answers__author=user)
+ q_ans_B = Q_set_B.filter(thread__posts__author=user, thread__posts__post_type='answer')
q_ans_B = q_ans_B[:askbot_settings.MAX_ALERTS_PER_EMAIL]
q_ans_B.cutoff_time = cutoff_time
@@ -226,14 +228,14 @@ class Command(NoArgsCommand):
feed = user_feeds.get(feed_type='m_and_c')
if feed.should_send_now():
cutoff_time = feed.get_previous_report_cutoff_time()
- comments = Comment.objects.filter(
+ comments = Post.objects.get_comments().filter(
added_at__lt = cutoff_time,
).exclude(
- user = user
+ author = user
)
q_commented = list()
for c in comments:
- post = c.content_object
+ post = c.parent
if post.author != user:
continue
@@ -286,7 +288,7 @@ class Command(NoArgsCommand):
extend_question_list(q_all_A, q_list, limit=True)
extend_question_list(q_all_B, q_list, limit=True)
- ctype = ContentType.objects.get_for_model(Question)
+ ctype = ContentType.objects.get_for_model(Post)
EMAIL_UPDATE_ACTIVITY = const.TYPE_ACTIVITY_EMAIL_UPDATE_SENT
#up to this point we still don't know if emails about
@@ -330,14 +332,14 @@ class Command(NoArgsCommand):
#skip question if we need to wait longer because
#the delay before the next email has not yet elapsed
#or if last email was sent after the most recent modification
- if emailed_at > cutoff_time or emailed_at > q.last_activity_at:
+ if emailed_at > cutoff_time or emailed_at > q.thread.last_activity_at:
meta_data['skip'] = True
continue
#collect info on all sorts of news that happened after
#the most recent emailing to the user about this question
q_rev = PostRevision.objects.question_revisions().filter(
- question=q,
+ post=q,
revised_at__gt=emailed_at
)
@@ -351,8 +353,8 @@ class Command(NoArgsCommand):
else:
meta_data['new_q'] = False
- new_ans = Answer.objects.filter(
- question=q,
+ new_ans = Post.objects.get_answers().filter(
+ thread=q.thread,
added_at__gt=emailed_at,
deleted=False,
)
@@ -360,10 +362,12 @@ class Command(NoArgsCommand):
new_ans = new_ans.exclude(author=user)
meta_data['new_ans'] = len(new_ans)
ans_rev = PostRevision.objects.answer_revisions().filter(
- answer__question = q,
- answer__deleted = False,
+ # answer__question = q
+ post__thread=q.thread,
+
+ post__deleted = False,
revised_at__gt = emailed_at
- )
+ ).distinct()
ans_rev = ans_rev.exclude(author=user)
meta_data['ans_rev'] = len(ans_rev)
@@ -404,7 +408,9 @@ class Command(NoArgsCommand):
if num_q > 0:
url_prefix = askbot_settings.APP_URL
- tag_summary = get_tag_summary_from_questions(q_list.keys())
+ threads = Thread.objects.filter(id__in=[qq.thread_id for qq in q_list.keys()])
+ tag_summary = Thread.objects.get_tag_summary_from_threads(threads)
+
question_count = len(q_list.keys())
subject_line = ungettext(
@@ -418,9 +424,17 @@ class Command(NoArgsCommand):
#todo: send this to special log
#print 'have %d updated questions for %s' % (num_q, user.username)
- text = ungettext('%(name)s, this is an update message header for %(num)d question',
- '%(name)s, this is an update message header for %(num)d questions',num_q) \
- % {'num':num_q, 'name':user.username}
+ text = ungettext(
+ '<p>Dear %(name)s,</p><p>The following question has been updated '
+ '%(sitename)s</p>',
+ '<p>Dear %(name)s,</p><p>The following %(num)d questions have been '
+ 'updated on %(sitename)s:</p>',
+ num_q
+ ) % {
+ 'num':num_q,
+ 'name':user.username,
+ 'sitename': askbot_settings.APP_SHORT_NAME
+ }
text += '<ul>'
items_added = 0
@@ -441,7 +455,7 @@ class Command(NoArgsCommand):
format_action_count('%(num)d ans rev',meta_data['ans_rev'],act_list)
act_token = ', '.join(act_list)
text += '<li><a href="%s?sort=latest">%s</a> <font color="#777777">(%s)</font></li>' \
- % (url_prefix + q.get_absolute_url(), q.title, act_token)
+ % (url_prefix + q.get_absolute_url(), q.thread.title, act_token)
text += '</ul>'
text += '<p></p>'
#if len(q_list.keys()) >= askbot_settings.MAX_ALERTS_PER_EMAIL:
@@ -451,33 +465,6 @@ class Command(NoArgsCommand):
# 'the askbot and see what\'s new!<br>'
# )
- text += _(
- 'Please visit the askbot and see what\'s new! '
- 'Could you spread the word about it - '
- 'can somebody you know help answering those questions or '
- 'benefit from posting one?'
- )
-
- feeds = EmailFeedSetting.objects.filter(subscriber = user)
- feed_freq = [feed.frequency for feed in feeds]
- text += '<p></p>'
- if 'd' in feed_freq:
- text += _('Your most frequent subscription setting is \'daily\' '
- 'on selected questions. If you are receiving more than one '
- 'email per day'
- 'please tell about this issue to the askbot administrator.'
- )
- elif 'w' in feed_freq:
- text += _('Your most frequent subscription setting is \'weekly\' '
- 'if you are receiving this email more than once a week '
- 'please report this issue to the askbot administrator.'
- )
- text += ' '
- text += _(
- 'There is a chance that you may be receiving links seen '
- 'before - due to a technicality that will eventually go away. '
- )
-
link = url_prefix + reverse(
'user_subscriptions',
kwargs = {
@@ -487,12 +474,15 @@ class Command(NoArgsCommand):
)
text += _(
- 'go to %(email_settings_link)s to change '
- 'frequency of email updates or '
- '%(admin_email)s administrator'
+ '<p>Please remember that you can always <a '
+ 'href="%(email_settings_link)s">adjust</a> frequency of the email updates or '
+ 'turn them off entirely.<br/>If you believe that this message was sent in an '
+ 'error, please email about it the forum administrator at %(admin_email)s.</'
+ 'p><p>Sincerely,</p><p>Your friendly %(sitename)s server.</p>'
) % {
'email_settings_link': link,
- 'admin_email': django_settings.ADMINS[0][1]
+ 'admin_email': django_settings.ADMINS[0][1],
+ 'sitename': askbot_settings.APP_SHORT_NAME
}
if DEBUG_THIS_COMMAND == True:
recipient_email = django_settings.ADMINS[0][1]
diff --git a/askbot/management/commands/send_respondable_welcome_email.py b/askbot/management/commands/send_respondable_welcome_email.py
new file mode 100644
index 00000000..c386b531
--- /dev/null
+++ b/askbot/management/commands/send_respondable_welcome_email.py
@@ -0,0 +1,12 @@
+"""Management command that sends a respondable
+welcome email to all users.
+User's responses will be used to validate
+the email addresses and extract the email signatures.
+"""
+from django.core.management.base import NoArgsCommand
+from askbot.models import User, send_welcome_email
+
+class Command(NoArgsCommand):
+ def handle_noargs(self):
+ for user in User.objects.filter(email_isvalid = False):
+ send_welcome_email(user)
diff --git a/askbot/management/commands/send_unanswered_question_reminders.py b/askbot/management/commands/send_unanswered_question_reminders.py
index 778a8575..39402b25 100644
--- a/askbot/management/commands/send_unanswered_question_reminders.py
+++ b/askbot/management/commands/send_unanswered_question_reminders.py
@@ -3,9 +3,9 @@ from askbot import models
from askbot import const
from askbot.conf import settings as askbot_settings
from django.utils.translation import ungettext
-from askbot.utils import mail
+from askbot import mail
from askbot.utils.classes import ReminderSchedule
-from askbot.models.question import get_tag_summary_from_questions
+from askbot.models.question import Thread
DEBUG_THIS_COMMAND = False
@@ -14,6 +14,8 @@ class Command(NoArgsCommand):
about unanswered questions to all users
"""
def handle_noargs(self, **options):
+ if askbot_settings.ENABLE_EMAIL_ALERTS == False:
+ return
if askbot_settings.ENABLE_UNANSWERED_REMINDERS == False:
return
#get questions without answers, excluding closed and deleted
@@ -24,15 +26,15 @@ class Command(NoArgsCommand):
max_reminders = askbot_settings.MAX_UNANSWERED_REMINDERS
)
- questions = models.Question.objects.exclude(
- closed = True
+ questions = models.Post.objects.get_questions().exclude(
+ thread__closed = True
).exclude(
deleted = True
).added_between(
start = schedule.start_cutoff_date,
end = schedule.end_cutoff_date
).filter(
- answer_count = 0
+ thread__answer_count = 0
).order_by('-added_at')
#for all users, excluding blocked
#for each user, select a tag filtered subset
@@ -41,6 +43,10 @@ class Command(NoArgsCommand):
user_questions = questions.exclude(author = user)
user_questions = user.get_tag_filtered_questions(user_questions)
+ if askbot_settings.GROUPS_ENABLED:
+ user_groups = user.get_groups()
+ user_questions = user_questions.filter(groups__in = user_groups)
+
final_question_list = user_questions.get_questions_needing_reminder(
user = user,
activity_type = const.TYPE_ACTIVITY_UNANSWERED_REMINDER_SENT,
@@ -51,7 +57,9 @@ class Command(NoArgsCommand):
if question_count == 0:
continue
- tag_summary = get_tag_summary_from_questions(final_question_list)
+ threads = Thread.objects.filter(id__in=[qq.thread_id for qq in final_question_list])
+ tag_summary = Thread.objects.get_tag_summary_from_threads(threads)
+
subject_line = ungettext(
'%(question_count)d unanswered question about %(topics)s',
'%(question_count)d unanswered questions about %(topics)s',
@@ -67,7 +75,7 @@ class Command(NoArgsCommand):
% (
askbot_settings.APP_URL,
question.get_absolute_url(),
- question.title
+ question.thread.title
)
body_text += '</ul>'
diff --git a/askbot/middleware/anon_user.py b/askbot/middleware/anon_user.py
index 7cd9279d..956990e4 100644
--- a/askbot/middleware/anon_user.py
+++ b/askbot/middleware/anon_user.py
@@ -8,6 +8,7 @@ added to the :class:`AnonymousUser` so that user could be pickled.
Secondly, it sends greeting message to anonymous users.
"""
+from django.conf import settings as django_settings
from askbot.user_messages import create_message, get_and_delete_messages
from askbot.conf import settings as askbot_settings
@@ -42,6 +43,10 @@ class ConnectToSessionMessagesMiddleware(object):
"""Enables anonymous users to receive messages
the same way as authenticated users, and sets
the anonymous user greeting, if it should be shown"""
+ if not request.path.startswith('/' + django_settings.ASKBOT_URL):
+ #todo: a hack, for real we need to remove this middleware
+ #and switch to the new-style session messages
+ return
if request.user.is_anonymous():
#1) Attach the ability to receive messages
#plug on deepcopy which may be called by django db "driver"
@@ -63,6 +68,10 @@ class ConnectToSessionMessagesMiddleware(object):
"""Adds the ``'askbot_visitor'``key to cookie if user ever
authenticates so that the anonymous user message won't
be shown after the user logs out"""
+ if not request.path.startswith('/' + django_settings.ASKBOT_URL):
+ #todo: a hack, for real we need to remove this middleware
+ #and switch to the new-style session messages
+ return response
if hasattr(request, 'user') and \
request.user.is_authenticated() and \
'askbot_visitor' not in request.COOKIES :
diff --git a/askbot/middleware/locale.py b/askbot/middleware/locale.py
new file mode 100644
index 00000000..c92e977a
--- /dev/null
+++ b/askbot/middleware/locale.py
@@ -0,0 +1,26 @@
+"Taken from django.middleware.locale: this is the locale selecting middleware that will look at accept headers"
+
+from django.utils.cache import patch_vary_headers
+from django.utils import translation
+from askbot.conf import settings
+
+class LocaleMiddleware(object):
+ """
+ This is a very simple middleware that parses a request
+ and decides what translation object to install in the current
+ thread context. This allows pages to be dynamically
+ translated to the language the user desires (if the language
+ is available, of course).
+ """
+
+ def process_request(self, request):
+ language = settings.ASKBOT_LANGUAGE
+ translation.activate(language)
+ request.LANGUAGE_CODE = translation.get_language()
+
+ def process_response(self, request, response):
+ patch_vary_headers(response, ('Accept-Language',))
+ if 'Content-Language' not in response:
+ response['Content-Language'] = translation.get_language()
+ translation.deactivate()
+ return response
diff --git a/askbot/middleware/pagesize.py b/askbot/middleware/pagesize.py
deleted file mode 100644
index f10607ad..00000000
--- a/askbot/middleware/pagesize.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import logging
-import traceback
-import sys
-from django.http import HttpResponse, Http404
-from django.template import RequestContext
-from django.conf import settings
-from askbot import utils
-
-# used in questions
-QUESTIONS_PAGE_SIZE = 10
-class QuestionsPageSizeMiddleware(object):
- def process_request(self, request):
- # Set flag to False by default. If it is True, then need to be saved.
- page_size_changed = False
- # get page_size from session, if failed then get default value
- user_page_size = request.session.get("page_size", QUESTIONS_PAGE_SIZE)
- # set page_size equal to logon user specified value in database
- if request.user.is_authenticated() \
- and request.user.questions_per_page > 0:
- user_page_size = request.user.questions_per_page
-
- try:
- # get new page_size from UI selection
- page_size = int(request.GET.get('page_size', user_page_size))
- if page_size != user_page_size:
- page_size_changed = True
-
- except ValueError:
- page_size = user_page_size
-
- # save this page_size to user database
- if page_size_changed:
- if request.user.is_authenticated():
- user = request.user
- user.questions_per_page = page_size
- user.save()
- # put page_size into session
- request.session["page_size"] = page_size
-
- def process_exception(self, request, exception):
- #todo: move this to separate middleware
- exc_type, exc_value, exc_traceback = sys.exc_info()
- logging.critical(''.join(traceback.format_tb(exc_traceback)))
- logging.critical(exc_type)
- logging.critical(exc_value)
- if exc_type == Http404:
- return None
- if getattr(settings, 'DEBUG', False) == True:
- return None
- else:
- #todo - we have a strange requirement - maybe remove
- #500.html needs RequestContext, while handler500 only receives Context
- #need to log some more details about the request
- logging.critical(utils.http.get_request_info(request))
- from askbot.skins.loaders import get_template
- template = get_template('500.jinja.html', request)
- return HttpResponse(template.render(RequestContext(request)))
diff --git a/askbot/middleware/spaceless.py b/askbot/middleware/spaceless.py
index 9e6b5503..2f5744af 100644
--- a/askbot/middleware/spaceless.py
+++ b/askbot/middleware/spaceless.py
@@ -23,4 +23,5 @@ class SpacelessMiddleware(object):
"""
if 'text/html' in response['Content-Type']:
response.content = reduce_spaces_between_tags(response.content)
+ response['Content-Length'] = str(len(response.content))
return response
diff --git a/askbot/middleware/view_log.py b/askbot/middleware/view_log.py
index 0880ae1b..52127148 100644
--- a/askbot/middleware/view_log.py
+++ b/askbot/middleware/view_log.py
@@ -1,33 +1,16 @@
-"""This module records the site visits by the authenticaded
-users and heps maintain the state of the search (for all visitors).
+"""
+This module records the site visits by the authenticated users
Included here is the ViewLogMiddleware
"""
-import logging
import datetime
-from django.conf import settings
-from django.views.static import serve
-from django.views.i18n import javascript_catalog
from askbot.models import signals
-from askbot.views.readers import questions as questions_view
-from askbot.views.commands import vote, get_tag_list
-from askbot.views.writers import delete_comment, post_comments, retag_question
-from askbot.views.readers import revisions, get_question_body
-from askbot.views.meta import media
-from askbot.search.state_manager import ViewLog
-
-#todo: the list is getting bigger and bigger - maybe there is a better way to
-#trigger reset of sarch state?
-IGNORED_VIEWS = (
- serve, vote, media, delete_comment, post_comments,
- retag_question, revisions, javascript_catalog,
- get_tag_list, get_question_body
-)
class ViewLogMiddleware(object):
- """ViewLogMiddleware does two things: tracks visits of pages for the
- stateful site search and sends the site_visited signal
+ """
+ ViewLogMiddleware sends the site_visited signal
+
"""
def process_view(self, request, view_func, view_args, view_kwargs):
#send the site_visited signal for the authenticated users
@@ -36,33 +19,3 @@ class ViewLogMiddleware(object):
user = request.user,
timestamp = datetime.datetime.now()
)
-
- #remaining stuff is for the search state
- if view_func == questions_view:
- view_str = 'questions'
- elif view_func in IGNORED_VIEWS:
- return
- else:
- view_str = view_func.__name__
- if view_str == 'wrap':
- return
-
- if settings.DEBUG == True:
- #todo: dependency!
- try:
- from debug_toolbar.views import debug_media as debug_media_view
- if view_func == debug_media_view:
- return
- except ImportError:
- pass
-
- logging.debug('user %s, view %s' % (request.user.username, view_str))
- logging.debug('next url is %s' % request.REQUEST.get('next','nothing'))
-
- if 'view_log' in request.session:
- view_log = request.session['view_log']
- else:
- view_log = ViewLog()
-
- view_log.set_current(view_str)
- request.session['view_log'] = view_log
diff --git a/askbot/migrations/0004_install_full_text_indexes_for_mysql.py b/askbot/migrations/0004_install_full_text_indexes_for_mysql.py
index ac8448e5..7c7c52f0 100644
--- a/askbot/migrations/0004_install_full_text_indexes_for_mysql.py
+++ b/askbot/migrations/0004_install_full_text_indexes_for_mysql.py
@@ -35,7 +35,7 @@ class Migration(DataMigration):
and will probably fail otherwise
"""
if db.backend_name == 'mysql':
- if mysql.supports_full_text_search():
+ if mysql.supports_full_text_search_migr0004():
#todo: extract column names by introspection
question_index_sql = get_create_full_text_index_sql(
Q_INDEX_NAME,
diff --git a/askbot/migrations/0012_delete_some_unused_models.py b/askbot/migrations/0012_delete_some_unused_models.py
index 8c0edf8e..3a0888ef 100644
--- a/askbot/migrations/0012_delete_some_unused_models.py
+++ b/askbot/migrations/0012_delete_some_unused_models.py
@@ -24,15 +24,15 @@ class Migration(SchemaMigration):
# Deleting model 'Mention'
db.delete_table(u'mention')
- # Deleting model 'Book'
- db.delete_table(u'book')
-
# Removing M2M table for field questions on 'Book'
db.delete_table('book_question')
# Deleting model 'BookAuthorRss'
db.delete_table(u'book_author_rss')
-
+
+ # Deleting model 'Book'
+ db.delete_table(u'book')
+
def backwards(self, orm):
diff --git a/askbot/migrations/0022_init_postgresql_full_text_search.py b/askbot/migrations/0022_init_postgresql_full_text_search.py
index b01c1285..4457e1d5 100644
--- a/askbot/migrations/0022_init_postgresql_full_text_search.py
+++ b/askbot/migrations/0022_init_postgresql_full_text_search.py
@@ -1,4 +1,5 @@
# encoding: utf-8
+import os
import datetime
import askbot
from south.db import db
@@ -6,13 +7,20 @@ from south.v2 import DataMigration
from django.db import models
from django.core import management
from django.conf import settings
+from askbot.search.postgresql import setup_full_text_search
class Migration(DataMigration):
def forwards(self, orm):
"Write your forwards methods here."
if 'postgresql_psycopg2' in askbot.get_database_engine_name():
- management.call_command('init_postgresql_full_text_search')
+ script_path = os.path.join(
+ askbot.get_install_directory(),
+ 'search',
+ 'postgresql',
+ 'question_answer_comment_models.plsql'
+ )
+ setup_full_text_search(script_path)
def backwards(self, orm):
"Write your backwards methods here."
diff --git a/askbot/migrations/0032_auto__del_field_badgedata_multiple__del_field_badgedata_description__d.py b/askbot/migrations/0032_auto__del_field_badgedata_multiple__del_field_badgedata_description__d.py
index 51817c95..70ef2f8d 100644
--- a/askbot/migrations/0032_auto__del_field_badgedata_multiple__del_field_badgedata_description__d.py
+++ b/askbot/migrations/0032_auto__del_field_badgedata_multiple__del_field_badgedata_description__d.py
@@ -5,7 +5,7 @@ from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
-
+
def forwards(self, orm):
# Removing unique constraint on 'BadgeData', fields ['type', 'name']
@@ -27,12 +27,17 @@ class Migration(SchemaMigration):
db.alter_column('askbot_badgedata', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50))
# Adding unique constraint on 'BadgeData', fields ['slug']
- db.create_unique('askbot_badgedata', ['slug'])
+ try:#work around the South 0.7.3 bug
+ db.start_transaction()
+ db.create_unique('askbot_badgedata', ['slug'])
+ db.commit_transaction()
+ except:
+ db.rollback_transaction()
+
+
-
-
def backwards(self, orm):
-
+
# Adding field 'BadgeData.multiple'
db.add_column('askbot_badgedata', 'multiple', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
@@ -50,8 +55,8 @@ class Migration(SchemaMigration):
# Removing unique constraint on 'BadgeData', fields ['slug']
db.delete_unique('askbot_badgedata', ['slug'])
-
-
+
+
models = {
'askbot.activity': {
'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
@@ -330,5 +335,5 @@ class Migration(SchemaMigration):
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
}
}
-
+
complete_apps = ['askbot']
diff --git a/askbot/migrations/0050_move_qa_revisions_to_postrevision.py b/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
index 36c46551..e4d0ea3b 100644
--- a/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
+++ b/askbot/migrations/0050_move_qa_revisions_to_postrevision.py
@@ -42,10 +42,10 @@ class Migration(DataMigration):
def forwards(self, orm):
# Process revisions
- for qr in orm.QuestionRevision.objects.all():
+ for qr in orm.QuestionRevision.objects.iterator():
self.copy_revision(orm=orm, source_revision=qr)
- for ar in orm.AnswerRevision.objects.all():
+ for ar in orm.AnswerRevision.objects.iterator():
self.copy_revision(orm=orm, source_revision=ar)
diff --git a/askbot/migrations/0052_auto__add_thread__add_field_question_thread.py b/askbot/migrations/0052_auto__add_thread__add_field_question_thread.py
new file mode 100644
index 00000000..7bb194c1
--- /dev/null
+++ b/askbot/migrations/0052_auto__add_thread__add_field_question_thread.py
@@ -0,0 +1,319 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding model 'Thread'
+ db.create_table('askbot_thread', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('favourite_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+ ))
+ db.send_create_signal('askbot', ['Thread'])
+
+ # Adding field 'Question.thread'
+ db.add_column(u'question', 'thread', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='questions', unique=True, null=True, to=orm['askbot.Thread']), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Thread'
+ db.delete_table('askbot_thread')
+
+ # Deleting field 'Question.thread'
+ db.delete_column(u'question', 'thread_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'questions'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0053_create_threads_for_questions.py b/askbot/migrations/0053_create_threads_for_questions.py
new file mode 100644
index 00000000..8c734571
--- /dev/null
+++ b/askbot/migrations/0053_create_threads_for_questions.py
@@ -0,0 +1,319 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ "Write your forwards methods here."
+ print "Converting question to threads:"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions):
+ thread = orm.Thread.objects.create(favourite_count=question.favourite_count)
+ question.thread = thread
+ question.save()
+
+ if orm.Question.objects.filter(thread__isnull=True).exists():
+ raise ValueError('There are Thread-less questions after this migration has been applied!')
+
+ if orm.Question.objects.exclude(favourite_count=models.F('thread__favourite_count')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'questions'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0054_auto__del_field_question_favourite_count.py b/askbot/migrations/0054_auto__del_field_question_favourite_count.py
new file mode 100644
index 00000000..682ec18d
--- /dev/null
+++ b/askbot/migrations/0054_auto__del_field_question_favourite_count.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.favourite_count'
+ db.delete_column(u'question', 'favourite_count')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Question.favourite_count'
+ db.add_column(u'question', 'favourite_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'questions'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0055_auto__chg_field_question_thread.py b/askbot/migrations/0055_auto__chg_field_question_thread.py
new file mode 100644
index 00000000..9fa7885b
--- /dev/null
+++ b/askbot/migrations/0055_auto__chg_field_question_thread.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Changing field 'Question.thread'
+ db.alter_column(u'question', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(default=0, unique=True, to=orm['askbot.Thread']))
+
+
+ def backwards(self, orm):
+
+ # Changing field 'Question.thread'
+ db.alter_column(u'question', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, null=True, to=orm['askbot.Thread']))
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0056_transplant_answer_count_field.py b/askbot/migrations/0056_transplant_answer_count_field.py
new file mode 100644
index 00000000..ab84b449
--- /dev/null
+++ b/askbot/migrations/0056_transplant_answer_count_field.py
@@ -0,0 +1,309 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.answer_count'
+ db.add_column('askbot_thread', 'answer_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.answer_count'
+ db.delete_column('askbot_thread', 'answer_count')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0057_transplant_answer_count_data.py b/askbot/migrations/0057_transplant_answer_count_data.py
new file mode 100644
index 00000000..f83847cd
--- /dev/null
+++ b/askbot/migrations/0057_transplant_answer_count_data.py
@@ -0,0 +1,314 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding answer counts to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+ thread.answer_count = question.answer_count
+ thread.save()
+
+ if orm.Question.objects.exclude(answer_count=models.F('thread__answer_count')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0058_transplant_answer_count_field_2.py b/askbot/migrations/0058_transplant_answer_count_field_2.py
new file mode 100644
index 00000000..fce078fd
--- /dev/null
+++ b/askbot/migrations/0058_transplant_answer_count_field_2.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.answer_count'
+ db.delete_column(u'question', 'answer_count')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Question.answer_count'
+ db.add_column(u'question', 'answer_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0059_auto__add_field_thread_view_count.py b/askbot/migrations/0059_auto__add_field_thread_view_count.py
new file mode 100644
index 00000000..9fa9e834
--- /dev/null
+++ b/askbot/migrations/0059_auto__add_field_thread_view_count.py
@@ -0,0 +1,309 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.view_count'
+ db.add_column('askbot_thread', 'view_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.view_count'
+ db.delete_column('askbot_thread', 'view_count')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0060_view_count_transplant.py b/askbot/migrations/0060_view_count_transplant.py
new file mode 100644
index 00000000..e9538655
--- /dev/null
+++ b/askbot/migrations/0060_view_count_transplant.py
@@ -0,0 +1,314 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding view counts to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+ thread.view_count = question.view_count
+ thread.save()
+
+ if orm.Question.objects.exclude(view_count=models.F('thread__view_count')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0061_auto__del_field_question_view_count.py b/askbot/migrations/0061_auto__del_field_question_view_count.py
new file mode 100644
index 00000000..88e9725b
--- /dev/null
+++ b/askbot/migrations/0061_auto__del_field_question_view_count.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.view_count'
+ db.delete_column(u'question', 'view_count')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Question.view_count'
+ db.add_column(u'question', 'view_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0062_transplant_question_closed_fields.py b/askbot/migrations/0062_transplant_question_closed_fields.py
new file mode 100644
index 00000000..18f44434
--- /dev/null
+++ b/askbot/migrations/0062_transplant_question_closed_fields.py
@@ -0,0 +1,330 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.closed'
+ db.add_column('askbot_thread', 'closed', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+
+ # Adding field 'Thread.closed_by'
+ db.add_column('askbot_thread', 'closed_by', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True), keep_default=False)
+
+ # Adding field 'Thread.closed_at'
+ db.add_column('askbot_thread', 'closed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
+
+ # Adding field 'Thread.close_reason'
+ db.add_column('askbot_thread', 'close_reason', self.gf('django.db.models.fields.SmallIntegerField')(null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.closed'
+ db.delete_column('askbot_thread', 'closed')
+
+ # Deleting field 'Thread.closed_by'
+ db.delete_column('askbot_thread', 'closed_by_id')
+
+ # Deleting field 'Thread.closed_at'
+ db.delete_column('askbot_thread', 'closed_at')
+
+ # Deleting field 'Thread.close_reason'
+ db.delete_column('askbot_thread', 'close_reason')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0063_transplant_question_closed_datas.py b/askbot/migrations/0063_transplant_question_closed_datas.py
new file mode 100644
index 00000000..15626e48
--- /dev/null
+++ b/askbot/migrations/0063_transplant_question_closed_datas.py
@@ -0,0 +1,327 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Marking closed threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+
+ thread.closed = question.closed
+ thread.closed_by = question.closed_by
+ thread.closed_at = question.closed_at
+ thread.close_reason = question.close_reason
+
+ thread.save()
+
+ if orm.Question.objects.exclude(closed=models.F('thread__closed')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+ for field_name in ['closed_by', 'closed_at', 'close_reason']:
+ kwargs = {field_name: models.F('thread__%s' % field_name)}
+ if orm.Question.objects.filter(closed=True).exclude(**kwargs).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0064_transplant_question_closed_fields_2.py b/askbot/migrations/0064_transplant_question_closed_fields_2.py
new file mode 100644
index 00000000..48795a07
--- /dev/null
+++ b/askbot/migrations/0064_transplant_question_closed_fields_2.py
@@ -0,0 +1,326 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.closed_at'
+ db.delete_column(u'question', 'closed_at')
+
+ # Deleting field 'Question.closed_by'
+ db.delete_column(u'question', 'closed_by_id')
+
+ # Deleting field 'Question.close_reason'
+ db.delete_column(u'question', 'close_reason')
+
+ # Deleting field 'Question.closed'
+ db.delete_column(u'question', 'closed')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Question.closed_at'
+ db.add_column(u'question', 'closed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
+
+ # Adding field 'Question.closed_by'
+ db.add_column(u'question', 'closed_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='closed_questions', null=True, to=orm['auth.User'], blank=True), keep_default=False)
+
+ # Adding field 'Question.close_reason'
+ db.add_column(u'question', 'close_reason', self.gf('django.db.models.fields.SmallIntegerField')(null=True, blank=True), keep_default=False)
+
+ # Adding field 'Question.closed'
+ db.add_column(u'question', 'closed', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0065_transplant_accepted_answer_1.py b/askbot/migrations/0065_transplant_accepted_answer_1.py
new file mode 100644
index 00000000..b8786769
--- /dev/null
+++ b/askbot/migrations/0065_transplant_accepted_answer_1.py
@@ -0,0 +1,316 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.accepted_answer'
+ db.add_column('askbot_thread', 'accepted_answer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Answer'], null=True, blank=True), keep_default=False)
+
+ # Adding field 'Thread.answer_accepted_at'
+ db.add_column('askbot_thread', 'answer_accepted_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.accepted_answer'
+ db.delete_column('askbot_thread', 'accepted_answer_id')
+
+ # Deleting field 'Thread.answer_accepted_at'
+ db.delete_column('askbot_thread', 'answer_accepted_at')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0066_transplant_accepted_answer_data.py b/askbot/migrations/0066_transplant_accepted_answer_data.py
new file mode 100644
index 00000000..f9c28b94
--- /dev/null
+++ b/askbot/migrations/0066_transplant_accepted_answer_data.py
@@ -0,0 +1,339 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+from askbot.migrations import TERM_YELLOW, TERM_RESET
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding accepted answers to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+
+ if question.answer_accepted:
+ try:
+ accepted_answer = question.answers.get(accepted=True)
+ except orm.Answer.DoesNotExist:
+ # Unfortunately there's probably nothing we can do in this case,
+ # there's no record of which answer has been accepted (HMM, MAYBE IN ACTIVITIES???)
+ print TERM_YELLOW, "Found a thread with question.answer_accepted, " \
+ "but no answer actually marked as accepted, question.id=%d." \
+ "This happens so there's no need to panic." % question.id, TERM_RESET
+ else:
+ thread.accepted_answer = accepted_answer
+ thread.answer_accepted_at = accepted_answer.accepted_at
+ thread.save()
+
+ # Verify data integrity
+ message = "Checking correctness of accepted answer data"
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ accepted_answers = question.answers.filter(accepted=True)
+ num_accepted_answers = len(accepted_answers)
+
+ if( (num_accepted_answers == 0 and question.thread.accepted_answer) or
+ (num_accepted_answers == 1 and not question.thread.accepted_answer) or
+ (num_accepted_answers == 1 and question.thread.accepted_answer != accepted_answers[0]) or
+ (num_accepted_answers == 1 and question.thread.answer_accepted_at != accepted_answers[0].accepted_at) or
+ (num_accepted_answers > 1) ):
+ raise ValueError("There are Thread instances for which data doesn't match Question/Answers!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0067_transplant_accepted_answer_2.py b/askbot/migrations/0067_transplant_accepted_answer_2.py
new file mode 100644
index 00000000..24c0c624
--- /dev/null
+++ b/askbot/migrations/0067_transplant_accepted_answer_2.py
@@ -0,0 +1,319 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Answer.accepted_at'
+ db.delete_column(u'answer', 'accepted_at')
+
+ # Deleting field 'Answer.accepted'
+ db.delete_column(u'answer', 'accepted')
+
+ # Deleting field 'Question.answer_accepted'
+ db.delete_column(u'question', 'answer_accepted')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Answer.accepted_at'
+ db.add_column(u'answer', 'accepted_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
+
+ # Adding field 'Answer.accepted'
+ db.add_column(u'answer', 'accepted', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+
+ # Adding field 'Question.answer_accepted'
+ db.add_column(u'question', 'answer_accepted', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0068_transplant_last_activity_fields_1.py b/askbot/migrations/0068_transplant_last_activity_fields_1.py
new file mode 100644
index 00000000..14ad665b
--- /dev/null
+++ b/askbot/migrations/0068_transplant_last_activity_fields_1.py
@@ -0,0 +1,316 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.last_activity_at'
+ db.add_column('askbot_thread', 'last_activity_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now), keep_default=False)
+
+ # Adding field 'Thread.last_activity_by'
+ # HACK: Manually added null=True to fix migrations, to be manually removed in 0070
+ db.add_column('askbot_thread', 'last_activity_by', self.gf('django.db.models.fields.related.ForeignKey')(null=True, default=None, related_name='unused_last_active_in_threads', to=orm['auth.User']), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.last_activity_at'
+ db.delete_column('askbot_thread', 'last_activity_at')
+
+ # Deleting field 'Thread.last_activity_by'
+ db.delete_column('askbot_thread', 'last_activity_by_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0069_transplant_last_activity_data.py b/askbot/migrations/0069_transplant_last_activity_data.py
new file mode 100644
index 00000000..bcd83ec9
--- /dev/null
+++ b/askbot/migrations/0069_transplant_last_activity_data.py
@@ -0,0 +1,316 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding last activity data to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+ thread.last_activity_at = question.last_activity_at
+ thread.last_activity_by = question.last_activity_by
+ thread.save()
+
+ if orm.Question.objects.exclude(last_activity_at=models.F('thread__last_activity_at')).exists() or \
+ orm.Question.objects.exclude(last_activity_by=models.F('thread__last_activity_by')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0070_transplant_last_activity_fields_2.py b/askbot/migrations/0070_transplant_last_activity_fields_2.py
new file mode 100644
index 00000000..a4ba6b6a
--- /dev/null
+++ b/askbot/migrations/0070_transplant_last_activity_fields_2.py
@@ -0,0 +1,317 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.last_activity_by'
+ db.delete_column(u'question', 'last_activity_by_id')
+
+ # Deleting field 'Question.last_activity_at'
+ db.delete_column(u'question', 'last_activity_at')
+
+ # HACK: Manually reversing `null=True` hack from 0068
+ db.alter_column('askbot_thread', 'last_activity_by_id', self.gf('django.db.models.fields.related.ForeignKey')(related_name='unused_last_active_in_threads', to=orm['auth.User']))
+
+
+
+ def backwards(self, orm):
+
+ # User chose to not deal with backwards NULL issues for 'Question.last_activity_by'
+ raise RuntimeError("Cannot reverse this migration. 'Question.last_activity_by' and its values cannot be restored.")
+
+ # Adding field 'Question.last_activity_at'
+ db.add_column(u'question', 'last_activity_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0071_transplant_tagnames_1.py b/askbot/migrations/0071_transplant_tagnames_1.py
new file mode 100644
index 00000000..3d963cac
--- /dev/null
+++ b/askbot/migrations/0071_transplant_tagnames_1.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.tagnames'
+ db.add_column('askbot_thread', 'tagnames', self.gf('django.db.models.fields.CharField')(default='', max_length=125), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.tagnames'
+ db.delete_column('askbot_thread', 'tagnames')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0072_transplant_tagnames_data.py b/askbot/migrations/0072_transplant_tagnames_data.py
new file mode 100644
index 00000000..caa5e6a6
--- /dev/null
+++ b/askbot/migrations/0072_transplant_tagnames_data.py
@@ -0,0 +1,313 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding denormalized tags field to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ thread = question.thread
+ thread.tagnames = question.tagnames
+ thread.save()
+
+ if orm.Question.objects.exclude(tagnames=models.F('thread__tagnames')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0073_transplant_tagnames_2.py b/askbot/migrations/0073_transplant_tagnames_2.py
new file mode 100644
index 00000000..a45f0452
--- /dev/null
+++ b/askbot/migrations/0073_transplant_tagnames_2.py
@@ -0,0 +1,307 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.tagnames'
+ db.delete_column(u'question', 'tagnames')
+
+
+ def backwards(self, orm):
+
+ # User chose to not deal with backwards NULL issues for 'Question.tagnames'
+ raise RuntimeError("Cannot reverse this migration. 'Question.tagnames' and its values cannot be restored.")
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0074_transplant_followed_by_1.py b/askbot/migrations/0074_transplant_followed_by_1.py
new file mode 100644
index 00000000..0c60054a
--- /dev/null
+++ b/askbot/migrations/0074_transplant_followed_by_1.py
@@ -0,0 +1,313 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding M2M table for field followed_by on 'Thread'
+ db.create_table('askbot_thread_followed_by', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('thread', models.ForeignKey(orm['askbot.thread'], null=False)),
+ ('user', models.ForeignKey(orm['auth.user'], null=False))
+ ))
+ db.create_unique('askbot_thread_followed_by', ['thread_id', 'user_id'])
+
+
+ def backwards(self, orm):
+
+ # Removing M2M table for field followed_by on 'Thread'
+ db.delete_table('askbot_thread_followed_by')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0075_transplant_followed_by_data.py b/askbot/migrations/0075_transplant_followed_by_data.py
new file mode 100644
index 00000000..06afd155
--- /dev/null
+++ b/askbot/migrations/0075_transplant_followed_by_data.py
@@ -0,0 +1,312 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding followers to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ question.thread.followed_by.clear() # just in case someone reversed this migration
+ question.thread.followed_by.add(*list(question.followed_by.iterator()))
+
+ if question.followed_by.count() != question.thread.followed_by.count():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0076_transplant_followed_by_2.py b/askbot/migrations/0076_transplant_followed_by_2.py
new file mode 100644
index 00000000..c27de388
--- /dev/null
+++ b/askbot/migrations/0076_transplant_followed_by_2.py
@@ -0,0 +1,312 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing M2M table for field followed_by on 'Question'
+ db.delete_table('question_followed_by')
+
+
+ def backwards(self, orm):
+
+ # Adding M2M table for field followed_by on 'Question'
+ db.create_table(u'question_followed_by', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('question', models.ForeignKey(orm['askbot.question'], null=False)),
+ ('user', models.ForeignKey(orm['auth.user'], null=False))
+ ))
+ db.create_unique(u'question_followed_by', ['question_id', 'user_id'])
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0077_transplant_summary_1.py b/askbot/migrations/0077_transplant_summary_1.py
new file mode 100644
index 00000000..e84e8ddd
--- /dev/null
+++ b/askbot/migrations/0077_transplant_summary_1.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Answer.summary'
+ db.add_column(u'answer', 'summary', self.gf('django.db.models.fields.CharField')(default='', max_length=180), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Answer.summary'
+ db.delete_column(u'answer', 'summary')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0078_transplant_favquestions_1.py b/askbot/migrations/0078_transplant_favquestions_1.py
new file mode 100644
index 00000000..a3359de2
--- /dev/null
+++ b/askbot/migrations/0078_transplant_favquestions_1.py
@@ -0,0 +1,309 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'FavoriteQuestion.thread'
+ db.add_column(u'favorite_question', 'thread', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Thread'], null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'FavoriteQuestion.thread'
+ db.delete_column(u'favorite_question', 'thread_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']", 'null': 'True', 'blank': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0079_transplant_favquestions_data.py b/askbot/migrations/0079_transplant_favquestions_data.py
new file mode 100644
index 00000000..67decb07
--- /dev/null
+++ b/askbot/migrations/0079_transplant_favquestions_data.py
@@ -0,0 +1,310 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Connecting favorite questions to threads"
+ num_favs = orm.FavoriteQuestion.objects.count()
+ for fav in ProgressBar(orm.FavoriteQuestion.objects.iterator(), num_favs, message):
+ fav.thread = fav.question.thread
+ fav.save()
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']", 'null': 'True', 'blank': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0080_transplant_favquestions_2.py b/askbot/migrations/0080_transplant_favquestions_2.py
new file mode 100644
index 00000000..3edd95c3
--- /dev/null
+++ b/askbot/migrations/0080_transplant_favquestions_2.py
@@ -0,0 +1,314 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'FavoriteQuestion.question'
+ db.delete_column(u'favorite_question', 'question_id')
+
+ # Changing field 'FavoriteQuestion.thread'
+ db.alter_column(u'favorite_question', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['askbot.Thread']))
+
+
+ def backwards(self, orm):
+
+ # User chose to not deal with backwards NULL issues for 'FavoriteQuestion.question'
+ raise RuntimeError("Cannot reverse this migration. 'FavoriteQuestion.question' and its values cannot be restored.")
+
+ # Changing field 'FavoriteQuestion.thread'
+ db.alter_column(u'favorite_question', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Thread'], null=True))
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0081_transplant_title_1.py b/askbot/migrations/0081_transplant_title_1.py
new file mode 100644
index 00000000..e8553783
--- /dev/null
+++ b/askbot/migrations/0081_transplant_title_1.py
@@ -0,0 +1,309 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.title'
+ db.add_column('askbot_thread', 'title', self.gf('django.db.models.fields.CharField')(default='', max_length=300), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.title'
+ db.delete_column('askbot_thread', 'title')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0082_transplant_title_data.py b/askbot/migrations/0082_transplant_title_data.py
new file mode 100644
index 00000000..ccdf1e16
--- /dev/null
+++ b/askbot/migrations/0082_transplant_title_data.py
@@ -0,0 +1,314 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Adding titles to threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ question.thread.title = question.title
+ question.thread.save()
+
+ if orm.Question.objects.exclude(title=models.F('thread__title')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0083_transplant_title_2.py b/askbot/migrations/0083_transplant_title_2.py
new file mode 100644
index 00000000..eab1bef3
--- /dev/null
+++ b/askbot/migrations/0083_transplant_title_2.py
@@ -0,0 +1,308 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Question.title'
+ db.delete_column(u'question', 'title')
+
+
+ def backwards(self, orm):
+
+ # User chose to not deal with backwards NULL issues for 'Question.title'
+ raise RuntimeError("Cannot reverse this migration. 'Question.title' and its values cannot be restored.")
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0084_auto__add_field_answer_is_anonymous.py b/askbot/migrations/0084_auto__add_field_answer_is_anonymous.py
new file mode 100644
index 00000000..a5e1ce04
--- /dev/null
+++ b/askbot/migrations/0084_auto__add_field_answer_is_anonymous.py
@@ -0,0 +1,309 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # INFO: `default=False` matches the fact that Answer-s are never anonymous
+ # - so there's no need to do any post-processing (data migration)
+ db.add_column(u'answer', 'is_anonymous', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Answer.is_anonymous'
+ db.delete_column(u'answer', 'is_anonymous')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0085_transplant_question_tags_1.py b/askbot/migrations/0085_transplant_question_tags_1.py
new file mode 100644
index 00000000..5a219a6b
--- /dev/null
+++ b/askbot/migrations/0085_transplant_question_tags_1.py
@@ -0,0 +1,315 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding M2M table for field tags on 'Thread'
+ db.create_table('askbot_thread_tags', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('thread', models.ForeignKey(orm['askbot.thread'], null=False)),
+ ('tag', models.ForeignKey(orm['askbot.tag'], null=False))
+ ))
+ db.create_unique('askbot_thread_tags', ['thread_id', 'tag_id'])
+
+
+ def backwards(self, orm):
+
+ # Removing M2M table for field tags on 'Thread'
+ db.delete_table('askbot_thread_tags')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0086_transplant_question_tags_data.py b/askbot/migrations/0086_transplant_question_tags_data.py
new file mode 100644
index 00000000..c2d9fa76
--- /dev/null
+++ b/askbot/migrations/0086_transplant_question_tags_data.py
@@ -0,0 +1,313 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ message = "Linking tag objects with threads"
+ num_questions = orm.Question.objects.count()
+ for question in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ question.thread.tags.add(*list(question.tags.iterator()))
+
+ if orm.Question.objects.annotate(tag_num=models.Count('tags'), thread_tag_num=models.Count('thread__tags')).exclude(tag_num=models.F('thread_tag_num')).exists():
+ raise ValueError("There are Thread instances for which data doesn't match Question!")
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0087_transplant_question_tags_2.py b/askbot/migrations/0087_transplant_question_tags_2.py
new file mode 100644
index 00000000..88f79ce1
--- /dev/null
+++ b/askbot/migrations/0087_transplant_question_tags_2.py
@@ -0,0 +1,314 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing M2M table for field tags on 'Question'
+ db.delete_table('question_tags')
+
+
+ def backwards(self, orm):
+
+ # Adding M2M table for field tags on 'Question'
+ db.create_table(u'question_tags', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('question', models.ForeignKey(orm['askbot.question'], null=False)),
+ ('tag', models.ForeignKey(orm['askbot.tag'], null=False))
+ ))
+ db.create_unique(u'question_tags', ['question_id', 'tag_id'])
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0088_install__post_view__for__development.py b/askbot/migrations/0088_install__post_view__for__development.py
new file mode 100644
index 00000000..f8de0c50
--- /dev/null
+++ b/askbot/migrations/0088_install__post_view__for__development.py
@@ -0,0 +1,314 @@
+# -*- coding: utf-8 -*-
+import warnings
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+import askbot
+
+
+class Migration(SchemaMigration):
+ """This migration was for development only and now it
+ is effectively a no-op"""
+
+ def forwards(self, orm):
+# create_post_view_sql = open(
+# askbot.get_path_to('models/post_view.sql')
+# ).read()
+ warnings.filterwarnings("ignore", "Unknown table .*?\.askbot_post'") # DROP VIEW might raise a warning so let's filter that out
+ db.execute('DROP VIEW IF EXISTS askbot_post')
+# db.execute(create_post_view_sql)
+
+ def backwards(self, orm):
+ warnings.filterwarnings("ignore", "Unknown table .*?\.askbot_post'") # DROP VIEW might raise a warning so let's filter that out
+ db.execute('DROP VIEW IF EXISTS askbot_post')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0089_auto__add_post.py b/askbot/migrations/0089_auto__add_post.py
new file mode 100644
index 00000000..9b11cc71
--- /dev/null
+++ b/askbot/migrations/0089_auto__add_post.py
@@ -0,0 +1,384 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Drop Post VIEW
+ import warnings
+ warnings.filterwarnings("ignore", "Unknown table .*?\.askbot_post'") # DROP VIEW might raise a warning so let's filter that out
+ db.execute('DROP VIEW IF EXISTS askbot_post')
+
+ # Adding model 'Post'
+ db.create_table('askbot_post', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(related_name='posts', to=orm['auth.User'])),
+ ('added_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('deleted', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('deleted_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('deleted_by', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='deleted_posts', null=True, to=orm['auth.User'])),
+ ('wiki', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('wikified_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('locked', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('locked_by', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='locked_posts', null=True, to=orm['auth.User'])),
+ ('locked_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('score', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('vote_up_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('vote_down_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('comment_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+ ('offensive_flag_count', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
+ ('last_edited_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('last_edited_by', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_edited_posts', null=True, to=orm['auth.User'])),
+ ('html', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('text', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('summary', self.gf('django.db.models.fields.CharField')(max_length=180)),
+ ('is_anonymous', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('post_type', self.gf('django.db.models.fields.CharField')(max_length=255)),
+ ('parent', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='comment_posts', null=True, to=orm['askbot.Post'])),
+ ('self_answer', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, to=orm['askbot.Answer'])),
+ ('self_question', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, to=orm['askbot.Question'])),
+ ('self_comment', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, to=orm['askbot.Comment'])),
+ ('thread', self.gf('django.db.models.fields.related.ForeignKey')(related_name='posts', to=orm['askbot.Thread'])),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ ('old_question_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True, default=None, unique=True)),
+ ('old_answer_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True, default=None, unique=True)),
+ ('old_comment_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True, default=None, unique=True)),
+ ))
+ db.send_create_signal('askbot', ['Post'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Post'
+ db.delete_table('askbot_post')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0090_postize_q_a_c.py b/askbot/migrations/0090_postize_q_a_c.py
new file mode 100644
index 00000000..7c85ed21
--- /dev/null
+++ b/askbot/migrations/0090_postize_q_a_c.py
@@ -0,0 +1,541 @@
+# encoding: utf-8
+import datetime
+import sys
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from django.conf import settings
+from askbot.utils.console import ProgressBar
+
+from askbot.migrations import TERM_RED_BOLD, TERM_GREEN, TERM_RESET
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ orm.Post.objects.all().delete() # in case there are some leftovers after this migration failed before
+
+ if 'test' not in sys.argv: # Don't confuse users
+ print TERM_RED_BOLD, "!!! Remember to not remove the old content types for Question, Answer and Comment models until further notice from migration 0101!", TERM_RESET
+
+ post_id = max(
+ # 'or 0' protects against None
+ orm.Question.objects.aggregate(max_id=models.Max('id'))['max_id'] or 0,
+ orm.Answer.objects.aggregate(max_id=models.Max('id'))['max_id'] or 0,
+ orm.Comment.objects.aggregate(max_id=models.Max('id'))['max_id'] or 0,
+ )
+
+ if 'test' not in sys.argv: # Don't confuse users
+ print TERM_GREEN, '[DEBUG] Initial Post.id ==', post_id + 1, TERM_RESET
+
+ message = "Converting Questions -> Posts"
+ num_questions = orm.Question.objects.count()
+ for q in ProgressBar(orm.Question.objects.iterator(), num_questions, message):
+ post_id += 1
+ orm.Post.objects.create(
+ id=post_id,
+
+ post_type='question',
+
+ old_answer_id=None,
+ old_question_id=q.id,
+ old_comment_id=None,
+
+ self_answer=None,
+ self_question=q,
+ self_comment=None,
+
+ thread=q.thread,
+ parent=None,
+
+ author=q.author,
+ added_at=q.added_at,
+ deleted=q.deleted,
+ deleted_at=q.deleted_at,
+ deleted_by=q.deleted_by,
+ wiki=q.wiki,
+ wikified_at=q.wikified_at,
+ locked=q.locked,
+ locked_by=q.locked_by,
+ locked_at=q.locked_at,
+ score=q.score,
+ vote_up_count=q.vote_up_count,
+ vote_down_count=q.vote_down_count,
+ comment_count=q.comment_count,
+ offensive_flag_count=q.offensive_flag_count,
+ last_edited_at=q.last_edited_at,
+ last_edited_by=q.last_edited_by,
+ html=q.html,
+ text=q.text,
+ summary=q.summary,
+ is_anonymous=q.is_anonymous,
+ )
+
+ message = "Answers -> Posts"
+ num_answers = orm.Answer.objects.count()
+ for ans in ProgressBar(orm.Answer.objects.iterator(), num_answers, message):
+ post_id += 1
+ orm.Post.objects.create(
+ id=post_id,
+
+ post_type='answer',
+
+ old_answer_id=ans.id,
+ old_question_id=None,
+ old_comment_id=None,
+
+ self_answer=ans,
+ self_question=None,
+ self_comment=None,
+
+ thread=ans.question.thread,
+ parent=None,
+
+ author=ans.author,
+ added_at=ans.added_at,
+ deleted=ans.deleted,
+ deleted_at=ans.deleted_at,
+ deleted_by=ans.deleted_by,
+ wiki=ans.wiki,
+ wikified_at=ans.wikified_at,
+ locked=ans.locked,
+ locked_by=ans.locked_by,
+ locked_at=ans.locked_at,
+ score=ans.score,
+ vote_up_count=ans.vote_up_count,
+ vote_down_count=ans.vote_down_count,
+ comment_count=ans.comment_count,
+ offensive_flag_count=ans.offensive_flag_count,
+ last_edited_at=ans.last_edited_at,
+ last_edited_by=ans.last_edited_by,
+ html=ans.html,
+ text=ans.text,
+ summary=ans.summary,
+ is_anonymous=ans.is_anonymous,
+ )
+
+ message = "Comments -> Posts"
+ num_comments = orm.Comment.objects.count()
+ for cm in ProgressBar(orm.Comment.objects.iterator(), num_comments, message):
+ # Workaround for a strange issue with: http://south.aeracode.org/docs/generics.html
+ # No need to investigate that as this is as simple as the "proper" way
+ if (cm.content_type.app_label, cm.content_type.model) == ('askbot', 'question'):
+ content_object = orm.Question.objects.get(id=cm.object_id)
+ thread = orm.Thread.objects.get(id=content_object.thread.id) # convert from Thread to orm.Thread - a subtle difference
+ parent = orm.Post.objects.get(self_question=content_object)
+ elif (cm.content_type.app_label, cm.content_type.model) == ('askbot', 'answer'):
+ content_object = orm.Answer.objects.get(id=cm.object_id)
+ thread = orm.Thread.objects.get(id=content_object.question.thread.id) # convert from Thread to orm.Thread - a subtle difference
+ parent = orm.Post.objects.get(self_answer=content_object)
+ else:
+ raise ValueError('comment.content_object is neither question nor answer!')
+
+ post_id += 1
+ orm.Post.objects.create(
+ id=post_id,
+
+ post_type='comment',
+
+ old_answer_id=None,
+ old_question_id=None,
+ old_comment_id=cm.id,
+
+ self_answer=None,
+ self_question=None,
+ self_comment=cm,
+
+ thread=thread,
+ parent=parent,
+
+ author=cm.user,
+ added_at=cm.added_at,
+ deleted=False,
+ deleted_at=None,
+ deleted_by=None,
+ wiki=False,
+ wikified_at=None,
+ locked=False,
+ locked_by=None,
+ locked_at=None,
+ score=cm.score,
+ vote_up_count=cm.score,
+ vote_down_count=0,
+ comment_count=0,
+ offensive_flag_count=cm.offensive_flag_count,
+ last_edited_at=None,
+ last_edited_by=None,
+ html=cm.html,
+ text=cm.comment,
+ summary='',
+ is_anonymous=False,
+ )
+
+ if orm.Post.objects.exists():
+ # Check Post.id sequence/auto-increment to make sure new Post-s don't start from id=1
+ if db.backend_name == 'mysql':
+ # Docs:
+ # - http://stackoverflow.com/questions/933565/get-auto-increment-value-with-mysql-query
+ # -
+ autoincrement = db.execute("SELECT auto_increment FROM information_schema.tables WHERE table_name='askbot_post' AND table_schema=DATABASE()")[0][0]
+
+ elif db.backend_name == 'sqlite3':
+ # Docs:
+ # - http://www.sqlite.org/autoinc.html
+ # - http://www.sqlite.org/c3ref/last_insert_rowid.html
+ # - http://www.sqlite.org/faq.html#q1
+ # - http://stackoverflow.com/questions/531109/how-to-return-the-value-of-auto-increment-column-in-sqlite-with-vb6
+ autoincrement = db.execute("SELECT last_insert_rowid() FROM askbot_post")[0][0] + 1
+
+ elif db.backend_name == 'postgres':
+ # Docs:
+ # - http://lindsaar.net/2008/11/2/how-to-reset-a-sequence-with-postgresql
+ # - http://www.postgresql.org/docs/8.3/static/functions-sequence.html
+ # Note that SELECT SETVAL(...) returns the value being set
+ autoincrement = db.execute("SELECT SETVAL('askbot_post_id_seq', %s)", params=[post_id + 1])[0][0]
+
+ else:
+ autoincrement = -1
+ print TERM_RED_BOLD, ("You are using `%s` database backend which is not officially supported. "
+ "Therefore after migrations are applied you should make sure that autoincrement/sequence value for "
+ "table `askbot_post` is set to %d") % (db.backend_name, post_id + 1), TERM_RESET
+
+ if autoincrement != -1:
+ if autoincrement != (post_id + 1):
+ raise ValueError('Auto_increment for askbot_post table should be %d but is %d!' % (post_id + 1, autoincrement))
+ print TERM_GREEN, '[DEBUG] %s: auto-increment/sequence-value for askbot_post table is OK (%d)' % (
+ db.backend_name, autoincrement), TERM_RESET
+
+ # Verify that numbers match
+ sum_all = orm.Question.objects.count() + orm.Answer.objects.count() + orm.Comment.objects.count()
+ if sum_all != orm.Post.objects.count():
+ raise ValueError('sum(#Q,#C,#A) != #Post !')
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0091_auto__add_field_vote_voted_post__add_field_activity_question_post.py b/askbot/migrations/0091_auto__add_field_vote_voted_post__add_field_activity_question_post.py
new file mode 100644
index 00000000..dbdbe555
--- /dev/null
+++ b/askbot/migrations/0091_auto__add_field_vote_voted_post__add_field_activity_question_post.py
@@ -0,0 +1,353 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Vote.voted_post'
+ db.add_column(u'vote', 'voted_post', self.gf('django.db.models.fields.related.ForeignKey')(related_name='post_votes', null=True, to=orm['askbot.Post']), keep_default=False)
+
+ # Adding field 'Activity.question_post'
+ db.add_column(u'activity', 'question_post', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Post'], null=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Vote.voted_post'
+ db.delete_column(u'vote', 'voted_post_id')
+
+ # Deleting field 'Activity.question_post'
+ db.delete_column(u'activity', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'null': 'True', 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0092_postize_vote_and_activity.py b/askbot/migrations/0092_postize_vote_and_activity.py
new file mode 100644
index 00000000..b44b7f59
--- /dev/null
+++ b/askbot/migrations/0092_postize_vote_and_activity.py
@@ -0,0 +1,410 @@
+# encoding: utf-8
+import datetime
+import sys
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+from askbot.migrations import TERM_RED_BOLD, TERM_GREEN, TERM_RESET
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+
+ message = "Connecting votes to posts"
+ num_votes = orm.Vote.objects.count()
+ for v in ProgressBar(orm.Vote.objects.iterator(), num_votes, message):
+ try:
+ if (v.content_type.app_label, v.content_type.model) == ('askbot', 'question'):
+ v.voted_post = orm.Post.objects.get(self_question__id=v.object_id)
+ elif (v.content_type.app_label, v.content_type.model) == ('askbot', 'answer'):
+ v.voted_post = orm.Post.objects.get(self_answer__id=v.object_id)
+ elif (v.content_type.app_label, v.content_type.model) == ('askbot', 'comment'):
+ v.voted_post = orm.Post.objects.get(self_comment__id=v.object_id)
+ else:
+ raise ValueError('Unknown vote subject!')
+ v.save()
+ except orm.Post.DoesNotExist:
+ print TERM_RED_BOLD, 'Post of type=%s, id=%s does not exist!!!' % (v.content_type.model, v.object_id)
+ v.delete()
+
+ ###
+
+ # ContentType for Post model might not yet be present in the database
+ # (if migrations are applied in a row then contenttypes update is not called between them)
+ ct_post, c = orm['contenttypes.ContentType'].objects.get_or_create(app_label='askbot', model='post', defaults={'name': 'post'})
+
+ abandoned_activities = []
+
+ message = "Connecting activity objects to posts"
+ num_activities = orm.Activity.objects.count()
+ for a in ProgressBar(orm.Activity.objects.iterator(), num_activities, message):
+ # test if content_object for this activity exists - there might be a bunch of "abandoned" activities
+ #
+ # NOTE that if activity.content_object is gone then we cannot reliably recover it from activity.question
+ # - the latter is just a thread to which the activity is related! It might occasionally be the actual post
+ # the activity is related to, but it's not the general rule.
+ model_signature = '.'.join([a.content_type.app_label, a.content_type.model])
+ if not orm[model_signature].objects.filter(id=a.object_id).exists():
+ abandoned_activities.append(a)
+ continue
+
+ save = False
+
+ ct = a.content_type
+ if ct.app_label == 'askbot' and ct.model in ('question', 'answer', 'comment'):
+ a.content_type = ct_post
+ a.object_id = orm.Post.objects.get(**{'self_%s__id' % str(ct.model): a.object_id}).id
+ save = True
+
+ if a.question:
+ a.question_post = orm.Post.objects.get(self_question__id=a.question.id)
+ save = True
+
+ if save:
+ a.save()
+
+ if abandoned_activities:
+ # Remove "abandoned" activities
+ abandoned_activities_lst = [
+ (a.id, '.'.join([a.content_type.app_label, a.content_type.model]), a.object_id)
+ for a in abandoned_activities
+ ]
+ print TERM_RED_BOLD, "!!! Abandoned activities num=%d, total num=%d:" % (len(abandoned_activities), orm.Activity.objects.count()), TERM_RESET
+ print TERM_GREEN, abandoned_activities_lst, TERM_RESET
+ for a in abandoned_activities:
+ a.delete()
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'null': 'True', 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0093_auto__del_field_vote_content_type__del_field_vote_object_id__chg_field.py b/askbot/migrations/0093_auto__del_field_vote_content_type__del_field_vote_object_id__chg_field.py
new file mode 100644
index 00000000..830a3cd6
--- /dev/null
+++ b/askbot/migrations/0093_auto__del_field_vote_content_type__del_field_vote_object_id__chg_field.py
@@ -0,0 +1,374 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing unique constraint on 'Vote', fields ['object_id', 'content_type', 'user']
+ db.delete_unique(u'vote', ['object_id', 'content_type_id', 'user_id'])
+
+ # Deleting field 'Vote.content_type'
+ db.delete_column(u'vote', 'content_type_id')
+
+ # Deleting field 'Vote.object_id'
+ db.delete_column(u'vote', 'object_id')
+
+ # Changing field 'Vote.voted_post'
+ db.alter_column(u'vote', 'voted_post_id', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['askbot.Post']))
+
+ # Adding unique constraint on 'Vote', fields ['user', 'voted_post']
+ db.create_unique(u'vote', ['user_id', 'voted_post_id'])
+
+ # Deleting field 'Activity.question'
+ db.delete_column(u'activity', 'question_id')
+
+
+ def backwards(self, orm):
+
+ # Removing unique constraint on 'Vote', fields ['user', 'voted_post']
+ db.delete_unique(u'vote', ['user_id', 'voted_post_id'])
+
+ # User chose to not deal with backwards NULL issues for 'Vote.content_type'
+ raise RuntimeError("Cannot reverse this migration. 'Vote.content_type' and its values cannot be restored.")
+
+ # User chose to not deal with backwards NULL issues for 'Vote.object_id'
+ raise RuntimeError("Cannot reverse this migration. 'Vote.object_id' and its values cannot be restored.")
+
+ # Changing field 'Vote.voted_post'
+ db.alter_column(u'vote', 'voted_post_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['askbot.Post']))
+
+ # Adding unique constraint on 'Vote', fields ['object_id', 'content_type', 'user']
+ db.create_unique(u'vote', ['object_id', 'content_type_id', 'user_id'])
+
+ # Adding field 'Activity.question'
+ db.add_column(u'activity', 'question', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Question'], null=True), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0094_auto__add_field_repute_question_post.py b/askbot/migrations/0094_auto__add_field_repute_question_post.py
new file mode 100644
index 00000000..1235118e
--- /dev/null
+++ b/askbot/migrations/0094_auto__add_field_repute_question_post.py
@@ -0,0 +1,345 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Repute.question_post'
+ db.add_column(u'repute', 'question_post', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Post'], null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Repute.question_post'
+ db.delete_column(u'repute', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0095_postize_award_and_repute.py b/askbot/migrations/0095_postize_award_and_repute.py
new file mode 100644
index 00000000..ea7e7064
--- /dev/null
+++ b/askbot/migrations/0095_postize_award_and_repute.py
@@ -0,0 +1,365 @@
+# encoding: utf-8
+import sys
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ # ContentType for Post model should be created no later than in migration 0092
+ ct_post = orm['contenttypes.ContentType'].objects.get(app_label='askbot', model='post')
+
+ message = "Connecting award objects to posts"
+ num_awards = orm.Award.objects.count()
+ for aw in ProgressBar(orm.Award.objects.iterator(), num_awards, message):
+ ct = aw.content_type
+ if ct.app_label == 'askbot' and ct.model in ('question', 'answer', 'comment'):
+ aw.content_type = ct_post
+ try:
+ aw.object_id = orm.Post.objects.get(**{'self_%s__id' % str(ct.model): aw.object_id}).id
+ except orm.Post.DoesNotExist:
+ continue
+ aw.save()
+
+ ###
+
+ message = "Connecting repute objects to posts"
+ num_reputes = orm.Repute.objects.count()
+ for rp in ProgressBar(orm.Repute.objects.iterator(), num_reputes, message):
+ if rp.question:
+ rp.question_post = orm.Post.objects.get(self_question__id=rp.question.id)
+ rp.save()
+
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0096_auto__del_field_repute_question.py b/askbot/migrations/0096_auto__del_field_repute_question.py
new file mode 100644
index 00000000..32d1e446
--- /dev/null
+++ b/askbot/migrations/0096_auto__del_field_repute_question.py
@@ -0,0 +1,344 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Repute.question'
+ db.delete_column(u'repute', 'question_id')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Repute.question'
+ db.add_column(u'repute', 'question', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Question'], null=True, blank=True), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0097_auto__add_field_thread_accepted_answer_post__add_field_anonymousanswer.py b/askbot/migrations/0097_auto__add_field_thread_accepted_answer_post__add_field_anonymousanswer.py
new file mode 100644
index 00000000..9104422d
--- /dev/null
+++ b/askbot/migrations/0097_auto__add_field_thread_accepted_answer_post__add_field_anonymousanswer.py
@@ -0,0 +1,366 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding field 'Thread.accepted_answer_post'
+ db.add_column('askbot_thread', 'accepted_answer_post', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, to=orm['askbot.Post']), keep_default=False)
+
+ # Adding field 'AnonymousAnswer.question_post'
+ db.add_column('askbot_anonymousanswer', 'question_post', self.gf('django.db.models.fields.related.ForeignKey')(related_name='anonymous_answer_posts', null=True, to=orm['askbot.Post']), keep_default=False)
+
+ # Adding field 'QuestionView.question_post'
+ db.add_column('askbot_questionview', 'question_post', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['askbot.Post']), keep_default=False)
+
+ # Adding field 'PostRevision.post'
+ db.add_column('askbot_postrevision', 'post', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='post_revisions', null=True, to=orm['askbot.Post']), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Thread.accepted_answer_post'
+ db.delete_column('askbot_thread', 'accepted_answer_post_id')
+
+ # Deleting field 'AnonymousAnswer.question_post'
+ db.delete_column('askbot_anonymousanswer', 'question_post_id')
+
+ # Deleting field 'QuestionView.question_post'
+ db.delete_column('askbot_questionview', 'question_post_id')
+
+ # Deleting field 'PostRevision.post'
+ db.delete_column('askbot_postrevision', 'post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answer_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'post_revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'accepted_answer_post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0098_postize_thread_anonanswer_questionview_postrevision.py b/askbot/migrations/0098_postize_thread_anonanswer_questionview_postrevision.py
new file mode 100644
index 00000000..08e62dbb
--- /dev/null
+++ b/askbot/migrations/0098_postize_thread_anonanswer_questionview_postrevision.py
@@ -0,0 +1,376 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ # TODO: Speed this migration up by prefetching data ?
+
+ message = "Marking accepted answer in threads"
+ num_threads = orm.Thread.objects.count()
+ for thread in ProgressBar(orm.Thread.objects.iterator(), num_threads, message):
+ if thread.accepted_answer:
+ thread.accepted_answer_post = orm.Post.objects.get(self_answer__id=thread.accepted_answer.id)
+ thread.save()
+
+ message = "Connecting question view objects to posts"
+ num_question_views = orm.QuestionView.objects.count()
+ for qv in ProgressBar(orm.QuestionView.objects.iterator(), num_question_views, message):
+ qv.question_post = orm.Post.objects.get(self_question__id=qv.question.id)
+ qv.save()
+
+ message = "Connecting anonymous answers to posts"
+ num_anon_answers = orm.AnonymousAnswer.objects.count()
+ for aa in ProgressBar(orm.AnonymousAnswer.objects.iterator(), num_anon_answers, message):
+ aa.question_post = orm.Post.objects.get(self_question__id=aa.question.id)
+ aa.save()
+
+ message = "Connecting post revisions to posts"
+ num_post_revs = orm.PostRevision.objects.count()
+ for rev in ProgressBar(orm.PostRevision.objects.iterator(), num_post_revs, message):
+ if rev.question:
+ assert not rev.answer
+ rev.post = orm.Post.objects.get(self_question__id=rev.question.id)
+ elif rev.answer:
+ assert not rev.question
+ rev.post = orm.Post.objects.get(self_answer__id=rev.answer.id)
+ else:
+ raise ValueError('PostRevision with neither question nor answer found!')
+ rev.save()
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answer_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('answer', 'revision'), ('question', 'revision'))", 'object_name': 'PostRevision'},
+ 'answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'post_revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Answer']", 'null': 'True', 'blank': 'True'}),
+ 'accepted_answer_post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0099_auto__del_field_thread_accepted_answer__del_field_anonymousanswer_ques.py b/askbot/migrations/0099_auto__del_field_thread_accepted_answer__del_field_anonymousanswer_ques.py
new file mode 100644
index 00000000..ac9507a5
--- /dev/null
+++ b/askbot/migrations/0099_auto__del_field_thread_accepted_answer__del_field_anonymousanswer_ques.py
@@ -0,0 +1,397 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Removing unique constraint on 'PostRevision', fields ['question', 'revision']
+ db.delete_unique('askbot_postrevision', ['question_id', 'revision'])
+
+ # Removing unique constraint on 'PostRevision', fields ['answer', 'revision']
+ db.delete_unique('askbot_postrevision', ['answer_id', 'revision'])
+
+ # Deleting field 'Thread.accepted_answer'
+ db.delete_column('askbot_thread', 'accepted_answer_id')
+
+ # Deleting field 'AnonymousAnswer.question'
+ db.delete_column('askbot_anonymousanswer', 'question_id')
+
+ # Changing field 'AnonymousAnswer.question_post'
+ db.alter_column('askbot_anonymousanswer', 'question_post_id', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['askbot.Post']))
+
+ # Deleting field 'QuestionView.question'
+ db.delete_column('askbot_questionview', 'question_id')
+
+ # Changing field 'QuestionView.question_post'
+ db.alter_column('askbot_questionview', 'question_post_id', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['askbot.Post']))
+
+ # Deleting field 'PostRevision.question'
+ db.delete_column('askbot_postrevision', 'question_id')
+
+ # Deleting field 'PostRevision.answer'
+ db.delete_column('askbot_postrevision', 'answer_id')
+
+ # Adding unique constraint on 'PostRevision', fields ['post', 'revision']
+ db.create_unique('askbot_postrevision', ['post_id', 'revision'])
+
+
+ def backwards(self, orm):
+
+ # Removing unique constraint on 'PostRevision', fields ['post', 'revision']
+ db.delete_unique('askbot_postrevision', ['post_id', 'revision'])
+
+ # Adding field 'Thread.accepted_answer'
+ db.add_column('askbot_thread', 'accepted_answer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Answer'], null=True, blank=True), keep_default=False)
+
+ # User chose to not deal with backwards NULL issues for 'AnonymousAnswer.question'
+ raise RuntimeError("Cannot reverse this migration. 'AnonymousAnswer.question' and its values cannot be restored.")
+
+ # Changing field 'AnonymousAnswer.question_post'
+ db.alter_column('askbot_anonymousanswer', 'question_post_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['askbot.Post']))
+
+ # User chose to not deal with backwards NULL issues for 'QuestionView.question'
+ raise RuntimeError("Cannot reverse this migration. 'QuestionView.question' and its values cannot be restored.")
+
+ # Changing field 'QuestionView.question_post'
+ db.alter_column('askbot_questionview', 'question_post_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['askbot.Post']))
+
+ # Adding field 'PostRevision.question'
+ db.add_column('askbot_postrevision', 'question', self.gf('django.db.models.fields.related.ForeignKey')(related_name='revisions', null=True, to=orm['askbot.Question'], blank=True), keep_default=False)
+
+ # Adding field 'PostRevision.answer'
+ db.add_column('askbot_postrevision', 'answer', self.gf('django.db.models.fields.related.ForeignKey')(related_name='revisions', null=True, to=orm['askbot.Answer'], blank=True), keep_default=False)
+
+ # Adding unique constraint on 'PostRevision', fields ['answer', 'revision']
+ db.create_unique('askbot_postrevision', ['answer_id', 'revision'])
+
+ # Adding unique constraint on 'PostRevision', fields ['question', 'revision']
+ db.create_unique('askbot_postrevision', ['question_id', 'revision'])
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'self_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Answer']"}),
+ 'self_comment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Comment']"}),
+ 'self_question': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Question']"}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer_post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0100_auto__del_field_post_self_question__del_field_post_self_answer__del_fi.py b/askbot/migrations/0100_auto__del_field_post_self_question__del_field_post_self_answer__del_fi.py
new file mode 100644
index 00000000..106f8619
--- /dev/null
+++ b/askbot/migrations/0100_auto__del_field_post_self_question__del_field_post_self_answer__del_fi.py
@@ -0,0 +1,352 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Deleting field 'Post.self_question'
+ db.delete_column('askbot_post', 'self_question_id')
+
+ # Deleting field 'Post.self_answer'
+ db.delete_column('askbot_post', 'self_answer_id')
+
+ # Deleting field 'Post.self_comment'
+ db.delete_column('askbot_post', 'self_comment_id')
+
+
+ def backwards(self, orm):
+
+ # Adding field 'Post.self_question'
+ db.add_column('askbot_post', 'self_question', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['askbot.Question'], blank=True), keep_default=False)
+
+ # Adding field 'Post.self_answer'
+ db.add_column('askbot_post', 'self_answer', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['askbot.Answer'], blank=True), keep_default=False)
+
+ # Adding field 'Post.self_comment'
+ db.add_column('askbot_post', 'self_comment', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['askbot.Comment'], blank=True), keep_default=False)
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.answer': {
+ 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.comment': {
+ 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.question': {
+ 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'unique': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer_post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0101_megadeath_of_q_a_c.py b/askbot/migrations/0101_megadeath_of_q_a_c.py
new file mode 100644
index 00000000..2f04b4e4
--- /dev/null
+++ b/askbot/migrations/0101_megadeath_of_q_a_c.py
@@ -0,0 +1,372 @@
+# encoding: utf-8
+import datetime
+import sys
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+from askbot.migrations import TERM_YELLOW, TERM_RESET, innodb_ready_rename_column
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ #db.rename_column('askbot_thread', 'accepted_answer_post_id', 'accepted_answer_id')
+ innodb_ready_rename_column(
+ orm=orm,
+ models=self.__class__.models,
+ table='askbot_thread',
+ old_column_name='accepted_answer_post_id',
+ new_column_name='accepted_answer_id',
+ app_model='askbot.thread',
+ new_field_name='accepted_answer'
+ )
+
+ # Deleting model 'Comment'
+ db.delete_table(u'comment')
+
+ # Deleting model 'Answer'
+ db.delete_table(u'answer')
+
+ # Deleting model 'Question'
+ db.delete_table(u'question')
+
+ if 'test' not in sys.argv and not db.dry_run: # Don't confuse users
+ print TERM_YELLOW, 'You are free now to remove content types for Question/Answer/Comment models', TERM_RESET
+
+
+ def backwards(self, orm):
+
+ # Adding model 'Comment'
+ db.create_table(u'comment', (
+ ('comment', self.gf('django.db.models.fields.CharField')(max_length=2048)),
+ ('offensive_flag_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()),
+ ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'])),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='comments', to=orm['auth.User'])),
+ ('score', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('html', self.gf('django.db.models.fields.CharField')(default='', max_length=2048)),
+ ('added_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ))
+ db.send_create_signal('askbot', ['Comment'])
+
+ # Adding model 'Answer'
+ db.create_table(u'answer', (
+ ('wiki', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('vote_up_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('text', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('offensive_flag_count', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
+ ('summary', self.gf('django.db.models.fields.CharField')(max_length=180)),
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('locked_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(related_name='answers', to=orm['auth.User'])),
+ ('question', self.gf('django.db.models.fields.related.ForeignKey')(related_name='answers', to=orm['askbot.Question'])),
+ ('comment_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+ ('score', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('vote_down_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('last_edited_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='last_edited_answers', null=True, to=orm['auth.User'], blank=True)),
+ ('deleted', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('deleted_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('locked', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('is_anonymous', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('locked_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='locked_answers', null=True, to=orm['auth.User'], blank=True)),
+ ('html', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('added_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('deleted_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='deleted_answers', null=True, to=orm['auth.User'], blank=True)),
+ ('wikified_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('last_edited_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('askbot', ['Answer'])
+
+ # Adding model 'Question'
+ db.create_table(u'question', (
+ ('wiki', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('vote_up_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('text', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('offensive_flag_count', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
+ ('summary', self.gf('django.db.models.fields.CharField')(max_length=180)),
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('locked_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(related_name='questions', to=orm['auth.User'])),
+ ('comment_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
+ ('score', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('vote_down_count', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ('last_edited_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='last_edited_questions', null=True, to=orm['auth.User'], blank=True)),
+ ('deleted', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('deleted_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('locked', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('thread', self.gf('django.db.models.fields.related.ForeignKey')(related_name='questions', unique=True, to=orm['askbot.Thread'])),
+ ('is_anonymous', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('locked_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='locked_questions', null=True, to=orm['auth.User'], blank=True)),
+ ('html', self.gf('django.db.models.fields.TextField')(null=True)),
+ ('added_at', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('deleted_by', self.gf('django.db.models.fields.related.ForeignKey')(related_name='deleted_questions', null=True, to=orm['auth.User'], blank=True)),
+ ('wikified_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ('last_edited_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('askbot', ['Question'])
+
+ # Adding field 'Thread.accepted_answer_post'
+ db.add_column('askbot_thread', 'accepted_answer_post', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['askbot.Post'], blank=True), keep_default=False)
+
+ # Deleting field 'Thread.accepted_answer'
+ db.delete_column('askbot_thread', 'accepted_answer_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0102_rename_post_fields_back_1.py b/askbot/migrations/0102_rename_post_fields_back_1.py
new file mode 100644
index 00000000..9c51aac6
--- /dev/null
+++ b/askbot/migrations/0102_rename_post_fields_back_1.py
@@ -0,0 +1,285 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+from askbot.migrations import innodb_ready_rename_column
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ #db.rename_column('askbot_questionview', 'question_post_id', 'question_id')
+ innodb_ready_rename_column(
+ orm=orm,
+ models=self.__class__.models,
+ table='askbot_questionview',
+ old_column_name='question_post_id',
+ new_column_name='question_id',
+ app_model='askbot.questionview',
+ new_field_name='question'
+ )
+
+
+
+ def backwards(self, orm):
+ db.rename_column('askbot_questionview', 'question_id', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0103_rename_post_fields_back_2.py b/askbot/migrations/0103_rename_post_fields_back_2.py
new file mode 100644
index 00000000..f56e2258
--- /dev/null
+++ b/askbot/migrations/0103_rename_post_fields_back_2.py
@@ -0,0 +1,285 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+from askbot.migrations import innodb_ready_rename_column
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ #db.rename_column(u'activity', 'question_post_id', 'question_id')
+ innodb_ready_rename_column(
+ orm=orm,
+ models=self.__class__.models,
+ table='activity',
+ old_column_name='question_post_id',
+ new_column_name='question_id',
+ app_model='askbot.activity',
+ new_field_name='question'
+ )
+
+
+
+ def backwards(self, orm):
+ db.rename_column(u'activity', 'question_id', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_posts'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0104_auto__del_field_repute_question_post__add_field_repute_question.py b/askbot/migrations/0104_auto__del_field_repute_question_post__add_field_repute_question.py
new file mode 100644
index 00000000..ed72e1ec
--- /dev/null
+++ b/askbot/migrations/0104_auto__del_field_repute_question_post__add_field_repute_question.py
@@ -0,0 +1,285 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+from askbot.migrations import innodb_ready_rename_column
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ #db.rename_column(u'repute', 'question_post_id', 'question_id')
+ innodb_ready_rename_column(
+ orm=orm,
+ models=self.__class__.models,
+ table='repute',
+ old_column_name='question_post_id',
+ new_column_name='question_id',
+ app_model='askbot.repute',
+ new_field_name='question'
+ )
+
+
+
+ def backwards(self, orm):
+ db.rename_column(u'repute', 'question_id', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0105_restore_anon_ans_q.py b/askbot/migrations/0105_restore_anon_ans_q.py
new file mode 100644
index 00000000..4bf5ca99
--- /dev/null
+++ b/askbot/migrations/0105_restore_anon_ans_q.py
@@ -0,0 +1,285 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+from askbot.migrations import innodb_ready_rename_column
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ #db.rename_column('askbot_anonymousanswer', 'question_post_id', 'question_id')
+ innodb_ready_rename_column(
+ orm=orm,
+ models=self.__class__.models,
+ table='askbot_anonymousanswer',
+ old_column_name='question_post_id',
+ new_column_name='question_id',
+ app_model='askbot.anonymousanswer',
+ new_field_name='question'
+ )
+
+
+
+ def backwards(self, orm):
+ db.rename_column('askbot_anonymousanswer', 'question_id', 'question_post_id')
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+
+ # "Post-processing" - added manually to add support for URL mapping
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': True, 'blank': True, 'default': None, 'unique': 'True'}),
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0106_update_postgres_full_text_setup.py b/askbot/migrations/0106_update_postgres_full_text_setup.py
new file mode 100644
index 00000000..bec19873
--- /dev/null
+++ b/askbot/migrations/0106_update_postgres_full_text_setup.py
@@ -0,0 +1,285 @@
+# encoding: utf-8
+import sys
+import askbot
+from askbot.search.postgresql import setup_full_text_search
+import datetime
+import os
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+class Migration(DataMigration):
+ """this migration is the same as 22
+ just ran again to update the postgres search setup
+ """
+
+ def forwards(self, orm):
+ "Write your forwards methods here."
+
+ if 'postgresql_psycopg2' in askbot.get_database_engine_name():
+ script_path = os.path.join(
+ askbot.get_install_directory(),
+ 'search',
+ 'postgresql',
+ 'thread_and_post_models_01162012.plsql'
+ )
+ setup_full_text_search(script_path)
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+ pass
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0107_added_db_indexes.py b/askbot/migrations/0107_added_db_indexes.py
new file mode 100644
index 00000000..5893a41f
--- /dev/null
+++ b/askbot/migrations/0107_added_db_indexes.py
@@ -0,0 +1,280 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding index on 'Post', fields ['post_type']
+ db.create_index('askbot_post', ['post_type'])
+
+ # Adding index on 'Post', fields ['deleted']
+ db.create_index('askbot_post', ['deleted'])
+
+
+ def backwards(self, orm):
+
+ # Removing index on 'Post', fields ['deleted']
+ db.delete_index('askbot_post', ['deleted'])
+
+ # Removing index on 'Post', fields ['post_type']
+ db.delete_index('askbot_post', ['post_type'])
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0108_auto__add_field_thread_score.py b/askbot/migrations/0108_auto__add_field_thread_score.py
new file mode 100644
index 00000000..ce5a4ff1
--- /dev/null
+++ b/askbot/migrations/0108_auto__add_field_thread_score.py
@@ -0,0 +1,274 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Thread.score'
+ db.add_column('askbot_thread', 'score',
+ self.gf('django.db.models.fields.IntegerField')(default=0),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'Thread.score'
+ db.delete_column('askbot_thread', 'score')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0109_denormalize_question_vote_to_thread.py b/askbot/migrations/0109_denormalize_question_vote_to_thread.py
new file mode 100644
index 00000000..7feb6b54
--- /dev/null
+++ b/askbot/migrations/0109_denormalize_question_vote_to_thread.py
@@ -0,0 +1,279 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ "copy question score to threads"
+ message = 'Copying question votes to Thread objects'
+ questions = orm.Post.objects.filter(post_type = 'question')
+ count = questions.count()
+ for question in ProgressBar(questions.iterator(), count, message):
+ question.thread.score = question.score
+ question.thread.save()
+
+
+ def backwards(self, orm):
+ "nothing to do here"
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
+ symmetrical = True
diff --git a/askbot/migrations/0110_auto__add_field_thread_added_at.py b/askbot/migrations/0110_auto__add_field_thread_added_at.py
new file mode 100644
index 00000000..fbb95e3a
--- /dev/null
+++ b/askbot/migrations/0110_auto__add_field_thread_added_at.py
@@ -0,0 +1,275 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Thread.added_at'
+ db.add_column('askbot_thread', 'added_at',
+ self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'Thread.added_at'
+ db.delete_column('askbot_thread', 'added_at')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0111_populate__thread__added_at.py b/askbot/migrations/0111_populate__thread__added_at.py
new file mode 100644
index 00000000..f733baf5
--- /dev/null
+++ b/askbot/migrations/0111_populate__thread__added_at.py
@@ -0,0 +1,279 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from askbot.utils.console import ProgressBar
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ "copy added_at field to Thread from the question posts"
+ message = 'Setting added_at on Threads based on the questions'
+ questions = orm.Post.objects.filter(post_type = 'question')
+ count = questions.count()
+ for question in ProgressBar(questions.iterator(), count, message):
+ question.thread.added_at = question.added_at
+ question.thread.save()
+
+ def backwards(self, orm):
+ "nothing to do here"
+
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
+ symmetrical = True
diff --git a/askbot/migrations/0112_add_model_ReplyAddress.py b/askbot/migrations/0112_add_model_ReplyAddress.py
new file mode 100644
index 00000000..9cc43252
--- /dev/null
+++ b/askbot/migrations/0112_add_model_ReplyAddress.py
@@ -0,0 +1,288 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'ReplyAddress'
+ db.create_table('askbot_replyaddress', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('address', self.gf('django.db.models.fields.CharField')(unique=True, max_length=25)),
+ ('post', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Post'])),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('allowed_from_email', self.gf('django.db.models.fields.EmailField')(max_length=150)),
+ ('used_at', self.gf('django.db.models.fields.DateTimeField')(default=None, null=True)),
+ ))
+ db.send_create_signal('askbot', ['ReplyAddress'])
+
+ def backwards(self, orm):
+ # Deleting model 'ReplyAddress'
+ db.delete_table('askbot_replyaddress')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0113_auto__add_field_thread_added_at__add_field_thread_score__add_field_rep.py b/askbot/migrations/0113_auto__add_field_thread_added_at__add_field_thread_score__add_field_rep.py
new file mode 100644
index 00000000..f5c806ca
--- /dev/null
+++ b/askbot/migrations/0113_auto__add_field_thread_added_at__add_field_thread_score__add_field_rep.py
@@ -0,0 +1,285 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'ReplyAddress.response_post'
+ db.add_column('askbot_replyaddress', 'response_post',
+ self.gf('django.db.models.fields.related.ForeignKey')(related_name='edit_addresses', null=True, to=orm['askbot.Post']),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'ReplyAddress.response_post'
+ db.delete_column('askbot_replyaddress', 'response_post_id')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0114_auto__add_groupprofile__add_groupmembership__add_field_tag_tag_wiki.py b/askbot/migrations/0114_auto__add_groupprofile__add_groupmembership__add_field_tag_tag_wiki.py
new file mode 100644
index 00000000..35986359
--- /dev/null
+++ b/askbot/migrations/0114_auto__add_groupprofile__add_groupmembership__add_field_tag_tag_wiki.py
@@ -0,0 +1,318 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'GroupProfile'
+ db.create_table('askbot_groupprofile', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('group_tag', self.gf('django.db.models.fields.related.OneToOneField')(related_name='group_profile', unique=True, to=orm['askbot.Tag'])),
+ ))
+ db.send_create_signal('askbot', ['GroupProfile'])
+
+ # Adding model 'GroupMembership'
+ db.create_table('askbot_groupmembership', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('group', self.gf('django.db.models.fields.related.ForeignKey')(related_name='user_memberships', to=orm['askbot.Tag'])),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='group_memberships', to=orm['auth.User'])),
+ ))
+ db.send_create_signal('askbot', ['GroupMembership'])
+
+ # Adding field 'Tag.tag_wiki'
+ db.add_column(u'tag', 'tag_wiki',
+ self.gf('django.db.models.fields.related.OneToOneField')(related_name='described_tag', unique=True, null=True, to=orm['askbot.Post']),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting model 'GroupProfile'
+ db.delete_table('askbot_groupprofile')
+
+ # Deleting model 'GroupMembership'
+ db.delete_table('askbot_groupmembership')
+
+ # Deleting field 'Tag.tag_wiki'
+ db.delete_column(u'tag', 'tag_wiki_id')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0115_auto__chg_field_post_thread.py b/askbot/migrations/0115_auto__chg_field_post_thread.py
new file mode 100644
index 00000000..95c6e267
--- /dev/null
+++ b/askbot/migrations/0115_auto__chg_field_post_thread.py
@@ -0,0 +1,296 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Changing field 'Post.thread'
+ db.alter_column('askbot_post', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['askbot.Thread']))
+ def backwards(self, orm):
+
+ # Changing field 'Post.thread'
+ db.alter_column('askbot_post', 'thread_id', self.gf('django.db.models.fields.related.ForeignKey')(default='zhopa', to=orm['askbot.Thread']))
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0116_auto__add_field_groupprofile_logo_url__add_unique_emailfeedsetting_sub.py b/askbot/migrations/0116_auto__add_field_groupprofile_logo_url__add_unique_emailfeedsetting_sub.py
new file mode 100644
index 00000000..12f123b3
--- /dev/null
+++ b/askbot/migrations/0116_auto__add_field_groupprofile_logo_url__add_unique_emailfeedsetting_sub.py
@@ -0,0 +1,304 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'GroupProfile.logo_url'
+ db.add_column('askbot_groupprofile', 'logo_url',
+ self.gf('django.db.models.fields.URLField')(max_length=200, null=True),
+ keep_default=False)
+
+ # Adding unique constraint on 'EmailFeedSetting', fields ['subscriber', 'feed_type']
+ db.create_unique('askbot_emailfeedsetting', ['subscriber_id', 'feed_type'])
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'EmailFeedSetting', fields ['subscriber', 'feed_type']
+ db.delete_unique('askbot_emailfeedsetting', ['subscriber_id', 'feed_type'])
+
+ # Deleting field 'GroupProfile.logo_url'
+ db.delete_column('askbot_groupprofile', 'logo_url')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0117_auto__add_field_post_approved__add_field_thread_approved__add_field_po.py b/askbot/migrations/0117_auto__add_field_post_approved__add_field_thread_approved__add_field_po.py
new file mode 100644
index 00000000..9dc9e1e5
--- /dev/null
+++ b/askbot/migrations/0117_auto__add_field_post_approved__add_field_thread_approved__add_field_po.py
@@ -0,0 +1,335 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Post.approved'
+ db.add_column('askbot_post', 'approved',
+ self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True),
+ keep_default=False)
+
+ # Adding field 'Thread.approved'
+ db.add_column('askbot_thread', 'approved',
+ self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True),
+ keep_default=False)
+
+ # Adding field 'PostRevision.approved'
+ db.add_column('askbot_postrevision', 'approved',
+ self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True),
+ keep_default=False)
+
+ # Adding field 'PostRevision.approved_by'
+ db.add_column('askbot_postrevision', 'approved_by',
+ self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'PostRevision.approved_at'
+ db.add_column('askbot_postrevision', 'approved_at',
+ self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'Post.approved'
+ db.delete_column('askbot_post', 'approved')
+
+ # Deleting field 'Thread.approved'
+ db.delete_column('askbot_thread', 'approved')
+
+ # Deleting field 'PostRevision.approved'
+ db.delete_column('askbot_postrevision', 'approved')
+
+ # Deleting field 'PostRevision.approved_by'
+ db.delete_column('askbot_postrevision', 'approved_by_id')
+
+ # Deleting field 'PostRevision.approved_at'
+ db.delete_column('askbot_postrevision', 'approved_at')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0118_auto__add_field_postrevision_by_email.py b/askbot/migrations/0118_auto__add_field_postrevision_by_email.py
new file mode 100644
index 00000000..7c304d1e
--- /dev/null
+++ b/askbot/migrations/0118_auto__add_field_postrevision_by_email.py
@@ -0,0 +1,304 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'PostRevision.by_email'
+ db.add_column('askbot_postrevision', 'by_email',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'PostRevision.by_email'
+ db.delete_column('askbot_postrevision', 'by_email')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0119_auto__add_postflagreason.py b/askbot/migrations/0119_auto__add_postflagreason.py
new file mode 100644
index 00000000..1e2aedb8
--- /dev/null
+++ b/askbot/migrations/0119_auto__add_postflagreason.py
@@ -0,0 +1,317 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'PostFlagReason'
+ db.create_table('askbot_postflagreason', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('added_at', self.gf('django.db.models.fields.DateTimeField')()),
+ ('author', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
+ ('title', self.gf('django.db.models.fields.CharField')(max_length=128)),
+ ('details', self.gf('django.db.models.fields.related.ForeignKey')(related_name='post_reject_reasons', to=orm['askbot.Post'])),
+ ))
+ db.send_create_signal('askbot', ['PostFlagReason'])
+
+ def backwards(self, orm):
+ # Deleting model 'PostFlagReason'
+ db.delete_table('askbot_postflagreason')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0120_auto__add_field_groupprofile_moderate_email__add_field_postrevision_em.py b/askbot/migrations/0120_auto__add_field_groupprofile_moderate_email__add_field_postrevision_em.py
new file mode 100644
index 00000000..4b9efe58
--- /dev/null
+++ b/askbot/migrations/0120_auto__add_field_groupprofile_moderate_email__add_field_postrevision_em.py
@@ -0,0 +1,322 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'GroupProfile.moderate_email'
+ db.add_column('askbot_groupprofile', 'moderate_email',
+ self.gf('django.db.models.fields.BooleanField')(default=True),
+ keep_default=False)
+
+ # Adding field 'PostRevision.email_address'
+ db.add_column('askbot_postrevision', 'email_address',
+ self.gf('django.db.models.fields.EmailField')(max_length=75, null=True, blank=True),
+ keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'GroupProfile.moderate_email'
+ db.delete_column('askbot_groupprofile', 'moderate_email')
+
+ # Deleting field 'PostRevision.email_address'
+ db.delete_column('askbot_postrevision', 'email_address')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'moderate_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0121_auto__add_field_groupprofile_is_open__add_field_groupprofile_preapprov.py b/askbot/migrations/0121_auto__add_field_groupprofile_is_open__add_field_groupprofile_preapprov.py
new file mode 100644
index 00000000..e875198c
--- /dev/null
+++ b/askbot/migrations/0121_auto__add_field_groupprofile_is_open__add_field_groupprofile_preapprov.py
@@ -0,0 +1,340 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'GroupProfile.is_open'
+ db.add_column('askbot_groupprofile', 'is_open',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'GroupProfile.preapproved_emails'
+ db.add_column('askbot_groupprofile', 'preapproved_emails',
+ self.gf('django.db.models.fields.TextField')(default='', null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'GroupProfile.preapproved_email_domains'
+ db.add_column('askbot_groupprofile', 'preapproved_email_domains',
+ self.gf('django.db.models.fields.TextField')(default='', null=True, blank=True),
+ keep_default=False)
+
+ # Adding unique constraint on 'GroupMembership', fields ['group', 'user']
+ db.create_unique('askbot_groupmembership', ['group_id', 'user_id'])
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'GroupMembership', fields ['group', 'user']
+ db.delete_unique('askbot_groupmembership', ['group_id', 'user_id'])
+
+ # Deleting field 'GroupProfile.is_open'
+ db.delete_column('askbot_groupprofile', 'is_open')
+
+ # Deleting field 'GroupProfile.preapproved_emails'
+ db.delete_column('askbot_groupprofile', 'preapproved_emails')
+
+ # Deleting field 'GroupProfile.preapproved_email_domains'
+ db.delete_column('askbot_groupprofile', 'preapproved_email_domains')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'unique_together': "(('group', 'user'),)", 'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_open': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'moderate_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'preapproved_email_domains': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'preapproved_emails': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'subscribed_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot'] \ No newline at end of file
diff --git a/askbot/migrations/0122_auth_user__add_subscribed_tag_field.py b/askbot/migrations/0122_auth_user__add_subscribed_tag_field.py
new file mode 100644
index 00000000..d84666fb
--- /dev/null
+++ b/askbot/migrations/0122_auth_user__add_subscribed_tag_field.py
@@ -0,0 +1,318 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ try:
+ # Adding field 'User.interesting_tags'
+ db.add_column(u'auth_user', 'subscribed_tags', self.gf('django.db.models.fields.TextField')(blank=True, default = ''), keep_default=False)
+ except:
+ pass
+
+ def backwards(self, orm):
+ # Deleting field 'User.interesting_tags'
+ db.delete_column('auth_user', 'subscribed_tags')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'unique_together': "(('group', 'user'),)", 'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_open': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'moderate_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'preapproved_email_domains': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'preapproved_emails': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'subscribed_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0123_setup_postgres_user_search.py b/askbot/migrations/0123_setup_postgres_user_search.py
new file mode 100644
index 00000000..152fbde4
--- /dev/null
+++ b/askbot/migrations/0123_setup_postgres_user_search.py
@@ -0,0 +1,29 @@
+# encoding: utf-8
+import askbot
+from askbot.search import postgresql
+import os
+from south.v2 import DataMigration
+
+class Migration(DataMigration):
+ """this migration is the same as 22 and 106
+ just ran again to update the postgres search setup
+ """
+
+ def forwards(self, orm):
+ "Write your forwards methods here."
+
+ db_engine_name = askbot.get_database_engine_name()
+ if 'postgresql_psycopg2' in db_engine_name:
+ script_path = os.path.join(
+ askbot.get_install_directory(),
+ 'search',
+ 'postgresql',
+ 'user_profile_search_051312.plsql'
+ )
+ postgresql.setup_full_text_search(script_path)
+
+ def backwards(self, orm):
+ "Write your backwards methods here."
+ pass
+
+ models = {}#we don't need orm for this migration
diff --git a/askbot/migrations/0124_auto__add_field_post_is_private__add_field_replyaddress_reply_action.py b/askbot/migrations/0124_auto__add_field_post_is_private__add_field_replyaddress_reply_action.py
new file mode 100644
index 00000000..18d511f9
--- /dev/null
+++ b/askbot/migrations/0124_auto__add_field_post_is_private__add_field_replyaddress_reply_action.py
@@ -0,0 +1,341 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'Post.is_private'
+ db.start_transaction()
+ db.add_column('askbot_post', 'is_private',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'ReplyAddress.reply_action'
+ db.add_column('askbot_replyaddress', 'reply_action',
+ self.gf('django.db.models.fields.CharField')(default='auto_answer_or_comment', max_length=32),
+ keep_default=False)
+
+ # Changing field 'ReplyAddress.post'
+ db.alter_column('askbot_replyaddress', 'post_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['askbot.Post']))
+ db.commit_transaction()
+
+ try:
+ db.start_transaction()
+ # Adding field 'User.interesting_tags'
+ db.add_column(u'auth_user', 'email_signature', self.gf('django.db.models.fields.TextField')(blank=True, default = ''), keep_default=False)
+ db.commit_transaction()
+ except:
+ db.rollback_transaction()
+ pass
+
+ def backwards(self, orm):
+ db.delete_column('askbot_post', 'is_private')
+ db.delete_column('askbot_replyaddress', 'reply_action')
+ db.delete_column('auth_user', 'email_signature')
+ db.alter_column('askbot_replyaddress', 'post_id', self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['askbot.Post']))
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupmembership': {
+ 'Meta': {'unique_together': "(('group', 'user'),)", 'object_name': 'GroupMembership'},
+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_memberships'", 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'group_memberships'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.groupprofile': {
+ 'Meta': {'object_name': 'GroupProfile'},
+ 'group_tag': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'group_profile'", 'unique': 'True', 'to': "orm['askbot.Tag']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_open': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'logo_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True'}),
+ 'moderate_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'preapproved_email_domains': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'preapproved_emails': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_private': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'posts'", 'null': 'True', 'blank': 'True', 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'approved_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'approved_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'by_email': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'reply_action': ('django.db.models.fields.CharField', [], {'default': "'auto_answer_or_comment'", 'max_length': '32'}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'tag_wiki': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'described_tag'", 'unique': 'True', 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'approved': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'subscribed_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/0125_add_show_tags_field_to_user.py b/askbot/migrations/0125_add_show_tags_field_to_user.py
new file mode 100644
index 00000000..cb7ab2bd
--- /dev/null
+++ b/askbot/migrations/0125_add_show_tags_field_to_user.py
@@ -0,0 +1,296 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Adding model show_marked_tags fields to the model auth_user
+ try:
+ db.add_column(
+ u'auth_user',
+ 'show_marked_tags',
+ self.gf(
+ 'django.db.models.fields.BooleanField'
+ )(default=True, blank=True)
+ )
+ except:
+ pass
+
+
+ def backwards(self, orm):
+
+ # Deleting show_marked_tags fields
+ db.delete_column(u'auth_user', 'show_marked_tags')
+
+ models = {
+ 'askbot.activity': {
+ 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
+ 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True'}),
+ 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
+ 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.activityauditstatus': {
+ 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.anonymousanswer': {
+ 'Meta': {'object_name': 'AnonymousAnswer'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Post']"}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.anonymousquestion': {
+ 'Meta': {'object_name': 'AnonymousQuestion'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'askbot.award': {
+ 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
+ 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.badgedata': {
+ 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
+ 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
+ },
+ 'askbot.emailfeedsetting': {
+ 'Meta': {'unique_together': "(('subscriber', 'feed_type'),)", 'object_name': 'EmailFeedSetting'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.favoritequestion': {
+ 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Thread']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.markedtag': {
+ 'Meta': {'object_name': 'MarkedTag'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
+ 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.post': {
+ 'Meta': {'object_name': 'Post'},
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['auth.User']"}),
+ 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_posts'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'old_answer_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_comment_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'old_question_id': ('django.db.models.fields.PositiveIntegerField', [], {'default': 'None', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comments'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'post_type': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
+ 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+ 'thread': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'posts'", 'to': "orm['askbot.Thread']"}),
+ 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'askbot.postrevision': {
+ 'Meta': {'ordering': "('-revision',)", 'unique_together': "(('post', 'revision'),)", 'object_name': 'PostRevision'},
+ 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'postrevisions'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'revisions'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
+ 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
+ 'revision_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '125', 'blank': 'True'}),
+ 'text': ('django.db.models.fields.TextField', [], {}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'blank': 'True'})
+ },
+ 'askbot.questionview': {
+ 'Meta': {'object_name': 'QuestionView'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Post']"}),
+ 'when': ('django.db.models.fields.DateTimeField', [], {}),
+ 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
+ },
+ 'askbot.replyaddress': {
+ 'Meta': {'object_name': 'ReplyAddress'},
+ 'address': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
+ 'allowed_from_email': ('django.db.models.fields.EmailField', [], {'max_length': '150'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'reply_addresses'", 'to': "orm['askbot.Post']"}),
+ 'response_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'edit_addresses'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'used_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.repute': {
+ 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
+ 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Post']", 'null': 'True', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ },
+ 'askbot.tag': {
+ 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
+ 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.thread': {
+ 'Meta': {'object_name': 'Thread'},
+ 'accepted_answer': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['askbot.Post']"}),
+ 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'answer_accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
+ 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'unused_favorite_threads'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
+ 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
+ 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_threads'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'unused_last_active_in_threads'", 'to': "orm['auth.User']"}),
+ 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'threads'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+ },
+ 'askbot.vote': {
+ 'Meta': {'unique_together': "(('user', 'voted_post'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
+ 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
+ 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'voted_post': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['askbot.Post']"})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'avatar_type': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '1'}),
+ 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
+ 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
+ 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+ 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'show_marked_tags': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
+ 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
+ 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['askbot']
diff --git a/askbot/migrations/__init__.py b/askbot/migrations/__init__.py
index e69de29b..86377b7b 100644
--- a/askbot/migrations/__init__.py
+++ b/askbot/migrations/__init__.py
@@ -0,0 +1,69 @@
+from south.db import db
+from south.utils import ask_for_it_by_name
+
+# Terminal ANSI codes for printing colored text:
+# - http://code.google.com/p/testoob/source/browse/trunk/src/testoob/reporting/colored.py#20
+# - http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python
+TERM_RED_BOLD = '\x1b[31;01m\x1b[01m'
+TERM_YELLOW = "\x1b[33;01m"
+TERM_GREEN = "\x1b[32;06m"
+TERM_RESET = '\x1b[0m'
+
+def houston_do_we_have_a_problem(table):
+ "Checks if we're using MySQL + InnoDB"
+ if not db.dry_run and db.backend_name == 'mysql':
+ db_table = [db._get_connection().settings_dict['NAME'], table]
+ ret = db.execute(
+ "SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES "
+ "where TABLE_SCHEMA = %s and TABLE_NAME = %s",
+ db_table
+ )
+ assert len(ret) == 1 # There HAVE to be info about this table !
+ assert len(ret[0]) == 2
+ if ret[0][1] == 'InnoDB':
+ print TERM_YELLOW, "!!!", '.'.join(db_table), "is InnoDB - using workarounds !!!", TERM_RESET
+ return True
+ return False
+
+
+def innodb_ready_rename_column(orm, models, table, old_column_name, new_column_name, app_model, new_field_name):
+ """
+ Foreign key renaming which works for InnoDB
+ More: http://south.aeracode.org/ticket/466
+
+ Parameters:
+ - orm: a reference to 'orm' parameter passed to Migration.forwards()/backwards()
+ - models: reference to Migration.models data structure
+ - table: e.g. 'askbot_thread'
+ - old_column_name: e.g. 'question_post_id'
+ - new_column_name: e.g. 'question_id'
+ - app_model: e.g. 'askbot.thread' (should be a dict key into 'models')
+ - new_field_name: e.g. 'question' (usually it's same as new_column_name, only without trailing '_id')
+ """
+ use_workaround = houston_do_we_have_a_problem(table)
+
+ # ditch the foreign key
+ if use_workaround:
+ db.delete_foreign_key(table, old_column_name)
+
+ # rename column
+ db.rename_column(table, old_column_name, new_column_name)
+
+ # restore the foreign key
+ if not use_workaround:
+ return
+
+ model_def = models[app_model][new_field_name]
+ assert model_def[0] == 'django.db.models.fields.related.ForeignKey'
+ # Copy the dict so that we don't change the original
+ # (otherwise the dry run would change it for the "normal" run
+ # and the latter would try to convert str to model once again)
+ fkey_params = model_def[2].copy()
+ assert 'to' in fkey_params
+ assert fkey_params['to'].startswith("orm['")
+ assert fkey_params['to'].endswith("']")
+ fkey_params['to'] = orm[fkey_params['to'][5:-2]] # convert "orm['app.models']" string to actual model
+ field = ask_for_it_by_name(model_def[0])(**fkey_params)
+ # INFO: ask_for_it_by_name() if equivalent to self.gf() which is usually used in migrations, e.g.:
+ # db.alter_column('askbot_badgedata', 'slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50))
+ db.alter_column(table, new_column_name, field)
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index d43b0e53..1c884ed6 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -1,10 +1,10 @@
from askbot import startup_procedures
startup_procedures.run()
-import logging
-import re
-import hashlib
+import collections
import datetime
+import hashlib
+import logging
import urllib
from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import signals as django_signals
@@ -13,36 +13,68 @@ from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from django.contrib.auth.models import User
from django.utils.safestring import mark_safe
+from django.utils.html import escape
from django.db import models
from django.conf import settings as django_settings
from django.contrib.contenttypes.models import ContentType
+from django.core import cache
from django.core import exceptions as django_exceptions
from django_countries.fields import CountryField
-import askbot
from askbot import exceptions as askbot_exceptions
from askbot import const
+from askbot.const.message_keys import get_i18n_message
from askbot.conf import settings as askbot_settings
-from askbot.models.question import Question
+from askbot.models.question import Thread
+from askbot.skins import utils as skin_utils
from askbot.models.question import QuestionView, AnonymousQuestion
from askbot.models.question import FavoriteQuestion
-from askbot.models.answer import Answer, AnonymousAnswer
from askbot.models.tag import Tag, MarkedTag
-from askbot.models.meta import Vote, Comment
from askbot.models.user import EmailFeedSetting, ActivityAuditStatus, Activity
-from askbot.models.post import PostRevision
+from askbot.models.user import GroupMembership, GroupProfile
+from askbot.models.post import Post, PostRevision, PostFlagReason, AnonymousAnswer
+from askbot.models.reply_by_email import ReplyAddress
from askbot.models import signals
-from askbot.models.badges import award_badges_signal, get_badge, init_badges
-#from user import AuthKeyUserAssociation
-from askbot.models.repute import BadgeData, Award, Repute
+from askbot.models.badges import award_badges_signal, get_badge, BadgeData
+from askbot.models.repute import Award, Repute, Vote
from askbot import auth
from askbot.utils.decorators import auto_now_timestamp
from askbot.utils.slug import slugify
+from askbot.utils.html import sanitize_html
from askbot.utils.diff import textDiff as htmldiff
-from askbot.utils import mail
+from askbot.utils.url_utils import strip_path
+from askbot import mail
def get_model(model_name):
+ """a shortcut for getting model for an askbot app"""
return models.get_model('askbot', model_name)
+def get_admins_and_moderators():
+ """returns query set of users who are site administrators
+ and moderators"""
+ return User.objects.filter(
+ models.Q(is_superuser=True) | models.Q(status='m')
+ )
+
+def get_users_by_text_query(search_query):
+ """Runs text search in user names and profile.
+ For postgres, search also runs against user group names.
+ """
+ import askbot
+ if 'postgresql_psycopg2' in askbot.get_database_engine_name():
+ from askbot.search import postgresql
+ return postgresql.run_full_text_search(User.objects.all(), search_query)
+ else:
+ return User.objects.filter(
+ models.Q(username__icontains=search_query) |
+ models.Q(about__icontains=search_query)
+ )
+ #if askbot.get_database_engine_name().endswith('mysql') \
+ # and mysql.supports_full_text_search():
+ # return User.objects.filter(
+ # models.Q(username__search = search_query) |
+ # models.Q(about__search = search_query)
+ # )
+
User.add_to_class(
'status',
models.CharField(
@@ -52,7 +84,7 @@ User.add_to_class(
)
)
-User.add_to_class('email_isvalid', models.BooleanField(default=False))
+User.add_to_class('email_isvalid', models.BooleanField(default=False)) #@UndefinedVariable
User.add_to_class('email_key', models.CharField(max_length=32, null=True))
#hardcoded initial reputaion of 1, no setting for this one
User.add_to_class('reputation',
@@ -70,7 +102,7 @@ User.add_to_class('gold', models.SmallIntegerField(default=0))
User.add_to_class('silver', models.SmallIntegerField(default=0))
User.add_to_class('bronze', models.SmallIntegerField(default=0))
User.add_to_class(
- 'questions_per_page',
+ 'questions_per_page', # TODO: remove me and const.QUESTIONS_PER_PAGE_USER_CHOICES, we're no longer used!
models.SmallIntegerField(
choices=const.QUESTIONS_PER_PAGE_USER_CHOICES,
default=10
@@ -90,17 +122,21 @@ User.add_to_class('about', models.TextField(blank=True))
#interesting tags and ignored tags are to store wildcard tag selections only
User.add_to_class('interesting_tags', models.TextField(blank = True))
User.add_to_class('ignored_tags', models.TextField(blank = True))
+User.add_to_class('subscribed_tags', models.TextField(blank = True))
+User.add_to_class('email_signature', models.TextField(blank = True))
+User.add_to_class('show_marked_tags', models.BooleanField(default = True))
+
User.add_to_class(
'email_tag_filter_strategy',
models.SmallIntegerField(
- choices=const.TAG_FILTER_STRATEGY_CHOICES,
+ choices=const.TAG_DISPLAY_FILTER_STRATEGY_CHOICES,
default=const.EXCLUDE_IGNORED
)
)
User.add_to_class(
'display_tag_filter_strategy',
models.SmallIntegerField(
- choices=const.TAG_FILTER_STRATEGY_CHOICES,
+ choices=const.TAG_EMAIL_FILTER_STRATEGY_CHOICES,
default=const.INCLUDE_ALL
)
)
@@ -121,6 +157,11 @@ def user_get_gravatar_url(self, size):
'size': size,
}
+def user_get_default_avatar_url(self, size):
+ """returns default avatar url
+ """
+ return skin_utils.get_media_url(askbot_settings.DEFAULT_AVATAR_URL)
+
def user_get_avatar_url(self, size):
"""returns avatar url - by default - gravatar,
but if application django-avatar is installed
@@ -129,10 +170,10 @@ def user_get_avatar_url(self, size):
if 'avatar' in django_settings.INSTALLED_APPS:
if self.avatar_type == 'n':
import avatar
- if avatar.settings.AVATAR_GRAVATAR_BACKUP:
+ if askbot_settings.ENABLE_GRAVATAR: #avatar.settings.AVATAR_GRAVATAR_BACKUP:
return self.get_gravatar_url(size)
else:
- return avatar.utils.get_default_avatar_url()
+ return self.get_default_avatar_url(size)
elif self.avatar_type == 'a':
kwargs = {'user_id': self.id, 'size': size}
try:
@@ -146,7 +187,10 @@ def user_get_avatar_url(self, size):
else:
return self.get_gravatar_url(size)
else:
- return self.get_gravatar_url(size)
+ if askbot_settings.ENABLE_GRAVATAR:
+ return self.get_gravatar_url(size)
+ else:
+ return self.get_default_avatar_url(size)
def user_update_avatar_type(self):
"""counts number of custom avatars
@@ -165,6 +209,16 @@ def user_update_avatar_type(self):
self.avatar_type = _check_gravatar(self.gravatar)
self.save()
+def user_strip_email_signature(self, text):
+ """strips email signature from the end of the text"""
+ if self.email_signature.strip() == '':
+ return text
+
+ text = '\n'.join(text.splitlines())#normalize the line endings
+ while text.endswith(self.email_signature):
+ text = text[0:-len(self.email_signature)]
+ return text
+
def _check_gravatar(gravatar):
gravatar_url = "http://www.gravatar.com/avatar/%s?d=404" % gravatar
code = urllib.urlopen(gravatar_url).getcode()
@@ -180,19 +234,48 @@ def user_get_old_vote_for_post(self, post):
raises assertion_error is number of old votes is > 1
which is illegal
"""
- post_content_type = ContentType.objects.get_for_model(post)
- old_votes = Vote.objects.filter(
- user = self,
- content_type = post_content_type,
- object_id = post.id
- )
- if len(old_votes) == 0:
+ try:
+ return Vote.objects.get(user=self, voted_post=post)
+ except Vote.DoesNotExist:
return None
- else:
- assert(len(old_votes) == 1)
+ except Vote.MultipleObjectsReturned:
+ raise AssertionError
+
+def user_get_marked_tags(self, reason):
+ """reason is a type of mark: good, bad or subscribed"""
+ assert(reason in ('good', 'bad', 'subscribed'))
+ if reason == 'subscribed':
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED == False:
+ return Tag.objects.none()
+
+ return Tag.objects.filter(
+ user_selections__user = self,
+ user_selections__reason = reason
+ )
+
+MARKED_TAG_PROPERTY_MAP = {
+ 'good': 'interesting_tags',
+ 'bad': 'ignored_tags',
+ 'subscribed': 'subscribed_tags'
+}
+def user_get_marked_tag_names(self, reason):
+ """returns list of marked tag names for a give
+ reason: good, bad, or subscribed
+ will add wildcard tags as well, if used
+ """
+ if reason == 'subscribed':
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED == False:
+ return list()
- return old_votes[0]
+ tags = self.get_marked_tags(reason)
+ tag_names = list(tags.values_list('name', flat = True))
+ if askbot_settings.USE_WILDCARD_TAGS:
+ attr_name = MARKED_TAG_PROPERTY_MAP[reason]
+ wildcard_tags = getattr(self, attr_name).split()
+ tag_names.extend(wildcard_tags)
+
+ return tag_names
def user_has_affinity_to_question(self, question = None, affinity_type = None):
"""returns True if number of tag overlap of the user tag
@@ -200,15 +283,19 @@ def user_has_affinity_to_question(self, question = None, affinity_type = None):
affinity_type can be either "like" or "dislike"
"""
if affinity_type == 'like':
- tag_selection_type = 'good'
- wildcards = self.interesting_tags.split()
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ tag_selection_type = 'subscribed'
+ wildcards = self.subscribed_tags.split()
+ else:
+ tag_selection_type = 'good'
+ wildcards = self.interesting_tags.split()
elif affinity_type == 'dislike':
tag_selection_type = 'bad'
wildcards = self.ignored_tags.split()
else:
raise ValueError('unexpected affinity type %s' % str(affinity_type))
- question_tags = question.tags.all()
+ question_tags = question.thread.tags.all()
intersecting_tag_selections = self.tag_selections.filter(
tag__in = question_tags,
reason = tag_selection_type
@@ -245,12 +332,17 @@ def user_has_interesting_wildcard_tags(self):
and self.interesting_tags != ''
)
-
def user_can_have_strong_url(self):
"""True if user's homepage url can be
followed by the search engine crawlers"""
return (self.reputation >= askbot_settings.MIN_REP_TO_HAVE_STRONG_URL)
+def user_can_post_by_email(self):
+ """True, if reply by email is enabled
+ and user has sufficient reputatiton"""
+ return askbot_settings.REPLY_BY_EMAIL and \
+ self.reputation > askbot_settings.MIN_REP_TO_POST_BY_EMAIL
+
def _assert_user_can(
user = None,
post = None, #related post (may be parent)
@@ -311,8 +403,14 @@ def _assert_user_can(
assert(error_message is not None)
raise django_exceptions.PermissionDenied(error_message)
+def user_assert_can_approve_post_revision(self, post_revision = None):
+ _assert_user_can(
+ user = self,
+ admin_or_moderator_required = True
+ )
+
def user_assert_can_unaccept_best_answer(self, answer = None):
- assert(isinstance(answer, Answer))
+ assert getattr(answer, 'post_type', '') == 'answer'
blocked_error_message = _(
'Sorry, you cannot accept or unaccept best answers '
'because your account is blocked'
@@ -325,7 +423,7 @@ def user_assert_can_unaccept_best_answer(self, answer = None):
error_message = blocked_error_message
elif self.is_suspended():
error_message = suspended_error_message
- elif self == answer.question.get_owner():
+ elif self == answer.thread._question_post().get_owner():
if self == answer.get_owner():
if not self.is_administrator():
#check rep
@@ -368,7 +466,7 @@ def user_assert_can_unaccept_best_answer(self, answer = None):
raise django_exceptions.PermissionDenied(error_message)
def user_assert_can_accept_best_answer(self, answer = None):
- assert(isinstance(answer, Answer))
+ assert getattr(answer, 'post_type', '') == 'answer'
self.assert_can_unaccept_best_answer(answer)
def user_assert_can_vote_for_post(
@@ -382,14 +480,10 @@ def user_assert_can_vote_for_post(
:param:direction can be 'up' or 'down'
:param:post can be instance of question or answer
"""
-
- #todo: after unifying models this if else will go away
- if isinstance(post, Comment):
- post_author = post.user
- else:
- post_author = post.author
- if self == post_author:
- raise django_exceptions.PermissionDenied(_('cannot vote for own posts'))
+ if self == post.author:
+ raise django_exceptions.PermissionDenied(
+ _('Sorry, you cannot vote for your own posts')
+ )
blocked_error_message = _(
'Sorry your account appears to be blocked ' +
@@ -431,8 +525,7 @@ def user_assert_can_upload_file(request_user):
blocked_error_message = _('Sorry, blocked users cannot upload files')
suspended_error_message = _('Sorry, suspended users cannot upload files')
low_rep_error_message = _(
- 'uploading images is limited to users '
- 'with >%(min_rep)s reputation points'
+ 'sorry, file uploading requires karma >%(min_rep)s',
) % {'min_rep': askbot_settings.MIN_REP_TO_UPLOAD_FILES }
_assert_user_can(
@@ -448,16 +541,26 @@ def user_assert_can_post_question(self):
text that has the reason for the denial
"""
+ blocked_message = get_i18n_message('BLOCKED_USERS_CANNOT_POST')
+ suspended_message = get_i18n_message('SUSPENDED_USERS_CANNOT_POST')
+
_assert_user_can(
user = self,
- blocked_error_message = _('blocked users cannot post'),
- suspended_error_message = _('suspended users cannot post'),
+ blocked_error_message = blocked_message,
+ suspended_error_message = suspended_message
)
-def user_assert_can_post_answer(self):
+def user_assert_can_post_answer(self, thread = None):
"""same as user_can_post_question
"""
+ limit_answers = askbot_settings.LIMIT_ONE_ANSWER_PER_USER
+ if limit_answers and thread.has_answer_by_user(self):
+ message = _(
+ 'Sorry, you already gave an answer, please edit it instead.'
+ )
+ raise askbot_exceptions.AnswerAlreadyGiven(message)
+
self.assert_can_post_question()
@@ -470,7 +573,7 @@ def user_assert_can_edit_comment(self, comment = None):
if self.is_administrator() or self.is_moderator():
return
else:
- if comment.user == self:
+ if comment.author == self:
if askbot_settings.USE_TIME_LIMIT_TO_EDIT_COMMENT:
now = datetime.datetime.now()
delta_seconds = 60 * askbot_settings.MINUTES_TO_EDIT_COMMENT
@@ -495,6 +598,18 @@ def user_assert_can_edit_comment(self, comment = None):
raise django_exceptions.PermissionDenied(error_message)
+def user_can_post_comment(self, parent_post = None):
+ """a simplified method to test ability to comment
+ """
+ if self.reputation >= askbot_settings.MIN_REP_TO_LEAVE_COMMENTS:
+ return True
+ if parent_post and self == parent_post.author:
+ return True
+ if self.is_administrator_or_moderator():
+ return True
+ return False
+
+
def user_assert_can_post_comment(self, parent_post = None):
"""raises exceptions.PermissionDenied if
user cannot post comment
@@ -512,19 +627,21 @@ def user_assert_can_post_comment(self, parent_post = None):
'your own posts and answers to your questions'
) % {'min_rep': askbot_settings.MIN_REP_TO_LEAVE_COMMENTS}
+ blocked_message = get_i18n_message('BLOCKED_USERS_CANNOT_POST')
+
try:
_assert_user_can(
user = self,
post = parent_post,
owner_can = True,
- blocked_error_message = _('blocked users cannot post'),
+ blocked_error_message = blocked_message,
suspended_error_message = suspended_error_message,
min_rep_setting = askbot_settings.MIN_REP_TO_LEAVE_COMMENTS,
low_rep_error_message = low_rep_error_message,
)
except askbot_exceptions.InsufficientReputation, e:
- if isinstance(parent_post, Answer):
- if self == parent_post.question.author:
+ if parent_post.post_type == 'answer':
+ if self == parent_post.thread._question_post().author:
return
raise e
@@ -601,22 +718,25 @@ def user_assert_can_edit_post(self, post = None):
def user_assert_can_edit_question(self, question = None):
- assert(isinstance(question, Question))
+ assert getattr(question, 'post_type', '') == 'question'
self.assert_can_edit_post(question)
def user_assert_can_edit_answer(self, answer = None):
- assert(isinstance(answer, Answer))
+ assert getattr(answer, 'post_type', '') == 'answer'
self.assert_can_edit_post(answer)
def user_assert_can_delete_post(self, post = None):
- if isinstance(post, Question):
+ post_type = getattr(post, 'post_type', '')
+ if post_type == 'question':
self.assert_can_delete_question(question = post)
- elif isinstance(post, Answer):
+ elif post_type == 'answer':
self.assert_can_delete_answer(answer = post)
- elif isinstance(post, Comment):
+ elif post_type == 'comment':
self.assert_can_delete_comment(comment = post)
+ else:
+ raise ValueError('Invalid post_type!')
def user_assert_can_restore_post(self, post = None):
"""can_restore_rule is the same as can_delete
@@ -635,11 +755,8 @@ def user_assert_can_delete_question(self, question = None):
if self == question.get_owner():
#if there are answers by other people,
#then deny, unless user in admin or moderator
- answer_count = question.answers.exclude(
- author = self,
- ).exclude(
- score__lte = 0
- ).count()
+ answer_count = question.thread.all_answers()\
+ .exclude(author=self).exclude(score__lte=0).count()
if answer_count > 0:
if self.is_administrator() or self.is_moderator():
@@ -687,7 +804,7 @@ def user_assert_can_delete_answer(self, answer = None):
def user_assert_can_close_question(self, question = None):
- assert(isinstance(question, Question) == True)
+ assert(getattr(question, 'post_type', '') == 'question')
blocked_error_message = _(
'Sorry, since your account is blocked '
'you cannot close questions'
@@ -725,9 +842,11 @@ def user_assert_can_close_question(self, question = None):
def user_assert_can_reopen_question(self, question = None):
- assert(isinstance(question, Question) == True)
+ assert(question.post_type == 'question')
+ #for some reason rep to reopen own questions != rep to close own q's
owner_min_rep_setting = askbot_settings.MIN_REP_TO_REOPEN_OWN_QUESTIONS
+ min_rep_setting = askbot_settings.MIN_REP_TO_CLOSE_OTHERS_QUESTIONS
general_error_message = _(
'Sorry, only administrators, moderators '
@@ -740,15 +859,27 @@ def user_assert_can_reopen_question(self, question = None):
'a minimum reputation of %(min_rep)s is required'
) % {'min_rep': owner_min_rep_setting}
+ blocked_error_message = _(
+ 'Sorry, you cannot reopen questions '
+ 'because your account is blocked'
+ )
+
+ suspended_error_message = _(
+ 'Sorry, you cannot reopen questions '
+ 'because your account is suspended'
+ )
+
_assert_user_can(
user = self,
post = question,
- admin_or_moderator_required = True,
owner_can = True,
suspended_owner_cannot = True,
owner_min_rep_setting = owner_min_rep_setting,
+ min_rep_setting = min_rep_setting,
owner_low_rep_error_message = owner_low_rep_error_message,
- general_error_message = general_error_message
+ general_error_message = general_error_message,
+ blocked_error_message = blocked_error_message,
+ suspended_error_message = suspended_error_message
)
@@ -756,16 +887,29 @@ def user_assert_can_flag_offensive(self, post = None):
assert(post is not None)
- double_flagging_error_message = _('cannot flag message as offensive twice')
+ double_flagging_error_message = _(
+ 'You have flagged this question before and '
+ 'cannot do it more than once'
+ )
if self.get_flags_for_post(post).count() > 0:
raise askbot_exceptions.DuplicateCommand(double_flagging_error_message)
- blocked_error_message = _('blocked users cannot flag posts')
+ blocked_error_message = _(
+ 'Sorry, since your account is blocked '
+ 'you cannot flag posts as offensive'
+ )
- suspended_error_message = _('suspended users cannot flag posts')
+ suspended_error_message = _(
+ 'Sorry, your account appears to be suspended and you cannot make new posts '
+ 'until this issue is resolved. You can, however edit your existing posts. '
+ 'Please contact the forum administrator to reach a resolution.'
+ )
- low_rep_error_message = _('need > %(min_rep)s points to flag spam') % \
+ low_rep_error_message = _(
+ 'Sorry, to flag posts as offensive a minimum reputation '
+ 'of %(min_rep)s is required'
+ ) % \
{'min_rep': askbot_settings.MIN_REP_TO_FLAG_OFFENSIVE}
min_rep_setting = askbot_settings.MIN_REP_TO_FLAG_OFFENSIVE
@@ -784,11 +928,12 @@ def user_assert_can_flag_offensive(self, post = None):
flag_count_today = self.get_flag_count_posted_today()
if flag_count_today >= askbot_settings.MAX_FLAGS_PER_USER_PER_DAY:
flags_exceeded_error_message = _(
- '%(max_flags_per_day)s exceeded'
- ) % {
- 'max_flags_per_day': \
- askbot_settings.MAX_FLAGS_PER_USER_PER_DAY
- }
+ 'Sorry, you have exhausted the maximum number of '
+ '%(max_flags_per_day)s offensive flags per day.'
+ ) % {
+ 'max_flags_per_day': \
+ askbot_settings.MAX_FLAGS_PER_USER_PER_DAY
+ }
raise django_exceptions.PermissionDenied(flags_exceeded_error_message)
def user_assert_can_remove_flag_offensive(self, post = None):
@@ -800,14 +945,19 @@ def user_assert_can_remove_flag_offensive(self, post = None):
if self.get_flags_for_post(post).count() < 1:
raise django_exceptions.PermissionDenied(non_existing_flagging_error_message)
- blocked_error_message = _('blocked users cannot remove flags')
+ blocked_error_message = _(
+ 'Sorry, since your account is blocked you cannot remove flags'
+ )
- suspended_error_message = _('suspended users cannot remove flags')
+ suspended_error_message = _(
+ 'Sorry, your account appears to be suspended and you cannot remove flags. '
+ 'Please contact the forum administrator to reach a resolution.'
+ )
min_rep_setting = askbot_settings.MIN_REP_TO_FLAG_OFFENSIVE
low_rep_error_message = ungettext(
- 'need > %(min_rep)d point to remove flag',
- 'need > %(min_rep)d points to remove flag',
+ 'Sorry, to flag posts a minimum reputation of %(min_rep)d is required',
+ 'Sorry, to flag posts a minimum reputation of %(min_rep)d is required',
min_rep_setting
) % {'min_rep': min_rep_setting}
@@ -915,7 +1065,9 @@ def user_assert_can_revoke_old_vote(self, vote):
"""
if (datetime.datetime.now().day - vote.voted_at.day) \
>= askbot_settings.MAX_DAYS_TO_CANCEL_VOTE:
- raise django_exceptions.PermissionDenied(_('cannot revoke old vote'))
+ raise django_exceptions.PermissionDenied(
+ _('sorry, but older votes cannot be revoked')
+ )
def user_get_unused_votes_today(self):
"""returns number of votes that are
@@ -937,6 +1089,7 @@ def user_post_comment(
parent_post = None,
body_text = None,
timestamp = None,
+ by_email = False
):
"""post a comment on behalf of the user
to parent_post
@@ -955,8 +1108,11 @@ def user_post_comment(
user = self,
comment = body_text,
added_at = timestamp,
+ by_email = by_email
)
- award_badges_signal.send(None,
+ parent_post.thread.invalidate_cached_data()
+ award_badges_signal.send(
+ None,
event = 'post_comment',
actor = self,
context_object = comment,
@@ -964,6 +1120,23 @@ def user_post_comment(
)
return comment
+def user_post_tag_wiki(
+ self,
+ tag = None,
+ body_text = None,
+ timestamp = None
+ ):
+ """Creates a tag wiki post and assigns it
+ to the given tag. Returns the newly created post"""
+ tag_wiki_post = Post.objects.create_new_tag_wiki(
+ author = self,
+ text = body_text
+ )
+ tag.tag_wiki = tag_wiki_post
+ tag.save()
+ return tag_wiki_post
+
+
def user_post_anonymous_askbot_content(user, session_key):
"""posts any posts added just before logging in
the posts are identified by the session key, thus the second argument
@@ -983,10 +1156,10 @@ def user_post_anonymous_askbot_content(user, session_key):
#maybe add pending posts message?
else:
if user.is_blocked():
- msg = _('blocked users cannot post')
+ msg = get_i18n_message('BLOCKED_USERS_CANNOT_POST')
user.message_set.create(message = msg)
elif user.is_suspended():
- msg = _('suspended users cannot post')
+ msg = get_i18n_message('SUSPENDED_USERS_CANNOT_POST')
user.message_set.create(message = msg)
else:
for aq in aq_list:
@@ -1012,7 +1185,10 @@ def user_mark_tags(
cleaned_wildcards = list()
assert(action in ('add', 'remove'))
if action == 'add':
- assert(reason in ('good', 'bad'))
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ assert(reason in ('good', 'bad', 'subscribed'))
+ else:
+ assert(reason in ('good', 'bad'))
if wildcards:
cleaned_wildcards = self.update_wildcard_tag_selections(
action = action,
@@ -1027,6 +1203,17 @@ def user_mark_tags(
user = self,
tag__name__in = tagnames
)
+ #Marks for "good" and "bad" reasons are exclusive,
+ #to make it impossible to "like" and "dislike" something at the same time
+ #but the subscribed set is independent - e.g. you can dislike a topic
+ #and still subscribe for it.
+ if reason == 'subscribed':
+ #don't touch good/bad marks
+ marked_ts = marked_ts.filter(reason = 'subscribed')
+ else:
+ #and in this case don't touch subscribed tags
+ marked_ts = marked_ts.exclude(reason = 'subscribed')
+
#todo: use the user api methods here instead of the straight ORM
cleaned_tagnames = list() #those that were actually updated
if action == 'remove':
@@ -1048,7 +1235,8 @@ def user_mark_tags(
cleaned_tagnames.extend(marked_names)
cleaned_tagnames.extend(new_marks)
else:
- marked_ts.update(reason=reason)
+ if reason in ('good', 'bad'):#to maintain exclusivity of 'good' and 'bad'
+ marked_ts.update(reason=reason)
cleaned_tagnames = tagnames
return cleaned_tagnames, cleaned_wildcards
@@ -1062,12 +1250,13 @@ def user_retag_question(
silent = False
):
self.assert_can_retag_question(question)
- question.retag(
+ question.thread.retag(
retagged_by = self,
retagged_at = timestamp,
tagnames = tags,
silent = silent
)
+ question.thread.invalidate_cached_data()
award_badges_signal.send(None,
event = 'retag_question',
actor = self,
@@ -1090,12 +1279,12 @@ def user_accept_best_answer(
)
if force == False:
self.assert_can_accept_best_answer(answer)
- if answer.accepted == True:
+ if answer.accepted() == True:
return
- prev_accepted_answers = answer.question.answers.filter(accepted = True)
- for prev_answer in prev_accepted_answers:
- auth.onAnswerAcceptCanceled(prev_answer, self)
+ prev_accepted_answer = answer.thread.accepted_answer
+ if prev_accepted_answer:
+ auth.onAnswerAcceptCanceled(prev_accepted_answer, self)
auth.onAnswerAccept(answer, self, timestamp = timestamp)
award_badges_signal.send(None,
@@ -1113,7 +1302,7 @@ def user_unaccept_best_answer(
):
if force == False:
self.assert_can_unaccept_best_answer(answer)
- if answer.accepted == False:
+ if not answer.accepted():
return
auth.onAnswerAcceptCanceled(answer, self)
@@ -1124,7 +1313,13 @@ def user_delete_comment(
timestamp = None
):
self.assert_can_delete_comment(comment = comment)
+ #todo: we want to do this
+ #comment.deleted = True
+ #comment.deleted_by = self
+ #comment.deleted_at = timestamp
+ #comment.save()
comment.delete()
+ comment.thread.invalidate_cached_data()
@auto_now_timestamp
def user_delete_answer(
@@ -1138,8 +1333,9 @@ def user_delete_answer(
answer.deleted_at = timestamp
answer.save()
- answer.question.update_answer_count()
- logging.debug('updated answer count to %d' % answer.question.answer_count)
+ answer.thread.update_answer_count()
+ answer.thread.invalidate_cached_data()
+ logging.debug('updated answer count to %d' % answer.thread.answer_count)
signals.delete_question_or_answer.send(
sender = answer.__class__,
@@ -1167,7 +1363,7 @@ def user_delete_question(
question.deleted_at = timestamp
question.save()
- for tag in list(question.tags.all()):
+ for tag in list(question.thread.tags.all()):
if tag.used_count == 1:
tag.deleted = True
tag.deleted_by = self
@@ -1197,11 +1393,7 @@ def user_close_question(
timestamp = None
):
self.assert_can_close_question(question)
- question.closed = True
- question.closed_by = self
- question.closed_at = timestamp
- question.close_reason = reason
- question.save()
+ question.thread.set_closed_status(closed=True, closed_by=self, closed_at=timestamp, close_reason=reason)
@auto_now_timestamp
def user_reopen_question(
@@ -1210,12 +1402,9 @@ def user_reopen_question(
timestamp = None
):
self.assert_can_reopen_question(question)
- question.closed = False
- question.closed_by = self
- question.closed_at = timestamp
- question.close_reason = None
- question.save()
+ question.thread.set_closed_status(closed=False, closed_by=self, closed_at=timestamp, close_reason=None)
+@auto_now_timestamp
def user_delete_post(
self,
post = None,
@@ -1225,14 +1414,15 @@ def user_delete_post(
if there is no use cases for it, the method will be removed
"""
- if isinstance(post, Comment):
+ if post.post_type == 'comment':
self.delete_comment(comment = post, timestamp = timestamp)
- elif isinstance(post, Answer):
+ elif post.post_type == 'answer':
self.delete_answer(answer = post, timestamp = timestamp)
- elif isinstance(post, Question):
+ elif post.post_type == 'question':
self.delete_question(question = post, timestamp = timestamp)
else:
raise TypeError('either Comment, Question or Answer expected')
+ post.thread.invalidate_cached_data()
def user_restore_post(
self,
@@ -1241,18 +1431,19 @@ def user_restore_post(
):
#here timestamp is not used, I guess added for consistency
self.assert_can_restore_post(post)
- if isinstance(post, Question) or isinstance(post, Answer):
+ if post.post_type in ('question', 'answer'):
post.deleted = False
post.deleted_by = None
post.deleted_at = None
post.save()
- if isinstance(post, Answer):
- post.question.update_answer_count()
- elif isinstance(post, Question):
+ post.thread.invalidate_cached_data()
+ if post.post_type == 'answer':
+ post.thread.update_answer_count()
+ else:
#todo: make sure that these tags actually exist
#some may have since been deleted for good
#or merged into others
- for tag in list(post.tags.all()):
+ for tag in list(post.thread.tags.all()):
if tag.used_count == 1 and tag.deleted:
tag.deleted = False
tag.deleted_by = None
@@ -1264,27 +1455,32 @@ def user_restore_post(
def user_post_question(
self,
title = None,
- body_text = None,
+ body_text = '',
tags = None,
wiki = False,
is_anonymous = False,
- timestamp = None
+ timestamp = None,
+ by_email = False,
+ email_address = None
):
"""makes an assertion whether user can post the question
then posts it and returns the question object"""
self.assert_can_post_question()
+ if body_text == '':#a hack to allow bodyless question
+ body_text = ' '
+
if title is None:
raise ValueError('Title is required to post question')
- if body_text is None:
- raise ValueError('Text body is required to post question')
if tags is None:
raise ValueError('Tags are required to post question')
if timestamp is None:
timestamp = datetime.datetime.now()
- question = Question.objects.create_new(
+ #todo: split this into "create thread" + "add queston", if text exists
+ #or maybe just add a blank question post anyway
+ thread = Thread.objects.create_new(
author = self,
title = title,
text = body_text,
@@ -1292,32 +1488,102 @@ def user_post_question(
added_at = timestamp,
wiki = wiki,
is_anonymous = is_anonymous,
+ by_email = by_email,
+ email_address = email_address
)
+ question = thread._question_post()
+ if question.author != self:
+ raise ValueError('question.author != self')
+ question.author = self # HACK: Some tests require that question.author IS exactly the same object as self-user (kind of identity map which Django doesn't provide),
+ # because they set some attributes for that instance and expect them to be changed also for question.author
return question
-def user_edit_comment(self, comment = None, body_text = None):
+@auto_now_timestamp
+def user_edit_comment(
+ self,
+ comment_post=None,
+ body_text = None,
+ timestamp = None,
+ by_email = False
+ ):
"""apply edit to a comment, the method does not
change the comments timestamp and no signals are sent
+ todo: see how this can be merged with edit_post
+ todo: add timestamp
"""
- self.assert_can_edit_comment(comment)
- comment.comment = body_text
- comment.parse_and_save(author = self)
+ self.assert_can_edit_comment(comment_post)
+ comment_post.apply_edit(
+ text = body_text,
+ edited_at = timestamp,
+ edited_by = self,
+ by_email = by_email
+ )
+ comment_post.thread.invalidate_cached_data()
+
+def user_edit_post(self,
+ post = None,
+ body_text = None,
+ revision_comment = None,
+ timestamp = None,
+ by_email = False
+ ):
+ """a simple method that edits post body
+ todo: unify it in the style of just a generic post
+ this requires refactoring of underlying functions
+ because we cannot bypass the permissions checks set within
+ """
+ if post.post_type == 'comment':
+ self.edit_comment(
+ comment_post = post,
+ body_text = body_text,
+ by_email = by_email
+ )
+ elif post.post_type == 'answer':
+ self.edit_answer(
+ answer = post,
+ body_text = body_text,
+ timestamp = timestamp,
+ revision_comment = revision_comment,
+ by_email = by_email
+ )
+ elif post.post_type == 'question':
+ self.edit_question(
+ question = post,
+ body_text = body_text,
+ timestamp = timestamp,
+ revision_comment = revision_comment,
+ by_email = by_email
+ )
+ elif post.post_type == 'tag_wiki':
+ post.apply_edit(
+ edited_at = timestamp,
+ edited_by = self,
+ text = body_text,
+ #todo: summary name clash in question and question revision
+ comment = revision_comment,
+ wiki = True,
+ by_email = False
+ )
+ else:
+ raise NotImplementedError()
@auto_now_timestamp
def user_edit_question(
- self,
- question = None,
- title = None,
- body_text = None,
- revision_comment = None,
- tags = None,
- wiki = False,
- edit_anonymously = False,
- timestamp = None,
- force = False,#if True - bypass the assert
- ):
+ self,
+ question = None,
+ title = None,
+ body_text = None,
+ revision_comment = None,
+ tags = None,
+ wiki = False,
+ edit_anonymously = False,
+ timestamp = None,
+ force = False,#if True - bypass the assert
+ by_email = False
+ ):
if force == False:
self.assert_can_edit_question(question)
+
question.apply_edit(
edited_at = timestamp,
edited_by = self,
@@ -1328,7 +1594,11 @@ def user_edit_question(
tags = tags,
wiki = wiki,
edit_anonymously = edit_anonymously,
+ by_email = by_email
)
+
+ question.thread.invalidate_cached_data()
+
award_badges_signal.send(None,
event = 'edit_question',
actor = self,
@@ -1344,7 +1614,8 @@ def user_edit_answer(
revision_comment = None,
wiki = False,
timestamp = None,
- force = False#if True - bypass the assert
+ force = False,#if True - bypass the assert
+ by_email = False
):
if force == False:
self.assert_can_edit_answer(answer)
@@ -1354,7 +1625,9 @@ def user_edit_answer(
text = body_text,
comment = revision_comment,
wiki = wiki,
+ by_email = by_email
)
+ answer.thread.invalidate_cached_data()
award_badges_signal.send(None,
event = 'edit_answer',
actor = self,
@@ -1362,15 +1635,59 @@ def user_edit_answer(
timestamp = timestamp
)
+@auto_now_timestamp
+def user_create_post_reject_reason(
+ self, title = None, details = None, timestamp = None
+):
+ """creates and returs the post reject reason"""
+ reason = PostFlagReason(
+ title = title,
+ added_at = timestamp,
+ author = self
+ )
+
+ #todo - need post_object.create_new() method
+ details = Post(
+ post_type = 'reject_reason',
+ author = self,
+ added_at = timestamp,
+ text = details
+ )
+ details.parse_and_save(author = self)
+ details.add_revision(
+ author = self,
+ revised_at = timestamp,
+ text = details,
+ comment = const.POST_STATUS['default_version']
+ )
+
+ reason.details = details
+ reason.save()
+ return reason
+
+@auto_now_timestamp
+def user_edit_post_reject_reason(
+ self, reason, title = None, details = None, timestamp = None
+):
+ reason.title = title
+ reason.save()
+ reason.details.apply_edit(
+ edited_by = self,
+ edited_at = timestamp,
+ text = details
+ )
+
def user_post_answer(
self,
question = None,
body_text = None,
follow = False,
wiki = False,
- timestamp = None
+ timestamp = None,
+ by_email = False
):
+ #todo: move this to assertion - user_assert_can_post_answer
if self == question.author and not self.is_administrator():
# check date and rep required to post answer to own question
@@ -1379,6 +1696,7 @@ def user_post_answer(
now = datetime.datetime.now()
asked = question.added_at
+ #todo: this is an assertion, must be moved out
if (now - asked < delta and self.reputation < askbot_settings.MIN_REP_TO_ANSWER_OWN_QUESTION):
diff = asked + delta - now
days = diff.days
@@ -1407,28 +1725,38 @@ def user_post_answer(
assert(error_message is not None)
raise django_exceptions.PermissionDenied(error_message)
- self.assert_can_post_answer()
+ self.assert_can_post_answer(thread = question.thread)
- if not isinstance(question, Question):
+ if getattr(question, 'post_type', '') != 'question':
raise TypeError('question argument must be provided')
if body_text is None:
raise ValueError('Body text is required to post answer')
if timestamp is None:
timestamp = datetime.datetime.now()
- answer = Answer.objects.create_new(
- question = question,
- author = self,
- text = body_text,
- added_at = timestamp,
- email_notify = follow,
- wiki = wiki
- )
+# answer = Answer.objects.create_new(
+# thread = question.thread,
+# author = self,
+# text = body_text,
+# added_at = timestamp,
+# email_notify = follow,
+# wiki = wiki
+# )
+ answer_post = Post.objects.create_new_answer(
+ thread = question.thread,
+ author = self,
+ text = body_text,
+ added_at = timestamp,
+ email_notify = follow,
+ wiki = wiki,
+ by_email = by_email
+ )
+ answer_post.thread.invalidate_cached_data()
award_badges_signal.send(None,
event = 'post_answer',
actor = self,
- context_object = answer
+ context_object = answer_post
)
- return answer
+ return answer_post
def user_visit_question(self, question = None, timestamp = None):
"""create a QuestionView record
@@ -1438,23 +1766,21 @@ def user_visit_question(self, question = None, timestamp = None):
and remove pending on-screen notifications about anything in
the post - question, answer or comments
"""
- if not isinstance(question, Question):
- raise TypeError('question type expected, have %s' % type(question))
if timestamp is None:
timestamp = datetime.datetime.now()
try:
- question_view = QuestionView.objects.get(
- who = self,
- question = question
- )
+ QuestionView.objects.filter(
+ who=self, question=question
+ ).update(
+ when = timestamp
+ )
except QuestionView.DoesNotExist:
- question_view = QuestionView(
- who = self,
- question = question
- )
- question_view.when = timestamp
- question_view.save()
+ QuestionView(
+ who=self,
+ question=question,
+ when = timestamp
+ ).save()
#filter memo objects on response activities directed to the qurrent user
#that refer to the children of the currently
@@ -1552,7 +1878,7 @@ def user_is_owner_of(self, obj):
"""True if user owns object
False otherwise
"""
- if isinstance(obj, Question):
+ if isinstance(obj, Post) and obj.post_type == 'question':
return self == obj.author
else:
raise NotImplementedError()
@@ -1613,6 +1939,14 @@ def user_set_status(self, new_status):
if self.is_administrator():
self.remove_admin_status()
+ #when toggling between blocked and non-blocked status
+ #we need to invalidate question page caches, b/c they contain
+ #user's url, which must be hidden in the blocked state
+ if 'b' in (new_status, self.status) and new_status != self.status:
+ threads = Thread.objects.get_for_user(self)
+ for thread in threads:
+ thread.invalidate_cached_post_data()
+
self.status = new_status
self.save()
@@ -1721,8 +2055,8 @@ def user_get_tag_filtered_questions(self, questions = None):
to the user choices. Parameter ``questions`` can be either ``None``
or a starting query set.
"""
- if questions == None:
- questions = Question.objects.all()
+ if questions is None:
+ questions = Post.objects.get_questions()
if self.email_tag_filter_strategy == const.EXCLUDE_IGNORED:
@@ -1735,23 +2069,29 @@ def user_get_tag_filtered_questions(self, questions = None):
ignored_by_wildcards = Tag.objects.get_by_wildcards(wk)
return questions.exclude(
- tags__in = ignored_tags
+ thread__tags__in = ignored_tags
).exclude(
- tags__in = ignored_by_wildcards
- )
+ thread__tags__in = ignored_by_wildcards
+ ).distinct()
elif self.email_tag_filter_strategy == const.INCLUDE_INTERESTING:
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ reason = 'subscribed'
+ wk = self.subscribed_tags.strip().split()
+ else:
+ reason = 'good'
+ wk = self.interesting_tags.strip().split()
+
selected_tags = Tag.objects.filter(
- user_selections__reason = 'good',
+ user_selections__reason = reason,
user_selections__user = self
)
- wk = self.interesting_tags.strip().split()
selected_by_wildcards = Tag.objects.get_by_wildcards(wk)
- tag_filter = models.Q(tags__in = list(selected_tags)) \
- | models.Q(tags__in = list(selected_by_wildcards))
+ tag_filter = models.Q(thread__tags__in = list(selected_tags)) \
+ | models.Q(thread__tags__in = list(selected_by_wildcards))
- return questions.filter( tag_filter )
+ return questions.filter( tag_filter ).distinct()
else:
return questions
@@ -1777,10 +2117,39 @@ def user_get_absolute_url(self):
def get_profile_link(self):
profile_link = u'<a href="%s">%s</a>' \
- % (self.get_profile_url(),self.username)
+ % (self.get_profile_url(), escape(self.username))
return mark_safe(profile_link)
+def user_get_groups_membership_info(self, groups):
+ """returts a defaultdict with values that are
+ dictionaries with the following keys and values:
+ * key: can_join, value: True if user can join group
+ * key: is_member, value: True if user is member of group
+
+ ``groups`` is a group tag query set
+ """
+ groups = groups.select_related('group_profile')
+
+ group_ids = groups.values_list('id', flat = True)
+ memberships = GroupMembership.objects.filter(
+ user__id = self.id,
+ group__id__in = group_ids
+ )
+
+ info = collections.defaultdict(
+ lambda: {'can_join': False, 'is_member': False}
+ )
+ for membership in memberships:
+ info[membership.group_id]['is_member'] = True
+
+ for group in groups:
+ info[group.id]['can_join'] = group.group_profile.can_accept_user(self)
+
+ return info
+
+
+
def user_get_karma_summary(self):
"""returns human readable sentence about
status of user's karma"""
@@ -1847,21 +2216,21 @@ def toggle_favorite_question(
returns a value
"""
try:
- fave = FavoriteQuestion.objects.get(question=question, user=self)
+ fave = FavoriteQuestion.objects.get(thread=question.thread, user=self)
fave.delete()
result = False
- question.update_favorite_count()
+ question.thread.update_favorite_count()
except FavoriteQuestion.DoesNotExist:
if timestamp is None:
timestamp = datetime.datetime.now()
fave = FavoriteQuestion(
- question = question,
+ thread = question.thread,
user = self,
added_at = timestamp,
)
fave.save()
result = True
- question.update_favorite_count()
+ question.thread.update_favorite_count()
award_badges_signal.send(None,
event = 'select_favorite_question',
actor = self,
@@ -1882,15 +2251,10 @@ def _process_vote(user, post, timestamp=None, cancel=False, vote_type=None):
""""private" wrapper function that applies post upvotes/downvotes
and cancelations
"""
- post_type = ContentType.objects.get_for_model(post)
#get or create the vote object
#return with noop in some situations
try:
- vote = Vote.objects.get(
- user = user,
- content_type = post_type,
- object_id = post.id,
- )
+ vote = Vote.objects.get(user = user, voted_post=post)
except Vote.DoesNotExist:
vote = None
if cancel:
@@ -1908,7 +2272,7 @@ def _process_vote(user, post, timestamp=None, cancel=False, vote_type=None):
if vote == None:
vote = Vote(
user = user,
- content_object = post,
+ voted_post=post,
vote = vote_type,
voted_at = timestamp,
)
@@ -1921,15 +2285,24 @@ def _process_vote(user, post, timestamp=None, cancel=False, vote_type=None):
if vote_type == Vote.VOTE_UP:
if cancel:
auth.onUpVotedCanceled(vote, post, user, timestamp)
- return None
else:
auth.onUpVoted(vote, post, user, timestamp)
elif vote_type == Vote.VOTE_DOWN:
if cancel:
auth.onDownVotedCanceled(vote, post, user, timestamp)
- return None
else:
auth.onDownVoted(vote, post, user, timestamp)
+
+ post.thread.invalidate_cached_data()
+
+ if post.post_type == 'question':
+ #denormalize the question post score on the thread
+ post.thread.score = post.score
+ post.thread.save()
+ post.thread.update_summary_html()
+
+ if cancel:
+ return None
event = VOTES_TO_EVENTS.get((vote_type, post.post_type), None)
if event:
@@ -1942,21 +2315,14 @@ def _process_vote(user, post, timestamp=None, cancel=False, vote_type=None):
return vote
def user_unfollow_question(self, question = None):
- if self in question.followed_by.all():
- question.followed_by.remove(self)
+ self.followed_threads.remove(question.thread)
def user_follow_question(self, question = None):
- if self not in question.followed_by.all():
- question.followed_by.add(self)
+ self.followed_threads.add(question.thread)
def user_is_following_question(user, question):
"""True if user is following a question"""
- followers = question.followed_by.all()
- try:
- followers.get(id = user.id)
- return True
- except User.DoesNotExist:
- return False
+ return question.thread.followed_by.filter(id=user.id).exists()
def upvote(self, post, timestamp=None, cancel=False, force = False):
@@ -1980,6 +2346,33 @@ def downvote(self, post, timestamp=None, cancel=False, force = False):
)
@auto_now_timestamp
+def user_approve_post_revision(user, post_revision, timestamp = None):
+ """approves the post revision and, if necessary,
+ the parent post and threads"""
+ user.assert_can_approve_post_revision()
+
+ post_revision.approved = True
+ post_revision.approved_by = user
+ post_revision.approved_at = timestamp
+
+ post_revision.save()
+
+ post = post_revision.post
+ post.approved = True
+ post.save()
+
+ if post_revision.post.post_type == 'question':
+ thread = post.thread
+ thread.approved = True
+ thread.save()
+ post.thread.invalidate_cached_data()
+
+ #send the signal of published revision
+ signals.post_revision_published.send(
+ None, revision = post_revision, was_approved = True
+ )
+
+@auto_now_timestamp
def flag_post(user, post, timestamp=None, cancel=False, cancel_all = False, force = False):
if cancel_all:
# remove all flags
@@ -2068,33 +2461,62 @@ def user_update_wildcard_tag_selections(
"""updates the user selection of wildcard tags
and saves the user object to the database
"""
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ assert reason in ('good', 'bad', 'subscribed')
+ else:
+ assert reason in ('good', 'bad')
+
new_tags = set(wildcards)
interesting = set(self.interesting_tags.split())
ignored = set(self.ignored_tags.split())
+ subscribed = set(self.subscribed_tags.split())
- target_set = interesting
- other_set = ignored
if reason == 'good':
- pass
+ target_set = interesting
+ other_set = ignored
elif reason == 'bad':
target_set = ignored
other_set = interesting
+ elif reason == 'subscribed':
+ target_set = subscribed
+ other_set = None
else:
assert(action == 'remove')
if action == 'add':
target_set.update(new_tags)
- other_set.difference_update(new_tags)
+ if reason in ('good', 'bad'):
+ other_set.difference_update(new_tags)
else:
target_set.difference_update(new_tags)
- other_set.difference_update(new_tags)
+ if reason in ('good', 'bad'):
+ other_set.difference_update(new_tags)
self.interesting_tags = ' '.join(interesting)
self.ignored_tags = ' '.join(ignored)
+ self.subscribed_tags = ' '.join(subscribed)
self.save()
return new_tags
+def user_edit_group_membership(self, user = None, group = None, action = None):
+ """allows one user to add another to a group
+ or remove user from group.
+
+ If when adding, the group does not exist, it will be created
+ the delete function is not symmetric, the group will remain
+ even if it becomes empty
+ """
+ if action == 'add':
+ GroupMembership.objects.get_or_create(user = user, group = group)
+ elif action == 'remove':
+ GroupMembership.objects.get(user = user, group = group).delete()
+ else:
+ raise ValueError('invalid action')
+
+def user_is_group_member(self, group = None):
+ return self.group_memberships.filter(group = group).count() == 1
+
User.add_to_class(
'add_missing_askbot_subscriptions',
user_add_missing_askbot_subscriptions
@@ -2113,7 +2535,12 @@ User.add_to_class(
)
User.add_to_class('get_absolute_url', user_get_absolute_url)
User.add_to_class('get_avatar_url', user_get_avatar_url)
+User.add_to_class('get_default_avatar_url', user_get_default_avatar_url)
User.add_to_class('get_gravatar_url', user_get_gravatar_url)
+User.add_to_class('get_marked_tags', user_get_marked_tags)
+User.add_to_class('get_marked_tag_names', user_get_marked_tag_names)
+User.add_to_class('strip_email_signature', user_strip_email_signature)
+User.add_to_class('get_groups_membership_info', user_get_groups_membership_info)
User.add_to_class('get_anonymous_name', user_get_anonymous_name)
User.add_to_class('update_avatar_type', user_update_avatar_type)
User.add_to_class('post_question', user_post_question)
@@ -2121,13 +2548,17 @@ User.add_to_class('edit_question', user_edit_question)
User.add_to_class('retag_question', user_retag_question)
User.add_to_class('post_answer', user_post_answer)
User.add_to_class('edit_answer', user_edit_answer)
+User.add_to_class('edit_post', user_edit_post)
User.add_to_class(
'post_anonymous_askbot_content',
user_post_anonymous_askbot_content
)
User.add_to_class('post_comment', user_post_comment)
User.add_to_class('edit_comment', user_edit_comment)
+User.add_to_class('create_post_reject_reason', user_create_post_reject_reason)
+User.add_to_class('edit_post_reject_reason', user_edit_post_reject_reason)
User.add_to_class('delete_post', user_delete_post)
+User.add_to_class('post_tag_wiki', user_post_tag_wiki)
User.add_to_class('visit_question', user_visit_question)
User.add_to_class('upvote', upvote)
User.add_to_class('downvote', downvote)
@@ -2151,9 +2582,13 @@ User.add_to_class('is_following_question', user_is_following_question)
User.add_to_class('mark_tags', user_mark_tags)
User.add_to_class('update_response_counts', user_update_response_counts)
User.add_to_class('can_have_strong_url', user_can_have_strong_url)
+User.add_to_class('can_post_by_email', user_can_post_by_email)
+User.add_to_class('can_post_comment', user_can_post_comment)
User.add_to_class('is_administrator', user_is_administrator)
User.add_to_class('is_administrator_or_moderator', user_is_administrator_or_moderator)
User.add_to_class('set_admin_status', user_set_admin_status)
+User.add_to_class('edit_group_membership', user_edit_group_membership)
+User.add_to_class('is_group_member', user_is_group_member)
User.add_to_class('remove_admin_status', user_remove_admin_status)
User.add_to_class('is_moderator', user_is_moderator)
User.add_to_class('is_approved', user_is_approved)
@@ -2182,6 +2617,7 @@ User.add_to_class(
'update_wildcard_tag_selections',
user_update_wildcard_tag_selections
)
+User.add_to_class('approve_post_revision', user_approve_post_revision)
#assertions
User.add_to_class('assert_can_vote_for_post', user_assert_can_vote_for_post)
@@ -2210,15 +2646,21 @@ User.add_to_class('assert_can_delete_answer', user_assert_can_delete_answer)
User.add_to_class('assert_can_delete_question', user_assert_can_delete_question)
User.add_to_class('assert_can_accept_best_answer', user_assert_can_accept_best_answer)
User.add_to_class(
- 'assert_can_unaccept_best_answer',
- user_assert_can_unaccept_best_answer
- )
+ 'assert_can_unaccept_best_answer',
+ user_assert_can_unaccept_best_answer
+)
+User.add_to_class(
+ 'assert_can_approve_post_revision',
+ user_assert_can_approve_post_revision
+)
-#todo: move this to askbot/utils ??
+#todo: move this to askbot/mail ?
def format_instant_notification_email(
to_user = None,
from_user = None,
post = None,
+ reply_address = None,
+ alt_reply_address = None,
update_type = None,
template = None,
):
@@ -2244,19 +2686,19 @@ def format_instant_notification_email(
)
if update_type == 'question_comment':
- assert(isinstance(post, Comment))
- assert(isinstance(post.content_object, Question))
+ assert(isinstance(post, Post) and post.is_comment())
+ assert(post.parent and post.parent.is_question())
elif update_type == 'answer_comment':
- assert(isinstance(post, Comment))
- assert(isinstance(post.content_object, Answer))
+ assert(isinstance(post, Post) and post.is_comment())
+ assert(post.parent and post.parent.is_answer())
elif update_type == 'answer_update':
- assert(isinstance(post, Answer))
+ assert(isinstance(post, Post) and post.is_answer())
elif update_type == 'new_answer':
- assert(isinstance(post, Answer))
+ assert(isinstance(post, Post) and post.is_answer())
elif update_type == 'question_update':
- assert(isinstance(post, Question))
+ assert(isinstance(post, Post) and post.is_question())
elif update_type == 'new_question':
- assert(isinstance(post, Question))
+ assert(isinstance(post, Post) and post.is_question())
else:
raise ValueError('unexpected update_type %s' % update_type)
@@ -2265,43 +2707,131 @@ def format_instant_notification_email(
revisions = post.revisions.all()[:2]
assert(len(revisions) == 2)
content_preview = htmldiff(
- revisions[1].as_html(),
- revisions[0].as_html(),
- ins_start = '<b><u style="background-color:#cfc">',
- ins_end = '</u></b>',
- del_start = '<del style="color:#600;background-color:#fcc">',
- del_end = '</del>'
- )
+ sanitize_html(revisions[1].html),
+ sanitize_html(revisions[0].html),
+ ins_start = '<b><u style="background-color:#cfc">',
+ ins_end = '</u></b>',
+ del_start = '<del style="color:#600;background-color:#fcc">',
+ del_end = '</del>'
+ )
#todo: remove hardcoded style
else:
- from askbot.templatetags.extra_filters_jinja import absolutize_urls_func
- content_preview = absolutize_urls_func(post.html)
- tag_style = "white-space: nowrap; " \
- + "font-size: 11px; color: #333;" \
- + "background-color: #EEE;" \
- + "border-left: 3px solid #777;" \
- + "border-top: 1px solid #EEE;" \
- + "border-bottom: 1px solid #CCC;" \
- + "border-right: 1px solid #CCC;" \
- + "padding: 1px 8px 1px 8px;" \
- + "margin-right:3px;"
- if post.post_type == 'question':#add tags to the question
- content_preview += '<div>'
- for tag_name in post.get_tag_names():
- content_preview += '<span style="%s">%s</span>' % (tag_style, tag_name)
- content_preview += '</div>'
+ content_preview = post.format_for_email(is_leaf_post = True)
+
+ #add indented summaries for the parent posts
+ content_preview += post.format_for_email_as_parent_thread_summary()
+
+ content_preview += '<p>======= Full thread summary =======</p>'
+
+ content_preview += post.thread.format_for_email()
+
+ if post.is_comment():
+ if update_type.endswith('update'):
+ user_action = _('%(user)s edited a %(post_link)s.')
+ else:
+ user_action = _('%(user)s posted a %(post_link)s')
+ elif post.is_answer():
+ if update_type.endswith('update'):
+ user_action = _('%(user)s edited an %(post_link)s.')
+ else:
+ user_action = _('%(user)s posted an %(post_link)s.')
+ elif post.is_question():
+ if update_type.endswith('update'):
+ user_action = _('%(user)s edited a %(post_link)s.')
+ else:
+ user_action = _('%(user)s posted a %(post_link)s.')
+ else:
+ raise ValueError('unrecognized post type')
+ post_url = strip_path(site_url) + post.get_absolute_url()
+ user_url = strip_path(site_url) + from_user.get_absolute_url()
+ user_action = user_action % {
+ 'user': '<a href="%s">%s</a>' % (user_url, from_user.username),
+ 'post_link': '<a href="%s">%s</a>' % (post_url, _(post.post_type))
+ }
+
+ can_reply = to_user.can_post_by_email()
+
+ if can_reply:
+ reply_separator = const.SIMPLE_REPLY_SEPARATOR_TEMPLATE % \
+ _('To reply, PLEASE WRITE ABOVE THIS LINE.')
+ if post.post_type == 'question' and alt_reply_address:
+ data = {
+ 'addr': alt_reply_address,
+ 'subject': urllib.quote(
+ ('Re: ' + post.thread.title).encode('utf-8')
+ )
+ }
+ reply_separator += '<p>' + \
+ const.REPLY_WITH_COMMENT_TEMPLATE % data
+ reply_separator += '</p>'
+ else:
+ reply_separator = user_action
+
update_data = {
'update_author_name': from_user.username,
'receiving_user_name': to_user.username,
+ 'receiving_user_karma': to_user.reputation,
+ 'reply_by_email_karma_threshold': askbot_settings.MIN_REP_TO_POST_BY_EMAIL,
+ 'can_reply': can_reply,
'content_preview': content_preview,#post.get_snippet()
'update_type': update_type,
- 'post_url': site_url + post.get_absolute_url(),
- 'origin_post_title': origin_post.title,
+ 'post_url': post_url,
+ 'origin_post_title': origin_post.thread.title,
'user_subscriptions_url': user_subscriptions_url,
+ 'reply_separator': reply_separator
}
- subject_line = _('"%(title)s"') % {'title': origin_post.title}
- return subject_line, template.render(Context(update_data))
+ subject_line = _('"%(title)s"') % {'title': origin_post.thread.title}
+
+ content = template.render(Context(update_data))
+ if can_reply:
+ content += '<p style="font-size:8px;color:#aaa">' + \
+ reply_address + '</p>'
+
+ return subject_line, content
+
+def get_reply_to_addresses(user, post):
+ """Returns one or two email addresses that can be
+ used by a given `user` to reply to the `post`
+ the first address - always a real email address,
+ the second address is not ``None`` only for "question" posts.
+
+ When the user is notified of a new question -
+ i.e. `post` is a "quesiton", he/she
+ will need to choose - whether to give a question or a comment,
+ thus we return the second address - for the comment reply.
+
+ When the post is a "question", the first email address
+ is for posting an "answer", and when post is either
+ "comment" or "answer", the address will be for posting
+ a "comment".
+ """
+ #these variables will contain return values
+ primary_addr = django_settings.DEFAULT_FROM_EMAIL
+ secondary_addr = None
+ if user.can_post_by_email():
+ if user.reputation >= askbot_settings.MIN_REP_TO_POST_BY_EMAIL:
+
+ reply_args = {
+ 'post': post,
+ 'user': user,
+ 'reply_action': 'post_comment'
+ }
+ if post.post_type in ('answer', 'comment'):
+ reply_args['reply_action'] = 'post_comment'
+ elif post.post_type == 'question':
+ reply_args['reply_action'] = 'post_answer'
+
+ primary_addr = ReplyAddress.objects.create_new(
+ **reply_args
+ ).as_email_address()
+
+ if post.post_type == 'question':
+ reply_args['reply_action'] = 'post_comment'
+ secondary_addr = ReplyAddress.objects.create_new(
+ **reply_args
+ ).as_email_address()
+ return primary_addr, secondary_addr
#todo: action
def send_instant_notifications_about_activity_in_post(
@@ -2314,6 +2844,8 @@ def send_instant_notifications_about_activity_in_post(
newly mentioned users are carried through to reduce
database hits
"""
+ if askbot_settings.ENABLE_CONTENT_MODERATION and post.approved == False:
+ return
if recipients is None:
return
@@ -2323,33 +2855,55 @@ def send_instant_notifications_about_activity_in_post(
if update_activity.activity_type not in acceptable_types:
return
+ #calculate some variables used in the loop below
from askbot.skins.loaders import get_template
- template = get_template('instant_notification.html')
-
update_type_map = const.RESPONSE_ACTIVITY_TYPE_MAP_FOR_TEMPLATES
update_type = update_type_map[update_activity.activity_type]
-
origin_post = post.get_origin_post()
+ headers = mail.thread_headers(
+ post,
+ origin_post,
+ update_activity.activity_type
+ )
+ #send email for all recipients
for user in recipients:
+ if user.is_blocked():
+ continue
+
+ reply_address, alt_reply_address = get_reply_to_addresses(user, post)
+
subject_line, body_text = format_instant_notification_email(
- to_user = user,
- from_user = update_activity.user,
- post = post,
- update_type = update_type,
- template = template,
- )
- #todo: this could be packaged as an "action" - a bundle
- #of executive function with the activity log recording
+ to_user = user,
+ from_user = update_activity.user,
+ post = post,
+ reply_address = reply_address,
+ alt_reply_address = alt_reply_address,
+ update_type = update_type,
+ template = get_template('instant_notification.html')
+ )
+
+ headers['Reply-To'] = reply_address
mail.send_mail(
subject_line = subject_line,
body_text = body_text,
recipient_list = [user.email],
related_object = origin_post,
activity_type = const.TYPE_ACTIVITY_EMAIL_UPDATE_SENT,
- headers = mail.thread_headers(post, origin_post, update_activity.activity_type)
+ headers = headers
)
+def notify_author_of_published_revision(
+ revision = None, was_approved = None, **kwargs
+):
+ """notifies author about approved post revision,
+ assumes that we have the very first revision
+ """
+ #only email about first revision
+ if revision.should_notify_author_about_publishing(was_approved):
+ from askbot.tasks import notify_author_of_published_revision_celery_task
+ notify_author_of_published_revision_celery_task.delay(revision)
+
#todo: move to utils
def calculate_gravatar_hash(instance, **kwargs):
@@ -2371,7 +2925,15 @@ def record_post_update_activity(
):
"""called upon signal askbot.models.signals.post_updated
which is sent at the end of save() method in posts
+
+ this handler will set notifications about the post
"""
+ if post.needs_moderation():
+ #do not give notifications yet
+ #todo: it is possible here to trigger
+ #moderation email alerts
+ return
+
assert(timestamp != None)
assert(updated_by != None)
if newly_mentioned_users is None:
@@ -2388,14 +2950,6 @@ def record_post_update_activity(
created = created,
diff = diff,
)
- #non-celery version
- #tasks.record_post_update(
- # post = post,
- # newly_mentioned_users = newly_mentioned_users,
- # updated_by = updated_by,
- # timestamp = timestamp,
- # created = created,
- #)
def record_award_event(instance, created, **kwargs):
@@ -2432,6 +2986,8 @@ def notify_award_message(instance, created, **kwargs):
"""
Notify users when they have been awarded badges by using Django message.
"""
+ if askbot_settings.BADGES_MODE != 'public':
+ return
if created:
user = instance.user
@@ -2451,17 +3007,22 @@ def record_answer_accepted(instance, created, **kwargs):
when answer is accepted, we record this for question author
- who accepted it.
"""
- if not created and instance.accepted:
+ if instance.post_type != 'answer':
+ return
+
+ question = instance.thread._question_post()
+
+ if not created and instance.accepted():
activity = Activity(
- user=instance.question.author,
+ user=question.author,
active_at=datetime.datetime.now(),
- content_object=instance,
+ content_object=question,
activity_type=const.TYPE_ACTIVITY_MARK_ANSWER,
- question=instance.question
+ question=question
)
activity.save()
recipients = instance.get_author_list(
- exclude_list = [instance.question.author]
+ exclude_list = [question.author]
)
activity.add_recipients(recipients)
@@ -2470,7 +3031,7 @@ def record_user_visit(user, timestamp, **kwargs):
when user visits any pages, we update the last_seen and
consecutive_days_visit_count
"""
- prev_last_seen = user.last_seen
+ prev_last_seen = user.last_seen or datetime.datetime.now()
user.last_seen = timestamp
if (user.last_seen - prev_last_seen).days == 1:
user.consecutive_days_visit_count += 1
@@ -2480,7 +3041,8 @@ def record_user_visit(user, timestamp, **kwargs):
context_object = user,
timestamp = timestamp
)
- user.save()
+ #somehow it saves on the query as compared to user.save()
+ User.objects.filter(id = user.id).update(last_seen = timestamp)
def record_vote(instance, created, **kwargs):
@@ -2523,10 +3085,12 @@ def record_delete_question(instance, delete_by, **kwargs):
"""
when user deleted the question
"""
- if instance.__class__ == "Question":
+ if instance.post_type == 'question':
activity_type = const.TYPE_ACTIVITY_DELETE_QUESTION
- else:
+ elif instance.post_type == 'answer':
activity_type = const.TYPE_ACTIVITY_DELETE_ANSWER
+ else:
+ return
activity = Activity(
user=delete_by,
@@ -2551,10 +3115,7 @@ def record_flag_offensive(instance, mark_by, **kwargs):
# recipients = instance.get_author_list(
# exclude_list = [mark_by]
# )
- recipients = User.objects.filter(
- models.Q(is_superuser=True) | models.Q(status='m')
- )
- activity.add_recipients(recipients)
+ activity.add_recipients(get_admins_and_moderators())
def remove_flag_offensive(instance, mark_by, **kwargs):
"Remove flagging activity"
@@ -2570,7 +3131,7 @@ def remove_flag_offensive(instance, mark_by, **kwargs):
activity.delete()
-def record_update_tags(question, tags, user, timestamp, **kwargs):
+def record_update_tags(thread, tags, user, timestamp, **kwargs):
"""
This function sends award badges signal on each updated tag
the badges that respond to the 'ta
@@ -2583,6 +3144,8 @@ def record_update_tags(question, tags, user, timestamp, **kwargs):
timestamp = timestamp
)
+ question = thread._question_post()
+
activity = Activity(
user=user,
active_at=datetime.datetime.now(),
@@ -2602,10 +3165,10 @@ def record_favorite_question(instance, created, **kwargs):
active_at=datetime.datetime.now(),
content_object=instance,
activity_type=const.TYPE_ACTIVITY_FAVORITE,
- question=instance.question
+ question=instance.thread._question_post()
)
activity.save()
- recipients = instance.question.get_author_list(
+ recipients = instance.thread._question_post().get_author_list(
exclude_list = [instance.user]
)
activity.add_recipients(recipients)
@@ -2619,14 +3182,69 @@ def record_user_full_updated(instance, **kwargs):
)
activity.save()
+def send_respondable_email_validation_message(
+ user = None, subject_line = None, data = None, template_name = None
+):
+ """sends email validation message to the user
+
+ We validate email by getting user's reply
+ to the validation message by email, which also gives
+ an opportunity to extract user's email signature.
+ """
+ reply_address = ReplyAddress.objects.create_new(
+ user = user,
+ reply_action = 'validate_email'
+ )
+ data['email_code'] = reply_address.address
+
+ from askbot.skins.loaders import get_template
+ template = get_template(template_name)
+ body_text = template.render(Context(data))
+
+ reply_to_address = 'welcome-%s@%s' % (
+ reply_address.address,
+ askbot_settings.REPLY_BY_EMAIL_HOSTNAME
+ )
+
+ mail.send_mail(
+ subject_line = subject_line,
+ body_text = body_text,
+ recipient_list = [user.email, ],
+ activity_type = const.TYPE_ACTIVITY_VALIDATION_EMAIL_SENT,
+ headers = {'Reply-To': reply_to_address}
+ )
+
+
+def send_welcome_email(user, **kwargs):
+ """sends welcome email to the newly created user
+
+ todo: second branch should send email with a simple
+ clickable link.
+ """
+ if askbot_settings.REPLY_BY_EMAIL:#with this on we also collect signature
+ data = {
+ 'site_name': askbot_settings.APP_SHORT_NAME
+ }
+ send_respondable_email_validation_message(
+ user = user,
+ subject_line = _('Welcome to %(site_name)s') % data,
+ data = data,
+ template_name = 'email/welcome_lamson_on.html'
+ )
+
+
def complete_pending_tag_subscriptions(sender, request, *args, **kwargs):
"""save pending tag subscriptions saved in the session"""
if 'subscribe_for_tags' in request.session:
(pure_tag_names, wildcards) = request.session.pop('subscribe_for_tags')
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ reason = 'subscribed'
+ else:
+ reason = 'good'
request.user.mark_tags(
pure_tag_names,
wildcards,
- reason = 'good',
+ reason = reason,
action = 'add'
)
request.user.message_set.create(
@@ -2659,11 +3277,23 @@ def set_user_avatar_type_flag(instance, created, **kwargs):
def update_user_avatar_type_flag(instance, **kwargs):
instance.user.update_avatar_type()
-
def make_admin_if_first_user(instance, **kwargs):
+ """first user automatically becomes an administrator
+ the function is run only once in the interpreter session
+ """
+ import sys
+ #have to check sys.argv to satisfy the test runner
+ #which fails with the cache-based skipping
+ #for real the setUp() code in the base test case must
+ #clear the cache!!!
+ if 'test' not in sys.argv and cache.cache.get('admin-created'):
+ #no need to hit the database every time!
+ return
user_count = User.objects.all().count()
if user_count == 0:
instance.set_admin_status()
+ cache.cache.set('admin-created', True)
+
#signal for User model save changes
django_signals.pre_save.connect(make_admin_if_first_user, sender=User)
@@ -2671,49 +3301,31 @@ django_signals.pre_save.connect(calculate_gravatar_hash, sender=User)
django_signals.post_save.connect(add_missing_subscriptions, sender=User)
django_signals.post_save.connect(record_award_event, sender=Award)
django_signals.post_save.connect(notify_award_message, sender=Award)
-django_signals.post_save.connect(record_answer_accepted, sender=Answer)
+django_signals.post_save.connect(record_answer_accepted, sender=Post)
django_signals.post_save.connect(record_vote, sender=Vote)
-django_signals.post_save.connect(
- record_favorite_question,
- sender=FavoriteQuestion
- )
+django_signals.post_save.connect(record_favorite_question, sender=FavoriteQuestion)
if 'avatar' in django_settings.INSTALLED_APPS:
from avatar.models import Avatar
- django_signals.post_save.connect(
- set_user_avatar_type_flag,
- sender=Avatar
- )
- django_signals.post_delete.connect(
- update_user_avatar_type_flag,
- sender=Avatar
- )
+ django_signals.post_save.connect(set_user_avatar_type_flag,sender=Avatar)
+ django_signals.post_delete.connect(update_user_avatar_type_flag, sender=Avatar)
django_signals.post_delete.connect(record_cancel_vote, sender=Vote)
#change this to real m2m_changed with Django1.2
-signals.delete_question_or_answer.connect(record_delete_question, sender=Question)
-signals.delete_question_or_answer.connect(record_delete_question, sender=Answer)
-signals.flag_offensive.connect(record_flag_offensive, sender=Question)
-signals.flag_offensive.connect(record_flag_offensive, sender=Answer)
-signals.remove_flag_offensive.connect(remove_flag_offensive, sender=Question)
-signals.remove_flag_offensive.connect(remove_flag_offensive, sender=Answer)
+signals.delete_question_or_answer.connect(record_delete_question, sender=Post)
+signals.flag_offensive.connect(record_flag_offensive, sender=Post)
+signals.remove_flag_offensive.connect(remove_flag_offensive, sender=Post)
signals.tags_updated.connect(record_update_tags)
+signals.user_registered.connect(send_welcome_email)
signals.user_updated.connect(record_user_full_updated, sender=User)
signals.user_logged_in.connect(complete_pending_tag_subscriptions)#todo: add this to fake onlogin middleware
signals.user_logged_in.connect(post_anonymous_askbot_content)
-signals.post_updated.connect(
- record_post_update_activity,
- sender=Comment
- )
-signals.post_updated.connect(
- record_post_update_activity,
- sender=Answer
- )
-signals.post_updated.connect(
- record_post_update_activity,
- sender=Question
- )
+signals.post_updated.connect(record_post_update_activity)
+
+#probably we cannot use post-save here the point of this is
+#to tell when the revision becomes publicly visible, not when it is saved
+signals.post_revision_published.connect(notify_author_of_published_revision)
signals.site_visited.connect(record_user_visit)
#set up a possibility for the users to follow others
@@ -2726,19 +3338,20 @@ except ImportError:
__all__ = [
'signals',
- 'Question',
+ 'Thread',
+
'QuestionView',
'FavoriteQuestion',
'AnonymousQuestion',
- 'Answer',
'AnonymousAnswer',
+ 'Post',
'PostRevision',
'Tag',
- 'Comment',
'Vote',
+ 'PostFlagReason',
'MarkedTag',
'BadgeData',
@@ -2748,9 +3361,13 @@ __all__ = [
'Activity',
'ActivityAuditStatus',
'EmailFeedSetting',
- #'AuthKeyUserAssociation',
+ 'GroupMembership',
+ 'GroupProfile',
'User',
- 'get_model'
+ 'ReplyAddress',
+
+ 'get_model',
+ 'get_admins_and_moderators'
]
diff --git a/askbot/models/answer.py b/askbot/models/answer.py
deleted file mode 100644
index a01b6e81..00000000
--- a/askbot/models/answer.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import datetime
-from django.db import models
-from askbot.models.base import AnonymousContent
-from askbot.models import content
-from askbot import const
-
-class AnswerManager(models.Manager):
- def create_new(
- self,
- question=None,
- author=None,
- added_at=None,
- wiki=False,
- text='',
- email_notify=False
- ):
-
- answer = Answer(
- question = question,
- author = author,
- added_at = added_at,
- wiki = wiki,
- text = text,
- #.html field is denormalized by the save() call
- )
- if answer.wiki:
- answer.last_edited_by = answer.author
- answer.last_edited_at = added_at
- answer.wikified_at = added_at
-
- answer.parse_and_save(author = author)
-
- answer.add_revision(
- author = author,
- revised_at = added_at,
- text = text,
- comment = const.POST_STATUS['default_version'],
- )
-
- #update question data
- question.last_activity_at = added_at
- question.last_activity_by = author
- question.answer_count +=1
- question.save()
-
- #set notification/delete
- if email_notify:
- if author not in question.followed_by.all():
- question.followed_by.add(author)
- else:
- #not sure if this is necessary. ajax should take care of this...
- try:
- question.followed_by.remove(author)
- except:
- pass
- return answer
-
- #todo: I think this method is not being used anymore, I'll just comment it for now
-# def get_author_list(self, **kwargs):
-# authors = set()
-# for answer in self:
-# authors.update(answer.get_author_list(**kwargs))
-# return list(authors)
-
- #todo: I think this method is not being used anymore, I'll just comment it for now
- #def get_answers_from_questions(self, user_id):
- # """
- # Retrieves visibile answers for the given question. Which are not included own answers
- # """
- # cursor = connection.cursor()
- # cursor.execute(self.GET_ANSWERS_FROM_USER_QUESTIONS, [user_id, user_id])
- # return cursor.fetchall()
-
-class Answer(content.Content):
- post_type = 'answer'
- question = models.ForeignKey('Question', related_name='answers')
- #todo: probably remove these denormalized fields?
- accepted = models.BooleanField(default=False)
- accepted_at = models.DateTimeField(null=True, blank=True)
- #todo: we'll need to add "accepted_by" b/c sometimes non-askers can accept
-
- objects = AnswerManager()
-
- class Meta(content.Content.Meta):
- db_table = u'answer'
-
- is_anonymous = False #answers are never anonymous - may change
-
-
-class AnonymousAnswer(AnonymousContent):
- question = models.ForeignKey('Question', related_name='anonymous_answers')
-
- def publish(self,user):
- added_at = datetime.datetime.now()
- Answer.objects.create_new(question=self.question,wiki=self.wiki,
- added_at=added_at,text=self.text,
- author=user)
- self.delete()
diff --git a/askbot/models/badges.py b/askbot/models/badges.py
index 5e56b499..61149df3 100644
--- a/askbot/models/badges.py
+++ b/askbot/models/badges.py
@@ -24,8 +24,8 @@ from django.utils.translation import ugettext as _
from django.dispatch import Signal
from askbot.models.repute import BadgeData, Award
from askbot.models.user import Activity
-from askbot.models.meta import Comment
from askbot.models.question import FavoriteQuestion as Fave#name collision
+from askbot.models.post import Post
from askbot import const
from askbot.conf import settings as askbot_settings
from askbot.utils.decorators import auto_now_timestamp
@@ -265,7 +265,7 @@ class SelfLearner(Badge):
return False
min_upvotes = askbot_settings.SELF_LEARNER_BADGE_MIN_UPVOTES
- question = context_object.question
+ question = context_object.thread._question_post()
answer = context_object
if question.author == answer.author and answer.score >= min_upvotes:
@@ -404,7 +404,7 @@ class FrequentedQuestion(Badge):
context_object = None, timestamp = None):
if context_object.post_type != 'question':
return False
- if context_object.view_count >= self.min_views:
+ if context_object.thread.view_count >= self.min_views:
return self.award(context_object.author, context_object, timestamp)
return False
@@ -461,7 +461,7 @@ class Scholar(Badge):
if context_object.post_type != 'answer':
return False
answer = context_object
- if answer.question.author != actor:
+ if answer.thread._question_post().author != actor:
return False
return self.award(actor, context_object, timestamp)
@@ -485,7 +485,7 @@ class VotedAcceptedAnswer(Badge):
if context_object.post_type != 'answer':
return None
answer = context_object
- if answer.score >= self.min_votes and answer.accepted:
+ if answer.score >= self.min_votes and answer.accepted():
return self.award(answer.author, answer, timestamp)
class Enlightened(VotedAcceptedAnswer):
@@ -533,7 +533,7 @@ class Necromancer(Badge):
if context_object.post_type != 'answer':
return False
answer = context_object
- question = answer.question
+ question = answer.thread._question_post()
delta = datetime.timedelta(askbot_settings.NECROMANCER_BADGE_MIN_DELAY)
min_score = askbot_settings.NECROMANCER_BADGE_MIN_UPVOTES
if answer.added_at - question.added_at >= delta \
@@ -674,7 +674,7 @@ class FavoriteTypeBadge(Badge):
question = context_object
#model FavoriteQuestion imported under alias of Fave
count = Fave.objects.filter(
- question = question
+ thread = question.thread
).exclude(
user = question.author
).count()
@@ -739,7 +739,7 @@ class Commentator(Badge):
def consider_award(self, actor = None,
context_object = None, timestamp = None):
- num_comments = Comment.objects.filter(user = actor).count()
+ num_comments = Post.objects.get_comments().filter(author=actor).count()
if num_comments >= askbot_settings.COMMENTATOR_BADGE_MIN_COMMENTS:
return self.award(actor, context_object, timestamp)
return False
@@ -762,9 +762,7 @@ class Taxonomist(Badge):
tag = context_object
taxonomist_threshold = askbot_settings.TAXONOMIST_BADGE_MIN_USE_COUNT
- #the "-1" is used because tag counts are updated in a bulk query
- #that does not update the value in the python object
- if tag.used_count == taxonomist_threshold - 1:
+ if tag.used_count == taxonomist_threshold:
return self.award(tag.created_by, tag, timestamp)
return False
@@ -880,6 +878,11 @@ def init_badges():
#from the __init__ function?
for key in BADGES.keys():
get_badge(key).get_stored_data()
+ #remove any badges from the database
+ #that are no longer in the BADGES dictionary
+ BadgeData.objects.exclude(
+ slug__in = map(slugify, BADGES.keys())
+ ).delete()
award_badges_signal = Signal(
providing_args=[
diff --git a/askbot/models/base.py b/askbot/models/base.py
index 5ac2ac7a..b3a12fbf 100644
--- a/askbot/models/base.py
+++ b/askbot/models/base.py
@@ -1,161 +1,6 @@
import datetime
-import cgi
-import logging
-
from django.db import models
-from django.utils.html import strip_tags
from django.contrib.auth.models import User
-from django.contrib.contenttypes import generic
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.sitemaps import ping_google
-
-#todo: maybe merge askbot.utils.markup and forum.utils.html
-from askbot.utils import markup
-from askbot.utils.diff import textDiff as htmldiff
-from askbot.utils.html import sanitize_html
-from django.utils import html
-
-
-#todo: following methods belong to a future common post class
-def parse_post_text(post):
- """typically post has a field to store raw source text
- in comment it is called .comment, in Question and Answer it is
- called .text
- also there is another field called .html (consistent across models)
- so the goal of this function is to render raw text into .html
- and extract any metadata given stored in source (currently
- this metadata is limited by twitter style @mentions
- but there may be more in the future
-
- function returns a dictionary with the following keys
- html
- newly_mentioned_users - list of <User> objects
- removed_mentions - list of mention <Activity> objects - for removed ones
- """
-
- text = post.get_text()
-
- if post._escape_html:
- text = cgi.escape(text)
-
- if post._urlize:
- text = html.urlize(text)
-
- if post._use_markdown:
- text = sanitize_html(markup.get_parser().convert(text))
-
- #todo, add markdown parser call conditional on
- #post.use_markdown flag
- post_html = text
- mentioned_authors = list()
- removed_mentions = list()
- if '@' in text:
- op = post.get_origin_post()
- anticipated_authors = op.get_author_list(
- include_comments = True,
- recursive = True
- )
-
- extra_name_seeds = markup.extract_mentioned_name_seeds(text)
-
- extra_authors = set()
- for name_seed in extra_name_seeds:
- extra_authors.update(User.objects.filter(
- username__istartswith = name_seed
- )
- )
-
- #it is important to preserve order here so that authors of post
- #get mentioned first
- anticipated_authors += list(extra_authors)
-
- mentioned_authors, post_html = markup.mentionize_text(
- text,
- anticipated_authors
- )
-
- #find mentions that were removed and identify any previously
- #entered mentions so that we can send alerts on only new ones
- from askbot.models.user import Activity
- if post.pk is not None:
- #only look for previous mentions if post was already saved before
- prev_mention_qs = Activity.objects.get_mentions(
- mentioned_in = post
- )
- new_set = set(mentioned_authors)
- for prev_mention in prev_mention_qs:
-
- user = prev_mention.get_mentioned_user()
- if user is None:
- continue
- if user in new_set:
- #don't report mention twice
- new_set.remove(user)
- else:
- removed_mentions.append(prev_mention)
- mentioned_authors = list(new_set)
-
- data = {
- 'html': post_html,
- 'newly_mentioned_users': mentioned_authors,
- 'removed_mentions': removed_mentions,
- }
- return data
-
-#todo: when models are merged, it would be great to remove author parameter
-def parse_and_save_post(post, author = None, **kwargs):
- """generic method to use with posts to be used prior to saving
- post edit or addition
- """
-
- assert(author is not None)
-
- last_revision = post.html
- data = post.parse()
-
- post.html = data['html']
- newly_mentioned_users = set(data['newly_mentioned_users']) - set([author])
- removed_mentions = data['removed_mentions']
-
- #a hack allowing to save denormalized .summary field for questions
- if hasattr(post, 'summary'):
- post.summary = strip_tags(post.html)[:120]
-
- #delete removed mentions
- for rm in removed_mentions:
- rm.delete()
-
- created = post.pk is None
-
- #this save must precede saving the mention activity
- #because generic relation needs primary key of the related object
- super(post.__class__, post).save(**kwargs)
- if last_revision:
- diff = htmldiff(last_revision, post.html)
- else:
- diff = post.get_snippet()
-
- timestamp = post.get_time_of_last_edit()
-
- #todo: this is handled in signal because models for posts
- #are too spread out
- from askbot.models import signals
- signals.post_updated.send(
- post = post,
- updated_by = author,
- newly_mentioned_users = newly_mentioned_users,
- timestamp = timestamp,
- created = created,
- diff = diff,
- sender = post.__class__
- )
-
- try:
- from askbot.conf import settings as askbot_settings
- if askbot_settings.GOOGLE_SITEMAP_CODE != '':
- ping_google()
- except Exception:
- logging.debug('cannot ping google - did you register with them?')
class BaseQuerySetManager(models.Manager):
"""a base class that allows chainable qustom filters
@@ -183,45 +28,21 @@ class BaseQuerySetManager(models.Manager):
>>> objects = SomeManager()
"""
def __getattr__(self, attr, *args):
+ ## The following two lines fix the problem from this ticket:
+ ## https://code.djangoproject.com/ticket/15062#comment:6
+ ## https://code.djangoproject.com/changeset/15220
+ ## Queryset.only() seems to suffer from that on some occasions
+ if attr.startswith('_'):
+ raise AttributeError
+ ##
try:
return getattr(self.__class__, attr, *args)
except AttributeError:
return getattr(self.get_query_set(), attr, *args)
-class UserContent(models.Model):
- user = models.ForeignKey(User, related_name='%(class)ss')
-
- class Meta:
- abstract = True
- app_label = 'askbot'
-
-
-class MetaContent(models.Model):
- """
- Base class for Vote and Comment
- """
- content_type = models.ForeignKey(ContentType)
- object_id = models.PositiveIntegerField()
- content_object = generic.GenericForeignKey('content_type', 'object_id')
-
- class Meta:
- abstract = True
- app_label = 'askbot'
-
-class DeletableContent(models.Model):
- deleted = models.BooleanField(default=False)
- deleted_at = models.DateTimeField(null=True, blank=True)
- deleted_by = models.ForeignKey(User, null=True, blank=True, related_name='deleted_%(class)ss')
-
- class Meta:
- abstract = True
- app_label = 'askbot'
-
class AnonymousContent(models.Model):
- """
- Base class for AnonymousQuestion and AnonymousAnswer
- """
+ """Base class for AnonymousQuestion and AnonymousAnswer"""
session_key = models.CharField(max_length=40) #session id for anonymous questions
wiki = models.BooleanField(default=False)
added_at = models.DateTimeField(default=datetime.datetime.now)
diff --git a/askbot/models/content.py b/askbot/models/content.py
deleted file mode 100644
index f2645cc2..00000000
--- a/askbot/models/content.py
+++ /dev/null
@@ -1,826 +0,0 @@
-import datetime
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.contenttypes import generic
-from django.contrib.contenttypes.models import ContentType
-from django.core import urlresolvers
-from django.db import models
-from django.utils import html as html_utils
-from django.utils.datastructures import SortedDict
-from django.utils.translation import ugettext as _
-from django.utils.http import urlquote as django_urlquote
-from django.core import exceptions as django_exceptions
-
-from askbot.utils.slug import slugify
-from askbot import const
-from askbot.models.meta import Comment, Vote
-from askbot.models.user import EmailFeedSetting
-from askbot.models.tag import Tag, MarkedTag, tags_match_some_wildcard
-from askbot.models.post import PostRevision
-from askbot.models.base import parse_post_text, parse_and_save_post
-from askbot.conf import settings as askbot_settings
-from askbot import exceptions
-
-class Content(models.Model):
- """
- Base class for Question and Answer
- """
- author = models.ForeignKey(User, related_name='%(class)ss')
- added_at = models.DateTimeField(default=datetime.datetime.now)
-
- deleted = models.BooleanField(default=False)
- deleted_at = models.DateTimeField(null=True, blank=True)
- deleted_by = models.ForeignKey(User, null=True, blank=True, related_name='deleted_%(class)ss')
-
- wiki = models.BooleanField(default=False)
- wikified_at = models.DateTimeField(null=True, blank=True)
-
- locked = models.BooleanField(default=False)
- locked_by = models.ForeignKey(User, null=True, blank=True, related_name='locked_%(class)ss')
- locked_at = models.DateTimeField(null=True, blank=True)
-
- score = models.IntegerField(default=0)
- vote_up_count = models.IntegerField(default=0)
- vote_down_count = models.IntegerField(default=0)
-
- comment_count = models.PositiveIntegerField(default=0)
- offensive_flag_count = models.SmallIntegerField(default=0)
-
- last_edited_at = models.DateTimeField(null=True, blank=True)
- last_edited_by = models.ForeignKey(User, null=True, blank=True, related_name='last_edited_%(class)ss')
-
- html = models.TextField(null=True)#html rendition of the latest revision
- text = models.TextField(null=True)#denormalized copy of latest revision
- comments = generic.GenericRelation(Comment)
- votes = generic.GenericRelation(Vote)
-
- _use_markdown = True
- _escape_html = False #markdow does the escaping
- _urlize = False
-
- class Meta:
- abstract = True
- app_label = 'askbot'
-
- parse = parse_post_text
- parse_and_save = parse_and_save_post
-
- def __unicode__(self):
- if self.is_question():
- return self.title
- elif self.is_answer():
- return self.html
- raise NotImplementedError
-
- def get_absolute_url(self, no_slug = False):
- if self.is_answer():
- return u'%(base)s%(slug)s?answer=%(id)d#answer-container-%(id)d' % \
- {
- 'base': urlresolvers.reverse('question', args=[self.question.id]),
- 'slug': django_urlquote(slugify(self.question.title)),
- 'id': self.id
- }
- elif self.is_question():
- url = urlresolvers.reverse('question', args=[self.id])
- if no_slug == True:
- return url
- else:
- return url + django_urlquote(self.slug)
- raise NotImplementedError
-
-
- def is_answer(self):
- return self.post_type == 'answer'
-
- def is_question(self):
- return self.post_type == 'question'
-
- def save(self, *args, **kwargs):
- models.Model.save(self, *args, **kwargs) # TODO: figure out how to use super() here
- if self.is_answer() and 'postgres' in settings.DATABASE_ENGINE:
- #hit the database to trigger update of full text search vector
- self.question.save()
-
-
- def get_comments(self, visitor = None):
- """returns comments for a post, annotated with
- ``upvoted_by_user`` parameter, if visitor is logged in
- otherwise, returns query set for all comments to a given post
- """
- if visitor.is_anonymous():
- return self.comments.all().order_by('id')
- else:
- comment_content_type = ContentType.objects.get_for_model(Comment)
- #a fancy query to annotate comments with the visitor votes
- comments = self.comments.extra(
- select = SortedDict([
- (
- 'upvoted_by_user',
- 'SELECT COUNT(*) from vote, comment '
- 'WHERE vote.user_id = %s AND '
- 'vote.content_type_id = %s AND '
- 'vote.object_id = comment.id',
- )
- ]),
- select_params = (visitor.id, comment_content_type.id)
- ).order_by('id')
- return comments
-
- #todo: maybe remove this wnen post models are unified
- def get_text(self):
- return self.text
-
- def get_snippet(self):
- """returns an abbreviated snippet of the content
- """
- return html_utils.strip_tags(self.html)[:120] + ' ...'
-
- def add_comment(self, comment=None, user=None, added_at=None):
- if added_at is None:
- added_at = datetime.datetime.now()
- if None in (comment ,user):
- raise Exception('arguments comment and user are required')
-
- #Comment = models.get_model('askbot','Comment')#todo: forum hardcoded
- comment = Comment(
- content_object=self,
- comment=comment,
- user=user,
- added_at=added_at
- )
- comment.parse_and_save(author = user)
- self.comment_count = self.comment_count + 1
- self.save()
-
- #tried to add this to bump updated question
- #in most active list, but it did not work
- #becase delayed email updates would be triggered
- #for cases where user did not subscribe for them
- #
- #need to redo the delayed alert sender
- #
- #origin_post = self.get_origin_post()
- #if origin_post == self:
- # self.last_activity_at = added_at
- # self.last_activity_by = user
- #else:
- # origin_post.last_activity_at = added_at
- # origin_post.last_activity_by = user
- # origin_post.save()
-
- return comment
-
- def get_global_tag_based_subscribers(
- self,
- tag_mark_reason = None,
- subscription_records = None
- ):
- """returns a list of users who either follow or "do not ignore"
- the given set of tags, depending on the tag_mark_reason
-
- ``subscription_records`` - query set of ``~askbot.models.EmailFeedSetting``
- this argument is used to reduce number of database queries
- """
- if tag_mark_reason == 'good':
- email_tag_filter_strategy = const.INCLUDE_INTERESTING
- user_set_getter = User.objects.filter
- elif tag_mark_reason == 'bad':
- email_tag_filter_strategy = const.EXCLUDE_IGNORED
- user_set_getter = User.objects.exclude
- else:
- raise ValueError('Uknown value of tag mark reason %s' % tag_mark_reason)
-
- #part 1 - find users who follow or not ignore the set of tags
- tag_names = self.get_tag_names()
- tag_selections = MarkedTag.objects.filter(
- tag__name__in = tag_names,
- reason = tag_mark_reason
- )
- subscribers = set(
- user_set_getter(
- tag_selections__in = tag_selections
- ).filter(
- notification_subscriptions__in = subscription_records
- ).filter(
- email_tag_filter_strategy = email_tag_filter_strategy
- )
- )
-
- #part 2 - find users who follow or not ignore tags via wildcard selections
- #inside there is a potentially time consuming loop
- if askbot_settings.USE_WILDCARD_TAGS:
- #todo: fix this
- #this branch will not scale well
- #because we have to loop through the list of users
- #in python
- if tag_mark_reason == 'good':
- empty_wildcard_filter = {'interesting_tags__exact': ''}
- wildcard_tags_attribute = 'interesting_tags'
- update_subscribers = lambda the_set, item: the_set.add(item)
- elif tag_mark_reason == 'bad':
- empty_wildcard_filter = {'ignored_tags__exact': ''}
- wildcard_tags_attribute = 'ignored_tags'
- update_subscribers = lambda the_set, item: the_set.discard(item)
-
- potential_wildcard_subscribers = User.objects.filter(
- notification_subscriptions__in = subscription_records
- ).filter(
- email_tag_filter_strategy = email_tag_filter_strategy
- ).exclude(
- **empty_wildcard_filter #need this to limit size of the loop
- )
- for potential_subscriber in potential_wildcard_subscribers:
- wildcard_tags = getattr(
- potential_subscriber,
- wildcard_tags_attribute
- ).split(' ')
-
- if tags_match_some_wildcard(tag_names, wildcard_tags):
- update_subscribers(subscribers, potential_subscriber)
-
- return subscribers
-
- def get_global_instant_notification_subscribers(self):
- """returns a set of subscribers to post according to tag filters
- both - subscribers who ignore tags or who follow only
- specific tags
-
- this method in turn calls several more specialized
- subscriber retrieval functions
- todo: retrieval of wildcard tag followers ignorers
- won't scale at all
- """
- subscriber_set = set()
-
- global_subscriptions = EmailFeedSetting.objects.filter(
- feed_type = 'q_all',
- frequency = 'i'
- )
-
- #segment of users who have tag filter turned off
- global_subscribers = User.objects.filter(
- email_tag_filter_strategy = const.INCLUDE_ALL
- )
- subscriber_set.update(global_subscribers)
-
- #segment of users who want emails on selected questions only
- subscriber_set.update(
- self.get_global_tag_based_subscribers(
- subscription_records = global_subscriptions,
- tag_mark_reason = 'good'
- )
- )
-
- #segment of users who want to exclude ignored tags
- subscriber_set.update(
- self.get_global_tag_based_subscribers(
- subscription_records = global_subscriptions,
- tag_mark_reason = 'bad'
- )
- )
- return subscriber_set
-
-
- def get_instant_notification_subscribers(
- self,
- potential_subscribers = None,
- mentioned_users = None,
- exclude_list = None,
- ):
- """get list of users who have subscribed to
- receive instant notifications for a given post
- this method works for questions and answers
-
- Arguments:
-
- * ``potential_subscribers`` is not used here! todo: why? - clean this out
- parameter is left for the uniformity of the interface
- (Comment method does use it)
- normally these methods would determine the list
- :meth:`~askbot.models.question.Question.get_response_recipients`
- :meth:`~askbot.models.question.Answer.get_response_recipients`
- - depending on the type of the post
- * ``mentioned_users`` - users, mentioned in the post for the first time
- * ``exclude_list`` - users who must be excluded from the subscription
-
- Users who receive notifications are:
-
- * of ``mentioned_users`` - those who subscribe for the instant
- updates on the @name mentions
- * those who follow the parent question
- * global subscribers (any personalized tag filters are applied)
- * author of the question who subscribe to instant updates
- on questions that they asked
- * authors or any answers who subsribe to instant updates
- on the questions which they answered
- """
- #print '------------------'
- #print 'in content function'
- subscriber_set = set()
- #print 'potential subscribers: ', potential_subscribers
-
- #1) mention subscribers - common to questions and answers
- if mentioned_users:
- mention_subscribers = EmailFeedSetting.objects.filter_subscribers(
- potential_subscribers = mentioned_users,
- feed_type = 'm_and_c',
- frequency = 'i'
- )
- subscriber_set.update(mention_subscribers)
-
- origin_post = self.get_origin_post()
-
- #print origin_post
-
- #2) individually selected - make sure that users
- #are individual subscribers to this question
- selective_subscribers = origin_post.followed_by.all()
- #print 'question followers are ', [s for s in selective_subscribers]
- if selective_subscribers:
- selective_subscribers = EmailFeedSetting.objects.filter_subscribers(
- potential_subscribers = selective_subscribers,
- feed_type = 'q_sel',
- frequency = 'i'
- )
- subscriber_set.update(selective_subscribers)
- #print 'selective subscribers: ', selective_subscribers
-
- #3) whole forum subscribers
- global_subscribers = origin_post.get_global_instant_notification_subscribers()
- subscriber_set.update(global_subscribers)
-
- #4) question asked by me (todo: not "edited_by_me" ???)
- question_author = origin_post.author
- if EmailFeedSetting.objects.filter(
- subscriber = question_author,
- frequency = 'i',
- feed_type = 'q_ask'
- ):
- subscriber_set.add(question_author)
-
- #4) questions answered by me -make sure is that people
- #are authors of the answers to this question
- #todo: replace this with a query set method
- answer_authors = set()
- for answer in origin_post.answers.all():
- authors = answer.get_author_list()
- answer_authors.update(authors)
-
- if answer_authors:
- answer_subscribers = EmailFeedSetting.objects.filter_subscribers(
- potential_subscribers = answer_authors,
- frequency = 'i',
- feed_type = 'q_ans',
- )
- subscriber_set.update(answer_subscribers)
- #print 'answer subscribers: ', answer_subscribers
-
- #print 'exclude_list is ', exclude_list
- subscriber_set -= set(exclude_list)
-
- #print 'final subscriber set is ', subscriber_set
- return list(subscriber_set)
-
- def get_latest_revision(self):
- return self.revisions.all().order_by('-revised_at')[0]
-
- def get_latest_revision_number(self):
- return self.get_latest_revision().revision
-
- def get_time_of_last_edit(self):
- if self.last_edited_at:
- return self.last_edited_at
- else:
- return self.added_at
-
- def get_owner(self):
- return self.author
-
- def get_author_list(
- self,
- include_comments = False,
- recursive = False,
- exclude_list = None):
-
- #todo: there may be a better way to do these queries
- authors = set()
- authors.update([r.author for r in self.revisions.all()])
- if include_comments:
- authors.update([c.user for c in self.comments.all()])
- if recursive:
- if hasattr(self, 'answers'):
- for a in self.answers.exclude(deleted = True):
- authors.update(a.get_author_list( include_comments = include_comments ) )
- if exclude_list:
- authors -= set(exclude_list)
- return list(authors)
-
- def passes_tag_filter_for_user(self, user):
-
- question = self.get_origin_post()
- if user.email_tag_filter_strategy == const.INCLUDE_INTERESTING:
- #at least some of the tags must be marked interesting
- return user.has_affinity_to_question(
- question,
- affinity_type = 'like'
- )
- elif user.email_tag_filter_strategy == const.EXCLUDE_IGNORED:
- return not user.has_affinity_to_question(
- question,
- affinity_type = 'dislike'
- )
- elif user.email_tag_filter_strategy == const.INCLUDE_ALL:
- return True
- else:
- raise ValueError(
- 'unexpected User.email_tag_filter_strategy %s' \
- % user.email_tag_filter_strategy
- )
-
- def post_get_last_update_info(self):#todo: rename this subroutine
- when = self.added_at
- who = self.author
- if self.last_edited_at and self.last_edited_at > when:
- when = self.last_edited_at
- who = self.last_edited_by
- comments = self.comments.all()
- if len(comments) > 0:
- for c in comments:
- if c.added_at > when:
- when = c.added_at
- who = c.user
- return when, who
-
- def tagname_meta_generator(self):
- return u','.join([unicode(tag) for tag in self.get_tag_names()])
-
- def get_origin_post(self):
- if self.is_answer():
- return self.question
- elif self.is_question():
- return self
- raise NotImplementedError
-
- def _repost_as_question(self, new_title = None):
- """posts answer as question, together with all the comments
- while preserving time stamps and authors
- does not delete the answer itself though
- """
- if not self.is_answer():
- raise NotImplementedError
- revisions = self.revisions.all().order_by('revised_at')
- rev0 = revisions[0]
- new_question = rev0.author.post_question(
- title = new_title,
- body_text = rev0.text,
- tags = self.question.tagnames,
- wiki = self.question.wiki,
- is_anonymous = self.question.is_anonymous,
- timestamp = rev0.revised_at
- )
- if len(revisions) > 1:
- for rev in revisions[1:]:
- rev.author.edit_question(
- question = new_question,
- body_text = rev.text,
- revision_comment = rev.summary,
- timestamp = rev.revised_at
- )
- for comment in self.comments.all():
- comment.content_object = new_question
- comment.save()
- return new_question
-
- def swap_with_question(self, new_title = None):
- """swaps answer with the question it belongs to and
- sets the title of question to ``new_title``
- """
- if not self.is_answer():
- raise NotImplementedError
- #1) make new question by using new title, tags of old question
- # and the answer body, as well as the authors of all revisions
- # and repost all the comments
- new_question = self._repost_as_question(new_title = new_title)
-
- #2) post question (all revisions and comments) as answer
- new_answer = self.question.repost_as_answer(question = new_question)
-
- #3) assign all remaining answers to the new question
- self.question.answers.update(question = new_question)
- self.question.delete()
- self.delete()
- return new_question
-
-
- def get_page_number(self, answers = None):
- """When question has many answers, answers are
- paginated. This function returns number of the page
- on which the answer will be shown, using the default
- sort order. The result may depend on the visitor."""
- if self.is_question():
- return 1
- elif self.is_answer():
- order_number = 0
- for answer in answers:
- if self == answer:
- break
- order_number += 1
- return int(order_number/const.ANSWERS_PAGE_SIZE) + 1
- raise NotImplementedError
-
- def get_user_vote(self, user):
- if not self.is_answer():
- raise NotImplementedError
-
- if user.is_anonymous():
- return None
-
- votes = self.votes.filter(user=user)
- if votes and votes.count() > 0:
- return votes[0]
- else:
- return None
-
-
- def _question__assert_is_visible_to(self, user):
- """raises QuestionHidden"""
- if self.deleted:
- message = _(
- 'Sorry, this question has been '
- 'deleted and is no longer accessible'
- )
- if user.is_anonymous():
- raise exceptions.QuestionHidden(message)
- try:
- user.assert_can_see_deleted_post(self)
- except django_exceptions.PermissionDenied:
- raise exceptions.QuestionHidden(message)
-
- def _answer__assert_is_visible_to(self, user):
- """raises QuestionHidden or AnswerHidden"""
- try:
- self.question.assert_is_visible_to(user)
- except exceptions.QuestionHidden:
- message = _(
- 'Sorry, the answer you are looking for is '
- 'no longer available, because the parent '
- 'question has been removed'
- )
- raise exceptions.QuestionHidden(message)
- if self.deleted:
- message = _(
- 'Sorry, this answer has been '
- 'removed and is no longer accessible'
- )
- if user.is_anonymous():
- raise exceptions.AnswerHidden(message)
- try:
- user.assert_can_see_deleted_post(self)
- except django_exceptions.PermissionDenied:
- raise exceptions.AnswerHidden(message)
-
- def assert_is_visible_to(self, user):
- if self.is_question():
- return self._question__assert_is_visible_to(user)
- elif self.is_answer():
- return self._answer__assert_is_visible_to(user)
- raise NotImplementedError
-
- def get_updated_activity_data(self, created = False):
- if self.is_answer():
- #todo: simplify this to always return latest revision for the second
- #part
- if created:
- return const.TYPE_ACTIVITY_ANSWER, self
- else:
- latest_revision = self.get_latest_revision()
- return const.TYPE_ACTIVITY_UPDATE_ANSWER, latest_revision
- elif self.is_question():
- if created:
- return const.TYPE_ACTIVITY_ASK_QUESTION, self
- else:
- latest_revision = self.get_latest_revision()
- return const.TYPE_ACTIVITY_UPDATE_QUESTION, latest_revision
- raise NotImplementedError
-
- def get_tag_names(self):
- if self.is_question():
- """Creates a list of Tag names from the ``tagnames`` attribute."""
- return self.tagnames.split(u' ')
- elif self.is_answer():
- """return tag names on the question"""
- return self.question.get_tag_names()
- raise NotImplementedError
-
-
- def _answer__apply_edit(self, edited_at=None, edited_by=None, text=None, comment=None, wiki=False):
-
- if text is None:
- text = self.get_latest_revision().text
- if edited_at is None:
- edited_at = datetime.datetime.now()
- if edited_by is None:
- raise Exception('edited_by is required')
-
- self.last_edited_at = edited_at
- self.last_edited_by = edited_by
- #self.html is denormalized in save()
- self.text = text
- #todo: bug wiki has no effect here
-
- #must add revision before saving the answer
- self.add_revision(
- author = edited_by,
- revised_at = edited_at,
- text = text,
- comment = comment
- )
-
- self.parse_and_save(author = edited_by)
-
- self.question.last_activity_at = edited_at
- self.question.last_activity_by = edited_by
- self.question.save()
-
- def _question__apply_edit(self, edited_at=None, edited_by=None, title=None,\
- text=None, comment=None, tags=None, wiki=False, \
- edit_anonymously = False):
-
- latest_revision = self.get_latest_revision()
- #a hack to allow partial edits - important for SE loader
- if title is None:
- title = self.title
- if text is None:
- text = latest_revision.text
- if tags is None:
- tags = latest_revision.tagnames
-
- if edited_by is None:
- raise Exception('parameter edited_by is required')
-
- if edited_at is None:
- edited_at = datetime.datetime.now()
-
- # Update the Question itself
- self.title = title
- self.last_edited_at = edited_at
- self.last_activity_at = edited_at
- self.last_edited_by = edited_by
- self.last_activity_by = edited_by
- self.tagnames = tags
- self.text = text
- self.is_anonymous = edit_anonymously
-
- #wiki is an eternal trap whence there is no exit
- if self.wiki == False and wiki == True:
- self.wiki = True
-
- # Update the Question tag associations
- if latest_revision.tagnames != tags:
- self.update_tags(tagnames = tags, user = edited_by, timestamp = edited_at)
-
- # Create a new revision
- self.add_revision(
- author = edited_by,
- text = text,
- revised_at = edited_at,
- is_anonymous = edit_anonymously,
- comment = comment,
- )
-
- self.parse_and_save(author = edited_by)
-
- def apply_edit(self, *kargs, **kwargs):
- if self.is_answer():
- return self._answer__apply_edit(*kargs, **kwargs)
- elif self.is_question():
- return self._question__apply_edit(*kargs, **kwargs)
- raise NotImplementedError
-
- def _answer__add_revision(self, author=None, revised_at=None, text=None, comment=None):
- #todo: this may be identical to Question.add_revision
- if None in (author, revised_at, text):
- raise Exception('arguments author, revised_at and text are required')
- rev_no = self.revisions.all().count() + 1
- if comment in (None, ''):
- if rev_no == 1:
- comment = const.POST_STATUS['default_version']
- else:
- comment = 'No.%s Revision' % rev_no
- return PostRevision.objects.create_answer_revision(
- answer=self,
- author=author,
- revised_at=revised_at,
- text=text,
- summary=comment,
- revision=rev_no
- )
-
- def _question__add_revision(
- self,
- author = None,
- is_anonymous = False,
- text = None,
- comment = None,
- revised_at = None
- ):
- if None in (author, text, comment):
- raise Exception('author, text and comment are required arguments')
- rev_no = self.revisions.all().count() + 1
- if comment in (None, ''):
- if rev_no == 1:
- comment = const.POST_STATUS['default_version']
- else:
- comment = 'No.%s Revision' % rev_no
-
- return PostRevision.objects.create_question_revision(
- question = self,
- revision = rev_no,
- title = self.title,
- author = author,
- is_anonymous = is_anonymous,
- revised_at = revised_at,
- tagnames = self.tagnames,
- summary = comment,
- text = text
- )
-
- def add_revision(self, *kargs, **kwargs):
- if self.is_answer():
- return self._answer__add_revision(*kargs, **kwargs)
- elif self.is_question():
- return self._question__add_revision(*kargs, **kwargs)
- raise NotImplementedError
-
- def _answer__get_response_receivers(self, exclude_list = None):
- """get list of users interested in this response
- update based on their participation in the question
- activity
-
- exclude_list is required and normally should contain
- author of the updated so that he/she is not notified of
- the response
- """
- assert(exclude_list is not None)
- recipients = set()
- recipients.update(
- self.get_author_list(
- include_comments = True
- )
- )
- recipients.update(
- self.question.get_author_list(
- include_comments = True
- )
- )
- for answer in self.question.answers.all():
- recipients.update(answer.get_author_list())
-
- recipients -= set(exclude_list)
-
- return list(recipients)
-
- def _question__get_response_receivers(self, exclude_list = None):
- """returns list of users who might be interested
- in the question update based on their participation
- in the question activity
-
- exclude_list is mandatory - it normally should have the
- author of the update so the he/she is not notified about the update
- """
- assert(exclude_list != None)
- recipients = set()
- recipients.update(
- self.get_author_list(
- include_comments = True
- )
- )
- #do not include answer commenters here
- for a in self.answers.all():
- recipients.update(a.get_author_list())
-
- recipients -= set(exclude_list)
- return recipients
-
- def get_response_receivers(self, exclude_list = None):
- if self.is_answer():
- return self._answer__get_response_receivers(exclude_list)
- elif self.is_question():
- return self._question__get_response_receivers(exclude_list)
- raise NotImplementedError
-
- def get_question_title(self):
- if self.is_answer():
- return self.question.title
- elif self.is_question():
- if self.closed:
- attr = const.POST_STATUS['closed']
- elif self.deleted:
- attr = const.POST_STATUS['deleted']
- else:
- attr = None
- if attr is not None:
- return u'%s %s' % (self.title, attr)
- else:
- return self.title
- raise NotImplementedError
diff --git a/askbot/models/meta.py b/askbot/models/meta.py
deleted file mode 100644
index cbec7d33..00000000
--- a/askbot/models/meta.py
+++ /dev/null
@@ -1,323 +0,0 @@
-import datetime
-from django.contrib.contenttypes.models import ContentType
-from django.db import models
-from django.utils import html as html_utils
-from django.utils.translation import ugettext as _
-from askbot import const
-from askbot import exceptions
-from askbot.models import base
-from askbot.models.user import EmailFeedSetting
-
-class VoteManager(models.Manager):
- def get_up_vote_count_from_user(self, user):
- if user is not None:
- return self.filter(user=user, vote=1).count()
- else:
- return 0
-
- def get_down_vote_count_from_user(self, user):
- if user is not None:
- return self.filter(user=user, vote=-1).count()
- else:
- return 0
-
- def get_votes_count_today_from_user(self, user):
- if user is not None:
- today = datetime.date.today()
- return self.filter(user=user, voted_at__range=(today, today + datetime.timedelta(1))).count()
- else:
- return 0
-
-
-class Vote(base.MetaContent, base.UserContent):
- VOTE_UP = +1
- VOTE_DOWN = -1
- VOTE_CHOICES = (
- (VOTE_UP, u'Up'),
- (VOTE_DOWN, u'Down'),
- )
-
- vote = models.SmallIntegerField(choices=VOTE_CHOICES)
- voted_at = models.DateTimeField(default=datetime.datetime.now)
-
- objects = VoteManager()
-
- class Meta(base.MetaContent.Meta):
- unique_together = ('content_type', 'object_id', 'user')
- db_table = u'vote'
-
- def __unicode__(self):
- return '[%s] voted at %s: %s' %(self.user, self.voted_at, self.vote)
-
- def __int__(self):
- """1 if upvote -1 if downvote"""
- return self.vote
-
- def is_upvote(self):
- return self.vote == self.VOTE_UP
-
- def is_downvote(self):
- return self.vote == self.VOTE_DOWN
-
- def is_opposite(self, vote_type):
- assert(vote_type in (self.VOTE_UP, self.VOTE_DOWN))
- return self.vote != vote_type
-
- def cancel(self):
- """cancel the vote
- while taking into account whether vote was up
- or down
-
- return change in score on the post
- """
- #importing locally because of circular dependency
- from askbot import auth
- score_before = self.content_object.score
- if self.vote > 0:
- # cancel upvote
- auth.onUpVotedCanceled(self, self.content_object, self.user)
-
- else:
- # cancel downvote
- auth.onDownVotedCanceled(self, self.content_object, self.user)
- score_after = self.content_object.score
-
- return score_after - score_before
-
-
-#todo: move this class to content
-class Comment(base.MetaContent, base.UserContent):
- post_type = 'comment'
- comment = models.CharField(max_length = const.COMMENT_HARD_MAX_LENGTH)
- added_at = models.DateTimeField(default = datetime.datetime.now)
- html = models.CharField(max_length = const.COMMENT_HARD_MAX_LENGTH, default='')
- score = models.IntegerField(default = 0)
- offensive_flag_count = models.IntegerField(default = 0)
-
- _urlize = True
- _use_markdown = True
- _escape_html = True
- is_anonymous = False #comments are never anonymous - may change
-
- class Meta(base.MetaContent.Meta):
- ordering = ('-added_at',)
- db_table = u'comment'
-
- #these two are methods
- parse = base.parse_post_text
- parse_and_save = base.parse_and_save_post
-
- def assert_is_visible_to(self, user):
- """raises QuestionHidden or AnswerHidden"""
- try:
- self.content_object.assert_is_visible_to(user)
- except exceptions.QuestionHidden:
- message = _(
- 'Sorry, the comment you are looking for is no '
- 'longer accessible, because the parent question '
- 'has been removed'
- )
- raise exceptions.QuestionHidden(message)
- except exceptions.AnswerHidden:
- message = _(
- 'Sorry, the comment you are looking for is no '
- 'longer accessible, because the parent answer '
- 'has been removed'
- )
- raise exceptions.AnswerHidden(message)
-
- def get_origin_post(self):
- return self.content_object.get_origin_post()
-
- def get_tag_names(self):
- """return tag names of the origin question"""
- return self.get_origin_post().get_tag_names()
-
- def get_page_number(self, answers = None):
- """return page number whithin the page
- where the comment is going to appear
- answers parameter will not be used if the comment belongs
- to a question, otherwise answers list or queryset
- will be used to determine the page number"""
- return self.content_object.get_page_number(answers = answers)
-
- def get_order_number(self):
- return self.content_object.comments.filter(
- added_at__lt = self.added_at
- ).count() + 1
-
- #todo: maybe remove this wnen post models are unified
- def get_text(self):
- return self.comment
-
- def set_text(self, text):
- self.comment = text
-
- def get_snippet(self):
- """returns an abbreviated snippet of the content
- todo: remove this if comment model unites with Q&A
- """
- return html_utils.strip_tags(self.html)[:120] + ' ...'
-
- def get_owner(self):
- return self.user
-
- def get_updated_activity_data(self, created = False):
- if self.content_object.post_type == 'question':
- return const.TYPE_ACTIVITY_COMMENT_QUESTION, self
- elif self.content_object.post_type == 'answer':
- return const.TYPE_ACTIVITY_COMMENT_ANSWER, self
-
- def get_response_receivers(self, exclude_list = None):
- """Response receivers are commenters of the
- same post and the authors of the post itself.
- """
- assert(exclude_list is not None)
- users = set()
- #get authors of parent object and all associated comments
- users.update(
- self.content_object.get_author_list(
- include_comments = True,
- )
- )
- users -= set(exclude_list)
- return list(users)
-
- def get_instant_notification_subscribers(
- self,
- potential_subscribers = None,
- mentioned_users = None,
- exclude_list = None
- ):
- """get list of users who want instant notifications about comments
-
- argument potential_subscribers is required as it saves on db hits
-
- Here is the list of people who will receive the notifications:
-
- * mentioned users
- * of response receivers
- (see :meth:`~askbot.models.meta.Comment.get_response_receivers`) -
- those who subscribe for the instant
- updates on comments and @mentions
- * all who follow the question explicitly
- * all global subscribers
- (tag filtered, and subject to personalized settings)
- """
- #print 'in meta function'
- #print 'potential subscribers: ', potential_subscribers
-
- subscriber_set = set()
-
- if potential_subscribers:
- potential_subscribers = set(potential_subscribers)
- else:
- potential_subscribers = set()
-
- if mentioned_users:
- potential_subscribers.update(mentioned_users)
-
- if potential_subscribers:
- comment_subscribers = EmailFeedSetting.objects.filter_subscribers(
- potential_subscribers = potential_subscribers,
- feed_type = 'm_and_c',
- frequency = 'i'
- )
- subscriber_set.update(comment_subscribers)
- #print 'comment subscribers: ', comment_subscribers
-
- origin_post = self.get_origin_post()
- selective_subscribers = origin_post.followed_by.all()
- if selective_subscribers:
- selective_subscribers = EmailFeedSetting.objects.filter_subscribers(
- potential_subscribers = selective_subscribers,
- feed_type = 'q_sel',
- frequency = 'i'
- )
- for subscriber in selective_subscribers:
- if origin_post.passes_tag_filter_for_user(subscriber):
- subscriber_set.add(subscriber)
-
- subscriber_set.update(selective_subscribers)
- #print 'selective subscribers: ', selective_subscribers
-
- global_subscribers = origin_post.get_global_instant_notification_subscribers()
- #print 'global subscribers: ', global_subscribers
-
- subscriber_set.update(global_subscribers)
-
- #print 'exclude list is: ', exclude_list
- if exclude_list:
- subscriber_set -= set(exclude_list)
-
- #print 'final list of subscribers:', subscriber_set
-
- return list(subscriber_set)
-
- def get_time_of_last_edit(self):
- return self.added_at
-
- def delete(self, **kwargs):
- """deletes comment and concomitant response activity
- records, as well as mention records, while preserving
- integrity or response counts for the users
- """
- comment_content_type = ContentType.objects.get_for_model(self)
- comment_id = self.id
-
- #todo: implement a custom delete method on these
- #all this should pack into Activity.responses.filter( somehow ).delete()
- activity_types = const.RESPONSE_ACTIVITY_TYPES_FOR_DISPLAY
- activity_types += (const.TYPE_ACTIVITY_MENTION,)
- #todo: not very good import in models of other models
- #todo: potentially a circular import
- from askbot.models.user import Activity
- activities = Activity.objects.filter(
- content_type = comment_content_type,
- object_id = comment_id,
- activity_type__in = activity_types
- )
-
- recipients = set()
- for activity in activities:
- for user in activity.recipients.all():
- recipients.add(user)
-
- #activities need to be deleted before the response
- #counts are updated
- activities.delete()
-
- for user in recipients:
- user.update_response_counts()
-
- super(Comment,self).delete(**kwargs)
-
- def get_absolute_url(self):
- origin_post = self.get_origin_post()
- return '%(url)s?comment=%(id)d#comment-%(id)d' % \
- {'url': origin_post.get_absolute_url(), 'id':self.id}
-
- def get_latest_revision_number(self):
- return 1
-
- def is_upvoted_by(self, user):
- content_type = ContentType.objects.get_for_model(self)
- what_to_count = {
- 'user': user,
- 'object_id': self.id,
- 'content_type': content_type
- }
- return Vote.objects.filter(**what_to_count).count() > 0
-
- def is_last(self):
- """True if there are no newer comments on
- the related parent object
- """
- return Comment.objects.filter(
- added_at__gt = self.added_at,
- object_id = self.object_id,
- content_type = self.content_type
- ).count() == 0
-
- def __unicode__(self):
- return self.comment
diff --git a/askbot/models/post.py b/askbot/models/post.py
index d5c0c6df..d61c1ae2 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -1,11 +1,1638 @@
+from collections import defaultdict
+import datetime
+import operator
+import cgi
+import logging
+
+from django.utils.html import strip_tags
+from django.contrib.sitemaps import ping_google
+from django.utils import html
+from django.conf import settings
+from django.contrib.auth.models import User
+from django.core import urlresolvers
from django.db import models
+from django.utils import html as html_utils
+from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
+from django.utils.http import urlquote as django_urlquote
+from django.core import exceptions as django_exceptions
from django.core.exceptions import ValidationError
+from django.contrib.contenttypes.models import ContentType
+
+import askbot
+from askbot.utils.slug import slugify
+from askbot import const
+from askbot.models.user import EmailFeedSetting
+from askbot.models.tag import Tag, MarkedTag, tags_match_some_wildcard
+from askbot.conf import settings as askbot_settings
+from askbot import exceptions
from askbot.utils import markup
from askbot.utils.html import sanitize_html
+from askbot.models.base import BaseQuerySetManager, AnonymousContent
+
+#todo: maybe merge askbot.utils.markup and forum.utils.html
+from askbot.utils.diff import textDiff as htmldiff
+from askbot.utils import mysql
+
+class PostQuerySet(models.query.QuerySet):
+ """
+ Custom query set subclass for :class:`~askbot.models.Post`
+ """
+ #todo: we may not need this query set class,
+ #as all methods on this class seem to want to
+ #belong to Thread manager or Query set.
+
+ def get_by_text_query(self, search_query):
+ """returns a query set of questions,
+ matching the full text query
+ """
+ return self.filter(
+ models.Q(thread__title__icontains = search_query)\
+ | models.Q(text__icontains = search_query)\
+ | models.Q(thread__tagnames = search_query)\
+ | models.Q(thread__posts__text__icontains = search_query, thread__posts__post_type='answer')
+ )
+# #todo - goes to thread - we search whole threads
+# if getattr(settings, 'USE_SPHINX_SEARCH', False):
+# matching_questions = Question.sphinx_search.query(search_query)
+# question_ids = [q.id for q in matching_questions]
+# return Question.objects.filter(deleted = False, id__in = question_ids)
+# if settings.DATABASE_ENGINE == 'mysql' and mysql.supports_full_text_search():
+# return self.filter(
+# models.Q(thread__title__search = search_query)\
+# | models.Q(text__search = search_query)\
+# | models.Q(thread__tagnames__search = search_query)\
+# | models.Q(answers__text__search = search_query)
+# )
+# elif 'postgresql_psycopg2' in askbot.get_database_engine_name():
+# rank_clause = "ts_rank(question.text_search_vector, plainto_tsquery(%s))";
+# search_query = '&'.join(search_query.split())
+# extra_params = (search_query,)
+# extra_kwargs = {
+# 'select': {'relevance': rank_clause},
+# 'where': ['text_search_vector @@ plainto_tsquery(%s)'],
+# 'params': extra_params,
+# 'select_params': extra_params,
+# }
+# return self.extra(**extra_kwargs)
+# else:
+# #fallback to dumb title match search
+# return self.filter(thread__title__icontains=search_query)
+
+ def added_between(self, start, end):
+ """questions added between ``start`` and ``end`` timestamps"""
+ #todo: goes to thread
+ return self.filter(
+ added_at__gt = start
+ ).exclude(
+ added_at__gt = end
+ )
+
+ def get_questions_needing_reminder(self,
+ user = None,
+ activity_type = None,
+ recurrence_delay = None):
+ """returns list of questions that need a reminder,
+ corresponding the given ``activity_type``
+ ``user`` - is the user receiving the reminder
+ ``recurrence_delay`` - interval between sending the
+ reminders about the same question
+ """
+ #todo: goes to thread
+ from askbot.models import Activity#avoid circular import
+ question_list = list()
+ for question in self:
+ try:
+ activity = Activity.objects.get(
+ user = user,
+ question = question,
+ activity_type = activity_type
+ )
+ now = datetime.datetime.now()
+ if now < activity.active_at + recurrence_delay:
+ continue
+ except Activity.DoesNotExist:
+ activity = Activity(
+ user = user,
+ question = question,
+ activity_type = activity_type,
+ content_object = question,
+ )
+ activity.active_at = datetime.datetime.now()
+ activity.save()
+ question_list.append(question)
+ return question_list
+
+ def get_author_list(self, **kwargs):
+ #todo: - this is duplication - answer manager also has this method
+ #will be gone when models are consolidated
+ #note that method get_question_and_answer_contributors is similar in function
+ #todo: goes to thread
+ authors = set()
+ for question in self:
+ authors.update(question.get_author_list(**kwargs))
+ return list(authors)
+
+
+class PostManager(BaseQuerySetManager):
+ def get_query_set(self):
+ return PostQuerySet(self.model)
+
+ def get_questions(self):
+ return self.filter(post_type='question')
+
+ def get_answers(self):
+ return self.filter(post_type='answer')
+
+ def get_comments(self):
+ return self.filter(post_type='comment')
+
+ def create_new_tag_wiki(self, text = None, author = None):
+ return self.create_new(
+ None,#this post type is threadless
+ author,
+ datetime.datetime.now(),
+ text,
+ wiki = True,
+ post_type = 'tag_wiki'
+ )
+
+ def create_new(
+ self,
+ thread,
+ author,
+ added_at,
+ text,
+ parent = None,
+ wiki = False,
+ email_notify = False,
+ post_type = None,
+ by_email = False
+ ):
+ # TODO: Some of this code will go to Post.objects.create_new
+
+ assert(post_type in const.POST_TYPES)
+
+ post = Post(
+ post_type = post_type,
+ thread = thread,
+ parent = parent,
+ author = author,
+ added_at = added_at,
+ wiki = wiki,
+ text = text,
+ #.html field is denormalized by the save() call
+ )
+
+ if post.wiki:
+ post.last_edited_by = post.author
+ post.last_edited_at = added_at
+ post.wikified_at = added_at
+
+ post.parse_and_save(author=author)
+
+ post.add_revision(
+ author = author,
+ revised_at = added_at,
+ text = text,
+ comment = const.POST_STATUS['default_version'],
+ by_email = by_email
+ )
+
+ return post
+
+ #todo: instead of this, have Thread.add_answer()
+ def create_new_answer(
+ self,
+ thread,
+ author,
+ added_at,
+ text,
+ wiki = False,
+ email_notify = False,
+ by_email = False
+ ):
+ answer = self.create_new(
+ thread,
+ author,
+ added_at,
+ text,
+ wiki = wiki,
+ post_type = 'answer',
+ by_email = by_email
+ )
+ #set notification/delete
+ if email_notify:
+ thread.followed_by.add(author)
+ else:
+ thread.followed_by.remove(author)
+
+ #update thread data
+ #todo: this totally belongs to some `Thread` class method
+ thread.answer_count += 1
+ thread.save()
+ thread.set_last_activity(last_activity_at=added_at, last_activity_by=author) # this should be here because it regenerates cached thread summary html
+ return answer
+
+
+ def precache_comments(self, for_posts, visitor):
+ """
+ Fetches comments for given posts, and stores them in post._cached_comments
+ Additionally, annotates posts with ``upvoted_by_user`` parameter, if visitor is logged in
+
+ """
+ qs = Post.objects.get_comments().filter(parent__in=for_posts).select_related('author')
+
+ if visitor.is_anonymous():
+ comments = list(qs.order_by('added_at'))
+ else:
+ upvoted_by_user = list(qs.filter(votes__user=visitor).distinct())
+ not_upvoted_by_user = list(qs.exclude(votes__user=visitor).distinct())
+
+ for c in upvoted_by_user:
+ c.upvoted_by_user = 1 # numeric value to maintain compatibility with previous version of this code
+
+ comments = upvoted_by_user + not_upvoted_by_user
+ comments.sort(key=operator.attrgetter('added_at'))
+
+ post_map = defaultdict(list)
+ for cm in comments:
+ post_map[cm.parent_id].append(cm)
+ for post in for_posts:
+ post.set_cached_comments(post_map[post.id])
+
+ # Old Post.get_comment(self, visitor=None) method:
+ # if visitor.is_anonymous():
+ # return self.comments.order_by('added_at')
+ # else:
+ # upvoted_by_user = list(self.comments.filter(votes__user=visitor).distinct())
+ # not_upvoted_by_user = list(self.comments.exclude(votes__user=visitor).distinct())
+ #
+ # for c in upvoted_by_user:
+ # c.upvoted_by_user = 1 # numeric value to maintain compatibility with previous version of this code
+ #
+ # comments = upvoted_by_user + not_upvoted_by_user
+ # comments.sort(key=operator.attrgetter('added_at'))
+ #
+ # return comments
+
+
+
+class Post(models.Model):
+ post_type = models.CharField(max_length=255, db_index=True)
+
+ old_question_id = models.PositiveIntegerField(null=True, blank=True, default=None, unique=True)
+ old_answer_id = models.PositiveIntegerField(null=True, blank=True, default=None, unique=True)
+ old_comment_id = models.PositiveIntegerField(null=True, blank=True, default=None, unique=True)
+
+ parent = models.ForeignKey('Post', blank=True, null=True, related_name='comments') # Answer or Question for Comment
+ thread = models.ForeignKey('Thread', blank=True, null=True, default = None, related_name='posts')
+
+ author = models.ForeignKey(User, related_name='posts')
+ added_at = models.DateTimeField(default=datetime.datetime.now)
+
+ #denormalized data: the core approval of the posts is made
+ #in the revisions. In the revisions there is more data about
+ #approvals - by whom and when
+ approved = models.BooleanField(default=True, db_index=True)
+
+ deleted = models.BooleanField(default=False, db_index=True)
+ deleted_at = models.DateTimeField(null=True, blank=True)
+ deleted_by = models.ForeignKey(User, null=True, blank=True, related_name='deleted_posts')
+
+ wiki = models.BooleanField(default=False)
+ wikified_at = models.DateTimeField(null=True, blank=True)
+
+ locked = models.BooleanField(default=False)
+ locked_by = models.ForeignKey(User, null=True, blank=True, related_name='locked_posts')
+ locked_at = models.DateTimeField(null=True, blank=True)
+
+ score = models.IntegerField(default=0)
+ vote_up_count = models.IntegerField(default=0)
+ vote_down_count = models.IntegerField(default=0)
+
+ comment_count = models.PositiveIntegerField(default=0)
+ offensive_flag_count = models.SmallIntegerField(default=0)
+
+ last_edited_at = models.DateTimeField(null=True, blank=True)
+ last_edited_by = models.ForeignKey(User, null=True, blank=True, related_name='last_edited_posts')
+
+ html = models.TextField(null=True)#html rendition of the latest revision
+ text = models.TextField(null=True)#denormalized copy of latest revision
+
+ # Denormalised data
+ summary = models.CharField(max_length=180)
+
+ #note: anonymity here applies to question only, but
+ #the field will still go to thread
+ #maybe we should rename it to is_question_anonymous
+ #we might have to duplicate the is_anonymous on the Post,
+ #if we are to allow anonymous answers
+ #the reason is that the title and tags belong to thread,
+ #but the question body to Post
+ is_anonymous = models.BooleanField(default=False)
+ #When is_private == True
+ #the post is visible only to the some privileged users.
+ #The privilege may be defined through groups to which
+ #the thread belongs or in some other way.
+ is_private = models.BooleanField(default=False)
+
+ objects = PostManager()
+
+ class Meta:
+ app_label = 'askbot'
+ db_table = 'askbot_post'
+
+
+ def parse_post_text(self):
+ """typically post has a field to store raw source text
+ in comment it is called .comment, in Question and Answer it is
+ called .text
+ also there is another field called .html (consistent across models)
+ so the goal of this function is to render raw text into .html
+ and extract any metadata given stored in source (currently
+ this metadata is limited by twitter style @mentions
+ but there may be more in the future
+
+ function returns a dictionary with the following keys
+ html
+ newly_mentioned_users - list of <User> objects
+ removed_mentions - list of mention <Activity> objects - for removed ones
+ """
+
+ if self.post_type in ('question', 'answer', 'tag_wiki', 'reject_reason'):
+ _urlize = False
+ _use_markdown = True
+ _escape_html = False #markdow does the escaping
+ elif self.is_comment():
+ _urlize = True
+ _use_markdown = True
+ _escape_html = True
+ else:
+ raise NotImplementedError
+
+ text = self.text
+
+ if _escape_html:
+ text = cgi.escape(text)
+
+ if _urlize:
+ text = html.urlize(text)
+
+ if _use_markdown:
+ text = sanitize_html(markup.get_parser().convert(text))
+
+ #todo, add markdown parser call conditional on
+ #self.use_markdown flag
+ post_html = text
+ mentioned_authors = list()
+ removed_mentions = list()
+ if '@' in text:
+ op = self.get_origin_post()
+ anticipated_authors = op.get_author_list(
+ include_comments = True,
+ recursive = True
+ )
+
+ extra_name_seeds = markup.extract_mentioned_name_seeds(text)
+
+ extra_authors = set()
+ for name_seed in extra_name_seeds:
+ extra_authors.update(
+ User.objects.filter(username__istartswith = name_seed)
+ )
+
+ #it is important to preserve order here so that authors of post
+ #get mentioned first
+ anticipated_authors += list(extra_authors)
+
+ mentioned_authors, post_html = markup.mentionize_text(
+ text,
+ anticipated_authors
+ )
+
+ #find mentions that were removed and identify any previously
+ #entered mentions so that we can send alerts on only new ones
+ from askbot.models.user import Activity
+ if self.pk is not None:
+ #only look for previous mentions if post was already saved before
+ prev_mention_qs = Activity.objects.get_mentions(
+ mentioned_in = self
+ )
+ new_set = set(mentioned_authors)
+ for prev_mention in prev_mention_qs:
+
+ user = prev_mention.get_mentioned_user()
+ if user is None:
+ continue
+ if user in new_set:
+ #don't report mention twice
+ new_set.remove(user)
+ else:
+ removed_mentions.append(prev_mention)
+ mentioned_authors = list(new_set)
+
+ data = {
+ 'html': post_html,
+ 'newly_mentioned_users': mentioned_authors,
+ 'removed_mentions': removed_mentions,
+ }
+ return data
+
+ #todo: when models are merged, it would be great to remove author parameter
+ def parse_and_save(self, author = None, **kwargs):
+ """generic method to use with posts to be used prior to saving
+ post edit or addition
+ """
+
+ assert(author is not None)
+
+ last_revision = self.html
+ data = self.parse_post_text()
+
+ self.html = data['html']
+ newly_mentioned_users = set(data['newly_mentioned_users']) - set([author])
+ removed_mentions = data['removed_mentions']
+
+ #a hack allowing to save denormalized .summary field for questions
+ if hasattr(self, 'summary'):
+ self.summary = self.get_snippet()
+
+ #delete removed mentions
+ for rm in removed_mentions:
+ rm.delete()
+
+ created = self.pk is None
+
+ #this save must precede saving the mention activity
+ #because generic relation needs primary key of the related object
+ super(self.__class__, self).save(**kwargs)
+ if last_revision:
+ diff = htmldiff(
+ sanitize_html(last_revision),
+ sanitize_html(self.html)
+ )
+ else:
+ diff = sanitize_html(self.get_snippet())
+
+ timestamp = self.get_time_of_last_edit()
+
+ #todo: this is handled in signal because models for posts
+ #are too spread out
+ from askbot.models import signals
+ signals.post_updated.send(
+ post = self,
+ updated_by = author,
+ newly_mentioned_users = newly_mentioned_users,
+ timestamp = timestamp,
+ created = created,
+ diff = diff,
+ sender = self.__class__
+ )
+
+ try:
+ from askbot.conf import settings as askbot_settings
+ if askbot_settings.GOOGLE_SITEMAP_CODE != '':
+ ping_google()
+ except Exception:
+ logging.debug('cannot ping google - did you register with them?')
+
+ def is_question(self):
+ return self.post_type == 'question'
+
+ def is_answer(self):
+ return self.post_type == 'answer'
+
+ def is_comment(self):
+ return self.post_type == 'comment'
+
+ def is_tag_wiki(self):
+ return self.post_type == 'tag_wiki'
+
+ def is_reject_reason(self):
+ return self.post_type == 'reject_reason'
+
+ def needs_moderation(self):
+ return self.approved == False
+
+ def get_absolute_url(self, no_slug = False, question_post=None, thread=None):
+ from askbot.utils.slug import slugify
+ #todo: the url generation function is pretty bad -
+ #the trailing slash is entered in three places here + in urls.py
+ if not hasattr(self, '_thread_cache') and thread:
+ self._thread_cache = thread
+ if self.is_answer():
+ if not question_post:
+ question_post = self.thread._question_post()
+ return u'%(base)s%(slug)s/?answer=%(id)d#post-id-%(id)d' % {
+ 'base': urlresolvers.reverse('question', args=[question_post.id]),
+ 'slug': django_urlquote(slugify(self.thread.title)),
+ 'id': self.id
+ }
+ elif self.is_question():
+ url = urlresolvers.reverse('question', args=[self.id])
+ if thread:
+ url += django_urlquote(slugify(thread.title)) + '/'
+ elif no_slug is False:
+ url += django_urlquote(self.slug) + '/'
+ return url
+ elif self.is_comment():
+ origin_post = self.get_origin_post()
+ return '%(url)s?comment=%(id)d#comment-%(id)d' % \
+ {'url': origin_post.get_absolute_url(thread=thread), 'id':self.id}
+
+ raise NotImplementedError
+
+ def delete(self, **kwargs):
+ """deletes comment and concomitant response activity
+ records, as well as mention records, while preserving
+ integrity or response counts for the users
+ """
+ if self.is_comment():
+ #todo: implement a custom delete method on these
+ #all this should pack into Activity.responses.filter( somehow ).delete()
+ #activity_types = const.RESPONSE_ACTIVITY_TYPES_FOR_DISPLAY
+ #activity_types += (const.TYPE_ACTIVITY_MENTION,)
+ #todo: not very good import in models of other models
+ #todo: potentially a circular import
+ from askbot.models.user import Activity
+ comment_content_type = ContentType.objects.get_for_model(self)
+ activities = Activity.objects.filter(
+ content_type = comment_content_type,
+ object_id = self.id,
+ #activity_type__in = activity_types
+ )
+
+ recipients = set()
+ for activity in activities:
+ for user in activity.recipients.all():
+ recipients.add(user)
+
+ #activities need to be deleted before the response
+ #counts are updated
+ activities.delete()
+
+ for user in recipients:
+ user.update_response_counts()
+
+ super(Post, self).delete(**kwargs)
+
+ def __unicode__(self):
+ if self.is_question():
+ return self.thread.title
+ elif self.is_answer() or self.is_reject_reason():
+ return self.html
+ elif self.is_comment():
+ return self.text
+ raise NotImplementedError
+
+ def save(self, *args, **kwargs):
+ if self.is_answer() and self.is_anonymous:
+ raise ValueError('Answer cannot be anonymous!')
+ super(Post, self).save(*args, **kwargs)
+ if self.is_answer() and 'postgres' in askbot.get_database_engine_name():
+ #hit the database to trigger update of full text search vector
+ self.thread._question_post().save()
+
+ def _get_slug(self):
+ if not self.is_question():
+ raise NotImplementedError
+ return slugify(self.thread.title)
+ slug = property(_get_slug)
+
+ def get_snippet(self, max_length = 120):
+ """returns an abbreviated snippet of the content
+ """
+ return html_utils.strip_tags(self.html)[:max_length] + ' ...'
+
+ def format_for_email(
+ self, quote_level = 0, is_leaf_post = False, format = None
+ ):
+ """format post for the output in email,
+ if quote_level > 0, the post will be indented that number of times
+ todo: move to views?
+ """
+ from askbot.templatetags.extra_filters_jinja \
+ import absolutize_urls_func
+ from askbot.skins.loaders import get_template
+ from django.template import Context
+ template = get_template('email/quoted_post.html')
+ data = {
+ 'post': self,
+ 'quote_level': quote_level,
+ #'html': absolutize_urls_func(self.html),
+ 'is_leaf_post': is_leaf_post,
+ 'format': format
+ }
+ return template.render(Context(data))
+
+ def format_for_email_as_parent_thread_summary(self):
+ """format for email as summary of parent posts
+ all the way to the original question"""
+ quote_level = 0
+ current_post = self
+ output = ''
+ while True:
+ parent_post = current_post.get_parent_post()
+ if parent_post is None:
+ break
+ quote_level += 1
+ """
+ output += '<p>'
+ output += _(
+ 'In reply to %(user)s %(post)s of %(date)s'
+ ) % {
+ 'user': parent_post.author.username,
+ 'post': _(parent_post.post_type),
+ 'date': parent_post.added_at.strftime(const.DATETIME_FORMAT)
+ }
+ output += '</p>'
+ """
+ output += parent_post.format_for_email(
+ quote_level = quote_level,
+ format = 'parent_subthread'
+ )
+ current_post = parent_post
+ return output
+
+ def format_for_email_as_subthread(self):
+ """outputs question or answer and all it's comments
+ returns empty string for all other post types
+ """
+ from askbot.skins.loaders import get_template
+ from django.template import Context
+ template = get_template('email/post_as_subthread.html')
+ return template.render(Context({'post': self}))
+
+ def set_cached_comments(self, comments):
+ """caches comments in the lifetime of the object
+ does not talk to the actual cache system
+ """
+ self._cached_comments = comments
+
+ def get_cached_comments(self):
+ try:
+ return self._cached_comments
+ except AttributeError:
+ self._cached_comments = list()
+ return self._cached_comments
+
+ def add_comment(
+ self,
+ comment=None,
+ user=None,
+ added_at=None,
+ by_email = False):
+
+ if added_at is None:
+ added_at = datetime.datetime.now()
+ if None in (comment, user):
+ raise Exception('arguments comment and user are required')
+
+ comment_post = self.__class__.objects.create_new(
+ self.thread,
+ user,
+ added_at,
+ comment,
+ parent = self,
+ post_type = 'comment',
+ by_email = by_email
+ )
+ self.comment_count = self.comment_count + 1
+ self.save()
+
+ #tried to add this to bump updated question
+ #in most active list, but it did not work
+ #becase delayed email updates would be triggered
+ #for cases where user did not subscribe for them
+ #
+ #need to redo the delayed alert sender
+ #
+ #origin_post = self.get_origin_post()
+ #if origin_post == self:
+ # self.last_activity_at = added_at # WARNING: last_activity_* are now in Thread
+ # self.last_activity_by = user
+ #else:
+ # origin_post.last_activity_at = added_at
+ # origin_post.last_activity_by = user
+ # origin_post.save()
+
+ return comment_post
+
+ def get_global_tag_based_subscribers(
+ self,
+ tag_mark_reason = None,
+ subscription_records = None
+ ):
+ """returns a list of users who either follow or "do not ignore"
+ the given set of tags, depending on the tag_mark_reason
+
+ ``subscription_records`` - query set of ``~askbot.models.EmailFeedSetting``
+ this argument is used to reduce number of database queries
+ """
+ if tag_mark_reason == 'good':
+ email_tag_filter_strategy = const.INCLUDE_INTERESTING
+ user_set_getter = User.objects.filter
+ elif tag_mark_reason == 'bad':
+ email_tag_filter_strategy = const.EXCLUDE_IGNORED
+ user_set_getter = User.objects.exclude
+ else:
+ raise ValueError('Uknown value of tag mark reason %s' % tag_mark_reason)
+
+ #part 1 - find users who follow or not ignore the set of tags
+ tag_names = self.get_tag_names()
+ tag_selections = MarkedTag.objects.filter(
+ tag__name__in = tag_names,
+ reason = tag_mark_reason
+ )
+ subscribers = set(
+ user_set_getter(
+ tag_selections__in = tag_selections
+ ).filter(
+ notification_subscriptions__in = subscription_records
+ ).filter(
+ email_tag_filter_strategy = email_tag_filter_strategy
+ )
+ )
+
+ #part 2 - find users who follow or not ignore tags via wildcard selections
+ #inside there is a potentially time consuming loop
+ if askbot_settings.USE_WILDCARD_TAGS:
+ #todo: fix this
+ #this branch will not scale well
+ #because we have to loop through the list of users
+ #in python
+ if tag_mark_reason == 'good':
+ empty_wildcard_filter = {'interesting_tags__exact': ''}
+ wildcard_tags_attribute = 'interesting_tags'
+ update_subscribers = lambda the_set, item: the_set.add(item)
+ elif tag_mark_reason == 'bad':
+ empty_wildcard_filter = {'ignored_tags__exact': ''}
+ wildcard_tags_attribute = 'ignored_tags'
+ update_subscribers = lambda the_set, item: the_set.discard(item)
+
+ potential_wildcard_subscribers = User.objects.filter(
+ notification_subscriptions__in = subscription_records
+ ).filter(
+ email_tag_filter_strategy = email_tag_filter_strategy
+ ).exclude(
+ **empty_wildcard_filter #need this to limit size of the loop
+ )
+ for potential_subscriber in potential_wildcard_subscribers:
+ wildcard_tags = getattr(
+ potential_subscriber,
+ wildcard_tags_attribute
+ ).split(' ')
+
+ if tags_match_some_wildcard(tag_names, wildcard_tags):
+ update_subscribers(subscribers, potential_subscriber)
+
+ return subscribers
+
+ def get_global_instant_notification_subscribers(self):
+ """returns a set of subscribers to post according to tag filters
+ both - subscribers who ignore tags or who follow only
+ specific tags
+
+ this method in turn calls several more specialized
+ subscriber retrieval functions
+ todo: retrieval of wildcard tag followers ignorers
+ won't scale at all
+ """
+ subscriber_set = set()
+
+ global_subscriptions = EmailFeedSetting.objects.filter(
+ feed_type = 'q_all',
+ frequency = 'i'
+ )
+
+ #segment of users who have tag filter turned off
+ global_subscribers = User.objects.filter(
+ email_tag_filter_strategy = const.INCLUDE_ALL
+ )
+ subscriber_set.update(global_subscribers)
+
+ #segment of users who want emails on selected questions only
+ subscriber_set.update(
+ self.get_global_tag_based_subscribers(
+ subscription_records = global_subscriptions,
+ tag_mark_reason = 'good'
+ )
+ )
+
+ #segment of users who want to exclude ignored tags
+ subscriber_set.update(
+ self.get_global_tag_based_subscribers(
+ subscription_records = global_subscriptions,
+ tag_mark_reason = 'bad'
+ )
+ )
+ return subscriber_set
+
+
+ def _qa__get_instant_notification_subscribers(
+ self,
+ potential_subscribers = None,
+ mentioned_users = None,
+ exclude_list = None,
+ ):
+ """get list of users who have subscribed to
+ receive instant notifications for a given post
+ this method works for questions and answers
+
+ Arguments:
+
+ * ``potential_subscribers`` is not used here! todo: why? - clean this out
+ parameter is left for the uniformity of the interface
+ (Comment method does use it)
+ normally these methods would determine the list
+ :meth:`~askbot.models.question.Question.get_response_recipients`
+ :meth:`~askbot.models.question.Answer.get_response_recipients`
+ - depending on the type of the post
+ * ``mentioned_users`` - users, mentioned in the post for the first time
+ * ``exclude_list`` - users who must be excluded from the subscription
+
+ Users who receive notifications are:
+
+ * of ``mentioned_users`` - those who subscribe for the instant
+ updates on the @name mentions
+ * those who follow the parent question
+ * global subscribers (any personalized tag filters are applied)
+ * author of the question who subscribe to instant updates
+ on questions that they asked
+ * authors or any answers who subsribe to instant updates
+ on the questions which they answered
+ """
+ #print '------------------'
+ #print 'in content function'
+ subscriber_set = set()
+ #print 'potential subscribers: ', potential_subscribers
+
+ #1) mention subscribers - common to questions and answers
+ if mentioned_users:
+ mention_subscribers = EmailFeedSetting.objects.filter_subscribers(
+ potential_subscribers = mentioned_users,
+ feed_type = 'm_and_c',
+ frequency = 'i'
+ )
+ subscriber_set.update(mention_subscribers)
+
+ origin_post = self.get_origin_post()
+
+ #print origin_post
+
+ #2) individually selected - make sure that users
+ #are individual subscribers to this question
+ # TODO: The line below works only if origin_post is Question !
+ selective_subscribers = origin_post.thread.followed_by.all()
+ #print 'question followers are ', [s for s in selective_subscribers]
+ if selective_subscribers:
+ selective_subscribers = EmailFeedSetting.objects.filter_subscribers(
+ potential_subscribers = selective_subscribers,
+ feed_type = 'q_sel',
+ frequency = 'i'
+ )
+ subscriber_set.update(selective_subscribers)
+ #print 'selective subscribers: ', selective_subscribers
+
+ #3) whole forum subscribers
+ global_subscribers = origin_post.get_global_instant_notification_subscribers()
+ subscriber_set.update(global_subscribers)
+
+ #4) question asked by me (todo: not "edited_by_me" ???)
+ question_author = origin_post.author
+ if EmailFeedSetting.objects.filter(subscriber = question_author, frequency = 'i', feed_type = 'q_ask').exists():
+ subscriber_set.add(question_author)
+
+ #4) questions answered by me -make sure is that people
+ #are authors of the answers to this question
+ #todo: replace this with a query set method
+ answer_authors = set()
+ for answer in origin_post.thread.posts.get_answers().all():
+ authors = answer.get_author_list()
+ answer_authors.update(authors)
+
+ if answer_authors:
+ answer_subscribers = EmailFeedSetting.objects.filter_subscribers(
+ potential_subscribers = answer_authors,
+ frequency = 'i',
+ feed_type = 'q_ans',
+ )
+ subscriber_set.update(answer_subscribers)
+ #print 'answer subscribers: ', answer_subscribers
+
+ #print 'exclude_list is ', exclude_list
+ subscriber_set -= set(exclude_list)
+
+ #print 'final subscriber set is ', subscriber_set
+ return list(subscriber_set)
+
+ def _comment__get_instant_notification_subscribers(
+ self,
+ potential_subscribers = None,
+ mentioned_users = None,
+ exclude_list = None
+ ):
+ """get list of users who want instant notifications about comments
+
+ argument potential_subscribers is required as it saves on db hits
+
+ Here is the list of people who will receive the notifications:
+
+ * mentioned users
+ * of response receivers
+ (see :meth:`~askbot.models.meta.Comment.get_response_receivers`) -
+ those who subscribe for the instant
+ updates on comments and @mentions
+ * all who follow the question explicitly
+ * all global subscribers
+ (tag filtered, and subject to personalized settings)
+ """
+ #print 'in meta function'
+ #print 'potential subscribers: ', potential_subscribers
+
+ subscriber_set = set()
+
+ if potential_subscribers:
+ potential_subscribers = set(potential_subscribers)
+ else:
+ potential_subscribers = set()
+
+ if mentioned_users:
+ potential_subscribers.update(mentioned_users)
+
+ if potential_subscribers:
+ comment_subscribers = EmailFeedSetting.objects.filter_subscribers(
+ potential_subscribers = potential_subscribers,
+ feed_type = 'm_and_c',
+ frequency = 'i'
+ )
+ subscriber_set.update(comment_subscribers)
+ #print 'comment subscribers: ', comment_subscribers
+
+ origin_post = self.get_origin_post()
+ # TODO: The line below works only if origin_post is Question !
+ selective_subscribers = origin_post.thread.followed_by.all()
+ if selective_subscribers:
+ selective_subscribers = EmailFeedSetting.objects.filter_subscribers(
+ potential_subscribers = selective_subscribers,
+ feed_type = 'q_sel',
+ frequency = 'i'
+ )
+ for subscriber in selective_subscribers:
+ if origin_post.passes_tag_filter_for_user(subscriber):
+ subscriber_set.add(subscriber)
+
+ subscriber_set.update(selective_subscribers)
+ #print 'selective subscribers: ', selective_subscribers
+
+ global_subscribers = origin_post.get_global_instant_notification_subscribers()
+ #print 'global subscribers: ', global_subscribers
+
+ subscriber_set.update(global_subscribers)
+
+ #print 'exclude list is: ', exclude_list
+ if exclude_list:
+ subscriber_set -= set(exclude_list)
+
+ #print 'final list of subscribers:', subscriber_set
+
+ return list(subscriber_set)
+
+ def get_instant_notification_subscribers(self, potential_subscribers = None, mentioned_users = None, exclude_list = None):
+ if self.is_question() or self.is_answer():
+ return self._qa__get_instant_notification_subscribers(
+ potential_subscribers=potential_subscribers,
+ mentioned_users=mentioned_users,
+ exclude_list=exclude_list
+ )
+ elif self.is_comment():
+ return self._comment__get_instant_notification_subscribers(
+ potential_subscribers=potential_subscribers,
+ mentioned_users=mentioned_users,
+ exclude_list=exclude_list
+ )
+ elif self.is_tag_wiki() or self.is_reject_reason():
+ return list()
+ raise NotImplementedError
+
+ def get_latest_revision(self):
+ return self.revisions.order_by('-revised_at')[0]
+
+ def get_latest_revision_number(self):
+ return self.get_latest_revision().revision
+
+ def get_time_of_last_edit(self):
+ if self.is_comment():
+ return self.added_at
+
+ if self.last_edited_at:
+ return self.last_edited_at
+ else:
+ return self.added_at
+
+ def get_owner(self): # TODO: remove me
+ return self.author
+
+ def get_author_list(
+ self,
+ include_comments = False,
+ recursive = False,
+ exclude_list = None):
+
+ #todo: there may be a better way to do these queries
+ authors = set()
+ authors.update([r.author for r in self.revisions.all()])
+ if include_comments:
+ authors.update([c.author for c in self.comments.all()])
+ if recursive:
+ if self.is_question(): #hasattr(self, 'answers'):
+ #for a in self.answers.exclude(deleted = True):
+ for a in self.thread.posts.get_answers().exclude(deleted = True):
+ authors.update(a.get_author_list( include_comments = include_comments ) )
+ if exclude_list:
+ authors -= set(exclude_list)
+ return list(authors)
+
+ def passes_tag_filter_for_user(self, user):
+
+ question = self.get_origin_post()
+ if user.email_tag_filter_strategy == const.INCLUDE_INTERESTING:
+ #at least some of the tags must be marked interesting
+ return user.has_affinity_to_question(
+ question,
+ affinity_type = 'like'
+ )
+ elif user.email_tag_filter_strategy == const.EXCLUDE_IGNORED:
+ return not user.has_affinity_to_question(
+ question,
+ affinity_type = 'dislike'
+ )
+ elif user.email_tag_filter_strategy == const.INCLUDE_ALL:
+ return True
+ else:
+ raise ValueError(
+ 'unexpected User.email_tag_filter_strategy %s'\
+ % user.email_tag_filter_strategy
+ )
+
+ def post_get_last_update_info(self):#todo: rename this subroutine
+ when = self.added_at
+ who = self.author
+ if self.last_edited_at and self.last_edited_at > when:
+ when = self.last_edited_at
+ who = self.last_edited_by
+ comments = self.comments.all()
+ if len(comments) > 0:
+ for c in comments:
+ if c.added_at > when:
+ when = c.added_at
+ who = c.user
+ return when, who
+
+ def tagname_meta_generator(self):
+ return u','.join([unicode(tag) for tag in self.get_tag_names()])
+
+ def get_parent_post(self):
+ """returns parent post or None
+ if there is no parent, as it is in the case of question post"""
+ if self.post_type == 'comment':
+ return self.parent
+ elif self.post_type == 'answer':
+ return self.get_origin_post()
+ else:
+ return None
+
+ def get_origin_post(self):
+ if self.is_question():
+ return self
+ if self.is_tag_wiki() or self.is_reject_reason():
+ return None
+ else:
+ return self.thread._question_post()
+
+ def _repost_as_question(self, new_title = None):
+ """posts answer as question, together with all the comments
+ while preserving time stamps and authors
+ does not delete the answer itself though
+ """
+ if not self.is_answer():
+ raise NotImplementedError
+ revisions = self.revisions.all().order_by('revised_at')
+ rev0 = revisions[0]
+ new_question = rev0.author.post_question(
+ title = new_title,
+ body_text = rev0.text,
+ tags = self.question.thread.tagnames,
+ wiki = self.question.wiki,
+ is_anonymous = self.question.is_anonymous,
+ timestamp = rev0.revised_at
+ )
+ if len(revisions) > 1:
+ for rev in revisions[1:]:
+ rev.author.edit_question(
+ question = new_question,
+ body_text = rev.text,
+ revision_comment = rev.summary,
+ timestamp = rev.revised_at
+ )
+ for comment in self.comments.all():
+ comment.content_object = new_question
+ comment.save()
+ return new_question
+
+ def _repost_as_answer(self, question = None):
+ """posts question as answer to another question,
+ but does not delete the question,
+ but moves all the comments to the new answer"""
+ if not self.is_question():
+ raise NotImplementedError
+ revisions = self.revisions.all().order_by('revised_at')
+ rev0 = revisions[0]
+ new_answer = rev0.author.post_answer(
+ question = question,
+ body_text = rev0.text,
+ wiki = self.wiki,
+ timestamp = rev0.revised_at
+ )
+ if len(revisions) > 1:
+ for rev in revisions:
+ rev.author.edit_answer(
+ answer = new_answer,
+ body_text = rev.text,
+ revision_comment = rev.summary,
+ timestamp = rev.revised_at
+ )
+ for comment in self.comments.all():
+ comment.content_object = new_answer
+ comment.save()
+ return new_answer
+
+
+ def swap_with_question(self, new_title = None):
+ """swaps answer with the question it belongs to and
+ sets the title of question to ``new_title``
+ """
+ if not self.is_answer():
+ raise NotImplementedError
+ #1) make new question by using new title, tags of old question
+ # and the answer body, as well as the authors of all revisions
+ # and repost all the comments
+ new_question = self._repost_as_question(new_title = new_title)
+
+ #2) post question (all revisions and comments) as answer
+ new_answer = self.question._repost_as_answer(question = new_question)
+
+ #3) assign all remaining answers to the new question
+ self.question.answers.update(question = new_question)
+ self.question.delete()
+ self.delete()
+ return new_question
+
+
+ def get_user_vote(self, user):
+ if not self.is_answer():
+ raise NotImplementedError
+
+ if user.is_anonymous():
+ return None
+
+ votes = self.votes.filter(user=user)
+ if votes and votes.count() > 0:
+ return votes[0]
+ else:
+ return None
+
+
+ def _question__assert_is_visible_to(self, user):
+ """raises QuestionHidden"""
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ if self.approved == False:
+ raise exceptions.QuestionHidden()
+ if self.deleted:
+ message = _(
+ 'Sorry, this question has been '
+ 'deleted and is no longer accessible'
+ )
+ if user.is_anonymous():
+ raise exceptions.QuestionHidden(message)
+ try:
+ user.assert_can_see_deleted_post(self)
+ except django_exceptions.PermissionDenied:
+ raise exceptions.QuestionHidden(message)
+
+ def _answer__assert_is_visible_to(self, user):
+ """raises QuestionHidden or AnswerHidden"""
+ try:
+ self.thread._question_post().assert_is_visible_to(user)
+ except exceptions.QuestionHidden:
+ message = _(
+ 'Sorry, the answer you are looking for is '
+ 'no longer available, because the parent '
+ 'question has been removed'
+ )
+ raise exceptions.QuestionHidden(message)
+ if self.deleted:
+ message = _(
+ 'Sorry, this answer has been '
+ 'removed and is no longer accessible'
+ )
+ if user.is_anonymous():
+ raise exceptions.AnswerHidden(message)
+ try:
+ user.assert_can_see_deleted_post(self)
+ except django_exceptions.PermissionDenied:
+ raise exceptions.AnswerHidden(message)
+
+ def _comment__assert_is_visible_to(self, user):
+ """raises QuestionHidden or AnswerHidden"""
+ try:
+ self.parent.assert_is_visible_to(user)
+ except exceptions.QuestionHidden:
+ message = _(
+ 'Sorry, the comment you are looking for is no '
+ 'longer accessible, because the parent question '
+ 'has been removed'
+ )
+ raise exceptions.QuestionHidden(message)
+ except exceptions.AnswerHidden:
+ message = _(
+ 'Sorry, the comment you are looking for is no '
+ 'longer accessible, because the parent answer '
+ 'has been removed'
+ )
+ raise exceptions.AnswerHidden(message)
+
+
+ def assert_is_visible_to(self, user):
+ if self.is_question():
+ return self._question__assert_is_visible_to(user)
+ elif self.is_answer():
+ return self._answer__assert_is_visible_to(user)
+ elif self.is_comment():
+ return self._comment__assert_is_visible_to(user)
+ raise NotImplementedError
+
+ def get_updated_activity_data(self, created = False):
+ if self.is_answer():
+ #todo: simplify this to always return latest revision for the second
+ #part
+ if created:
+ return const.TYPE_ACTIVITY_ANSWER, self
+ else:
+ latest_revision = self.get_latest_revision()
+ return const.TYPE_ACTIVITY_UPDATE_ANSWER, latest_revision
+ elif self.is_question():
+ if created:
+ return const.TYPE_ACTIVITY_ASK_QUESTION, self
+ else:
+ latest_revision = self.get_latest_revision()
+ return const.TYPE_ACTIVITY_UPDATE_QUESTION, latest_revision
+ elif self.is_comment():
+ if self.parent.post_type == 'question':
+ return const.TYPE_ACTIVITY_COMMENT_QUESTION, self
+ elif self.parent.post_type == 'answer':
+ return const.TYPE_ACTIVITY_COMMENT_ANSWER, self
+ elif self.is_tag_wiki():
+ if created:
+ return const.TYPE_ACTIVITY_CREATE_TAG_WIKI, self
+ else:
+ return const.TYPE_ACTIVITY_UPDATE_TAG_WIKI, self
+ elif self.is_reject_reason():
+ if created:
+ return const.TYPE_ACTIVITY_CREATE_REJECT_REASON, self
+ else:
+ return const.TYPE_ACTIVITY_UPDATE_REJECT_REASON, self
+
+
+ raise NotImplementedError
+
+ def get_tag_names(self):
+ return self.thread.get_tag_names()
+
+ def __apply_edit(
+ self,
+ edited_at = None,
+ edited_by = None,
+ text = None,
+ comment = None,
+ wiki = False,
+ edit_anonymously = False,
+ by_email = False
+ ):
+ if text is None:
+ text = self.get_latest_revision().text
+ if edited_at is None:
+ edited_at = datetime.datetime.now()
+ if edited_by is None:
+ raise Exception('edited_by is required')
+
+ self.last_edited_at = edited_at
+ self.last_edited_by = edited_by
+ #self.html is denormalized in save()
+ self.text = text
+ self.is_anonymous = edit_anonymously
+
+ #wiki is an eternal trap whence there is no exit
+ if self.wiki == False and wiki == True:
+ self.wiki = True
+
+ #must add revision before saving the answer
+ self.add_revision(
+ author = edited_by,
+ revised_at = edited_at,
+ text = text,
+ comment = comment,
+ by_email = by_email
+ )
+
+ self.parse_and_save(author = edited_by)
+
+ def _answer__apply_edit(
+ self,
+ edited_at = None,
+ edited_by = None,
+ text = None,
+ comment = None,
+ wiki = False,
+ by_email = False
+ ):
+
+ self.__apply_edit(
+ edited_at = edited_at,
+ edited_by = edited_by,
+ text = text,
+ comment = comment,
+ wiki = wiki,
+ by_email = by_email
+ )
+ if edited_at is None:
+ edited_at = datetime.datetime.now()
+ self.thread.set_last_activity(last_activity_at=edited_at, last_activity_by=edited_by)
+
+ def _question__apply_edit(self, edited_at=None, edited_by=None, title=None,\
+ text=None, comment=None, tags=None, wiki=False,\
+ edit_anonymously = False,
+ by_email = False
+ ):
+
+ #todo: the thread editing should happen outside of this
+ #method, then we'll be able to unify all the *__apply_edit
+ #methods
+ latest_revision = self.get_latest_revision()
+ #a hack to allow partial edits - important for SE loader
+ if title is None:
+ title = self.thread.title
+ if tags is None:
+ tags = latest_revision.tagnames
+ if edited_at is None:
+ edited_at = datetime.datetime.now()
+
+ # Update the Question tag associations
+ if latest_revision.tagnames != tags:
+ self.thread.update_tags(tagnames = tags, user = edited_by, timestamp = edited_at)
+
+ self.thread.title = title
+ self.thread.tagnames = tags
+ self.thread.save()
+
+ self.__apply_edit(
+ edited_at = edited_at,
+ edited_by = edited_by,
+ text = text,
+ comment = comment,
+ wiki = wiki,
+ edit_anonymously = edit_anonymously,
+ by_email = by_email
+ )
+
+ self.thread.set_last_activity(last_activity_at=edited_at, last_activity_by=edited_by)
+
+ def apply_edit(self, *args, **kwargs):
+ #todo: unify this, here we have unnecessary indirection
+ #the question__apply_edit function is backwards:
+ #the title edit and tag edit should apply to thread
+ #not the question post
+ if self.is_answer():
+ return self._answer__apply_edit(*args, **kwargs)
+ elif self.is_question():
+ return self._question__apply_edit(*args, **kwargs)
+ elif self.is_tag_wiki() or self.is_comment() or self.is_reject_reason():
+ return self.__apply_edit(*args, **kwargs)
+ raise NotImplementedError
+
+ def __add_revision(
+ self,
+ author = None,
+ revised_at = None,
+ text = None,
+ comment = None,
+ by_email = False
+ ):
+ #todo: this may be identical to Question.add_revision
+ if None in (author, revised_at, text):
+ raise Exception('arguments author, revised_at and text are required')
+ rev_no = self.revisions.all().count() + 1
+ if comment in (None, ''):
+ if rev_no == 1:
+ comment = const.POST_STATUS['default_version']
+ else:
+ comment = 'No.%s Revision' % rev_no
+ from askbot.models.post import PostRevision
+ return PostRevision.objects.create_answer_revision(
+ post = self,
+ author = author,
+ revised_at = revised_at,
+ text = text,
+ summary = comment,
+ revision = rev_no,
+ by_email = by_email
+ )
+
+ def _question__add_revision(
+ self,
+ author = None,
+ is_anonymous = False,
+ text = None,
+ comment = None,
+ revised_at = None,
+ by_email = False,
+ email_address = None
+ ):
+ if None in (author, text):
+ raise Exception('author, text and comment are required arguments')
+ rev_no = self.revisions.all().count() + 1
+ if comment in (None, ''):
+ if rev_no == 1:
+ comment = const.POST_STATUS['default_version']
+ else:
+ comment = 'No.%s Revision' % rev_no
+
+ from askbot.models.post import PostRevision
+ return PostRevision.objects.create_question_revision(
+ post = self,
+ revision = rev_no,
+ title = self.thread.title,
+ author = author,
+ is_anonymous = is_anonymous,
+ revised_at = revised_at,
+ tagnames = self.thread.tagnames,
+ summary = comment,
+ text = text,
+ by_email = by_email,
+ email_address = email_address
+ )
+
+ def add_revision(self, *kargs, **kwargs):
+ #todo: unify these
+ if self.post_type in ('answer', 'comment', 'tag_wiki', 'reject_reason'):
+ return self.__add_revision(*kargs, **kwargs)
+ elif self.is_question():
+ return self._question__add_revision(*kargs, **kwargs)
+ raise NotImplementedError
+
+ def _answer__get_response_receivers(self, exclude_list = None):
+ """get list of users interested in this response
+ update based on their participation in the question
+ activity
+
+ exclude_list is required and normally should contain
+ author of the updated so that he/she is not notified of
+ the response
+ """
+ assert(exclude_list is not None)
+ recipients = set()
+ recipients.update(
+ self.get_author_list(
+ include_comments = True
+ )
+ )
+ question = self.thread._question_post()
+ recipients.update(
+ question.get_author_list(
+ include_comments = True
+ )
+ )
+ for answer in question.thread.posts.get_answers().all():
+ recipients.update(answer.get_author_list())
+
+ recipients -= set(exclude_list)
+
+ return list(recipients)
+
+ def _question__get_response_receivers(self, exclude_list = None):
+ """returns list of users who might be interested
+ in the question update based on their participation
+ in the question activity
+
+ exclude_list is mandatory - it normally should have the
+ author of the update so the he/she is not notified about the update
+ """
+ assert(exclude_list != None)
+ recipients = set()
+ recipients.update(
+ self.get_author_list(
+ include_comments = True
+ )
+ )
+ #do not include answer commenters here
+ for a in self.thread.posts.get_answers().all():
+ recipients.update(a.get_author_list())
+
+ recipients -= set(exclude_list)
+ return recipients
+
+ def _comment__get_response_receivers(self, exclude_list = None):
+ """Response receivers are commenters of the
+ same post and the authors of the post itself.
+ """
+ assert(exclude_list is not None)
+ users = set()
+ #get authors of parent object and all associated comments
+ users.update(
+ self.parent.get_author_list(
+ include_comments = True,
+ )
+ )
+ users -= set(exclude_list)
+ return list(users)
+
+
+ def get_response_receivers(self, exclude_list = None):
+ """returns a list of response receiving users"""
+ if self.is_answer():
+ return self._answer__get_response_receivers(exclude_list)
+ elif self.is_question():
+ return self._question__get_response_receivers(exclude_list)
+ elif self.is_comment():
+ return self._comment__get_response_receivers(exclude_list)
+ elif self.is_tag_wiki() or self.is_reject_reason():
+ return list()#todo: who should get these?
+ raise NotImplementedError
+
+ def get_question_title(self):
+ if self.is_question():
+ if self.thread.closed:
+ attr = const.POST_STATUS['closed']
+ elif self.deleted:
+ attr = const.POST_STATUS['deleted']
+ else:
+ attr = None
+ if attr is not None:
+ return u'%s %s' % (self.thread.title, attr)
+ else:
+ return self.thread.title
+ raise NotImplementedError
+
+ def accepted(self):
+ if self.is_answer():
+ return self.thread.accepted_answer_id == self.id
+ raise NotImplementedError
+
+ def get_page_number(self, answer_posts):
+ """When question has many answers, answers are
+ paginated. This function returns number of the page
+ on which the answer will be shown, using the default
+ sort order. The result may depend on the visitor."""
+ if not self.is_answer() and not self.is_comment():
+ raise NotImplementedError
+
+ if self.is_comment():
+ post = self.parent
+ else:
+ post = self
+
+ order_number = 0
+ for answer_post in answer_posts:
+ if post == answer_post:
+ break
+ order_number += 1
+ return int(order_number/const.ANSWERS_PAGE_SIZE) + 1
+
+ def get_order_number(self):
+ if not self.is_comment():
+ raise NotImplementedError
+ return self.parent.comments.filter(added_at__lt = self.added_at).count() + 1
+
+ def is_upvoted_by(self, user):
+ from askbot.models.repute import Vote
+ return Vote.objects.filter(user=user, voted_post=self, vote=Vote.VOTE_UP).exists()
+
+ def is_last(self):
+ """True if there are no newer comments on
+ the related parent object
+ """
+ if not self.is_comment():
+ raise NotImplementedError
+ return Post.objects.get_comments().filter(
+ added_at__gt=self.added_at,
+ parent=self.parent
+ ).exists() is False
+
+ def hack_template_marker(self, name):
+ list(Post.objects.filter(text=name))
-#class Post(models.Model):
-# pass
class PostRevisionManager(models.Manager):
def create(self, *kargs, **kwargs):
@@ -13,11 +1640,15 @@ class PostRevisionManager(models.Manager):
def create_question_revision(self, *kargs, **kwargs):
kwargs['revision_type'] = self.model.QUESTION_REVISION
- return super(PostRevisionManager, self).create(*kargs, **kwargs)
+ revision = super(PostRevisionManager, self).create(*kargs, **kwargs)
+ revision.moderate_or_publish()
+ return revision
def create_answer_revision(self, *kargs, **kwargs):
kwargs['revision_type'] = self.model.ANSWER_REVISION
- return super(PostRevisionManager, self).create(*kargs, **kwargs)
+ revision = super(PostRevisionManager, self).create(*kargs, **kwargs)
+ revision.moderate_or_publish()
+ return revision
def question_revisions(self):
return self.filter(revision_type=self.model.QUESTION_REVISION)
@@ -40,10 +1671,11 @@ class PostRevision(models.Model):
)
REVISION_TYPE_CHOICES_DICT = dict(REVISION_TYPE_CHOICES)
- answer = models.ForeignKey('askbot.Answer', related_name='revisions', null=True, blank=True)
- question = models.ForeignKey('askbot.Question', related_name='revisions', null=True, blank=True)
+ post = models.ForeignKey('askbot.Post', related_name='revisions', null=True, blank=True)
- revision_type = models.SmallIntegerField(choices=REVISION_TYPE_CHOICES)
+ #todo: remove this field, as revision type is determined by the
+ #Post.post_type revision_type is a useless field
+ revision_type = models.SmallIntegerField(choices=REVISION_TYPE_CHOICES) # TODO: remove as we have Post now
revision = models.PositiveIntegerField()
author = models.ForeignKey('auth.User', related_name='%(class)ss')
@@ -51,6 +1683,13 @@ class PostRevision(models.Model):
summary = models.CharField(max_length=300, blank=True)
text = models.TextField()
+ approved = models.BooleanField(default=False, db_index=True)
+ approved_by = models.ForeignKey(User, null = True, blank = True)
+ approved_at = models.DateTimeField(null = True, blank = True)
+
+ by_email = models.BooleanField(default = False)#true, if edited by email
+ email_address = models.EmailField(null = True, blank = True)
+
# Question-specific fields
title = models.CharField(max_length=300, blank=True, default='')
tagnames = models.CharField(max_length=125, blank=True, default='')
@@ -62,10 +1701,124 @@ class PostRevision(models.Model):
# INFO: This `unique_together` constraint might be problematic for databases in which
# 2+ NULLs cannot be stored in an UNIQUE column.
# As far as I know MySQL, PostgreSQL and SQLite allow that so we're on the safe side.
- unique_together = (('answer', 'revision'), ('question', 'revision'))
+ unique_together = ('post', 'revision')
ordering = ('-revision',)
app_label = 'askbot'
+ def needs_moderation(self):
+ """``True`` if post needs moderation"""
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ #todo: needs a lot of details
+ if self.author.is_administrator_or_moderator():
+ return False
+ if self.approved:
+ return False
+
+ #if sent by email to group and group does not want moderation
+ if self.by_email and self.email_address:
+ group_name = self.email_address.split('@')[0]
+ try:
+ group = Tag.objects.get(name = group_name, deleted = False)
+ return group.group.profile.moderate_email
+ except Tag.DoesNotExist:
+ pass
+ return True
+ return False
+
+ def place_on_moderation_queue(self):
+ """If revision is the first one,
+ keeps the post invisible until the revision
+ is aprroved.
+ If the revision is an edit, will autoapprove
+ but will still add it to the moderation queue.
+
+ Eventually we might find a way to moderate every
+ edit as well."""
+ #this is run on "post-save" so for a new post
+ #we'll have just one revision
+ if self.post.revisions.count() == 1:
+ activity_type = const.TYPE_ACTIVITY_MODERATED_NEW_POST
+
+ self.approved = False
+ self.approved_by = None
+ self.approved_at = None
+
+ self.post.approved = False
+ self.post.save()
+
+ if self.post.is_question():
+ self.post.thread.approved = False
+ self.post.thread.save()
+ #above changes will hide post from the public display
+ if self.by_email:
+ #todo: move this to the askbot.mail module
+ from askbot.mail import send_mail
+ email_context = {
+ 'site': askbot_settings.APP_SHORT_NAME
+ }
+ body_text = _(
+ 'Thank you for your post to %(site)s. '
+ 'It will be published after the moderators review.'
+ ) % email_context
+ send_mail(
+ subject_line = _('your post to %(site)s') % email_context,
+ body_text = body_text,
+ recipient_list = [self.author.email,],
+ )
+
+ else:
+ message = _(
+ 'Your post was placed on the moderation queue '
+ 'and will be published after the moderator approval.'
+ )
+ self.author.message_set.create(message = message)
+ else:
+ #In this case, for now we just flag the edit
+ #for the moderators.
+ #Ideally we'd need to hide the edit itself,
+ #but the complication is that when we have more
+ #than one edit in a row and then we'll need to deal with
+ #merging multiple edits. We don't have a solution for this yet.
+ activity_type = const.TYPE_ACTIVITY_MODERATED_POST_EDIT
+
+ from askbot.models import Activity, get_admins_and_moderators
+ activity = Activity(
+ user = self.author,
+ content_object = self,
+ activity_type = activity_type,
+ question = self.get_origin_post()
+ )
+ activity.save()
+ #todo: make this group-sensitive
+ activity.add_recipients(get_admins_and_moderators())
+
+ def moderate_or_publish(self):
+ """either place on moderation queue or announce
+ that this revision is published"""
+ if self.needs_moderation():#moderate
+ self.place_on_moderation_queue()
+ else:#auto-approve
+ from askbot.models import signals
+ signals.post_revision_published.send(None, revision = self)
+
+ def should_notify_author_about_publishing(self, was_approved = False):
+ """True if author should get email about making own post"""
+ if self.by_email:
+ schedule = askbot_settings.SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN
+ if schedule == const.NEVER:
+ return False
+ elif schedule == const.FOR_FIRST_REVISION:
+ return self.revision == 1
+ elif schedule == const.FOR_ANY_REVISION:
+ return True
+ else:
+ raise ValueError()
+ else:
+ #logic not implemented yet
+ #the ``was_approved`` argument will be used here
+ #schedule = askbot_settings.SELF_NOTIFY_WEB_POST_AUTHOR_WHEN
+ return False
+
def revision_type_str(self):
return self.REVISION_TYPE_CHOICES_DICT[self.revision_type]
@@ -73,16 +1826,16 @@ class PostRevision(models.Model):
return u'%s - revision %s of %s' % (self.revision_type_str(), self.revision, self.title)
def parent(self):
- if self.is_question_revision():
- return self.question
- elif self.is_answer_revision():
- return self.answer
+ return self.post
def clean(self):
"Internal cleaning method, called from self.save() by self.full_clean()"
- if bool(self.question) == bool(self.answer): # one and only one has to be set (!xor)
- raise ValidationError('One (and only one) of question/answer fields has to be set.')
- if (self.question and not self.is_question_revision()) or (self.answer and not self.is_answer_revision()):
+ # TODO: Remove this when we remove `revision_type`
+ if not self.post:
+ raise ValidationError('Post field has to be set.')
+
+ if (self.post.post_type == 'question' and not self.is_question_revision()) or \
+ (self.post.post_type == 'answer' and not self.is_answer_revision()):
raise ValidationError('Revision_type doesn`t match values in question/answer fields.')
def save(self, **kwargs):
@@ -105,15 +1858,20 @@ class PostRevision(models.Model):
@models.permalink
def get_absolute_url(self):
if self.is_question_revision():
- return 'question_revisions', (self.question.id,), {}
+ return 'question_revisions', (self.post.id,), {}
elif self.is_answer_revision():
- return 'answer_revisions', (), {'id':self.answer.id}
+ return 'answer_revisions', (), {'id':self.post.id}
def get_question_title(self):
#INFO: ack-grepping shows that it's only used for Questions, so there's no code for Answers
- return self.question.title
+ return self.question.thread.title
- def as_html(self, **kwargs):
+ def get_origin_post(self):
+ """same as Post.get_origin_post()"""
+ return self.post.get_origin_post()
+
+ @property
+ def html(self, **kwargs):
markdowner = markup.get_parser()
sanitized_html = sanitize_html(markdowner.convert(self.text))
@@ -124,3 +1882,31 @@ class PostRevision(models.Model):
}
elif self.is_answer_revision():
return sanitized_html
+
+ def get_snippet(self, max_length = 120):
+ """same as Post.get_snippet"""
+ return html_utils.strip_tags(self.html)[:max_length] + '...'
+
+
+class PostFlagReason(models.Model):
+ added_at = models.DateTimeField()
+ author = models.ForeignKey('auth.User')
+ title = models.CharField(max_length=128)
+ details = models.ForeignKey(Post, related_name = 'post_reject_reasons')
+ class Meta:
+ app_label = 'askbot'
+
+
+class AnonymousAnswer(AnonymousContent):
+ question = models.ForeignKey(Post, related_name='anonymous_answers')
+
+ def publish(self, user):
+ added_at = datetime.datetime.now()
+ Post.objects.create_new_answer(
+ thread=self.question.thread,
+ author=user,
+ added_at=added_at,
+ wiki=self.wiki,
+ text=self.text
+ )
+ self.delete()
diff --git a/askbot/models/question.py b/askbot/models/question.py
index e09f2335..3e8d2267 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -1,98 +1,100 @@
-import logging
import datetime
+import operator
+import re
+
from django.conf import settings
-from django.utils.datastructures import SortedDict
from django.db import models
from django.contrib.auth.models import User
-from django.contrib.sitemaps import ping_google
+from django.core import cache # import cache, not from cache import cache, to be able to monkey-patch cache.cache in test cases
+from django.core.urlresolvers import reverse
+from django.utils.hashcompat import md5_constructor
from django.utils.translation import ugettext as _
+from django.utils.translation import ungettext
+
import askbot
import askbot.conf
from askbot.models.tag import Tag
from askbot.models.base import AnonymousContent
-from askbot.models.post import PostRevision
-from askbot.models.base import BaseQuerySetManager
-from askbot.models import content
+from askbot.models.post import Post, PostRevision
from askbot.models import signals
from askbot import const
from askbot.utils.lists import LazyList
-from askbot.utils.slug import slugify
from askbot.utils import mysql
+from askbot.utils.slug import slugify
+from askbot.skins.loaders import get_template #jinja2 template loading enviroment
+from askbot.search.state_manager import DummySearchState
-#todo: too bad keys are duplicated see const sort methods
-QUESTION_ORDER_BY_MAP = {
- 'age-desc': '-added_at',
- 'age-asc': 'added_at',
- 'activity-desc': '-last_activity_at',
- 'activity-asc': 'last_activity_at',
- 'answers-desc': '-answer_count',
- 'answers-asc': 'answer_count',
- 'votes-desc': '-score',
- 'votes-asc': 'score',
- 'relevance-desc': None#this is a special case for postges only
-}
-
-def get_tag_summary_from_questions(questions):
- """returns a humanized string containing up to
- five most frequently used
- unique tags coming from the ``questions``.
- Variable ``questions`` is an iterable of
- :class:`~askbot.models.Question` model objects.
-
- This is not implemented yet as a query set method,
- because it is used on a list.
- """
- #todo: in python 2.6 there is collections.Counter() thing
- #which would be very useful here
- tag_counts = dict()
- for question in questions:
- tag_names = question.get_tag_names()
- for tag_name in tag_names:
- if tag_name in tag_counts:
- tag_counts[tag_name] += 1
- else:
- tag_counts[tag_name] = 1
- tag_list = tag_counts.keys()
- #sort in descending order
- tag_list.sort(lambda x, y: cmp(tag_counts[y], tag_counts[x]))
- #note that double quote placement is important here
- if len(tag_list) == 1:
- last_topic = '"'
- elif len(tag_list) <= 5:
- last_topic = _('" and "%s"') % tag_list.pop()
- else:
- tag_list = tag_list[:5]
- last_topic = _('" and more')
+class ThreadManager(models.Manager):
+ def get_tag_summary_from_threads(self, threads):
+ """returns a humanized string containing up to
+ five most frequently used
+ unique tags coming from the ``threads``.
+ Variable ``threads`` is an iterable of
+ :class:`~askbot.models.Thread` model objects.
- return '"' + '", "'.join(tag_list) + last_topic
+ This is not implemented yet as a query set method,
+ because it is used on a list.
+ """
+ # TODO: In Python 2.6 there is collections.Counter() thing which would be very useful here
+ # TODO: In Python 2.5 there is `defaultdict` which already would be an improvement
+ tag_counts = dict()
+ for thread in threads:
+ for tag_name in thread.get_tag_names():
+ if tag_name in tag_counts:
+ tag_counts[tag_name] += 1
+ else:
+ tag_counts[tag_name] = 1
+ tag_list = tag_counts.keys()
+ tag_list.sort(key=lambda t: tag_counts[t], reverse=True)
+
+ #note that double quote placement is important here
+ if len(tag_list) == 1:
+ last_topic = '"'
+ elif len(tag_list) <= 5:
+ last_topic = _('" and "%s"') % tag_list.pop()
+ else:
+ tag_list = tag_list[:5]
+ last_topic = _('" and more')
+ return '"' + '", "'.join(tag_list) + last_topic
+
+ def create(self, *args, **kwargs):
+ raise NotImplementedError
-class QuestionQuerySet(models.query.QuerySet):
- """Custom query set subclass for :class:`~askbot.models.Question`
- """
- #todo: becomes thread query set
def create_new(
self,
- title = None,
- author = None,
- added_at = None,
- wiki = False,
- is_anonymous = False,
+ title,
+ author,
+ added_at,
+ wiki,
+ text,
tagnames = None,
- text = None
+ is_anonymous = False,
+ by_email = False,
+ email_address = None
):
- #todo: some work from this method will go to thread
- #and some - merged with the Answer.objects.create_new
- question = Question(
- title = title,
+ """creates new thread"""
+ # TODO: Some of this code will go to Post.objects.create_new
+
+ thread = super(
+ ThreadManager,
+ self
+ ).create(
+ title=title,
+ tagnames=tagnames,
+ last_activity_at=added_at,
+ last_activity_by=author
+ )
+
+ #todo: code below looks like ``Post.objects.create_new()``
+ question = Post(
+ post_type='question',
+ thread=thread,
author = author,
added_at = added_at,
- last_activity_at = added_at,
- last_activity_by = author,
wiki = wiki,
is_anonymous = is_anonymous,
- tagnames = tagnames,
#html field is denormalized in .save() call
text = text,
#summary field is denormalized in .save() call
@@ -107,7 +109,6 @@ class QuestionQuerySet(models.query.QuerySet):
question.wikified_at = added_at
question.parse_and_save(author = author)
- question.update_tags(tagnames = tagnames, user = author, timestamp = added_at)
question.add_revision(
author = author,
@@ -115,305 +116,229 @@ class QuestionQuerySet(models.query.QuerySet):
text = text,
comment = const.POST_STATUS['default_version'],
revised_at = added_at,
+ by_email = by_email,
+ email_address = email_address
)
- return question
- def get_by_text_query(self, search_query):
- """returns a query set of questions,
+ # INFO: Question has to be saved before update_tags() is called
+ thread.update_tags(tagnames = tagnames, user = author, timestamp = added_at)
+
+ return thread
+
+ def get_for_query(self, search_query, qs=None):
+ """returns a query set of questions,
matching the full text query
"""
- #todo - goes to thread - we search whole threads
- if getattr(settings, 'USE_SPHINX_SEARCH', False):
- matching_questions = Question.sphinx_search.query(search_query)
- question_ids = [q.id for q in matching_questions]
- return Question.objects.filter(deleted = False, id__in = question_ids)
- if settings.DATABASE_ENGINE == 'mysql' and mysql.supports_full_text_search():
- return self.filter(
- models.Q(title__search = search_query) \
- | models.Q(text__search = search_query) \
- | models.Q(tagnames__search = search_query) \
- | models.Q(answers__text__search = search_query)
- )
+ if not qs:
+ qs = self.all()
+# if getattr(settings, 'USE_SPHINX_SEARCH', False):
+# matching_questions = Question.sphinx_search.query(search_query)
+# question_ids = [q.id for q in matching_questions]
+# return qs.filter(posts__post_type='question', posts__deleted=False, posts__self_question_id__in=question_ids)
+ if askbot.get_database_engine_name().endswith('mysql') \
+ and mysql.supports_full_text_search():
+ return qs.filter(
+ models.Q(title__search = search_query) |
+ models.Q(tagnames__search = search_query) |
+ models.Q(posts__deleted=False, posts__text__search = search_query)
+ )
elif 'postgresql_psycopg2' in askbot.get_database_engine_name():
- rank_clause = "ts_rank(question.text_search_vector, plainto_tsquery(%s))";
- search_query = '&'.join(search_query.split())
- extra_params = (search_query,)
- extra_kwargs = {
- 'select': {'relevance': rank_clause},
- 'where': ['text_search_vector @@ plainto_tsquery(%s)'],
- 'params': extra_params,
- 'select_params': extra_params,
- }
- return self.extra(**extra_kwargs)
+ from askbot.search import postgresql
+ return postgresql.run_full_text_search(qs, search_query)
else:
- #fallback to dumb title match search
- return self.extra(
- where=['title like %s'],
- params=['%' + search_query + '%']
- )
+ return qs.filter(
+ models.Q(title__icontains=search_query) |
+ models.Q(tagnames__icontains=search_query) |
+ models.Q(posts__deleted=False, posts__text__icontains = search_query)
+ )
+
- def run_advanced_search(
- self,
- request_user = None,
- search_state = None
- ):
- """all parameters are guaranteed to be clean
+ def run_advanced_search(self, request_user, search_state): # TODO: !! review, fix, and write tests for this
+ """
+ all parameters are guaranteed to be clean
however may not relate to database - in that case
a relvant filter will be silently dropped
+
"""
- #todo: same as for get_by_text_query - goes to Tread
- scope_selector = getattr(
- search_state,
- 'scope',
- const.DEFAULT_POST_SCOPE
- )
-
- search_query = search_state.query
- tag_selector = search_state.tags
- author_selector = search_state.author
-
- sort_method = getattr(
- search_state,
- 'sort',
- const.DEFAULT_POST_SORT_METHOD
- )
-
- qs = self.filter(deleted=False)#todo - add a possibility to see deleted questions
-
- #return metadata
+ from askbot.conf import settings as askbot_settings # Avoid circular import
+
+ # TODO: add a possibility to see deleted questions
+ qs = self.filter(
+ posts__post_type='question',
+ posts__deleted=False,
+ ) # (***) brings `askbot_post` into the SQL query, see the ordering section below
+
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ qs = qs.filter(approved = True)
+
meta_data = {}
- if search_query:
- if search_state.stripped_query:
- qs = qs.get_by_text_query(search_state.stripped_query)
- #a patch for postgres search sort method
- if askbot.conf.should_show_sort_by_relevance():
- if sort_method == 'relevance-desc':
- qs = qs.extra(order_by = ['-relevance',])
- if search_state.query_title:
- qs = qs.filter(title__icontains = search_state.query_title)
- if len(search_state.query_tags) > 0:
- qs = qs.filter(tags__name__in = search_state.query_tags)
- if len(search_state.query_users) > 0:
- query_users = list()
- for username in search_state.query_users:
- try:
- user = User.objects.get(username__iexact = username)
- query_users.append(user)
- except User.DoesNotExist:
- pass
- if len(query_users) > 0:
- qs = qs.filter(author__in = query_users)
-
- if tag_selector:
- for tag in tag_selector:
- qs = qs.filter(tags__name = tag)
-
-
- #have to import this at run time, otherwise there
- #a circular import dependency...
- from askbot.conf import settings as askbot_settings
- if scope_selector:
- if scope_selector == 'unanswered':
- qs = qs.filter(closed = False)#do not show closed questions in unanswered section
- if askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_ANSWERS':
- qs = qs.filter(answer_count=0)#todo: expand for different meanings of this
- elif askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_ACCEPTED_ANSWERS':
- qs = qs.filter(answer_accepted=False)
- elif askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_UPVOTED_ANSWERS':
- raise NotImplementedError()
- else:
- raise Exception('UNANSWERED_QUESTION_MEANING setting is wrong')
- elif scope_selector == 'favorite':
- favorite_filter = models.Q(favorited_by = request_user)
- if 'followit' in settings.INSTALLED_APPS:
- followed_users = request_user.get_followed_users()
- favorite_filter |= models.Q(author__in = followed_users)
- favorite_filter |= models.Q(answers__author__in = followed_users)
- qs = qs.filter(favorite_filter)
-
+
+ if search_state.stripped_query:
+ qs = self.get_for_query(search_query=search_state.stripped_query, qs=qs)
+ if search_state.query_title:
+ qs = qs.filter(title__icontains = search_state.query_title)
+ if search_state.query_users:
+ query_users = User.objects.filter(username__in=search_state.query_users)
+ if query_users:
+ qs = qs.filter(posts__post_type='question', posts__author__in=query_users) # TODO: unify with search_state.author ?
+
+ tags = search_state.unified_tags()
+ if len(tags) > 0:
+
+ if askbot_settings.TAG_SEARCH_INPUT_ENABLED:
+ #todo: this may be gone or disabled per option
+ #"tag_search_box_enabled"
+ existing_tags = set(
+ Tag.objects.filter(
+ name__in = tags
+ ).values_list(
+ 'name',
+ flat = True
+ )
+ )
+
+ non_existing_tags = set(tags) - existing_tags
+ meta_data['non_existing_tags'] = list(non_existing_tags)
+ tags = existing_tags
+ else:
+ meta_data['non_existing_tags'] = list()
+
+ #construct filter for the tag search
+ for tag in tags:
+ qs = qs.filter(tags__name=tag) # Tags or AND-ed here, not OR-ed (i.e. we fetch only threads with all tags)
+ else:
+ meta_data['non_existing_tags'] = list()
+
+ if search_state.scope == 'unanswered':
+ qs = qs.filter(closed = False) # Do not show closed questions in unanswered section
+ if askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_ANSWERS':
+ qs = qs.filter(answer_count=0) # TODO: expand for different meanings of this
+ elif askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_ACCEPTED_ANSWERS':
+ qs = qs.filter(accepted_answer__isnull=True)
+ elif askbot_settings.UNANSWERED_QUESTION_MEANING == 'NO_UPVOTED_ANSWERS':
+ raise NotImplementedError()
+ else:
+ raise Exception('UNANSWERED_QUESTION_MEANING setting is wrong')
+
+ elif search_state.scope == 'favorite':
+ favorite_filter = models.Q(favorited_by=request_user)
+ if 'followit' in settings.INSTALLED_APPS:
+ followed_users = request_user.get_followed_users()
+ favorite_filter |= models.Q(posts__post_type__in=('question', 'answer'), posts__author__in=followed_users)
+ qs = qs.filter(favorite_filter)
+
#user contributed questions & answers
- if author_selector:
+ if search_state.author:
try:
- #todo maybe support selection by multiple authors
- u = User.objects.get(id=int(author_selector))
- qs = qs.filter(
- models.Q(author=u, deleted=False) \
- | models.Q(answers__author=u, answers__deleted=False)
- )
- meta_data['author_name'] = u.username
+ # TODO: maybe support selection by multiple authors
+ u = User.objects.get(id=int(search_state.author))
except User.DoesNotExist:
meta_data['author_name'] = None
+ else:
+ qs = qs.filter(posts__post_type__in=('question', 'answer'), posts__author=u, posts__deleted=False)
+ meta_data['author_name'] = u.username
#get users tag filters
- ignored_tag_names = None
if request_user and request_user.is_authenticated():
- uid_str = str(request_user.id)
#mark questions tagged with interesting tags
#a kind of fancy annotation, would be nice to avoid it
interesting_tags = Tag.objects.filter(
- user_selections__user=request_user,
- user_selections__reason='good'
- )
+ user_selections__user = request_user,
+ user_selections__reason = 'good'
+ )
ignored_tags = Tag.objects.filter(
- user_selections__user=request_user,
- user_selections__reason='bad'
- )
+ user_selections__user = request_user,
+ user_selections__reason = 'bad'
+ )
+ if askbot_settings.SUBSCRIBED_TAG_SELECTOR_ENABLED:
+ meta_data['subscribed_tag_names'] = Tag.objects.filter(
+ user_selections__user = request_user,
+ user_selections__reason = 'subscribed'
+ ).values_list('name', flat = True)
meta_data['interesting_tag_names'] = [tag.name for tag in interesting_tags]
+ meta_data['ignored_tag_names'] = [tag.name for tag in ignored_tags]
- ignored_tag_names = [tag.name for tag in ignored_tags]
- meta_data['ignored_tag_names'] = ignored_tag_names
-
- if interesting_tags or request_user.has_interesting_wildcard_tags():
- #expensive query
- if request_user.display_tag_filter_strategy == \
- const.INCLUDE_INTERESTING:
- #filter by interesting tags only
- interesting_tag_filter = models.Q(tags__in = interesting_tags)
- if request_user.has_interesting_wildcard_tags():
- interesting_wildcards = request_user.interesting_tags.split()
- extra_interesting_tags = Tag.objects.get_by_wildcards(
- interesting_wildcards
- )
- interesting_tag_filter |= models.Q(tags__in = extra_interesting_tags)
-
- qs = qs.filter(interesting_tag_filter)
- else:
- #simply annotate interesting questions
- qs = qs.extra(
- select = SortedDict([
- (
- 'interesting_score',
- 'SELECT COUNT(1) FROM askbot_markedtag, question_tags '
- + 'WHERE askbot_markedtag.user_id = %s '
- + 'AND askbot_markedtag.tag_id = question_tags.tag_id '
- + 'AND askbot_markedtag.reason = \'good\' '
- + 'AND question_tags.question_id = question.id'
- ),
- ]),
- select_params = (uid_str,),
- )
- # get the list of interesting and ignored tags (interesting_tag_names, ignored_tag_names) = (None, None)
+ if request_user.display_tag_filter_strategy == const.INCLUDE_INTERESTING and (interesting_tags or request_user.has_interesting_wildcard_tags()):
+ #filter by interesting tags only
+ interesting_tag_filter = models.Q(tags__in=interesting_tags)
+ if request_user.has_interesting_wildcard_tags():
+ interesting_wildcards = request_user.interesting_tags.split()
+ extra_interesting_tags = Tag.objects.get_by_wildcards(interesting_wildcards)
+ interesting_tag_filter |= models.Q(tags__in=extra_interesting_tags)
+ qs = qs.filter(interesting_tag_filter)
- if ignored_tags or request_user.has_ignored_wildcard_tags():
- if request_user.display_tag_filter_strategy == const.EXCLUDE_IGNORED:
- #exclude ignored tags if the user wants to
- qs = qs.exclude(tags__in=ignored_tags)
- if request_user.has_ignored_wildcard_tags():
- ignored_wildcards = request_user.ignored_tags.split()
- extra_ignored_tags = Tag.objects.get_by_wildcards(
- ignored_wildcards
- )
- qs = qs.exclude(tags__in = extra_ignored_tags)
- else:
- #annotate questions tagged with ignored tags
- #expensive query
- qs = qs.extra(
- select = SortedDict([
- (
- 'ignored_score',
- 'SELECT COUNT(1) '
- + 'FROM askbot_markedtag, question_tags '
- + 'WHERE askbot_markedtag.user_id = %s '
- + 'AND askbot_markedtag.tag_id = question_tags.tag_id '
- + 'AND askbot_markedtag.reason = \'bad\' '
- + 'AND question_tags.question_id = question.id'
- )
- ]),
- select_params = (uid_str, )
- )
-
- if sort_method != 'relevance-desc':
- #relevance sort is set in the extra statement
- #only for postgresql
- orderby = QUESTION_ORDER_BY_MAP[sort_method]
- qs = qs.order_by(orderby)
-
- qs = qs.distinct()
- qs = qs.select_related(
- 'last_activity_by__id',
- 'last_activity_by__username',
- 'last_activity_by__reputation',
- 'last_activity_by__gold',
- 'last_activity_by__silver',
- 'last_activity_by__bronze',
- 'last_activity_by__country',
- 'last_activity_by__show_country',
- )
-
- related_tags = Tag.objects.get_related_to_search(
- questions = qs,
- search_state = search_state,
- ignored_tag_names = ignored_tag_names
- )
- if askbot_settings.USE_WILDCARD_TAGS == True \
- and request_user.is_authenticated() == True:
- tagnames = request_user.interesting_tags
- meta_data['interesting_tag_names'].extend(tagnames.split())
- tagnames = request_user.ignored_tags
- meta_data['ignored_tag_names'].extend(tagnames.split())
- return qs, meta_data, related_tags
-
- def added_between(self, start, end):
- """questions added between ``start`` and ``end`` timestamps"""
- #todo: goes to thread
- return self.filter(
- added_at__gt = start
- ).exclude(
- added_at__gt = end
- )
-
- def get_questions_needing_reminder(self,
- user = None,
- activity_type = None,
- recurrence_delay = None):
- """returns list of questions that need a reminder,
- corresponding the given ``activity_type``
- ``user`` - is the user receiving the reminder
- ``recurrence_delay`` - interval between sending the
- reminders about the same question
- """
- #todo: goes to thread
- from askbot.models import Activity#avoid circular import
- question_list = list()
- for question in self:
- try:
- activity = Activity.objects.get(
- user = user,
- question = question,
- activity_type = activity_type
- )
- now = datetime.datetime.now()
- if now < activity.active_at + recurrence_delay:
- continue
- except Activity.DoesNotExist:
- activity = Activity(
- user = user,
- question = question,
- activity_type = activity_type,
- content_object = question,
- )
- activity.active_at = datetime.datetime.now()
- activity.save()
- question_list.append(question)
- return question_list
-
- #todo: this function is similar to get_response_receivers
- #profile this function against the other one
- #todo: maybe this must be a query set method, not manager method
- def get_question_and_answer_contributors(self, question_list):
- """returns query set of Thread contributors
- """
- #todo: goes to thread - queries will be simplified too
- answer_list = []
- #question_list = list(question_list)#important for MySQL, b/c it does not support
- from askbot.models.answer import Answer
- q_id = [question.id for question in question_list]
- a_id = list(Answer.objects.filter(question__in=q_id).values_list('id', flat=True))
- u_id = set(self.filter(id__in=q_id).values_list('author', flat=True))
- u_id = u_id.union(
- set(Answer.objects.filter(id__in=a_id).values_list('author', flat=True))
- )
+ # get the list of interesting and ignored tags (interesting_tag_names, ignored_tag_names) = (None, None)
+ if request_user.display_tag_filter_strategy == const.EXCLUDE_IGNORED and (ignored_tags or request_user.has_ignored_wildcard_tags()):
+ #exclude ignored tags if the user wants to
+ qs = qs.exclude(tags__in=ignored_tags)
+ if request_user.has_ignored_wildcard_tags():
+ ignored_wildcards = request_user.ignored_tags.split()
+ extra_ignored_tags = Tag.objects.get_by_wildcards(ignored_wildcards)
+ qs = qs.exclude(tags__in = extra_ignored_tags)
+
+ if askbot_settings.USE_WILDCARD_TAGS:
+ meta_data['interesting_tag_names'].extend(request_user.interesting_tags.split())
+ meta_data['ignored_tag_names'].extend(request_user.ignored_tags.split())
+
+ QUESTION_ORDER_BY_MAP = {
+ 'age-desc': '-added_at',
+ 'age-asc': 'added_at',
+ 'activity-desc': '-last_activity_at',
+ 'activity-asc': 'last_activity_at',
+ 'answers-desc': '-answer_count',
+ 'answers-asc': 'answer_count',
+ 'votes-desc': '-score',
+ 'votes-asc': 'score',
+
+ 'relevance-desc': '-relevance', # special Postgresql-specific ordering, 'relevance' quaso-column is added by get_for_query()
+ }
+ orderby = QUESTION_ORDER_BY_MAP[search_state.sort]
+ qs = qs.extra(order_by=[orderby])
+
+ # HACK: We add 'ordering_key' column as an alias and order by it, because when distict() is used,
+ # qs.extra(order_by=[orderby,]) is lost if only `orderby` column is from askbot_post!
+ # Removing distinct() from the queryset fixes the problem, but we have to use it here.
+ # UPDATE: Apparently we don't need distinct, the query don't duplicate Thread rows!
+ # qs = qs.extra(select={'ordering_key': orderby.lstrip('-')}, order_by=['-ordering_key' if orderby.startswith('-') else 'ordering_key'])
+ # qs = qs.distinct()
+
+ qs = qs.only('id', 'title', 'view_count', 'answer_count', 'last_activity_at', 'last_activity_by', 'closed', 'tagnames', 'accepted_answer')
+
+ #print qs.query
+
+ return qs.distinct(), meta_data
+
+ def precache_view_data_hack(self, threads):
+ # TODO: Re-enable this when we have a good test cases to verify that it works properly.
+ #
+ # E.g.: - make sure that not precaching give threads never increase # of db queries for the main page
+ # - make sure that it really works, i.e. stuff for non-cached threads is fetched properly
+ # Precache data only for non-cached threads - only those will be rendered
+ #threads = [thread for thread in threads if not thread.summary_html_cached()]
+
+ page_questions = Post.objects.filter(post_type='question', thread__in=[obj.id for obj in threads])\
+ .only('id', 'thread', 'score', 'is_anonymous', 'summary', 'post_type', 'deleted') # pick only the used fields
+ page_question_map = {}
+ for pq in page_questions:
+ page_question_map[pq.thread_id] = pq
+ for thread in threads:
+ thread._question_cache = page_question_map[thread.id]
+
+ last_activity_by_users = User.objects.filter(id__in=[obj.last_activity_by_id for obj in threads])\
+ .only('id', 'username', 'country', 'show_country')
+ user_map = {}
+ for la_user in last_activity_by_users:
+ user_map[la_user.id] = la_user
+ for thread in threads:
+ thread._last_activity_by_cache = user_map[thread.last_activity_by_id]
+
+
+ #todo: this function is similar to get_response_receivers - profile this function against the other one
+ def get_thread_contributors(self, thread_list):
+ """Returns query set of Thread contributors"""
+ # INFO: Evaluate this query to avoid subquery in the subsequent query below (At least MySQL can be awfully slow on subqueries)
+ u_id = list(Post.objects.filter(post_type__in=('question', 'answer'), thread__in=thread_list).values_list('author', flat=True))
#todo: this does not belong gere - here we select users with real faces
#first and limit the number of users in the result for display
@@ -423,119 +348,290 @@ class QuestionQuerySet(models.query.QuerySet):
from askbot.conf import settings as askbot_settings
avatar_limit = askbot_settings.SIDEBAR_MAIN_AVATAR_LIMIT
contributors = User.objects.filter(id__in=u_id).order_by('avatar_type', '?')[:avatar_limit]
- #print contributors
- #could not optimize this query with indices so it was split into what's now above
- #contributors = User.objects.filter(
- # models.Q(questions__in=question_list) \
- # | models.Q(answers__in=answer_list)
- # ).distinct()
- #contributors = list(contributors)
return contributors
- def get_author_list(self, **kwargs):
- #todo: - this is duplication - answer manager also has this method
- #will be gone when models are consolidated
- #note that method get_question_and_answer_contributors is similar in function
- #todo: goes to thread
- authors = set()
- for question in self:
- authors.update(question.get_author_list(**kwargs))
- return list(authors)
-
- def update_view_count(self, question):
- """
- update counter+1 when user browse question page
- """
- #todo: moves to thread
- self.filter(id=question.id).update(view_count = question.view_count + 1)
+ def get_for_user(self, user):
+ """returns threads where a given user had participated"""
+ post_ids = PostRevision.objects.filter(
+ author = user
+ ).values_list(
+ 'post_id', flat = True
+ ).distinct()
+ thread_ids = Post.objects.filter(
+ id__in = post_ids
+ ).values_list(
+ 'thread_id', flat = True
+ ).distinct()
+ return self.filter(id__in = thread_ids)
+
+
+class Thread(models.Model):
+ SUMMARY_CACHE_KEY_TPL = 'thread-question-summary-%d'
+ ANSWER_LIST_KEY_TPL = 'thread-answer-list-%d'
+ title = models.CharField(max_length=300)
+
+ tags = models.ManyToManyField('Tag', related_name='threads')
+
+ # Denormalised data, transplanted from Question
+ tagnames = models.CharField(max_length=125)
+ view_count = models.PositiveIntegerField(default=0)
+ favourite_count = models.PositiveIntegerField(default=0)
+ answer_count = models.PositiveIntegerField(default=0)
+ last_activity_at = models.DateTimeField(default=datetime.datetime.now)
+ last_activity_by = models.ForeignKey(User, related_name='unused_last_active_in_threads')
+
+ followed_by = models.ManyToManyField(User, related_name='followed_threads')
+ favorited_by = models.ManyToManyField(User, through='FavoriteQuestion', related_name='unused_favorite_threads')
-class QuestionManager(BaseQuerySetManager):
- """chainable custom query set manager for
- questions
- """
- #todo: becomes thread manager
- def get_query_set(self):
- return QuestionQuerySet(self.model)
-
-
-class Question(content.Content):
- #todo: this really becomes thread,
- #except property post_type goes to Post
- post_type = 'question'
- title = models.CharField(max_length=300)
- tags = models.ManyToManyField('Tag', related_name='questions')
- #todo: answer accepted will be replaced with
- #accepted_answer foreign key (nullable)
- answer_accepted = models.BooleanField(default=False)
closed = models.BooleanField(default=False)
- closed_by = models.ForeignKey(User, null=True, blank=True, related_name='closed_questions')
+ closed_by = models.ForeignKey(User, null=True, blank=True) #, related_name='closed_questions')
closed_at = models.DateTimeField(null=True, blank=True)
close_reason = models.SmallIntegerField(
- choices=const.CLOSE_REASONS,
- null=True,
+ choices=const.CLOSE_REASONS,
+ null=True,
blank=True
)
- followed_by = models.ManyToManyField(User, related_name='followed_questions')
-
- # Denormalised data
- answer_count = models.PositiveIntegerField(default=0)
- view_count = models.PositiveIntegerField(default=0)
- favourite_count = models.PositiveIntegerField(default=0)
- last_activity_at = models.DateTimeField(default=datetime.datetime.now)
- last_activity_by = models.ForeignKey(User, related_name='last_active_in_questions')
- tagnames = models.CharField(max_length=125)
- summary = models.CharField(max_length=180)
-
- favorited_by = models.ManyToManyField(User, through='FavoriteQuestion', related_name='favorite_questions')
- #note: anonymity here applies to question only, but
- #the field will still go to thread
- #maybe we should rename it to is_question_anonymous
- #we might have to duplicate the is_anonymous on the Post,
- #if we are to allow anonymous answers
- #the reason is that the title and tags belong to thread,
- #but the question body to Post
- is_anonymous = models.BooleanField(default=False)
-
- objects = QuestionManager()
-
- class Meta(content.Content.Meta):
- db_table = u'question'
- def remove_author_anonymity(self):
- """removes anonymous flag from the question
- and all its revisions
- the function calls update method to make sure that
- signals are not called
+ #denormalized data: the core approval of the posts is made
+ #in the revisions. In the revisions there is more data about
+ #approvals - by whom and when
+ approved = models.BooleanField(default=True, db_index=True)
+
+ accepted_answer = models.ForeignKey(Post, null=True, blank=True, related_name='+')
+ answer_accepted_at = models.DateTimeField(null=True, blank=True)
+ added_at = models.DateTimeField(default = datetime.datetime.now)
+
+ score = models.IntegerField(default = 0)
+
+ objects = ThreadManager()
+
+ class Meta:
+ app_label = 'askbot'
+
+ def _question_post(self, refresh=False):
+ if refresh and hasattr(self, '_question_cache'):
+ delattr(self, '_question_cache')
+ post = getattr(self, '_question_cache', None)
+ if post:
+ return post
+ self._question_cache = Post.objects.get(post_type='question', thread=self)
+ return self._question_cache
+
+ def get_absolute_url(self):
+ return self._question_post().get_absolute_url(thread = self)
+ #question_id = self._question_post().id
+ #return reverse('question', args = [question_id]) + slugify(self.title)
+
+ def update_favorite_count(self):
+ self.favourite_count = FavoriteQuestion.objects.filter(thread=self).count()
+ self.save()
+
+ def update_answer_count(self):
+ self.answer_count = self.get_answers().count()
+ self.save()
+
+ def increase_view_count(self, increment=1):
+ qset = Thread.objects.filter(id=self.id)
+ qset.update(view_count=models.F('view_count') + increment)
+ self.view_count = qset.values('view_count')[0]['view_count'] # get the new view_count back because other pieces of code relies on such behaviour
+ ####################################################################
+ self.update_summary_html() # regenerate question/thread summary html
+ ####################################################################
+
+ def set_closed_status(self, closed, closed_by, closed_at, close_reason):
+ self.closed = closed
+ self.closed_by = closed_by
+ self.closed_at = closed_at
+ self.close_reason = close_reason
+ self.save()
+ self.invalidate_cached_data()
+
+ def set_accepted_answer(self, answer, timestamp):
+ if answer and answer.thread != self:
+ raise ValueError("Answer doesn't belong to this thread")
+ self.accepted_answer = answer
+ self.answer_accepted_at = timestamp
+ self.save()
+
+ def set_last_activity(self, last_activity_at, last_activity_by):
+ self.last_activity_at = last_activity_at
+ self.last_activity_by = last_activity_by
+ self.save()
+ ####################################################################
+ self.update_summary_html() # regenerate question/thread summary html
+ ####################################################################
+
+ def get_tag_names(self):
+ "Creates a list of Tag names from the ``tagnames`` attribute."
+ if self.tagnames.strip() == '':
+ return list()
+ else:
+ return self.tagnames.split(u' ')
+
+ def get_title(self, question=None):
+ if not question:
+ question = self._question_post() # allow for optimization if the caller has already fetched the question post for this thread
+ if self.closed:
+ attr = const.POST_STATUS['closed']
+ elif question.deleted:
+ attr = const.POST_STATUS['deleted']
+ else:
+ attr = None
+ if attr is not None:
+ return u'%s %s' % (self.title, attr)
+ else:
+ return self.title
+
+ def format_for_email(self):
+ """experimental function: output entire thread for email"""
+ question, answers, junk = self.get_cached_post_data()
+ output = question.format_for_email_as_subthread()
+ if answers:
+ answer_heading = ungettext(
+ '%(count)d answer:',
+ '%(count)d answers:',
+ len(answers)
+ ) % {'count': len(answers)}
+ output += '<p>%s</p>' % answer_heading
+ for answer in answers:
+ output += answer.format_for_email_as_subthread()
+ return output
+
+ def get_answers_by_user(self, user):
+ """regardless - deleted or not"""
+ return self.posts.filter(post_type = 'answer', author = user)
+
+ def has_answer_by_user(self, user):
+ #use len to cache the queryset
+ return len(self.get_answers_by_user(user)) > 0
+
+ def tagname_meta_generator(self):
+ return u','.join([unicode(tag) for tag in self.get_tag_names()])
+
+ def all_answers(self):
+ return self.posts.get_answers()
+
+ def get_answers(self, user=None):
+ """returns query set for answers to this question
+ that may be shown to the given user
"""
- #note: see note for the is_anonymous field
- #it is important that update method is called - not save,
- #because we do not want the signals to fire here
- Question.objects.filter(id = self.id).update(is_anonymous = False)
- self.revisions.all().update(is_anonymous = False)
+ if user is None or user.is_anonymous():
+ return self.posts.get_answers().filter(deleted=False)
+ else:
+ if user.is_administrator() or user.is_moderator():
+ return self.posts.get_answers()
+ else:
+ return self.posts.get_answers().filter(
+ models.Q(deleted = False) | models.Q(author = user) \
+ | models.Q(deleted_by = user)
+ )
- def update_answer_count(self, save = True):
- """updates the denormalized field 'answer_count'
- on the question
+ def invalidate_cached_thread_content_fragment(self):
+ cache.cache.delete(self.SUMMARY_CACHE_KEY_TPL % self.id)
+
+ def get_post_data_cache_key(self, sort_method = None):
+ return 'thread-data-%s-%s' % (self.id, sort_method)
+
+ def invalidate_cached_post_data(self):
+ """needs to be called when anything notable
+ changes in the post data - on votes, adding,
+ deleting, editing content"""
+ #we can call delete_many() here if using Django > 1.2
+ for sort_method in const.ANSWER_SORT_METHODS:
+ cache.cache.delete(self.get_post_data_cache_key(sort_method))
+
+ def invalidate_cached_data(self):
+ self.invalidate_cached_post_data()
+ #self.invalidate_cached_thread_content_fragment()
+ self.update_summary_html()
+
+ def get_cached_post_data(self, sort_method = 'votes'):
+ """returns cached post data, as calculated by
+ the method get_post_data()"""
+ key = self.get_post_data_cache_key(sort_method)
+ post_data = cache.cache.get(key)
+ if not post_data:
+ post_data = self.get_post_data(sort_method)
+ cache.cache.set(key, post_data, const.LONG_TIME)
+ return post_data
+
+ def get_post_data(self, sort_method = 'votes'):
+ """returns question, answers as list and a list of post ids
+ for the given thread
+ the returned posts are pre-stuffed with the comments
+ all (both posts and the comments sorted in the correct
+ order)
"""
- #todo: goes to thread
- self.answer_count = self.get_answers().count()
- if save:
- self.save()
-
- def update_favorite_count(self):
- """update favourite_count for given question
+ thread_posts = self.posts.all().order_by(
+ {
+ 'latest':'-added_at',
+ 'oldest':'added_at',
+ 'votes':'-score'
+ }[sort_method]
+ )
+ #1) collect question, answer and comment posts and list of post id's
+ answers = list()
+ post_map = dict()
+ comment_map = dict()
+ post_to_author = dict()
+ question_post = None
+ for post in thread_posts:
+ #pass through only deleted question posts
+ if post.deleted and post.post_type != 'question':
+ continue
+ if post.approved == False:#hide posts on the moderation queue
+ continue
+
+ post_to_author[post.id] = post.author_id
+
+ if post.post_type == 'answer':
+ answers.append(post)
+ post_map[post.id] = post
+ elif post.post_type == 'comment':
+ if post.parent_id not in comment_map:
+ comment_map[post.parent_id] = list()
+ comment_map[post.parent_id].append(post)
+ elif post.post_type == 'question':
+ assert(question_post == None)
+ post_map[post.id] = post
+ question_post = post
+
+ #2) sort comments in the temporal order
+ for comment_list in comment_map.values():
+ comment_list.sort(key=operator.attrgetter('added_at'))
+
+ #3) attach comments to question and the answers
+ for post_id, comment_list in comment_map.items():
+ try:
+ post_map[post_id].set_cached_comments(comment_list)
+ except KeyError:
+ pass#comment to deleted answer - don't want it
+
+ if self.has_accepted_answer() and self.accepted_answer.deleted == False:
+ #Put the accepted answer to front
+ #the second check is for the case when accepted answer is deleted
+ accepted_answer = post_map[self.accepted_answer_id]
+ answers.remove(accepted_answer)
+ answers.insert(0, accepted_answer)
+
+ return (question_post, answers, post_to_author)
+
+ def has_accepted_answer(self):
+ return self.accepted_answer_id != None
+
+ def get_similarity(self, other_thread = None):
+ """return number of tags in the other question
+ that overlap with the current question (self)
"""
- #todo: goes to thread
- self.favourite_count = FavoriteQuestion.objects.filter(
- question=self
- ).count()
- self.save()
+ my_tags = set(self.get_tag_names())
+ others_tags = set(other_thread.get_tag_names())
+ return len(my_tags & others_tags)
- def get_similar_questions(self):
+ def get_similar_threads(self):
"""
- Get 10 similar questions for given one.
- Questions with the individual tags will be added to list if above questions are not full.
+ Get 10 similar threads for given one.
+ Threads with the individual tags will be added to list if above questions are not full.
This function has a limitation that it will
retrieve only 100 records then select 10 most similar
@@ -543,48 +639,79 @@ class Question(content.Content):
be very expensive - this function will benefit from
some sort of optimization
"""
- #todo: goes to thread
- #print datetime.datetime.now()
def get_data():
+ tags_list = self.get_tag_names()
+ similar_threads = Thread.objects.filter(
+ tags__name__in=tags_list
+ ).exclude(
+ id = self.id
+ ).exclude(
+ posts__post_type='question',
+ posts__deleted = True
+ ).distinct()[:100]
+ similar_threads = list(similar_threads)
+
+ for thread in similar_threads:
+ thread.similarity = self.get_similarity(other_thread=thread)
+
+ similar_threads.sort(key=operator.attrgetter('similarity'), reverse=True)
+ similar_threads = similar_threads[:10]
+
+ # Denormalize questions to speed up template rendering
+ thread_map = dict([(thread.id, thread) for thread in similar_threads])
+ questions = Post.objects.get_questions()
+ questions = questions.select_related('thread').filter(thread__in=similar_threads)
+ for q in questions:
+ thread_map[q.thread_id].question_denorm = q
+
+ # Postprocess data
+ similar_threads = [
+ {
+ 'url': thread.question_denorm.get_absolute_url(),
+ 'title': thread.get_title(thread.question_denorm)
+ } for thread in similar_threads
+ ]
+ return similar_threads
+
+ def get_cached_data():
+ """similar thread data will expire
+ with the default expiration delay
+ """
+ key = 'similar-threads-%s' % self.id
+ data = cache.cache.get(key)
+ if data is None:
+ data = get_data()
+ cache.cache.set(key, data)
+ return data
+
+ return LazyList(get_cached_data)
- tags_list = self.tags.all()
- similar_questions = self.__class__.objects.filter(
- tags__in = self.tags.all()
- ).exclude(
- id = self.id,
- ).exclude(
- deleted = True
- ).distinct()[:100]
- similar_questions = list(similar_questions)
- output = list()
- for question in similar_questions:
- question.similarity = self.get_similarity(
- other_question = question
- )
- #sort in reverse order - x and y are interchanged in cmp() call
- similar_questions.sort(lambda x,y: cmp(y.similarity, x.similarity))
- if len(similar_questions) > 10:
- return similar_questions[:10]
- else:
- return similar_questions
-
- return LazyList(get_data)
-
- def get_similarity(self, other_question = None):
- """return number of tags in the other question
- that overlap with the current question (self)
+ def remove_author_anonymity(self):
+ """removes anonymous flag from the question
+ and all its revisions
+ the function calls update method to make sure that
+ signals are not called
"""
- my_tags = set(self.get_tag_names())
- others_tags = set(other_question.get_tag_names())
- return len(my_tags & others_tags)
+ #note: see note for the is_anonymous field
+ #it is important that update method is called - not save,
+ #because we do not want the signals to fire here
+ thread_question = self._question_post()
+ Post.objects.filter(id=thread_question.id).update(is_anonymous=False)
+ thread_question.revisions.all().update(is_anonymous=False)
+
+ def is_followed_by(self, user = None):
+ """True if thread is followed by user"""
+ if user and user.is_authenticated():
+ return self.followed_by.filter(id = user.id).count() > 0
+ return False
def update_tags(self, tagnames = None, user = None, timestamp = None):
"""
- Updates Tag associations for a question to match the given
+ Updates Tag associations for a thread to match the given
tagname string.
- When tags are removed and their use count hits 0 - the tag is
+ When tags are removed and their use count hits 0 - the tag is
automatically deleted.
When an added tag does not exist - it is created
@@ -592,12 +719,16 @@ class Question(content.Content):
Tag use counts are recalculated
A signal tags updated is sent
+
+ *IMPORTANT*: self._question_post() has to exist when update_tags() is called!
"""
+ if tagnames.strip() == '':
+ return
previous_tags = list(self.tags.all())
previous_tagnames = set([tag.name for tag in previous_tags])
- updated_tagnames = set(t for t in tagnames.split(' '))
+ updated_tagnames = set(t for t in tagnames.strip().split(' '))
removed_tagnames = previous_tagnames - updated_tagnames
added_tagnames = updated_tagnames - previous_tagnames
@@ -649,11 +780,15 @@ class Question(content.Content):
self.tags.add(*added_tags)
modified_tags.extend(added_tags)
+ ####################################################################
+ self.update_summary_html() # regenerate question/thread summary html
+ ####################################################################
+
#if there are any modified tags, update their use counts
if modified_tags:
Tag.objects.update_use_counts(modified_tags)
signals.tags_updated.send(None,
- question = self,
+ thread = self,
tags = modified_tags,
user = user,
timestamp = timestamp
@@ -662,76 +797,31 @@ class Question(content.Content):
return False
- def repost_as_answer(self, question = None):
- """posts question as answer to another question,
- but does not delete the question,
- but moves all the comments to the new answer"""
- #todo: goes to Thread.
- revisions = self.revisions.all().order_by('revised_at')
- rev0 = revisions[0]
- new_answer = rev0.author.post_answer(
- question = question,
- body_text = rev0.text,
- wiki = self.wiki,
- timestamp = rev0.revised_at
- )
- if len(revisions) > 1:
- for rev in revisions:
- rev.author.edit_answer(
- answer = new_answer,
- body_text = rev.text,
- revision_comment = rev.summary,
- timestamp = rev.revised_at
- )
- for comment in self.comments.all():
- comment.content_object = new_answer
- comment.save()
- return new_answer
-
- def delete(self):
- super(Question, self).delete()
- try:
- from askbot.conf import settings as askbot_settings
- if askbot_settings.GOOGLE_SITEMAP_CODE != '':
- ping_google()
- except Exception:
- logging.debug('problem pinging google did you register you sitemap with google?')
-
- def get_answers(self, user = None):
- """returns query set for answers to this question
- that may be shown to the given user
- """
-
- if user is None or user.is_anonymous():
- return self.answers.filter(deleted=False)
- else:
- if user.is_administrator() or user.is_moderator():
- return self.answers.all()
- else:
- return self.answers.filter(
- models.Q(deleted = False) | models.Q(author = user) \
- | models.Q(deleted_by = user)
- )
-
def retag(self, retagged_by=None, retagged_at=None, tagnames=None, silent=False):
+ """changes thread tags"""
if None in (retagged_by, retagged_at, tagnames):
raise Exception('arguments retagged_at, retagged_by and tagnames are required')
+
+ thread_question = self._question_post()
+
+ self.tagnames = tagnames.strip()
+ self.save()
+
# Update the Question itself
- self.tagnames = tagnames
if silent == False:
- self.last_edited_at = retagged_at
- #self.last_activity_at = retagged_at
- self.last_edited_by = retagged_by
- #self.last_activity_by = retagged_by
- self.save()
+ thread_question.last_edited_at = retagged_at
+ #thread_question.thread.last_activity_at = retagged_at
+ thread_question.last_edited_by = retagged_by
+ #thread_question.thread.last_activity_by = retagged_by
+ thread_question.save()
- # Update the Question's tag associations
- self.update_tags(tagnames = tagnames, user = retagged_by, timestamp = retagged_at)
+ # Update the Thread's tag associations
+ self.update_tags(tagnames=tagnames, user=retagged_by, timestamp=retagged_at)
# Create a new revision
- latest_revision = self.get_latest_revision()
+ latest_revision = thread_question.get_latest_revision()
PostRevision.objects.create_question_revision(
- question = self,
+ post = thread_question,
title = latest_revision.title,
author = retagged_by,
revised_at = retagged_at,
@@ -740,108 +830,76 @@ class Question(content.Content):
text = latest_revision.text
)
- def set_tag_names(self, tag_names):
- """expects some iterable of unicode string tag names
- joins the names with a space and assigns to self.tagnames
- does not save the object
- """
- self.tagnames = u' '.join(tag_names)
-
- def _get_slug(self):
- return slugify(self.title)
-
- slug = property(_get_slug)
-
def has_favorite_by_user(self, user):
if not user.is_authenticated():
return False
- return FavoriteQuestion.objects.filter(question=self, user=user).count() > 0
+ return FavoriteQuestion.objects.filter(thread=self, user=user).exists()
def get_last_update_info(self):
- when, who = self.post_get_last_update_info()
-
- answers = self.answers.all()
- if len(answers) > 0:
- for a in answers:
- a_when, a_who = a.post_get_last_update_info()
- if a_when > when:
- when = a_when
- who = a_who
-
- return when, who
-
- def get_update_summary(self,last_reported_at=None,recipient_email=''):
- edited = False
- if self.last_edited_at and self.last_edited_at > last_reported_at:
- if self.last_edited_by.email != recipient_email:
- edited = True
- comments = []
- for comment in self.comments.all():
- if comment.added_at > last_reported_at and comment.user.email != recipient_email:
- comments.append(comment)
- new_answers = []
- answer_comments = []
- modified_answers = []
- commented_answers = []
- import sets
- commented_answers = sets.Set([])
- for answer in self.answers.all():
- if (answer.added_at > last_reported_at and answer.author.email != recipient_email):
- new_answers.append(answer)
- if (answer.last_edited_at
- and answer.last_edited_at > last_reported_at
- and answer.last_edited_by.email != recipient_email):
- modified_answers.append(answer)
- for comment in answer.comments.all():
- if comment.added_at > last_reported_at and comment.user.email != recipient_email:
- commented_answers.add(answer)
- answer_comments.append(comment)
-
- #create the report
- from askbot.conf import settings as askbot_settings
- if edited or new_answers or modified_answers or answer_comments:
- out = []
- if edited:
- out.append(_('%(author)s modified the question') % {'author':self.last_edited_by.username})
- if new_answers:
- names = sets.Set(map(lambda x: x.author.username,new_answers))
- people = ', '.join(names)
- out.append(_('%(people)s posted %(new_answer_count)s new answers') \
- % {'new_answer_count':len(new_answers),'people':people})
- if comments:
- names = sets.Set(map(lambda x: x.user.username,comments))
- people = ', '.join(names)
- out.append(_('%(people)s commented the question') % {'people':people})
- if answer_comments:
- names = sets.Set(map(lambda x: x.user.username,answer_comments))
- people = ', '.join(names)
- if len(commented_answers) > 1:
- out.append(_('%(people)s commented answers') % {'people':people})
- else:
- out.append(_('%(people)s commented an answer') % {'people':people})
- url = askbot_settings.APP_URL + self.get_absolute_url()
- retval = '<a href="%s">%s</a>:<br>\n' % (url,self.title)
- out = map(lambda x: '<li>' + x + '</li>',out)
- retval += '<ul>' + '\n'.join(out) + '</ul><br>\n'
- return retval
- else:
- return None
-
-if getattr(settings, 'USE_SPHINX_SEARCH', False):
- from djangosphinx.models import SphinxSearch
- Question.add_to_class(
- 'sphinx_search',
- SphinxSearch(
- index = settings.ASKBOT_SPHINX_SEARCH_INDEX,
- mode = 'SPH_MATCH_ALL'
+ posts = list(self.posts.select_related('author', 'last_edited_by'))
+
+ last_updated_at = posts[0].added_at
+ last_updated_by = posts[0].author
+
+ for post in posts:
+ last_updated_at, last_updated_by = max((last_updated_at, last_updated_by), (post.added_at, post.author))
+ if post.last_edited_at:
+ last_updated_at, last_updated_by = max((last_updated_at, last_updated_by), (post.last_edited_at, post.last_edited_by))
+
+ return last_updated_at, last_updated_by
+
+ def get_summary_html(self, search_state):
+ html = self.get_cached_summary_html()
+ if not html:
+ html = self.update_summary_html()
+
+ # use `<<<` and `>>>` because they cannot be confused with user input
+ # - if user accidentialy types <<<tag-name>>> into question title or body,
+ # then in html it'll become escaped like this: &lt;&lt;&lt;tag-name&gt;&gt;&gt;
+ regex = re.compile(
+ r'<<<(%s)>>>' % const.TAG_REGEX_BARE,
+ re.UNICODE
+ )
+
+ while True:
+ match = regex.search(html)
+ if not match:
+ break
+ seq = match.group(0) # e.g "<<<my-tag>>>"
+ tag = match.group(1) # e.g "my-tag"
+ full_url = search_state.add_tag(tag).full_url()
+ html = html.replace(seq, full_url)
+
+ return html
+
+ def get_cached_summary_html(self):
+ return cache.cache.get(self.SUMMARY_CACHE_KEY_TPL % self.id)
+
+ def update_summary_html(self):
+ context = {
+ 'thread': self,
+ 'question': self._question_post(refresh=True), # fetch new question post to make sure we're up-to-date
+ 'search_state': DummySearchState(),
+ }
+ html = get_template('widgets/question_summary.html').render(context)
+ # INFO: Timeout is set to 30 days:
+ # * timeout=0/None is not a reliable cross-backend way to set infinite timeout
+ # * We probably don't need to pollute the cache with threads older than 30 days
+ # * Additionally, Memcached treats timeouts > 30day as dates (https://code.djangoproject.com/browser/django/tags/releases/1.3/django/core/cache/backends/memcached.py#L36),
+ # which probably doesn't break anything but if we can stick to 30 days then let's stick to it
+ cache.cache.set(
+ self.SUMMARY_CACHE_KEY_TPL % self.id,
+ html,
+ timeout=const.LONG_TIME
)
- )
+ return html
+ def summary_html_cached(self):
+ return cache.cache.has_key(self.SUMMARY_CACHE_KEY_TPL % self.id)
-
class QuestionView(models.Model):
- question = models.ForeignKey(Question, related_name='viewed')
+ question = models.ForeignKey(Post, related_name='viewed')
who = models.ForeignKey(User, related_name='question_views')
when = models.DateTimeField()
@@ -850,7 +908,7 @@ class QuestionView(models.Model):
class FavoriteQuestion(models.Model):
"""A favorite Question of a User."""
- question = models.ForeignKey(Question)
+ thread = models.ForeignKey(Thread)
user = models.ForeignKey(User, related_name='user_favorite_questions')
added_at = models.DateTimeField(default=datetime.datetime.now)
@@ -873,13 +931,14 @@ class AnonymousQuestion(AnonymousContent):
def publish(self,user):
added_at = datetime.datetime.now()
- Question.objects.create_new(
- title = self.title,
- added_at = added_at,
- author = user,
- wiki = self.wiki,
- is_anonymous = self.is_anonymous,
- tagnames = self.tagnames,
- text = self.text,
- )
+ #todo: wrong - use User.post_question() instead
+ Thread.objects.create_new(
+ title = self.title,
+ added_at = added_at,
+ author = user,
+ wiki = self.wiki,
+ is_anonymous = self.is_anonymous,
+ tagnames = self.tagnames,
+ text = self.text,
+ )
self.delete()
diff --git a/askbot/models/reply_by_email.py b/askbot/models/reply_by_email.py
new file mode 100644
index 00000000..0db7244c
--- /dev/null
+++ b/askbot/models/reply_by_email.py
@@ -0,0 +1,176 @@
+from datetime import datetime
+import random
+import string
+import logging
+from django.db import models
+from django.contrib.auth.models import User
+from django.utils.translation import ugettext as _
+from askbot.models.post import Post
+from askbot.models.base import BaseQuerySetManager
+from askbot.conf import settings as askbot_settings
+from askbot import mail
+
+class ReplyAddressManager(BaseQuerySetManager):
+ """A manager for the :class:`ReplyAddress` model"""
+
+ def get_unused(self, address, allowed_from_email):
+ return self.get(
+ address = address,
+ allowed_from_email = allowed_from_email,
+ used_at__isnull = True
+ )
+
+ def create_new(self, **kwargs):
+ """creates a new reply address"""
+ kwargs['allowed_from_email'] = kwargs['user'].email
+ reply_address = ReplyAddress(**kwargs)
+ while True:
+ reply_address.address = ''.join(random.choice(string.letters +
+ string.digits) for i in xrange(random.randint(12, 25))).lower()
+ if self.filter(address = reply_address.address).count() == 0:
+ break
+ reply_address.save()
+ return reply_address
+
+
+REPLY_ACTION_CHOICES = (
+ ('post_answer', _('Post an answer')),
+ ('post_comment', _('Post a comment')),
+ ('replace_content', _('Edit post')),
+ ('append_content', _('Append to post')),
+ ('auto_answer_or_comment', _('Answer or comment, depending on the size of post')),
+ ('validate_email', _('Validate email and record signature')),
+)
+class ReplyAddress(models.Model):
+ """Stores a reply address for the post
+ and the user"""
+ address = models.CharField(max_length = 25, unique = True)
+ post = models.ForeignKey(
+ Post,
+ null = True,#reply not necessarily to posts
+ related_name = 'reply_addresses'
+ )#the emailed post
+ reply_action = models.CharField(
+ max_length = 32,
+ choices = REPLY_ACTION_CHOICES,
+ default = 'auto_answer_or_comment'
+ )
+ response_post = models.ForeignKey(
+ Post,
+ null = True,
+ related_name = 'edit_addresses'
+ )
+ user = models.ForeignKey(User)
+ allowed_from_email = models.EmailField(max_length = 150)
+ used_at = models.DateTimeField(null = True, default = None)
+
+ objects = ReplyAddressManager()
+
+
+ class Meta:
+ app_label = 'askbot'
+ db_table = 'askbot_replyaddress'
+
+ @property
+ def was_used(self):
+ """True if was used"""
+ return self.used_at != None
+
+ def as_email_address(self, prefix = 'reply-'):
+ """returns email address, prefix is added
+ in front of the code"""
+ return '%s%s@%s' % (
+ prefix,
+ self.address,
+ askbot_settings.REPLY_BY_EMAIL_HOSTNAME
+ )
+
+ def edit_post(
+ self, body_text, title = None, edit_response = False
+ ):
+ """edits the created post upon repeated response
+ to the same address"""
+ if self.was_used or edit_response:
+ reply_action = 'append_content'
+ else:
+ reply_action = self.reply_action
+
+ if edit_response:
+ post = self.response_post
+ else:
+ post = self.post
+
+ if reply_action == 'append_content':
+ body_text = post.text + '\n\n' + body_text
+ revision_comment = _('added content by email')
+ else:
+ assert(reply_action == 'replace_content')
+ revision_comment = _('edited by email')
+
+ if post.post_type == 'question':
+ assert(post is self.post)
+ self.user.edit_question(
+ question = post,
+ body_text = body_text,
+ title = title,
+ revision_comment = revision_comment,
+ by_email = True
+ )
+ else:
+ self.user.edit_post(
+ post = post,
+ body_text = body_text,
+ revision_comment = revision_comment,
+ by_email = True
+ )
+ self.post.thread.invalidate_cached_data()
+
+ def create_reply(self, body_text):
+ """creates a reply to the post which was emailed
+ to the user
+ """
+ result = None
+ if self.post.post_type == 'answer':
+ result = self.user.post_comment(
+ self.post,
+ body_text,
+ by_email = True
+ )
+ elif self.post.post_type == 'question':
+ if self.reply_action == 'auto_answer_or_comment':
+ wordcount = len(body_text)/6#todo: this is a simplistic hack
+ if wordcount > askbot_settings.MIN_WORDS_FOR_ANSWER_BY_EMAIL:
+ reply_action = 'post_answer'
+ else:
+ reply_action = 'post_comment'
+ else:
+ reply_action = self.reply_action
+
+ if reply_action == 'post_answer':
+ result = self.user.post_answer(
+ self.post,
+ body_text,
+ by_email = True
+ )
+ elif reply_action == 'post_comment':
+ result = self.user.post_comment(
+ self.post,
+ body_text,
+ by_email = True
+ )
+ else:
+ logging.critical(
+ 'Unexpected reply action: "%s", post by email failed' % reply_action
+ )
+ return None#todo: there may be a better action to take here...
+ elif self.post.post_type == 'comment':
+ result = self.user.post_comment(
+ self.post.parent,
+ body_text,
+ by_email = True
+ )
+ result.thread.invalidate_cached_data()
+ self.response_post = result
+ self.used_at = datetime.now()
+ self.save()
+ return result
diff --git a/askbot/models/repute.py b/askbot/models/repute.py
index 57bb4fb3..33ec3a42 100644
--- a/askbot/models/repute.py
+++ b/askbot/models/repute.py
@@ -1,37 +1,119 @@
+import datetime
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import ugettext as _
-import datetime
+from django.utils.html import escape
from askbot import const
from django.core.urlresolvers import reverse
+class VoteManager(models.Manager):
+ def get_up_vote_count_from_user(self, user):
+ if user is not None:
+ return self.filter(user=user, vote=1).count()
+ else:
+ return 0
+
+ def get_down_vote_count_from_user(self, user):
+ if user is not None:
+ return self.filter(user=user, vote=-1).count()
+ else:
+ return 0
+
+ def get_votes_count_today_from_user(self, user):
+ if user is not None:
+ today = datetime.date.today()
+ return self.filter(user=user, voted_at__range=(today, today + datetime.timedelta(1))).count()
+ else:
+ return 0
+
+
+class Vote(models.Model):
+ VOTE_UP = +1
+ VOTE_DOWN = -1
+ VOTE_CHOICES = (
+ (VOTE_UP, u'Up'),
+ (VOTE_DOWN, u'Down'),
+ )
+ user = models.ForeignKey('auth.User', related_name='votes')
+ voted_post = models.ForeignKey('Post', related_name='votes')
+
+ vote = models.SmallIntegerField(choices=VOTE_CHOICES)
+ voted_at = models.DateTimeField(default=datetime.datetime.now)
+
+ objects = VoteManager()
+
+ class Meta:
+ unique_together = ('user', 'voted_post')
+ app_label = 'askbot'
+ db_table = u'vote'
+
+ def __unicode__(self):
+ return '[%s] voted at %s: %s' %(self.user, self.voted_at, self.vote)
+
+ def __int__(self):
+ """1 if upvote -1 if downvote"""
+ return self.vote
+
+ def is_upvote(self):
+ return self.vote == self.VOTE_UP
+
+ def is_downvote(self):
+ return self.vote == self.VOTE_DOWN
+
+ def is_opposite(self, vote_type):
+ assert(vote_type in (self.VOTE_UP, self.VOTE_DOWN))
+ return self.vote != vote_type
+
+ def cancel(self):
+ """cancel the vote
+ while taking into account whether vote was up
+ or down
+
+ return change in score on the post
+ """
+ #importing locally because of circular dependency
+ from askbot import auth
+ score_before = self.voted_post.score
+ if self.vote > 0:
+ # cancel upvote
+ auth.onUpVotedCanceled(self, self.voted_post, self.user)
+ else:
+ # cancel downvote
+ auth.onDownVotedCanceled(self, self.voted_post, self.user)
+ score_after = self.voted_post.score
+
+ return score_after - score_before
+
+
class BadgeData(models.Model):
"""Awarded for notable actions performed on the site by Users."""
slug = models.SlugField(max_length=50, unique=True)
awarded_count = models.PositiveIntegerField(default=0)
awarded_to = models.ManyToManyField(User, through='Award', related_name='badges')
+ def _get_meta_data(self):
+ """retrieves badge metadata stored
+ in a file"""
+ from askbot.models import badges
+ return badges.get_badge(self.slug)
+
@property
def name(self):
- from askbot.models import badges
- return badges.get_badge(self.slug).name
+ return self._get_meta_data().name
@property
def description(self):
- from askbot.models import badges
- return badges.get_badge(self.slug).description
+ return self._get_meta_data().description
@property
def css_class(self):
- from askbot.models import badges
- return badges.get_badge(self.slug).css_class
+ return self._get_meta_data().css_class
def get_type_display(self):
- from askbot.models import badges
#todo - rename "type" -> "level" in this model
- return badges.get_badge(self.slug).get_level_display()
+ return self._get_meta_data().get_level_display()
class Meta:
app_label = 'askbot'
@@ -109,8 +191,7 @@ class Repute(models.Model):
#todo: combine positive and negative to one value
positive = models.SmallIntegerField(default=0)
negative = models.SmallIntegerField(default=0)
- #FK must be to Post() - in the future
- question = models.ForeignKey('Question', null=True, blank=True)
+ question = models.ForeignKey('Post', null=True, blank=True)
reputed_at = models.DateTimeField(default=datetime.datetime.now)
reputation_type = models.SmallIntegerField(choices=const.TYPE_REPUTATION)
reputation = models.IntegerField(default=1)
@@ -146,7 +227,7 @@ class Repute(models.Model):
link_title_data = {
'points': abs(delta),
'username': self.user.username,
- 'question_title': self.question.title
+ 'question_title': self.question.thread.title
}
if delta > 0:
link_title = _(
@@ -162,6 +243,7 @@ class Repute(models.Model):
return '<a href="%(url)s" title="%(link_title)s">%(question_title)s</a>' \
% {
'url': self.question.get_absolute_url(),
- 'question_title': self.question.title,
- 'link_title': link_title
+ 'question_title': escape(self.question.thread.title),
+ 'link_title': escape(link_title)
}
+
diff --git a/askbot/models/signals.py b/askbot/models/signals.py
index baa4c149..d538de76 100644
--- a/askbot/models/signals.py
+++ b/askbot/models/signals.py
@@ -21,6 +21,7 @@ delete_question_or_answer = django.dispatch.Signal(
flag_offensive = django.dispatch.Signal(providing_args=['instance', 'mark_by'])
remove_flag_offensive = django.dispatch.Signal(providing_args=['instance', 'mark_by'])
user_updated = django.dispatch.Signal(providing_args=['instance', 'updated_by'])
+user_registered = django.dispatch.Signal(providing_args=['user',])
#todo: move this to authentication app
user_logged_in = django.dispatch.Signal(providing_args=['session'])
@@ -31,6 +32,12 @@ post_updated = django.dispatch.Signal(
'newly_mentioned_users'
]
)
+post_revision_published = django.dispatch.Signal(
+ providing_args = [
+ 'revision',
+ 'was_approved'
+ ]
+ )
site_visited = django.dispatch.Signal(providing_args=['user', 'timestamp'])
def pop_signal_receivers(signal):
@@ -65,6 +72,7 @@ def pop_all_db_signal_receivers():
remove_flag_offensive,
user_updated,
user_logged_in,
+ user_registered,
post_updated,
award_badges_signal,
#django signals
diff --git a/askbot/models/tag.py b/askbot/models/tag.py
index e114cef7..858db2e6 100644
--- a/askbot/models/tag.py
+++ b/askbot/models/tag.py
@@ -1,9 +1,7 @@
import re
from django.db import models
-from django.db import connection, transaction
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
-from askbot.models.base import DeletableContent
from askbot.models.base import BaseQuerySetManager
from askbot import const
@@ -30,29 +28,15 @@ def get_mandatory_tags():
return split_re.split(raw_mandatory_tags)
class TagQuerySet(models.query.QuerySet):
- UPDATE_USED_COUNTS_QUERY = """
- UPDATE tag
- SET used_count = (
- SELECT COUNT(*) FROM question_tags
- INNER JOIN question ON question_id=question.id
- WHERE tag_id = tag.id AND NOT question.deleted
- )
- WHERE id IN (%s);
- """
-
def get_valid_tags(self, page_size):
tags = self.all().filter(deleted=False).exclude(used_count=0).order_by("-id")[:page_size]
return tags
def update_use_counts(self, tags):
"""Updates the given Tags with their current use counts."""
- if not tags:
- return
- cursor = connection.cursor()
- query = self.UPDATE_USED_COUNTS_QUERY % ','.join(['%s'] * len(tags))
- cursor.execute(query, [tag.id for tag in tags])
-
- transaction.commit_unless_managed()
+ for tag in tags:
+ tag.used_count = tag.threads.count()
+ tag.save()
def tags_match_some_wildcard(self, wildcard_tags = None):
"""True if any one of the tags in the query set
@@ -82,47 +66,13 @@ class TagQuerySet(models.query.QuerySet):
tag_filter |= models.Q(name__startswith = next_tag[:-1])
return self.filter(tag_filter)
- def get_related_to_search(
- self,
- questions = None,
- search_state = None,
- ignored_tag_names = None
- ):
- """must return at least tag names, along with use counts
- handle several cases to optimize the query performance
- """
-
- if questions.count() > search_state.page_size * 3:
- """if we have too many questions or
- search query is the most common - just return a list
- of top tags"""
- cheating = True
- tags = Tag.objects.all().order_by('-used_count')
- else:
- cheating = False
- #getting id's is necessary to avoid hitting a heavy query
- #on entire selection of questions. We actually want
- #the big questions query to hit only the page to be displayed
- q_id_list = questions.values_list('id', flat=True)
- tags = self.filter(
- questions__id__in = q_id_list,
- ).annotate(
- local_used_count=models.Count('id')
- ).order_by(
- '-local_used_count'
- )
-
+ def get_related_to_search(self, threads, ignored_tag_names):
+ """Returns at least tag names, along with use counts"""
+ tags = self.filter(threads__in=threads).annotate(local_used_count=models.Count('id')).order_by('-local_used_count', 'name')
if ignored_tag_names:
tags = tags.exclude(name__in=ignored_tag_names)
-
tags = tags.exclude(deleted = True)
-
- tags = tags[:50]#magic number
- if cheating:
- for tag in tags:
- tag.local_used_count = tag.used_count
-
- return tags
+ return list(tags[:50])
class TagManager(BaseQuerySetManager):
@@ -132,15 +82,74 @@ class TagManager(BaseQuerySetManager):
def get_query_set(self):
return TagQuerySet(self.model)
-class Tag(DeletableContent):
+class GroupTagQuerySet(TagQuerySet):
+ """Custom query set for the group"""
+
+ def get_for_user(self, user = None):
+ return self.filter(user_memberships__user = user)
+
+ def get_all(self):
+ return self.annotate(
+ member_count = models.Count('user_memberships')
+ ).filter(
+ member_count__gt = 0
+ )
+
+ def get_by_name(self, group_name = None):
+ return self.get(name = clean_group_name(group_name))
+
+
+def clean_group_name(name):
+ """group names allow spaces,
+ tag names do not, so we use this method
+ to replace spaces with dashes"""
+ return re.sub('\s+', '-', name.strip())
+
+class GroupTagManager(BaseQuerySetManager):
+ """manager for group tags"""
+
+ def get_query_set(self):
+ return GroupTagQuerySet(self.model)
+
+ def get_or_create(self, group_name = None, user = None):
+ """creates a group tag or finds one, if exists"""
+ #todo: here we might fill out the group profile
+
+ #replace spaces with dashes
+ group_name = clean_group_name(group_name)
+ try:
+ #iexact is important!!! b/c we don't want case variants
+ #of tags
+ tag = self.get(name__iexact = group_name)
+ except self.model.DoesNotExist:
+ tag = self.model(name = group_name, created_by = user)
+ tag.save()
+ from askbot.models.user import GroupProfile
+ group_profile = GroupProfile(group_tag = tag)
+ group_profile.save()
+ return tag
+
+class Tag(models.Model):
name = models.CharField(max_length=255, unique=True)
created_by = models.ForeignKey(User, related_name='created_tags')
# Denormalised data
used_count = models.PositiveIntegerField(default=0)
+ deleted = models.BooleanField(default=False)
+ deleted_at = models.DateTimeField(null=True, blank=True)
+ deleted_by = models.ForeignKey(User, null=True, blank=True, related_name='deleted_tags')
+
+ tag_wiki = models.OneToOneField(
+ 'Post',
+ null=True,
+ related_name = 'described_tag'
+ )
+
objects = TagManager()
+ group_tags = GroupTagManager()
- class Meta(DeletableContent.Meta):
+ class Meta:
+ app_label = 'askbot'
db_table = u'tag'
ordering = ('-used_count', 'name')
@@ -148,7 +157,11 @@ class Tag(DeletableContent):
return self.name
class MarkedTag(models.Model):
- TAG_MARK_REASONS = (('good', _('interesting')), ('bad', _('ignored')))
+ TAG_MARK_REASONS = (
+ ('good', _('interesting')),
+ ('bad', _('ignored')),
+ ('subscribed', _('subscribed')),
+ )
tag = models.ForeignKey('Tag', related_name='user_selections')
user = models.ForeignKey(User, related_name='tag_selections')
reason = models.CharField(max_length=16, choices=TAG_MARK_REASONS)
diff --git a/askbot/models/user.py b/askbot/models/user.py
index 6a0e3d4d..e4077ea5 100644
--- a/askbot/models/user.py
+++ b/askbot/models/user.py
@@ -1,14 +1,19 @@
import datetime
import logging
+import re
from django.db import models
from django.db.backends.dummy.base import IntegrityError
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.contrib.auth.models import User
+from django.core import exceptions
+from django.forms import EmailField, URLField
from django.utils.translation import ugettext as _
from django.utils.html import strip_tags
from askbot import const
from askbot.utils import functions
+from askbot.models.tag import Tag
+from askbot.forms import DomainNameField
class ResponseAndMentionActivityManager(models.Manager):
def get_query_set(self):
@@ -163,8 +168,10 @@ class Activity(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
+
#todo: remove this denorm question field when Post model is set up
- question = models.ForeignKey('Question', null=True)
+ question = models.ForeignKey('Post', null=True)
+
is_auditted = models.BooleanField(default=False)
#add summary field.
summary = models.TextField(default='')
@@ -197,9 +204,9 @@ class Activity(models.Model):
assert(user_count == 1)
return user_qs[0]
- def get_preview(self):
- if self.summary == '':
- return strip_tags(self.content_object.html)[:300]
+ def get_snippet(self, max_length = 120):
+ if self.summary == '':
+ return self.content_object.get_snippet(max_length)
else:
return self.summary
@@ -289,6 +296,8 @@ class EmailFeedSetting(models.Model):
class Meta:
#added to make account merges work properly
unique_together = ('subscriber', 'feed_type')
+ app_label = 'askbot'
+
def __str__(self):
if self.reported_at is None:
@@ -329,5 +338,90 @@ class EmailFeedSetting(models.Model):
self.reported_at = datetime.datetime.now()
self.save()
+
+class GroupMembership(models.Model):
+ """an explicit model to link users and the tags
+ that by being recorded with this relation automatically
+ become group tags
+ """
+ group = models.ForeignKey(Tag, related_name = 'user_memberships')
+ user = models.ForeignKey(User, related_name = 'group_memberships')
+
class Meta:
app_label = 'askbot'
+ unique_together = ('group', 'user')
+
+class GroupProfile(models.Model):
+ """stores group profile data"""
+ group_tag = models.OneToOneField(
+ Tag,
+ unique = True,
+ related_name = 'group_profile'
+ )
+ logo_url = models.URLField(null = True)
+ moderate_email = models.BooleanField(default = True)
+ is_open = models.BooleanField(default = False)
+ #preapproved email addresses and domain names to auto-join groups
+ #trick - the field is padded with space and all tokens are space separated
+ preapproved_emails = models.TextField(
+ null = True, blank = True, default = ''
+ )
+ #only domains - without the '@' or anything before them
+ preapproved_email_domains = models.TextField(
+ null = True, blank = True, default = ''
+ )
+
+ class Meta:
+ #added to make account merges work properly
+ app_label = 'askbot'
+
+ def can_accept_user(self, user):
+ """True if user is preapproved to join the group"""
+ if user.is_anonymous():
+ return False
+
+ if self.is_open:
+ return True
+
+ if user.is_administrator_or_moderator():
+ return True
+
+ #relying on a specific method of storage
+ if self.preapproved_emails:
+ email_match_re = re.compile(r'\s%s\s' % user.email)
+ if email_match_re.search(self.preapproved_emails):
+ return True
+
+ if self.preapproved_email_domains:
+ email_domain = user.email.split('@')[1]
+ domain_match_re = re.compile(r'\s%s\s' % email_domain)
+ return domain_match_re.search(self.preapproved_email_domains)
+
+ return False
+
+ def clean(self):
+ """called in `save()`
+ """
+ emails = functions.split_list(self.preapproved_emails)
+ email_field = EmailField()
+ try:
+ map(lambda v: email_field.clean(v), emails)
+ except exceptions.ValidationError:
+ raise exceptions.ValidationError(
+ _('Please give a list of valid email addresses.')
+ )
+ self.preapproved_emails = ' ' + '\n'.join(emails) + ' '
+
+ domains = functions.split_list(self.preapproved_email_domains)
+ domain_field = DomainNameField()
+ try:
+ map(lambda v: domain_field.clean(v), domains)
+ except exceptions.ValidationError:
+ raise exceptions.ValidationError(
+ _('Please give a list of valid email domain names.')
+ )
+ self.preapproved_email_domains = ' ' + '\n'.join(domains) + ' '
+
+ def save(self, *args, **kwargs):
+ self.clean()
+ super(GroupProfile, self).save(*args, **kwargs)
diff --git a/askbot/search/mysql.py b/askbot/search/mysql.py
new file mode 100644
index 00000000..df86070d
--- /dev/null
+++ b/askbot/search/mysql.py
@@ -0,0 +1,54 @@
+from django.db import connection
+
+SUPPORTS_FTS = None
+HINT_TABLE = None
+NO_FTS_WARNING = """
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! !!
+!! WARNING: Your database engine does not support !!
+!! full text search. Please switch to PostgresQL !!
+!! or select MyISAM engine for MySQL !!
+!! !!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+"""
+
+def supports_full_text_search(hint_table = None):
+ """True if the database engine is MyISAM
+ hint_table - is the table that we look into to determine
+ whether database supports FTS or not.
+ """
+ global SUPPORTS_FTS
+ global HINT_TABLE
+ if SUPPORTS_FTS is None:
+ cursor = connection.cursor()
+ if hint_table:
+ table_name = hint_table
+ HINT_TABLE = hint_table
+ else:
+ from askbot.models import Post
+ table_name = Post._meta.db_table
+ cursor.execute("SHOW CREATE TABLE %s" % table_name)
+ data = cursor.fetchone()
+ if 'ENGINE=MyISAM' in data[1]:
+ SUPPORTS_FTS = True
+ else:
+ SUPPORTS_FTS = False
+ return SUPPORTS_FTS
+
+ question_index_sql = get_create_full_text_index_sql(
+ index_name,
+ table_namee,
+ ('title','text','tagnames',)
+ )
+def get_create_full_text_index_sql(index_name, table_name, column_list):
+ cursor = connection.cursor()
+ column_sql = '(%s)' % ','.join(column_list)
+ sql = 'CREATE FULLTEXT INDEX %s on %s %s' % (index_name, table_name, column_sql)
+ cursor.execute(question_index_sql)
+ return sql
+ else:
+ print NO_FTS_WARNING
+
+def get_drop_index_sql(index_name, table_name):
+ return 'ALTER TABLE %s DROP INDEX %s' % (table_name, index_name)
+
diff --git a/askbot/search/postgresql/__init__.py b/askbot/search/postgresql/__init__.py
new file mode 100644
index 00000000..5b893129
--- /dev/null
+++ b/askbot/search/postgresql/__init__.py
@@ -0,0 +1,50 @@
+"""Procedures to initialize the full text search in PostgresQL"""
+from django.db import connection
+
+def setup_full_text_search(script_path):
+ """using postgresql database connection,
+ installs the plsql language, if necessary
+ and runs the stript, whose path is given as an argument
+ """
+ fts_init_query = open(script_path).read()
+
+ cursor = connection.cursor()
+ try:
+ #test if language exists
+ cursor.execute("SELECT * FROM pg_language WHERE lanname='plpgsql'")
+ lang_exists = cursor.fetchone()
+ if not lang_exists:
+ cursor.execute("CREATE LANGUAGE plpgsql")
+ #run the main query
+ cursor.execute(fts_init_query)
+ finally:
+ cursor.close()
+
+def run_full_text_search(query_set, query_text):
+ """runs full text search against the query set and
+ the search text. All words in the query text are
+ added to the search with the & operator - i.e.
+ the more terms in search, the narrower it is.
+
+ It is also assumed that we ar searching in the same
+ table as the query set was built against, also
+ it is assumed that the table has text search vector
+ stored in the column called `text_search_vector`.
+ """
+ table_name = query_set.model._meta.db_table
+
+ rank_clause = 'ts_rank(' + table_name + \
+ '.text_search_vector, plainto_tsquery(%s))'
+
+ where_clause = table_name + '.text_search_vector @@ plainto_tsquery(%s)'
+
+ search_query = '&'.join(query_text.split())#apply "AND" operator
+ extra_params = (search_query,)
+ extra_kwargs = {
+ 'select': {'relevance': rank_clause},
+ 'where': [where_clause,],
+ 'params': extra_params,
+ 'select_params': extra_params,
+ }
+
+ return query_set.extra(**extra_kwargs)
diff --git a/askbot/management/commands/setup_postgresql_full_text_search.plsql b/askbot/search/postgresql/question_answer_comment_models.plsql
index 35180003..35180003 100644
--- a/askbot/management/commands/setup_postgresql_full_text_search.plsql
+++ b/askbot/search/postgresql/question_answer_comment_models.plsql
diff --git a/askbot/search/postgresql/thread_and_post_models_01162012.plsql b/askbot/search/postgresql/thread_and_post_models_01162012.plsql
new file mode 100644
index 00000000..2fca2d6a
--- /dev/null
+++ b/askbot/search/postgresql/thread_and_post_models_01162012.plsql
@@ -0,0 +1,225 @@
+/* function testing for existence of a column in a table
+ if table does not exists, function will return "false" */
+CREATE OR REPLACE FUNCTION column_exists(colname text, tablename text)
+RETURNS boolean AS
+$$
+DECLARE
+ q text;
+ onerow record;
+BEGIN
+
+ q = 'SELECT attname FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = '''||tablename||''') AND attname = '''||colname||'''';
+
+ FOR onerow IN EXECUTE q LOOP
+ RETURN true;
+ END LOOP;
+
+ RETURN false;
+END;
+$$ LANGUAGE plpgsql;
+
+/* function adding tsvector column to table if it does not exists */
+CREATE OR REPLACE FUNCTION add_tsvector_column(colname text, tablename text)
+RETURNS boolean AS
+$$
+DECLARE
+ q text;
+BEGIN
+ IF NOT column_exists(colname, tablename) THEN
+ q = 'ALTER TABLE ' || tablename || ' ADD COLUMN ' || colname || ' tsvector';
+ EXECUTE q;
+ RETURN true;
+ ELSE
+ q = 'UPDATE ' || tablename || ' SET ' || colname || '=NULL';
+ EXECUTE q;
+ RETURN false;
+ END IF;
+END;
+$$ LANGUAGE plpgsql;
+
+/* aggregate function that concatenates tsvectors */
+CREATE OR REPLACE FUNCTION tsv_add(tsv1 tsvector, tsv2 tsvector)
+RETURNS tsvector AS
+$$
+BEGIN
+ RETURN tsv1 || tsv2;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION setup_aggregates() RETURNS boolean AS
+$$
+DECLARE
+ onerow record;
+BEGIN
+ FOR onerow IN SELECT * FROM pg_proc WHERE proname = 'concat_tsvectors' AND proisagg LOOP
+ DROP AGGREGATE concat_tsvectors(tsvector);
+ END LOOP;
+ CREATE AGGREGATE concat_tsvectors (
+ BASETYPE = tsvector,
+ SFUNC = tsv_add,
+ STYPE = tsvector,
+ INITCOND = ''
+ );
+ RETURN true;
+END;
+$$ LANGUAGE plpgsql;
+
+SELECT setup_aggregates();
+
+/* calculates text search vector for the individual thread row
+DOES not include question body post, answers or comments */
+CREATE OR REPLACE FUNCTION get_thread_tsv(title text, tagnames text)
+RETURNS tsvector AS
+$$
+BEGIN
+ /* todo add weight depending on votes */
+ RETURN setweight(to_tsvector('english', coalesce(title, '')), 'A') ||
+ setweight(to_tsvector('english', coalesce(tagnames, '')), 'A');
+END;
+$$ LANGUAGE plpgsql;
+
+/* calculates text seanch vector for the individual question row */
+CREATE OR REPLACE FUNCTION get_post_tsv(text text, post_type text)
+RETURNS tsvector AS
+$$
+BEGIN
+ /* todo adjust weights to reflect votes */
+ IF post_type='question' THEN
+ RETURN setweight(to_tsvector('english', coalesce(text, '')), 'B');
+ ELSIF post_type='answer' THEN
+ /* todo reflect whether the answer acepted or not */
+ RETURN setweight(to_tsvector('english', coalesce(text, '')), 'B');
+ ELSIF post_type='comment' THEN
+ RETURN setweight(to_tsvector('english', coalesce(text, '')), 'C');
+ ELSE
+ RETURN to_tsvector('');
+ END IF;
+END;
+$$ LANGUAGE plpgsql;
+
+/* calculates text search vector for the question body part by thread id
+here we extract question title and the text by thread_id and then
+calculate the text search vector. In the future question
+title will be moved to the askbot_thread table and this function
+will be simpler.
+*/
+CREATE OR REPLACE FUNCTION get_thread_question_tsv(thread_id integer)
+RETURNS tsvector AS
+$$
+DECLARE
+ query text;
+ onerow record;
+BEGIN
+ query = 'SELECT text FROM askbot_post WHERE thread_id=' || thread_id ||
+ ' AND post_type=''question'' AND deleted=false';
+ FOR onerow in EXECUTE query LOOP
+ RETURN get_post_tsv(onerow.text, 'question');
+ END LOOP;
+ RETURN to_tsvector('');
+END;
+$$ LANGUAGE plpgsql;
+
+DROP FUNCTION IF EXISTS get_dependent_comments_tsv(object_id integer, tablename text);
+CREATE OR REPLACE FUNCTION get_dependent_comments_tsv(parent_id integer)
+RETURNS tsvector AS
+$$
+DECLARE
+ query text;
+ onerow record;
+BEGIN
+ query = 'SELECT concat_tsvectors(text_search_vector) FROM askbot_post' ||
+ ' WHERE parent_id=' || parent_id ||
+ ' AND post_type=''comment'' AND deleted=false';
+ FOR onerow IN EXECUTE query LOOP
+ RETURN onerow.concat_tsvectors;
+ END LOOP;
+ RETURN to_tsvector('');
+END;
+$$ LANGUAGE plpgsql;
+
+DROP FUNCTION IF EXISTS get_dependent_answers_tsv(question_id integer);
+CREATE OR REPLACE FUNCTION get_dependent_answers_tsv(thread_id integer)
+RETURNS tsvector AS
+$$
+DECLARE
+ query text;
+ onerow record;
+BEGIN
+ query = 'SELECT concat_tsvectors(text_search_vector) ' ||
+ 'FROM askbot_post WHERE thread_id = ' || thread_id ||
+ ' AND deleted=false';
+ FOR onerow IN EXECUTE query LOOP
+ RETURN onerow.concat_tsvectors;
+ END LOOP;
+ RETURN to_tsvector('');
+END;
+$$ LANGUAGE plpgsql;
+
+/* create tsvector columns in the content tables */
+SELECT add_tsvector_column('text_search_vector', 'askbot_thread');
+SELECT add_tsvector_column('text_search_vector', 'askbot_post');
+
+/* populate tsvectors with data */
+-- post tsvectors
+UPDATE askbot_post set text_search_vector = get_post_tsv(text, 'comment') WHERE post_type='comment';
+UPDATE askbot_post SET text_search_vector = get_post_tsv(text, 'answer') WHERE post_type='answer';
+UPDATE askbot_post SET text_search_vector = get_post_tsv(text, 'question') WHERE post_type='question';
+UPDATE askbot_post as q SET text_search_vector = text_search_vector ||
+ get_dependent_comments_tsv(q.id) WHERE post_type IN ('question', 'answer');
+
+--thread tsvector
+UPDATE askbot_thread SET text_search_vector = get_thread_tsv(title, tagnames);
+UPDATE askbot_thread as t SET text_search_vector = text_search_vector ||
+ get_dependent_answers_tsv(t.id) ||
+ get_thread_question_tsv(t.id);
+
+/* one trigger per table for tsv updates */
+
+/* set up update triggers */
+CREATE OR REPLACE FUNCTION thread_update_trigger() RETURNS trigger AS
+$$
+BEGIN
+ new.text_search_vector = get_thread_tsv(new.title, new.tagnames) ||
+ get_thread_question_tsv(new.id) ||
+ get_dependent_answers_tsv(new.id);
+ RETURN new;
+END;
+$$ LANGUAGE plpgsql;
+DROP TRIGGER IF EXISTS thread_search_vector_update_trigger on askbot_thread;
+CREATE TRIGGER thread_search_vector_update_trigger
+BEFORE UPDATE ON askbot_thread FOR EACH ROW EXECUTE PROCEDURE thread_update_trigger();
+
+CREATE OR REPLACE FUNCTION thread_insert_trigger() RETURNS trigger AS
+$$
+BEGIN
+ new.text_search_vector = get_thread_tsv(new.title, new.tagnames);
+ RETURN new;
+END;
+$$ LANGUAGE plpgsql;
+DROP TRIGGER IF EXISTS thread_search_vector_insert_trigger on askbot_thread;
+CREATE TRIGGER thread_search_vector_insert_trigger
+BEFORE INSERT ON askbot_thread FOR EACH ROW EXECUTE PROCEDURE thread_insert_trigger();
+
+/* post trigger */
+CREATE OR REPLACE FUNCTION post_trigger() RETURNS trigger AS
+$$
+BEGIN
+ IF new.post_type = 'question' THEN
+ new.text_search_vector = get_post_tsv(new.text, 'question') ||
+ get_dependent_comments_tsv(new.id);
+ ELSIF new.post_type = 'answer' THEN
+ new.text_search_vector = get_post_tsv(new.text, 'answer') ||
+ get_dependent_comments_tsv(new.id);
+ ELSIF new.post_type = 'comment' THEN
+ new.text_search_vector = get_post_tsv(new.text, 'comment');
+ END IF;
+ UPDATE askbot_thread SET id=new.thread_id WHERE id=new.thread_id;
+ return new;
+END;
+$$ LANGUAGE plpgsql;
+DROP TRIGGER IF EXISTS post_search_vector_update_trigger on askbot_post;
+CREATE TRIGGER post_search_vector_update_trigger
+BEFORE INSERT OR UPDATE ON askbot_post FOR EACH ROW EXECUTE PROCEDURE post_trigger();
+
+DROP INDEX IF EXISTS askbot_search_idx;
+CREATE INDEX askbot_search_idx ON askbot_thread USING gin(text_search_vector);
diff --git a/askbot/search/postgresql/user_profile_search_051312.plsql b/askbot/search/postgresql/user_profile_search_051312.plsql
new file mode 100644
index 00000000..99e3121d
--- /dev/null
+++ b/askbot/search/postgresql/user_profile_search_051312.plsql
@@ -0,0 +1,89 @@
+/*
+Script depends on functions defined for general askbot full text search.
+to_tsvector(), add_tsvector_column()
+
+calculates text search vector for the user profile
+the searched fields are:
+1) user name
+2) user profile
+3) group names - for groups to which user belongs
+*/
+CREATE OR REPLACE FUNCTION get_auth_user_tsv(user_id integer)
+RETURNS tsvector AS
+$$
+DECLARE
+ group_query text;
+ user_query text;
+ onerow record;
+ tsv tsvector;
+BEGIN
+ group_query =
+ 'SELECT user_group.name as group_name ' ||
+ 'FROM tag AS user_group ' ||
+ 'INNER JOIN askbot_groupmembership AS gm ' ||
+ 'ON gm.user_id= ' || user_id || ' AND gm.group_id=user_group.id';
+
+ tsv = to_tsvector('');
+ FOR onerow in EXECUTE group_query LOOP
+ tsv = tsv || to_tsvector(onerow.group_name);
+ END LOOP;
+
+ user_query = 'SELECT username, about FROM auth_user WHERE id=' || user_id;
+ FOR onerow in EXECUTE user_query LOOP
+ tsv = tsv || to_tsvector(onerow.username) || to_tsvector(onerow.about);
+ END LOOP;
+ RETURN tsv;
+END;
+$$ LANGUAGE plpgsql;
+
+/* create tsvector columns in the content tables */
+SELECT add_tsvector_column('text_search_vector', 'auth_user');
+
+/* populate tsvectors with data */
+UPDATE auth_user SET text_search_vector = get_auth_user_tsv(id);
+
+/* one trigger per table for tsv updates */
+
+/* set up auth_user triggers */
+CREATE OR REPLACE FUNCTION auth_user_tsv_update_handler()
+RETURNS trigger AS
+$$
+BEGIN
+ new.text_search_vector = get_auth_user_tsv(new.id);
+ RETURN new;
+END;
+$$ LANGUAGE plpgsql;
+DROP TRIGGER IF EXISTS auth_user_tsv_update_trigger ON auth_user;
+
+CREATE TRIGGER auth_user_tsv_update_trigger
+BEFORE INSERT OR UPDATE ON auth_user
+FOR EACH ROW EXECUTE PROCEDURE auth_user_tsv_update_handler();
+
+/* group membership trigger */
+CREATE OR REPLACE FUNCTION group_membership_tsv_update_handler()
+RETURNS trigger AS
+$$
+DECLARE
+ tsv tsvector;
+ user_query text;
+BEGIN
+ user_query = 'UPDATE auth_user SET username=username WHERE ' ||
+ 'id=' || new.user_id;
+ /* just trigger the tsv update on user */
+ EXECUTE user_query;
+ RETURN new;
+END;
+$$ LANGUAGE plpgsql;
+
+DROP TRIGGER IF EXISTS group_membership_tsv_update_trigger
+ON askbot_groupmembership;
+
+CREATE TRIGGER group_membership_tsv_update_trigger
+AFTER INSERT OR DELETE
+ON askbot_groupmembership
+FOR EACH ROW EXECUTE PROCEDURE group_membership_tsv_update_handler();
+
+DROP INDEX IF EXISTS auth_user_search_idx;
+
+CREATE INDEX auth_user_search_idx ON auth_user
+USING gin(text_search_vector);
diff --git a/askbot/search/sphinx/sphinx.conf b/askbot/search/sphinx/sphinx.conf
index cdf0f004..2c252f3d 100644
--- a/askbot/search/sphinx/sphinx.conf
+++ b/askbot/search/sphinx/sphinx.conf
@@ -20,8 +20,10 @@ source src_askbot
# main document fetch query - change the table names if you are using a prefix
# this query creates a flat document from each question that includes only latest
# revisions of the question and all of it's answers
- sql_query = SELECT q.id as id, q.title AS title, q.tagnames as tags, qr.text AS text, answers_combined.text AS answers \
+ sql_query = SELECT q.id as id, q.title AS title, t.tagnames as tags, qr.text AS text, answers_combined.text AS answers \
FROM question AS q \
+ INNER JOIN askbot_thread as t \
+ ON t.id=q.thread_id \
INNER JOIN \
( \
SELECT MAX(id) as id, question_id \
diff --git a/askbot/search/state_manager.py b/askbot/search/state_manager.py
index d441e33b..f8154865 100644
--- a/askbot/search/state_manager.py
+++ b/askbot/search/state_manager.py
@@ -1,27 +1,17 @@
-#search state manager object
-#that lives in the session and takes care of the state
-#persistece during the search session
+"""Search state manager object"""
import re
+import urllib
import copy
+
+from django.core import urlresolvers
+from django.utils.http import urlencode
+from django.utils.encoding import smart_str
+
import askbot
import askbot.conf
from askbot import const
-from askbot.conf import settings as askbot_settings
from askbot.utils.functions import strip_plus
-import logging
-ACTIVE_COMMANDS = (
- 'sort', 'search', 'query',
- 'reset_query', 'reset_author', 'reset_tags', 'remove_tag',
- 'tags', 'scope', 'page_size', 'start_over',
- 'page'
-)
-
-def some_in(what, where):
- for element in what:
- if element in where:
- return True
- return False
def extract_matching_token(text, regexes):
"""if text matches any of the regexes,
@@ -92,246 +82,177 @@ def parse_query(query):
}
class SearchState(object):
- def __init__(self):
- self.scope = const.DEFAULT_POST_SCOPE
- self.query = None
- self.stripped_query = None
- self.query_tags = []
- self.query_users = []
- self.query_title = None
- self.search = None
- self.tags = None
- self.author = None
- self.sort = const.DEFAULT_POST_SORT_METHOD
- self.page_size = int(askbot_settings.DEFAULT_QUESTIONS_PAGE_SIZE)
- self.page = 1
- self.logged_in = False
- logging.debug('new search state initialized')
- def __str__(self):
- out = 'scope=%s\n' % self.scope
- out += 'query=%s\n' % self.query
- if hasattr(self, 'search'):
- manual_search = (self.search == 'search')
- out += 'manual_search = %s\n' % str(manual_search)
- if self.tags:
- out += 'tags=%s\n' % ','.join(self.tags)
- out += 'author=%s\n' % self.author
- out += 'sort=%s\n' % self.sort
- out += 'page_size=%d\n' % self.page_size
- out += 'page=%d\n' % self.page
- out += 'logged_in=%s\n' % str(self.logged_in)
- return out
-
- def is_default(self):
- """True if search state is default
- False otherwise, but with a few exceptions
- notably page_size has no effect here
- """
- if self.scope != const.DEFAULT_POST_SCOPE:
- return False
- if self.author:
- return False
+ @classmethod
+ def get_empty(cls):
+ return cls(scope=None, sort=None, query=None, tags=None, author=None, page=None, user_logged_in=None)
+
+ def __init__(self, scope, sort, query, tags, author, page, user_logged_in):
+ # INFO: zip(*[('a', 1), ('b', 2)])[0] == ('a', 'b')
+
+ if (scope not in zip(*const.POST_SCOPE_LIST)[0]) or (scope == 'favorite' and not user_logged_in):
+ self.scope = const.DEFAULT_POST_SCOPE
+ else:
+ self.scope = scope
+
+ self.query = query.strip() if query else None
+
if self.query:
- return False
- if self.tags:
- return False
- return True
-
- def set_logged_out(self):
- if self.scope == 'favorite':
- self.scope = None
- self.logged_in = False
-
- def set_logged_in(self):
- self.logged_in = True
-
- def reset(self):
- #re-initialize, but keep login state
- is_logged_in = self.logged_in
- self.__init__()
- self.logged_in = is_logged_in
-
- def update_value(self, key, store):
- if key in store:
- old_value = getattr(self, key)
- new_value = store[key]
- if new_value != old_value:
- setattr(self, key, new_value)
- self.reset_page()
-
- def relax_stickiness(self, input_dict, view_log):
- if view_log.get_previous(1) == 'questions':
- if not some_in(ACTIVE_COMMANDS, input_dict):
- self.reset()
- #todo also relax if 'all' scope was clicked twice
-
- def update_from_user_input(self, input_dict):
- #todo: this function will probably not
- #fit the case of multiple parameters entered at the same tiem
- if 'start_over' in input_dict:
- self.reset()
-
- if 'page' in input_dict:
- self.page = input_dict['page']
- #special case - on page flip no other input is accepted
- return
-
- if 'page_size' in input_dict:
- self.update_value('page_size', input_dict)
- self.reset_page()#todo may be smarter here - start with ~same q
- #same as with page - return right away
- return
-
- if 'scope' in input_dict:
- if input_dict['scope'] == 'favorite' and self.logged_in == False:
- self.reset_scope()
- else:
- self.update_value('scope', input_dict)
-
- if 'tags' in input_dict:
- if self.tags:
- old_tags = self.tags.copy()
- self.tags = self.tags.union(input_dict['tags'])
- if self.tags != old_tags:
- self.reset_page()
- else:
- self.tags = input_dict['tags']
-
- if 'remove_tag' in input_dict and self.tags:
- rm_set = set([input_dict['remove_tag']])
- self.tags -= rm_set
- return
-
- #all resets just return
- if 'reset_tags' in input_dict:
- if self.tags:
- self.tags = None
- self.reset_page()
- return
-
- #todo: handle case of deleting tags one-by-one
- if 'reset_author' in input_dict:
- if self.author:
- self.author = None
- self.reset_page()
- return
-
- if 'reset_query' in input_dict:
- self.reset_query()
- if input_dict.get('sort', None) == 'relevance-desc':
- self.reset_sort()
- return
-
- self.update_value('author', input_dict)
-
- if 'query' in input_dict:
- query_bits = parse_query(input_dict['query'])
- tmp_input_dict = copy.deepcopy(input_dict)
- tmp_input_dict.update(query_bits)
- self.update_value('query', tmp_input_dict)#the original query
#pull out values of [title:xxx], [user:some one]
#[tag: sometag], title:'xxx', title:"xxx", @user, @'some user',
#and #tag - (hash symbol to delineate the tag
- self.update_value('stripped_query', tmp_input_dict)
- self.update_value('query_tags', tmp_input_dict)
- self.update_value('query_users', tmp_input_dict)
- self.update_value('query_title', tmp_input_dict)
- self.sort = 'relevance-desc'
- elif 'search' in input_dict:
- #a case of use nulling search query by hand
- #this branch corresponds to hitting search button manually
- #when the search query is empty
- self.reset_query()
- return
- elif askbot_settings.DECOUPLE_TEXT_QUERY_FROM_SEARCH_STATE:
- #no query in the request and the setting instructs to
- #not have the text search query sticky
- self.reset_query()
-
- if 'sort' in input_dict:
- if input_dict['sort'] == 'relevance-desc' and self.query is None:
- self.reset_sort()
- else:
- self.update_value('sort', input_dict)
-
- #todo: plug - mysql has no relevance sort
- if not askbot.conf.should_show_sort_by_relevance():
- if self.sort == 'relevance-desc':
- self.reset_sort()
-
- def update(self, input_dict, view_log, user):
- """update the search state according to the
- user input and the queue of the page hits that
- user made"""
- if 'preserve_state' in input_dict:
- return
-
- if view_log.should_reset_search_state():
- self.reset()
-
- if user.is_authenticated():
- self.set_logged_in()
-
- self.update_from_user_input(input_dict)
- self.relax_stickiness(input_dict, view_log)
-
- def reset_page(self):
- self.page = 1
-
- def reset_query(self):
- """reset the search query string and
- the associated "sort by relevance command"
- """
- if self.query:
- self.query = None
- self.reset_page()
- if self.sort == 'relevance-desc':
- self.reset_sort()
+ query_bits = parse_query(self.query)
+ self.stripped_query = query_bits['stripped_query']
+ self.query_tags = query_bits['query_tags']
+ self.query_users = query_bits['query_users']
+ self.query_title = query_bits['query_title']
+ else:
+ self.stripped_query = None
+ self.query_tags = None
+ self.query_users = None
+ self.query_title = None
- def reset_sort(self):
- self.sort = const.DEFAULT_POST_SORT_METHOD
+ if (sort not in zip(*const.POST_SORT_METHODS)[0]) or (sort == 'relevance-desc' and (not self.query or not askbot.conf.should_show_sort_by_relevance())):
+ self.sort = const.DEFAULT_POST_SORT_METHOD
+ else:
+ self.sort = sort
- def reset_scope(self):
- self.scope = const.DEFAULT_POST_SCOPE
+ self.tags = []
+ if tags:
+ for t in tags.split(const.TAG_SEP):
+ tag = t.strip()
+ if tag not in self.tags:
+ self.tags.append(tag)
-class ViewLog(object):
- """The ViewLog helper obejcts store the trail of the page visits for a
- given user. The trail is recorded only up to a certain depth.
+ self.author = int(author) if author else None
+ self.page = int(page) if page else 1
+ if self.page == 0: # in case someone likes jokes :)
+ self.page = 1
- The purpose to record this info is to reset the search state
- when the user walks "too far away" from the search page.
-
- These objects must be modified only in this middlware.
- """
- def __init__(self):
- self.views = []
- self.depth = 3 #todo maybe move this to const.py
-
- def get_previous(self, num):
- """get a previous record from a certain depth"""
- if num > self.depth - 1:
- raise Exception("view log depth exceeded")
- elif num < 0:
- raise Exception("num must be positive")
- elif num <= len(self.views) - 1:
- return self.views[num]
- else:
- return None
-
- def should_reset_search_state(self):
- """return True if user stepped too far from the home page
- and False otherwise"""
- if self.get_previous(1) != 'questions':
- if self.get_previous(2) != 'questions':
- return True
- return False
-
- def set_current(self, view_name):
- """insert a new record"""
- self.views.insert(0, view_name)
- if len(self.views) > self.depth:
- self.views.pop()
+ self._questions_url = urlresolvers.reverse('questions')
def __str__(self):
- return str(self.views) + ' depth=%d' % self.depth
+ return self.query_string()
+
+ def full_url(self):
+ return self._questions_url + self.query_string()
+
+ def ask_query_string(self): # TODO: test me
+ """returns string to prepopulate title field on the "Ask your question" page"""
+ ask_title = self.stripped_query or self.query or ''
+ if not ask_title:
+ return ''
+ return '?' + urlencode({'title': ask_title})
+
+ def full_ask_url(self):
+ return urlresolvers.reverse('ask') + self.ask_query_string()
+
+ def unified_tags(self):
+ "Returns tags both from tag selector and extracted from query"
+ return (self.query_tags or []) + (self.tags or [])
+
+ #
+ # Safe characters in urlquote() according to http://www.ietf.org/rfc/rfc1738.txt:
+ #
+ # Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
+ # reserved characters used for their reserved purposes may be used
+ # unencoded within a URL.
+ #
+ # Tag separator (const.TAG_SEP) remains unencoded to clearly mark tag boundaries
+ # _+.- stay unencoded to keep tags in URL as verbose as possible
+ # (note that urllib.quote() in Python 2.7 treats _.- as safe chars, but let's be explicit)
+ # Hash (#) is not safe and has to be encodeded, as it's used as URL has delimiter
+ #
+ SAFE_CHARS = const.TAG_SEP + '_+.-'
+
+ def query_string(self):
+ lst = [
+ 'scope:' + self.scope,
+ 'sort:' + self.sort
+ ]
+ if self.query:
+ lst.append('query:' + urllib.quote(smart_str(self.query), safe=self.SAFE_CHARS))
+ if self.tags:
+ lst.append('tags:' + urllib.quote(smart_str(const.TAG_SEP.join(self.tags)), safe=self.SAFE_CHARS))
+ if self.author:
+ lst.append('author:' + str(self.author))
+ if self.page:
+ lst.append('page:' + str(self.page))
+ return '/'.join(lst) + '/'
+
+ def deepcopy(self): # TODO: test me
+ "Used to contruct a new SearchState for manipulation, e.g. for adding/removing tags"
+ ss = copy.copy(self) #SearchState.get_empty()
+
+ #ss.scope = self.scope
+ #ss.sort = self.sort
+ #ss.query = self.query
+ if ss.tags is not None: # it's important to test against None, because empty lists should also be cloned!
+ ss.tags = ss.tags[:] # create a copy
+ #ss.author = self.author
+ #ss.page = self.page
+
+ #ss.stripped_query = self.stripped_query
+ if ss.query_tags: # Here we don't have empty lists, only None
+ ss.query_tags = ss.query_tags[:]
+ if ss.query_users:
+ ss.query_users = ss.query_users[:]
+ #ss.query_title = self.query_title
+
+ #ss._questions_url = self._questions_url
+
+ return ss
+
+ def add_tag(self, tag):
+ ss = self.deepcopy()
+ if tag not in ss.tags:
+ ss.tags.append(tag)
+ ss.page = 1 # state change causes page reset
+ return ss
+
+ def remove_author(self):
+ ss = self.deepcopy()
+ ss.author = None
+ ss.page = 1
+ return ss
+
+ def remove_tags(self, tags = None):
+ ss = self.deepcopy()
+ if tags:
+ ss.tags = list(
+ set(ss.tags) - set(tags)
+ )
+ else:
+ ss.tags = []
+ ss.page = 1
+ return ss
+
+ def change_scope(self, new_scope):
+ ss = self.deepcopy()
+ ss.scope = new_scope
+ ss.page = 1
+ return ss
+
+ def change_sort(self, new_sort):
+ ss = self.deepcopy()
+ ss.sort = new_sort
+ ss.page = 1
+ return ss
+
+ def change_page(self, new_page):
+ ss = self.deepcopy()
+ ss.page = new_page
+ return ss
+
+
+class DummySearchState(object): # Used for caching question/thread summaries
+
+ def add_tag(self, tag):
+ self.tag = tag
+ return self
+
+ def change_scope(self, new_scope):
+ return self
+
+ def full_url(self):
+ return '<<<%s>>>' % self.tag
diff --git a/askbot/setup_templates/settings.py b/askbot/setup_templates/settings.py
index 9e847eba..632c4e70 100644
--- a/askbot/setup_templates/settings.py
+++ b/askbot/setup_templates/settings.py
@@ -3,11 +3,13 @@ import os.path
import logging
import sys
import askbot
+import site
#this line is added so that we can import pre-packaged askbot dependencies
-sys.path.append(os.path.join(os.path.dirname(askbot.__file__), 'deps'))
+ASKBOT_ROOT = os.path.abspath(os.path.dirname(askbot.__file__))
+site.addsitedir(os.path.join(ASKBOT_ROOT, 'deps'))
-DEBUG = False#set to True to enable debugging
+DEBUG = True#set to True to enable debugging
TEMPLATE_DEBUG = False#keep false when debugging jinja2 templates
INTERNAL_IPS = ('127.0.0.1',)
@@ -68,14 +70,17 @@ LANGUAGE_CODE = 'en'
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
-ASKBOT_FILE_UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')
+MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')
+MEDIA_URL = '/upfiles/'#url to uploaded media
+STATIC_URL = '/m/'#url to project static files
PROJECT_ROOT = os.path.dirname(__file__)
+STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')#path to files collected by collectstatic
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = '/admin/media/'
+ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'#must be this value
# Make up some unique string, and don't share it with anybody.
SECRET_KEY = 'sdljdfjkldsflsdjkhsjkldgjlsdgfs s '
@@ -93,6 +98,7 @@ TEMPLATE_LOADERS = (
MIDDLEWARE_CLASSES = (
#'django.middleware.gzip.GZipMiddleware',
+ #'askbot.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
@@ -103,7 +109,6 @@ MIDDLEWARE_CLASSES = (
#below is askbot stuff for this tuple
'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware',
'askbot.middleware.forum_mode.ForumModeMiddleware',
- 'askbot.middleware.pagesize.QuestionsPageSizeMiddleware',
'askbot.middleware.cancel.CancelActionMiddleware',
'django.middleware.transaction.TransactionMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',
@@ -131,7 +136,7 @@ DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
#TEMPLATE_DIRS = (,) #template have no effect in askbot, use the variable below
-#ASKBOT_EXTRA_SKIN_DIR = #path to your private skin collection
+#ASKBOT_EXTRA_SKINS_DIR = #path to your private skin collection
#take a look here http://askbot.org/en/question/207/
TEMPLATE_CONTEXT_PROCESSORS = (
@@ -149,6 +154,7 @@ INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
+ 'django.contrib.staticfiles',
#all of these are needed for the askbot
'django.contrib.admin',
@@ -167,9 +173,6 @@ INSTALLED_APPS = (
'djkombu',
'followit',
#'avatar',#experimental use git clone git://github.com/ericflo/django-avatar.git$
- #requires setting of MEDIA_ROOT and MEDIA_URL
- #values of which can be the same as ASKBOT_FILE_UPLOAD_DIR and ASKBOT_UPLOADED_FILES_URL,
- #respectively
)
@@ -178,10 +181,12 @@ INSTALLED_APPS = (
CACHE_BACKEND = 'locmem://'
#needed for django-keyedcache
CACHE_TIMEOUT = 6000
+#sets a special timeout for livesettings if you want to make them different
+LIVESETTINGS_CACHE_TIMEOUT = CACHE_TIMEOUT
CACHE_PREFIX = 'askbot' #make this unique
CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True
#If you use memcache you may want to uncomment the following line to enable memcached based sessions
-#SESSION_ENGINE = 'django.contrib.sessions.backends.cache_db'
+#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
@@ -209,7 +214,6 @@ LOGIN_URL = '/%s%s%s' % (ASKBOT_URL,_('account/'),_('signin/'))
LOGIN_REDIRECT_URL = ASKBOT_URL #adjust if needed
#note - it is important that upload dir url is NOT translated!!!
#also, this url must not have the leading slash
-ASKBOT_UPLOADED_FILES_URL = '%s%s' % (ASKBOT_URL, 'upfiles/')
ALLOW_UNICODE_SLUGS = False
ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange
@@ -221,4 +225,10 @@ import djcelery
djcelery.setup_loader()
CSRF_COOKIE_NAME = 'askbot_csrf'
-CSRF_COOKIE_DOMAIN = ''#enter domain name here - e.g. example.com
+#enter domain name here - e.g. example.com
+#CSRF_COOKIE_DOMAIN = ''
+
+STATICFILES_DIRS = ( os.path.join(ASKBOT_ROOT, 'skins'),)
+
+RECAPTCHA_USE_SSL = True
+
diff --git a/askbot/setup_templates/settings.py.mustache b/askbot/setup_templates/settings.py.mustache
index 7a9f2a19..c827ac8e 100644
--- a/askbot/setup_templates/settings.py.mustache
+++ b/askbot/setup_templates/settings.py.mustache
@@ -3,11 +3,13 @@ import os.path
import logging
import sys
import askbot
+import site
#this line is added so that we can import pre-packaged askbot dependencies
-sys.path.append(os.path.join(os.path.dirname(askbot.__file__), 'deps'))
+ASKBOT_ROOT = os.path.abspath(os.path.dirname(askbot.__file__))
+site.addsitedir(os.path.join(ASKBOT_ROOT, 'deps'))
-DEBUG = False#set to True to enable debugging
+DEBUG = True#set to True to enable debugging
TEMPLATE_DEBUG = False#keep false when debugging jinja2 templates
INTERNAL_IPS = ('127.0.0.1',)
@@ -70,16 +72,19 @@ SITE_ID = 1
USE_I18N = True
LANGUAGE_CODE = 'en'
-# Absolute path to the directory that holds media.
+# Absolute path to the directory that holds uploaded media
# Example: "/home/media/media.lawrence.com/"
-ASKBOT_FILE_UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')
+MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')
+MEDIA_URL = '/upfiles/'
+STATIC_URL = '/m/'#this must be different from MEDIA_URL
PROJECT_ROOT = os.path.dirname(__file__)
+STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
-ADMIN_MEDIA_PREFIX = '/admin/media/'
+ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
# Make up some unique string, and don't share it with anybody.
SECRET_KEY = 'sdljdfjkldsflsdjkhsjkldgjlsdgfs s '
@@ -96,6 +101,7 @@ TEMPLATE_LOADERS = (
MIDDLEWARE_CLASSES = (
#'django.middleware.gzip.GZipMiddleware',
+ #'askbot.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
@@ -106,7 +112,6 @@ MIDDLEWARE_CLASSES = (
#below is askbot stuff for this tuple
'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware',
'askbot.middleware.forum_mode.ForumModeMiddleware',
- 'askbot.middleware.pagesize.QuestionsPageSizeMiddleware',
'askbot.middleware.cancel.CancelActionMiddleware',
'django.middleware.transaction.TransactionMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',
@@ -134,7 +139,7 @@ DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
#TEMPLATE_DIRS = (,) #template have no effect in askbot, use the variable below
-#ASKBOT_EXTRA_SKIN_DIR = #path to your private skin collection
+#ASKBOT_EXTRA_SKINS_DIR = #path to your private skin collection
#take a look here http://askbot.org/en/question/207/
TEMPLATE_CONTEXT_PROCESSORS = (
@@ -152,6 +157,7 @@ INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
+ {{ staticfiles_app }}
#all of these are needed for the askbot
'django.contrib.admin',
@@ -170,9 +176,6 @@ INSTALLED_APPS = (
'djkombu',
'followit',
#'avatar',#experimental use git clone git://github.com/ericflo/django-avatar.git$
- #requires setting of MEDIA_ROOT and MEDIA_URL
- #values of which can be the same as ASKBOT_FILE_UPLOAD_DIR and ASKBOT_UPLOADED_FILES_URL,
- #respectively
)
@@ -181,10 +184,12 @@ INSTALLED_APPS = (
CACHE_BACKEND = 'locmem://'
#needed for django-keyedcache
CACHE_TIMEOUT = 6000
+#sets a special timeout for livesettings if you want to make them different
+LIVESETTINGS_CACHE_TIMEOUT = CACHE_TIMEOUT
CACHE_PREFIX = 'askbot' #make this unique
CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True
#If you use memcache you may want to uncomment the following line to enable memcached based sessions
-#SESSION_ENGINE = 'django.contrib.sessions.backends.cache_db'
+#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
@@ -212,7 +217,6 @@ LOGIN_URL = '/%s%s%s' % (ASKBOT_URL,_('account/'),_('signin/'))
LOGIN_REDIRECT_URL = ASKBOT_URL #adjust, if needed
#note - it is important that upload dir url is NOT translated!!!
#also, this url must not have the leading slash
-ASKBOT_UPLOADED_FILES_URL = '%s%s' % (ASKBOT_URL, 'upfiles/')
ALLOW_UNICODE_SLUGS = False
ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange
@@ -225,4 +229,10 @@ djcelery.setup_loader()
DOMAIN_NAME = '{{domain_name}}'
CSRF_COOKIE_NAME = '{{domain_name}}_csrf'
-CSRF_COOKIE_DOMAIN = DOMAIN_NAME
+#https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/
+#CSRF_COOKIE_DOMAIN = DOMAIN_NAME
+
+STATIC_ROOT = os.path.join(PROJECT_ROOT, "static")
+STATICFILES_DIRS = (os.path.join(ASKBOT_ROOT, 'skins'),)
+
+RECAPTCHA_USE_SSL = True
diff --git a/askbot/setup_templates/urls.py b/askbot/setup_templates/urls.py
index 2ec69cf0..8c92f6d1 100644
--- a/askbot/setup_templates/urls.py
+++ b/askbot/setup_templates/urls.py
@@ -14,6 +14,11 @@ urlpatterns = patterns('',
(r'^settings/', include('askbot.deps.livesettings.urls')),
(r'^followit/', include('followit.urls')),
(r'^robots.txt$', include('robots.urls')),
+ url( # TODO: replace with django.conf.urls.static ?
+ r'^%s(?P<path>.*)$' % settings.MEDIA_URL[1:],
+ 'django.views.static.serve',
+ {'document_root': settings.MEDIA_ROOT.replace('\\','/')},
+ ),
)
if 'rosetta' in settings.INSTALLED_APPS:
diff --git a/askbot/sitemap.py b/askbot/sitemap.py
index 0f8f7451..c50c64dc 100644
--- a/askbot/sitemap.py
+++ b/askbot/sitemap.py
@@ -1,14 +1,14 @@
from django.contrib.sitemaps import Sitemap
-from askbot.models import Question
+from askbot.models import Post
class QuestionsSitemap(Sitemap):
changefreq = 'daily'
priority = 0.5
def items(self):
- return Question.objects.exclude(deleted=True)
+ return Post.objects.get_questions().exclude(deleted=True)
def lastmod(self, obj):
- return obj.last_activity_at
+ return obj.thread.last_activity_at
def location(self, obj):
return obj.get_absolute_url()
diff --git a/askbot/skins/common/media/jquery-openid/jquery.openid.js b/askbot/skins/common/media/jquery-openid/jquery.openid.js
index 1d972b55..249413b9 100644
--- a/askbot/skins/common/media/jquery-openid/jquery.openid.js
+++ b/askbot/skins/common/media/jquery-openid/jquery.openid.js
@@ -193,7 +193,6 @@ $.fn.authenticator = function() {
password_input_fields.hide();
}
reset_password_input_fields();
- $('.error').remove();
if (userIsAuthenticated === false){
email_input_fields.hide();
account_recovery_heading.hide();
@@ -210,13 +209,18 @@ $.fn.authenticator = function() {
}
};
+ var reset_form_and_errors = function(){
+ reset_form();
+ $('.error').remove();
+ }
+
var set_provider_name = function(element){
var provider_name = element.attr('name');
provider_name_input.val(provider_name);
};
var show_openid_input_fields = function(provider_name){
- reset_form();
+ reset_form_and_errors();
var token_name = extra_token_name[provider_name]
if (userIsAuthenticated){
$('#openid-heading').html(
@@ -278,7 +282,7 @@ $.fn.authenticator = function() {
signin_form.submit();
}
else {
- if (FB.getSession()){
+ if (FB.getAuthResponse()){
signin_form.submit();
}
FB.login();
@@ -290,7 +294,7 @@ $.fn.authenticator = function() {
var start_password_login_or_change = function(){
//called upon clicking on one of the password login buttons
- reset_form();
+ reset_form_and_errors();
set_provider_name($(this));
var provider_name = $(this).attr('name');
return setup_password_login_or_change(provider_name);
@@ -370,7 +374,7 @@ $.fn.authenticator = function() {
};
var start_account_recovery = function(){
- reset_form();
+ reset_form_and_errors();
account_recovery_hint.hide();
account_recovery_heading.css('margin-bottom', '0px');
account_recovery_heading.html(account_recovery_prompt_text).show();
diff --git a/askbot/skins/common/media/jquery-openid/openid.css b/askbot/skins/common/media/jquery-openid/openid.css
index 00287224..9a1db85f 100644
--- a/askbot/skins/common/media/jquery-openid/openid.css
+++ b/askbot/skins/common/media/jquery-openid/openid.css
@@ -1,8 +1,8 @@
-div#login-icons {margin:10px 0 0 0;padding:10px;border:#eee 1px solid;}
+div#login-icons {padding: 0;}
ul.login-icons {width: 450px; margin:0;padding:0;text-align:left; list-style-type:none; display:block;}
ul.login-icons li {display:inline;}
ul.large input {height: 40px; width: 90px;border:1px solid #ccc;margin:0 5px 5px 0;}
-.openid-signin h2 {margin-top:15px;}
+.openid-signin h1 {padding-bottom: 10px;}
.openid-signin h2#account-recovery-heading {margin-bottom:2px;}
#account-recovery-form p.hint a {color:#1b79bd; text-decoration: none;}
#account-recovery-form p.hint a:hover {text-decoration: underline;}
diff --git a/askbot/skins/common/media/js/editor.js b/askbot/skins/common/media/js/editor.js
index f5b1e2af..ae4f5aea 100644
--- a/askbot/skins/common/media/js/editor.js
+++ b/askbot/skins/common/media/js/editor.js
@@ -46,6 +46,11 @@ function ajaxFileUpload(imageUrl, startUploadHandler)
success: function (data, status)
{
var fileURL = $(data).find('file_url').text();
+ /*
+ * hopefully a fix for the "fakepath" issue
+ * https://www.mediawiki.org/wiki/Special:Code/MediaWiki/83225
+ */
+ fileURL = fileURL.replace(/\w:.*\\(.*)$/,'$1');
var error = $(data).find('error').text();
if(error != ''){
alert(error);
@@ -72,4 +77,4 @@ function ajaxFileUpload(imageUrl, startUploadHandler)
)
return false;
-}
+};
diff --git a/askbot/skins/common/media/js/jquery-1.7.2.min.js b/askbot/skins/common/media/js/jquery-1.7.2.min.js
new file mode 100644
index 00000000..16ad06c5
--- /dev/null
+++ b/askbot/skins/common/media/js/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/askbot/skins/common/media/js/jquery.history.js b/askbot/skins/common/media/js/jquery.history.js
new file mode 100644
index 00000000..8d4edcd2
--- /dev/null
+++ b/askbot/skins/common/media/js/jquery.history.js
@@ -0,0 +1 @@
+window.JSON||(window.JSON={}),function(){function f(a){return a<10?"0"+a:a}function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";return e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g,e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));return e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g,e}}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var JSON=window.JSON,cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(!b||typeof b=="function"||typeof b=="object"&&typeof b.length=="number")return str("",{"":a});throw new Error("JSON.stringify")}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),typeof reviver=="function"?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),function(a,b){"use strict";var c=a.History=a.History||{},d=a.jQuery;if(typeof c.Adapter!="undefined")throw new Error("History.js Adapter has already been loaded...");c.Adapter={bind:function(a,b,c){d(a).bind(b,c)},trigger:function(a,b,c){d(a).trigger(b,c)},extractEventData:function(a,c,d){var e=c&&c.originalEvent&&c.originalEvent[a]||d&&d[a]||b;return e},onDomLoad:function(a){d(a)}},typeof c.init!="undefined"&&c.init()}(window),function(a,b){"use strict";var c=a.document,d=a.setTimeout||d,e=a.clearTimeout||e,f=a.setInterval||f,g=a.History=a.History||{};if(typeof g.initHtml4!="undefined")throw new Error("History.js HTML4 Support has already been loaded...");g.initHtml4=function(){if(typeof g.initHtml4.initialized!="undefined")return!1;g.initHtml4.initialized=!0,g.enabled=!0,g.savedHashes=[],g.isLastHash=function(a){var b=g.getHashByIndex(),c;return c=a===b,c},g.saveHash=function(a){return g.isLastHash(a)?!1:(g.savedHashes.push(a),!0)},g.getHashByIndex=function(a){var b=null;return typeof a=="undefined"?b=g.savedHashes[g.savedHashes.length-1]:a<0?b=g.savedHashes[g.savedHashes.length+a]:b=g.savedHashes[a],b},g.discardedHashes={},g.discardedStates={},g.discardState=function(a,b,c){var d=g.getHashByState(a),e;return e={discardedState:a,backState:c,forwardState:b},g.discardedStates[d]=e,!0},g.discardHash=function(a,b,c){var d={discardedHash:a,backState:c,forwardState:b};return g.discardedHashes[a]=d,!0},g.discardedState=function(a){var b=g.getHashByState(a),c;return c=g.discardedStates[b]||!1,c},g.discardedHash=function(a){var b=g.discardedHashes[a]||!1;return b},g.recycleState=function(a){var b=g.getHashByState(a);return g.discardedState(a)&&delete g.discardedStates[b],!0},g.emulated.hashChange&&(g.hashChangeInit=function(){g.checkerFunction=null;var b="",d,e,h,i;return g.isInternetExplorer()?(d="historyjs-iframe",e=c.createElement("iframe"),e.setAttribute("id",d),e.style.display="none",c.body.appendChild(e),e.contentWindow.document.open(),e.contentWindow.document.close(),h="",i=!1,g.checkerFunction=function(){if(i)return!1;i=!0;var c=g.getHash()||"",d=g.unescapeHash(e.contentWindow.document.location.hash)||"";return c!==b?(b=c,d!==c&&(h=d=c,e.contentWindow.document.open(),e.contentWindow.document.close(),e.contentWindow.document.location.hash=g.escapeHash(c)),g.Adapter.trigger(a,"hashchange")):d!==h&&(h=d,g.setHash(d,!1)),i=!1,!0}):g.checkerFunction=function(){var c=g.getHash();return c!==b&&(b=c,g.Adapter.trigger(a,"hashchange")),!0},g.intervalList.push(f(g.checkerFunction,g.options.hashChangeInterval)),!0},g.Adapter.onDomLoad(g.hashChangeInit)),g.emulated.pushState&&(g.onHashChange=function(b){var d=b&&b.newURL||c.location.href,e=g.getHashByUrl(d),f=null,h=null,i=null,j;return g.isLastHash(e)?(g.busy(!1),!1):(g.doubleCheckComplete(),g.saveHash(e),e&&g.isTraditionalAnchor(e)?(g.Adapter.trigger(a,"anchorchange"),g.busy(!1),!1):(f=g.extractState(g.getFullUrl(e||c.location.href,!1),!0),g.isLastSavedState(f)?(g.busy(!1),!1):(h=g.getHashByState(f),j=g.discardedState(f),j?(g.getHashByIndex(-2)===g.getHashByState(j.forwardState)?g.back(!1):g.forward(!1),!1):(g.pushState(f.data,f.title,f.url,!1),!0))))},g.Adapter.bind(a,"hashchange",g.onHashChange),g.pushState=function(b,d,e,f){if(g.getHashByUrl(e))throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(f!==!1&&g.busy())return g.pushQueue({scope:g,callback:g.pushState,args:arguments,queue:f}),!1;g.busy(!0);var h=g.createStateObject(b,d,e),i=g.getHashByState(h),j=g.getState(!1),k=g.getHashByState(j),l=g.getHash();return g.storeState(h),g.expectedStateId=h.id,g.recycleState(h),g.setTitle(h),i===k?(g.busy(!1),!1):i!==l&&i!==g.getShortUrl(c.location.href)?(g.setHash(i,!1),!1):(g.saveState(h),g.Adapter.trigger(a,"statechange"),g.busy(!1),!0)},g.replaceState=function(a,b,c,d){if(g.getHashByUrl(c))throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(d!==!1&&g.busy())return g.pushQueue({scope:g,callback:g.replaceState,args:arguments,queue:d}),!1;g.busy(!0);var e=g.createStateObject(a,b,c),f=g.getState(!1),h=g.getStateByIndex(-2);return g.discardState(f,e,h),g.pushState(e.data,e.title,e.url,!1),!0}),g.emulated.pushState&&g.getHash()&&!g.emulated.hashChange&&g.Adapter.onDomLoad(function(){g.Adapter.trigger(a,"hashchange")})},typeof g.init!="undefined"&&g.init()}(window),function(a,b){"use strict";var c=a.console||b,d=a.document,e=a.navigator,f=a.sessionStorage||!1,g=a.setTimeout,h=a.clearTimeout,i=a.setInterval,j=a.clearInterval,k=a.JSON,l=a.alert,m=a.History=a.History||{},n=a.history;k.stringify=k.stringify||k.encode,k.parse=k.parse||k.decode;if(typeof m.init!="undefined")throw new Error("History.js Core has already been loaded...");m.init=function(){return typeof m.Adapter=="undefined"?!1:(typeof m.initCore!="undefined"&&m.initCore(),typeof m.initHtml4!="undefined"&&m.initHtml4(),!0)},m.initCore=function(){if(typeof m.initCore.initialized!="undefined")return!1;m.initCore.initialized=!0,m.options=m.options||{},m.options.hashChangeInterval=m.options.hashChangeInterval||100,m.options.safariPollInterval=m.options.safariPollInterval||500,m.options.doubleCheckInterval=m.options.doubleCheckInterval||500,m.options.storeInterval=m.options.storeInterval||1e3,m.options.busyDelay=m.options.busyDelay||250,m.options.debug=m.options.debug||!1,m.options.initialTitle=m.options.initialTitle||d.title,m.intervalList=[],m.clearAllIntervals=function(){var a,b=m.intervalList;if(typeof b!="undefined"&&b!==null){for(a=0;a<b.length;a++)j(b[a]);m.intervalList=null}},m.debug=function(){(m.options.debug||!1)&&m.log.apply(m,arguments)},m.log=function(){var a=typeof c!="undefined"&&typeof c.log!="undefined"&&typeof c.log.apply!="undefined",b=d.getElementById("log"),e,f,g,h,i;a?(h=Array.prototype.slice.call(arguments),e=h.shift(),typeof c.debug!="undefined"?c.debug.apply(c,[e,h]):c.log.apply(c,[e,h])):e="\n"+arguments[0]+"\n";for(f=1,g=arguments.length;f<g;++f){i=arguments[f];if(typeof i=="object"&&typeof k!="undefined")try{i=k.stringify(i)}catch(j){}e+="\n"+i+"\n"}return b?(b.value+=e+"\n-----\n",b.scrollTop=b.scrollHeight-b.clientHeight):a||l(e),!0},m.getInternetExplorerMajorVersion=function(){var a=m.getInternetExplorerMajorVersion.cached=typeof m.getInternetExplorerMajorVersion.cached!="undefined"?m.getInternetExplorerMajorVersion.cached:function(){var a=3,b=d.createElement("div"),c=b.getElementsByTagName("i");while((b.innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->")&&c[0]);return a>4?a:!1}();return a},m.isInternetExplorer=function(){var a=m.isInternetExplorer.cached=typeof m.isInternetExplorer.cached!="undefined"?m.isInternetExplorer.cached:Boolean(m.getInternetExplorerMajorVersion());return a},m.emulated={pushState:!Boolean(a.history&&a.history.pushState&&a.history.replaceState&&!/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(e.userAgent)&&!/AppleWebKit\/5([0-2]|3[0-2])/i.test(e.userAgent)),hashChange:Boolean(!("onhashchange"in a||"onhashchange"in d)||m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<8)},m.enabled=!m.emulated.pushState,m.bugs={setHash:Boolean(!m.emulated.pushState&&e.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(e.userAgent)),safariPoll:Boolean(!m.emulated.pushState&&e.vendor==="Apple Computer, Inc."&&/AppleWebKit\/5([0-2]|3[0-3])/.test(e.userAgent)),ieDoubleCheck:Boolean(m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<8),hashEscape:Boolean(m.isInternetExplorer()&&m.getInternetExplorerMajorVersion()<7)},m.isEmptyObject=function(a){for(var b in a)return!1;return!0},m.cloneObject=function(a){var b,c;return a?(b=k.stringify(a),c=k.parse(b)):c={},c},m.getRootUrl=function(){var a=d.location.protocol+"//"+(d.location.hostname||d.location.host);if(d.location.port||!1)a+=":"+d.location.port;return a+="/",a},m.getBaseHref=function(){var a=d.getElementsByTagName("base"),b=null,c="";return a.length===1&&(b=a[0],c=b.href.replace(/[^\/]+$/,"")),c=c.replace(/\/+$/,""),c&&(c+="/"),c},m.getBaseUrl=function(){var a=m.getBaseHref()||m.getBasePageUrl()||m.getRootUrl();return a},m.getPageUrl=function(){var a=m.getState(!1,!1),b=(a||{}).url||d.location.href,c;return c=b.replace(/\/+$/,"").replace(/[^\/]+$/,function(a,b,c){return/\./.test(a)?a:a+"/"}),c},m.getBasePageUrl=function(){var a=d.location.href.replace(/[#\?].*/,"").replace(/[^\/]+$/,function(a,b,c){return/[^\/]$/.test(a)?"":a}).replace(/\/+$/,"")+"/";return a},m.getFullUrl=function(a,b){var c=a,d=a.substring(0,1);return b=typeof b=="undefined"?!0:b,/[a-z]+\:\/\//.test(a)||(d==="/"?c=m.getRootUrl()+a.replace(/^\/+/,""):d==="#"?c=m.getPageUrl().replace(/#.*/,"")+a:d==="?"?c=m.getPageUrl().replace(/[\?#].*/,"")+a:b?c=m.getBaseUrl()+a.replace(/^(\.\/)+/,""):c=m.getBasePageUrl()+a.replace(/^(\.\/)+/,"")),c.replace(/\#$/,"")},m.getShortUrl=function(a){var b=a,c=m.getBaseUrl(),d=m.getRootUrl();return m.emulated.pushState&&(b=b.replace(c,"")),b=b.replace(d,"/"),m.isTraditionalAnchor(b)&&(b="./"+b),b=b.replace(/^(\.\/)+/g,"./").replace(/\#$/,""),b},m.store={},m.idToState=m.idToState||{},m.stateToId=m.stateToId||{},m.urlToId=m.urlToId||{},m.storedStates=m.storedStates||[],m.savedStates=m.savedStates||[],m.normalizeStore=function(){m.store.idToState=m.store.idToState||{},m.store.urlToId=m.store.urlToId||{},m.store.stateToId=m.store.stateToId||{}},m.getState=function(a,b){typeof a=="undefined"&&(a=!0),typeof b=="undefined"&&(b=!0);var c=m.getLastSavedState();return!c&&b&&(c=m.createStateObject()),a&&(c=m.cloneObject(c),c.url=c.cleanUrl||c.url),c},m.getIdByState=function(a){var b=m.extractId(a.url),c;if(!b){c=m.getStateString(a);if(typeof m.stateToId[c]!="undefined")b=m.stateToId[c];else if(typeof m.store.stateToId[c]!="undefined")b=m.store.stateToId[c];else{for(;;){b=(new Date).getTime()+String(Math.random()).replace(/\D/g,"");if(typeof m.idToState[b]=="undefined"&&typeof m.store.idToState[b]=="undefined")break}m.stateToId[c]=b,m.idToState[b]=a}}return b},m.normalizeState=function(a){var b,c;if(!a||typeof a!="object")a={};if(typeof a.normalized!="undefined")return a;if(!a.data||typeof a.data!="object")a.data={};b={},b.normalized=!0,b.title=a.title||"",b.url=m.getFullUrl(m.unescapeString(a.url||d.location.href)),b.hash=m.getShortUrl(b.url),b.data=m.cloneObject(a.data),b.id=m.getIdByState(b),b.cleanUrl=b.url.replace(/\??\&_suid.*/,""),b.url=b.cleanUrl,c=!m.isEmptyObject(b.data);if(b.title||c)b.hash=m.getShortUrl(b.url).replace(/\??\&_suid.*/,""),/\?/.test(b.hash)||(b.hash+="?"),b.hash+="&_suid="+b.id;return b.hashedUrl=m.getFullUrl(b.hash),(m.emulated.pushState||m.bugs.safariPoll)&&m.hasUrlDuplicate(b)&&(b.url=b.hashedUrl),b},m.createStateObject=function(a,b,c){var d={data:a,title:b,url:c};return d=m.normalizeState(d),d},m.getStateById=function(a){a=String(a);var c=m.idToState[a]||m.store.idToState[a]||b;return c},m.getStateString=function(a){var b,c,d;return b=m.normalizeState(a),c={data:b.data,title:a.title,url:a.url},d=k.stringify(c),d},m.getStateId=function(a){var b,c;return b=m.normalizeState(a),c=b.id,c},m.getHashByState=function(a){var b,c;return b=m.normalizeState(a),c=b.hash,c},m.extractId=function(a){var b,c,d;return c=/(.*)\&_suid=([0-9]+)$/.exec(a),d=c?c[1]||a:a,b=c?String(c[2]||""):"",b||!1},m.isTraditionalAnchor=function(a){var b=!/[\/\?\.]/.test(a);return b},m.extractState=function(a,b){var c=null,d,e;return b=b||!1,d=m.extractId(a),d&&(c=m.getStateById(d)),c||(e=m.getFullUrl(a),d=m.getIdByUrl(e)||!1,d&&(c=m.getStateById(d)),!c&&b&&!m.isTraditionalAnchor(a)&&(c=m.createStateObject(null,null,e))),c},m.getIdByUrl=function(a){var c=m.urlToId[a]||m.store.urlToId[a]||b;return c},m.getLastSavedState=function(){return m.savedStates[m.savedStates.length-1]||b},m.getLastStoredState=function(){return m.storedStates[m.storedStates.length-1]||b},m.hasUrlDuplicate=function(a){var b=!1,c;return c=m.extractState(a.url),b=c&&c.id!==a.id,b},m.storeState=function(a){return m.urlToId[a.url]=a.id,m.storedStates.push(m.cloneObject(a)),a},m.isLastSavedState=function(a){var b=!1,c,d,e;return m.savedStates.length&&(c=a.id,d=m.getLastSavedState(),e=d.id,b=c===e),b},m.saveState=function(a){return m.isLastSavedState(a)?!1:(m.savedStates.push(m.cloneObject(a)),!0)},m.getStateByIndex=function(a){var b=null;return typeof a=="undefined"?b=m.savedStates[m.savedStates.length-1]:a<0?b=m.savedStates[m.savedStates.length+a]:b=m.savedStates[a],b},m.getHash=function(){var a=m.unescapeHash(d.location.hash);return a},m.unescapeString=function(b){var c=b,d;for(;;){d=a.unescape(c);if(d===c)break;c=d}return c},m.unescapeHash=function(a){var b=m.normalizeHash(a);return b=m.unescapeString(b),b},m.normalizeHash=function(a){var b=a.replace(/[^#]*#/,"").replace(/#.*/,"");return b},m.setHash=function(a,b){var c,e,f;return b!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.setHash,args:arguments,queue:b}),!1):(c=m.escapeHash(a),m.busy(!0),e=m.extractState(a,!0),e&&!m.emulated.pushState?m.pushState(e.data,e.title,e.url,!1):d.location.hash!==c&&(m.bugs.setHash?(f=m.getPageUrl(),m.pushState(null,null,f+"#"+c,!1)):d.location.hash=c),m)},m.escapeHash=function(b){var c=m.normalizeHash(b);return c=a.escape(c),m.bugs.hashEscape||(c=c.replace(/\%21/g,"!").replace(/\%26/g,"&").replace(/\%3D/g,"=").replace(/\%3F/g,"?")),c},m.getHashByUrl=function(a){var b=String(a).replace(/([^#]*)#?([^#]*)#?(.*)/,"$2");return b=m.unescapeHash(b),b},m.setTitle=function(a){var b=a.title,c;b||(c=m.getStateByIndex(0),c&&c.url===a.url&&(b=c.title||m.options.initialTitle));try{d.getElementsByTagName("title")[0].innerHTML=b.replace("<","&lt;").replace(">","&gt;").replace(" & "," &amp; ")}catch(e){}return d.title=b,m},m.queues=[],m.busy=function(a){typeof a!="undefined"?m.busy.flag=a:typeof m.busy.flag=="undefined"&&(m.busy.flag=!1);if(!m.busy.flag){h(m.busy.timeout);var b=function(){var a,c,d;if(m.busy.flag)return;for(a=m.queues.length-1;a>=0;--a){c=m.queues[a];if(c.length===0)continue;d=c.shift(),m.fireQueueItem(d),m.busy.timeout=g(b,m.options.busyDelay)}};m.busy.timeout=g(b,m.options.busyDelay)}return m.busy.flag},m.busy.flag=!1,m.fireQueueItem=function(a){return a.callback.apply(a.scope||m,a.args||[])},m.pushQueue=function(a){return m.queues[a.queue||0]=m.queues[a.queue||0]||[],m.queues[a.queue||0].push(a),m},m.queue=function(a,b){return typeof a=="function"&&(a={callback:a}),typeof b!="undefined"&&(a.queue=b),m.busy()?m.pushQueue(a):m.fireQueueItem(a),m},m.clearQueue=function(){return m.busy.flag=!1,m.queues=[],m},m.stateChanged=!1,m.doubleChecker=!1,m.doubleCheckComplete=function(){return m.stateChanged=!0,m.doubleCheckClear(),m},m.doubleCheckClear=function(){return m.doubleChecker&&(h(m.doubleChecker),m.doubleChecker=!1),m},m.doubleCheck=function(a){return m.stateChanged=!1,m.doubleCheckClear(),m.bugs.ieDoubleCheck&&(m.doubleChecker=g(function(){return m.doubleCheckClear(),m.stateChanged||a(),!0},m.options.doubleCheckInterval)),m},m.safariStatePoll=function(){var b=m.extractState(d.location.href),c;if(!m.isLastSavedState(b))c=b;else return;return c||(c=m.createStateObject()),m.Adapter.trigger(a,"popstate"),m},m.back=function(a){return a!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.back,args:arguments,queue:a}),!1):(m.busy(!0),m.doubleCheck(function(){m.back(!1)}),n.go(-1),!0)},m.forward=function(a){return a!==!1&&m.busy()?(m.pushQueue({scope:m,callback:m.forward,args:arguments,queue:a}),!1):(m.busy(!0),m.doubleCheck(function(){m.forward(!1)}),n.go(1),!0)},m.go=function(a,b){var c;if(a>0)for(c=1;c<=a;++c)m.forward(b);else{if(!(a<0))throw new Error("History.go: History.go requires a positive or negative integer passed.");for(c=-1;c>=a;--c)m.back(b)}return m};if(m.emulated.pushState){var o=function(){};m.pushState=m.pushState||o,m.replaceState=m.replaceState||o}else m.onPopState=function(b,c){var e=!1,f=!1,g,h;return m.doubleCheckComplete(),g=m.getHash(),g?(h=m.extractState(g||d.location.href,!0),h?m.replaceState(h.data,h.title,h.url,!1):(m.Adapter.trigger(a,"anchorchange"),m.busy(!1)),m.expectedStateId=!1,!1):(e=m.Adapter.extractEventData("state",b,c)||!1,e?f=m.getStateById(e):m.expectedStateId?f=m.getStateById(m.expectedStateId):f=m.extractState(d.location.href),f||(f=m.createStateObject(null,null,d.location.href)),m.expectedStateId=!1,m.isLastSavedState(f)?(m.busy(!1),!1):(m.storeState(f),m.saveState(f),m.setTitle(f),m.Adapter.trigger(a,"statechange"),m.busy(!1),!0))},m.Adapter.bind(a,"popstate",m.onPopState),m.pushState=function(b,c,d,e){if(m.getHashByUrl(d)&&m.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(e!==!1&&m.busy())return m.pushQueue({scope:m,callback:m.pushState,args:arguments,queue:e}),!1;m.busy(!0);var f=m.createStateObject(b,c,d);return m.isLastSavedState(f)?m.busy(!1):(m.storeState(f),m.expectedStateId=f.id,n.pushState(f.id,f.title,f.url),m.Adapter.trigger(a,"popstate")),!0},m.replaceState=function(b,c,d,e){if(m.getHashByUrl(d)&&m.emulated.pushState)throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");if(e!==!1&&m.busy())return m.pushQueue({scope:m,callback:m.replaceState,args:arguments,queue:e}),!1;m.busy(!0);var f=m.createStateObject(b,c,d);return m.isLastSavedState(f)?m.busy(!1):(m.storeState(f),m.expectedStateId=f.id,n.replaceState(f.id,f.title,f.url),m.Adapter.trigger(a,"popstate")),!0};if(f){try{m.store=k.parse(f.getItem("History.store"))||{}}catch(p){m.store={}}m.normalizeStore()}else m.store={},m.normalizeStore();m.Adapter.bind(a,"beforeunload",m.clearAllIntervals),m.Adapter.bind(a,"unload",m.clearAllIntervals),m.saveState(m.storeState(m.extractState(d.location.href,!0))),f&&(m.onUnload=function(){var a,b;try{a=k.parse(f.getItem("History.store"))||{}}catch(c){a={}}a.idToState=a.idToState||{},a.urlToId=a.urlToId||{},a.stateToId=a.stateToId||{};for(b in m.idToState){if(!m.idToState.hasOwnProperty(b))continue;a.idToState[b]=m.idToState[b]}for(b in m.urlToId){if(!m.urlToId.hasOwnProperty(b))continue;a.urlToId[b]=m.urlToId[b]}for(b in m.stateToId){if(!m.stateToId.hasOwnProperty(b))continue;a.stateToId[b]=m.stateToId[b]}m.store=a,m.normalizeStore(),f.setItem("History.store",k.stringify(a))},m.intervalList.push(i(m.onUnload,m.options.storeInterval)),m.Adapter.bind(a,"beforeunload",m.onUnload),m.Adapter.bind(a,"unload",m.onUnload));if(!m.emulated.pushState){m.bugs.safariPoll&&m.intervalList.push(i(m.safariStatePoll,m.options.safariPollInterval));if(e.vendor==="Apple Computer, Inc."||(e.appCodeName||"")==="Mozilla")m.Adapter.bind(a,"hashchange",function(){m.Adapter.trigger(a,"popstate")}),m.getHash()&&m.Adapter.onDomLoad(function(){m.Adapter.trigger(a,"hashchange")})}},m.init()}(window) \ No newline at end of file
diff --git a/askbot/skins/common/media/js/live_search.js b/askbot/skins/common/media/js/live_search.js
index 73e1453a..f7d89c2a 100644
--- a/askbot/skins/common/media/js/live_search.js
+++ b/askbot/skins/common/media/js/live_search.js
@@ -1,281 +1,244 @@
-var prevSortMethod = sortMethod;
-var liveSearch = function(){
- var query = undefined;
- var prev_text = undefined;
- var running = false;
- var q_list_sel = 'question-list';//id of question listing div
- var search_url = undefined;
- var restart_query = function(){};
- var process_query = function(){};
- var render_result = function(){};
+var TagWarningBox = function(){
+ WrappedElement.call(this);
+ this._tags = [];
+};
+inherits(TagWarningBox, WrappedElement);
+
+TagWarningBox.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ this._element
+ .css('display', 'block')
+ .css('margin', '0 0 13px 2px');
+ this._element.addClass('non-existing-tags');
+ this._warning = this.makeElement('p');
+ this._element.append(this._warning);
+ this._tag_container = this.makeElement('ul');
+ this._tag_container.addClass('tags');
+ this._element.append(this._tag_container);
+ this._element.append($('<div class="clearfix"></div>'));
+ this._element.hide();
+};
- var refresh_x_button = function(){
- if ($.trim(query.val()).length > 0){
- if (query.attr('class') === 'searchInput'){
- query.attr('class', 'searchInputCancelable');
- x_button = $('<input class="cancelSearchBtn" type="button" name="reset_query"/>');
- //x_button.click(reset_query);
- x_button.val('X');
- x_button.click(
- function(){
- query.val('');
- if (sortMethod === 'relevance-desc'){
- sortMethod = prevSortMethod;
- }
- refresh_x_button();
- reset_query(sortMethod);
- }
- );
- query.after(x_button);
- }
- } else {
- $('input[name=reset_query]').remove();
- query.attr('class', 'searchInput');
- }
- };
+TagWarningBox.prototype.clear = function(){
+ this._tags = [];
+ if (this._tag_container){
+ this._tag_container.empty();
+ }
+ this._warning.hide();
+ this._element.hide();
+};
- var reset_sort_method = function(){
- if (sortMethod === 'relevance-desc'){
- sortMethod = prevSortMethod;
- if (sortMethod === 'relevance-desc'){
- sortMethod = 'activity-desc';
- }
- } else {
- sortMethod = 'activity-desc';
- prevSortMethod = 'activity-desc';
- }
- };
+TagWarningBox.prototype.addTag = function(tag_name){
+ var tag = new Tag();
+ tag.setName(tag_name);
+ tag.setLinkable(false);
+ tag.setDeletable(false);
+ var elem = this.getElement();
+ this._tag_container.append(tag.getElement());
+ this._tag_container.css('display', 'block');
+ this._tags.push(tag);
+ elem.show();
+};
- var eval_query = function(){
- cur_text = $.trim(query.val());
- if (cur_text !== prev_text && running === false){
- if (cur_text.length >= minSearchWordLength){
- process_query();
- running = true;
- } else if (cur_text.length === 0){
- restart_query();
- }
- }
- };
+TagWarningBox.prototype.showWarning = function(){
+ this._warning.html(
+ ngettext(
+ 'Sorry, this tag does not exist',
+ 'Sorry, these tags do not exist',
+ this._tags.length
+ )
+ );
+ this._warning.show();
+};
- var ask_page_search_listen = function(){
- running = false;
- var ask_page_eval_handle;
- query.keyup(function(e){
- if (running === false){
- clearTimeout(ask_page_eval_handle);
- ask_page_eval_handle = setTimeout(eval_query, 400);
- }
+var liveSearch = function(query_string) {
+ var query = $('input#keywords');
+ var query_val = function () {return $.trim(query.val());};
+ var prev_text = query_val();
+ var running = false;
+ var q_list_sel = 'question-list';//id of question listing div
+ var search_url = askbot['urls']['questions'];
+ var x_button = $('input[name=reset_query]');
+ var tag_warning_box = new TagWarningBox();
+
+ //the tag search input is optional in askbot
+ $('#ab-tag-search').parent().before(
+ tag_warning_box.getElement()
+ );
+
+ var run_tag_search = function(){
+ var search_tags = $('#ab-tag-search').val().split(/\s+/);
+ if (search_tags.length === 0) {
+ return;
+ }
+ /** @todo: the questions/ might need translation... */
+ query_string = '/questions/scope:all/sort:activity-desc/page:1/'
+ $.each(search_tags, function(idx, tag) {
+ query_string = QSutils.add_search_tag(query_string, search_tags);
});
- };
-
- var main_page_search_listen = function(){
- running = false;
- refresh_x_button();
- var main_page_eval_handle;
- query.keyup(function(e){
- refresh_x_button();
- if (running === false){
- clearTimeout(main_page_eval_handle);
- main_page_eval_handle = setTimeout(eval_query, 400);
- }
+ var url = search_url + query_string;
+ $.ajax({
+ url: url,
+ dataType: 'json',
+ success: function(data, text_status, xhr){
+ render_result(data, text_status, xhr);
+ $('#ab-tag-search').val('');
+ },
});
+ updateHistory(url);
};
- var render_counter = function(count, word, counter_class, counter_subclass){
- var output = '<div class="' + counter_class + ' ' + counter_subclass + '">' +
- '<span class="item-count">' +
- count;
- if (counter_class === 'accepted'){
- output += '&#10003;';
+ var activate_tag_search_input = function(){
+ //the autocomplete is set up in tag_selector.js
+ var button = $('#ab-tag-search-add');
+ if (button.length === 0){//may be absent
+ return;
}
- output += '</span>' +
- '<div>' + word + '</div>' +
- '</div>';
- return output;
+ var ac = new AutoCompleter({
+ url: askbot['urls']['get_tag_list'],
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: true,
+ maxCacheLength: 100,
+ maxItemsToShow: 20,
+ onItemSelect: run_tag_search,
+ delay: 10
+ });
+ ac.decorate($('#ab-tag-search'));
+ setupButtonEventHandlers(button, run_tag_search);
+ //var tag_search_input = $('#ab-tag-search');
+ //tag_search_input.keydown(
+ // makeKeyHandler(13, run_tag_search)
+ //);
};
- var render_title = function(result){
- return '<h2>' +
- '<a href="' +
- askbot['urls']['question_url_template']
- .replace('{{QuestionID}}', result['id']) +
- '" onmouseover="load_question_body(this,' + result['id'] + ')">' +
- result['title'] +
- '</a>' +
- '</h2>';
+ var render_tag_warning = function(tag_list){
+ if ( !tag_list ) {
+ return;
+ }
+ tag_warning_box.clear();
+ $.each(tag_list, function(idx, tag_name){
+ tag_warning_box.addTag(tag_name);
+ });
+ tag_warning_box.showWarning();
};
- var render_user_link = function(result){
- if (result['u_id'] !== false){
- if (result['u_is_anonymous'] === true){
- return '<span class="anonymous">' +
- askbot['messages']['name_of_anonymous_user'] +
- '</span>';
- } else {
- var u_slug = result['u_name'].toLowerCase().replace(/ +/g, '-');
- return '<a ' +
- 'href="' +
- askbot['urls']['user_url_template']
- .replace('{{user_id}}', result['u_id'])
- .replace('{{slug}}', u_slug) +
- '">' +
- result['u_name'] +
- '</a> ';
+ var refresh_x_button = function(){
+ if(query_val().length > 0){
+ if (query.hasClass('searchInput')){
+ query.attr('class', 'searchInputCancelable');
+ x_button.show();
}
- }
- else {
- return '';
+ } else {
+ x_button.hide();
+ query.attr('class', 'searchInput');
}
};
- var render_badge = function(result, key){
- return '<span ' +
- 'title="' + result[key + '_title'] + '"' +
- '>' +
- '<span ' +
- 'class="' + result[key + '_css_class'] + '"' +
- '>' + result[key + '_badge_symbol'] + '</span>' +
- '<span class="badgecount">' + result[key] + '</span>';
+ var restart_query = function() {
+ sortMethod = 'activity-desc';
+ query.val('');
+ refresh_x_button();
+ send_query();
};
- var render_user_badge_and_karma = function(result){
- var rep_title = result['u_rep'] + ' ' + result['u_rep_word'];
- var html = '<span ' +
- 'class="reputation-score" ' +
- 'title="' + rep_title + '"' +
- '>' + result['u_rep'] + '</span>';
- if (result['u_gold'] > 0){
- html += render_badge(result, 'u_gold');
- }
- if (result['u_silver'] > 0){
- html += render_badge(result, 'u_silver');
- }
- if (result['u_bronze'] > 0){
- html += render_badge(result, 'u_bronze');
+ var eval_query = function(){
+ cur_query = query_val();
+ if (cur_query !== prev_text && running === false){
+ if (cur_query.length >= minSearchWordLength){
+ send_query(cur_query);
+ } else if (cur_query.length === 0){
+ restart_query();
+ }
}
- return html;
};
- var render_user_flag = function(result){
- var country_code = result['u_country_code'];
- if (country_code) {
- return '<img class="flag" src="'+
- mediaUrl(
- 'media/images/flags/' +
- country_code.toLowerCase() +
- '.gif'
- ) +
- '"/>';
- } else {
- return '';
+ var update_query_string = function(query_text){
+ if(query_text === undefined) { // handle missing parameter
+ query_text = query_val();
}
+ query_string = QSutils.patch_query_string(
+ query_string,
+ 'query:' + encodeURIComponent(query_text),
+ query_text === '' // remove if empty
+ );
+ return query_text;
};
- var render_user_info = function(result){
- var user_html =
- '<div class="userinfo">' +
- '<span class="relativetime" ' +
- 'title="' + result['timestamp'] + '"' +
- '>' +
- result['timesince'] +
- '</span> ' +
- render_user_link(result);
- if (result['u_is_anonymous'] === false){
- user_html += render_user_flag(result);
- //render_user_badge_and_karma(result) +
+ var send_query = function(query_text){
+ running = true;
+ if(!prev_text && query_text && showSortByRelevance) {
+ // If there was no query but there is some query now - and we support relevance search - then switch to it */
+ query_string = QSutils.patch_query_string(query_string, 'sort:relevance-desc');
}
- user_html += '</div>';
- return user_html;
+ prev_text = update_query_string(query_text);
+ query_string = QSutils.patch_query_string(query_string, 'page:1'); /* if something has changed, then reset the page no. */
+ var url = search_url + query_string;
+ $.ajax({
+ url: url,
+ dataType: 'json',
+ success: render_result,
+ complete: function(){
+ running = false;
+ eval_query();
+ },
+ cache: false
+ });
+ updateHistory(url);
};
- var render_tag = function(tag_name, linkable, deletable){
- var tag = new Tag();
- tag.setName(tag_name);
- tag.setDeletable(deletable);
- tag.setLinkable(linkable);
- return tag.getElement().outerHTML();
+ var updateHistory = function(url) {
+ var context = { state:1, rand:Math.random() };
+ History.pushState( context, "Questions", url );
+ setTimeout(function (){
+ /* HACK: For some weird reson, sometimes something overrides the above pushState so we re-aplly it
+ This might be caused by some other JS plugin.
+ The delay of 10msec allows the other plugin to override the URL.
+ */
+ History.replaceState( context, "Questions", url );
+ }, 10);
};
- var render_tags = function(tags, linkable, deletable){
- var tags_html = '<ul class="tags">';
- $.each(tags, function(idx, item){
- tags_html += render_tag(item, linkable, deletable);
- });
- tags_html += '</ul>';
- return tags_html;
- };
+ /* *********************************** */
- var render_faces = function(faces){
- if (faces.length === 0){
- return;
- }
- $('#contrib-users>a').remove();
- var html = '';
- for (var i=0; i<faces.length; i++){
- html += faces[i];
- }
- $('#contrib-users').append(html);
- };
+ var render_related_tags = function(tags, query_string){
+ if (tags.length === 0) return;
- var render_related_tags = function(tags){
- if (tags.length === 0){
- return;
- }
- var html = '';
+ var html_list = [];
for (var i=0; i<tags.length; i++){
- html += render_tag(tags[i]['name'], true, false);
- html += '<span class="tag-number">&#215; ' +
- tags[i]['used_count'] +
- '</span>' +
- '<br />';
- }
- $('#related-tags').html(html);
- };
-
- var render_paginator = function(paginator){
- var pager = $('#pager');
- if (paginator === ''){
- pager.hide();
- return;
- }
- else {
- pager.show();
- pager.html(paginator);
+ var tag = new Tag();
+ tag.setName(tags[i]['name']);
+ tag.setDeletable(false);
+ tag.setLinkable(true);
+ tag.setUrlParams(query_string);
+
+ html_list.push(tag.getElement().outerHTML());
+ html_list.push('<span class="tag-number">&#215; ');
+ html_list.push(tags[i]['used_count']);
+ html_list.push('</span>');
+ html_list.push('<br />');
}
+ $('#related-tags').html(html_list.join(''));
};
- var set_question_count = function(count_html){
- $('#questionCount').html(count_html);
- };
-
- var get_old_tags = function(container){
- var tag_elements = container.find('.tag');
- var old_tags = [];
- tag_elements.each(function(idx, element){
- old_tags.push($(element).html());
- });
- return old_tags;
- };
-
- var render_search_tags = function(tags){
+ var render_search_tags = function(tags, query_string){
var search_tags = $('#searchTags');
- search_tags.children().remove();
- if (tags.length == 0){
+ search_tags.empty();
+ if (tags.length === 0){
$('#listSearchTags').hide();
$('#search-tips').hide();//wrong - if there are search users
} else {
$('#listSearchTags').show();
$('#search-tips').show();
- var tags_html = '';
$.each(tags, function(idx, tag_name){
var tag = new Tag();
tag.setName(tag_name);
- tag.setDeletable(true);
tag.setLinkable(false);
+ tag.setDeletable(true);
tag.setDeleteHandler(
function(){
- remove_search_tag(tag_name);
+ remove_search_tag(tag_name, query_string);
}
);
search_tags.append(tag.getElement());
@@ -283,30 +246,38 @@ var liveSearch = function(){
}
};
- var create_relevance_tab = function(){
+ var create_relevance_tab = function(query_string){
relevance_tab = $('<a></a>');
- relevance_tab.attr('href', '?sort=relevance-desc');
+ href = search_url + QSutils.patch_query_string(query_string, 'sort:relevance-desc');
+ relevance_tab.attr('href', href);
relevance_tab.attr('id', 'by_relevance');
relevance_tab.html('<span>' + sortButtonData['relevance']['label'] + '</span>');
return relevance_tab;
- }
+ };
+
+ /* *************************************** */
+
+ var remove_search_tag = function(tag){
+ query_string = QSutils.remove_search_tag(query_string, tag);
+ send_query();
+ };
- var set_active_sort_tab = function(sort_method){
- var tabs = $('#sort_tabs>a');
+ var set_active_sort_tab = function(sort_method, query_string){
+ var tabs = $('#sort_tabs > a');
tabs.attr('class', 'off');
tabs.each(function(index, element){
var tab = $(element);
- var tab_name = tab.attr('id').replace(/^by_/,'');
- if (tab_name in sortButtonData){
- tab.attr(
- 'href',
- '?sort=' + tab_name + '-desc'
- );
- tab.attr(
- 'title',
- sortButtonData[tab_name]['desc_tooltip']
- );
- tab.html(sortButtonData[tab_name]['label']);
+ if ( tab.attr('id') ) {
+ var tab_name = tab.attr('id').replace(/^by_/,'');
+ if (tab_name in sortButtonData){
+ href = search_url + QSutils.patch_query_string(
+ query_string,
+ 'sort:' + tab_name + '-desc'
+ );
+ tab.attr('href', href);
+ tab.attr('title', sortButtonData[tab_name]['desc_tooltip']);
+ tab.html(sortButtonData[tab_name]['label']);
+ }
}
});
var bits = sort_method.split('-', 2);
@@ -320,14 +291,14 @@ var liveSearch = function(){
active_tab.html(sortButtonData[name]['label'] + arrow);
};
- var render_relevance_sort_tab = function(){
+ var render_relevance_sort_tab = function(query_string){
if (showSortByRelevance === false){
return;
}
var relevance_tab = $('#by_relevance');
if (prev_text && prev_text.length > 0){
if (relevance_tab.length == 0){
- relevance_tab = create_relevance_tab();
+ relevance_tab = create_relevance_tab(query_string);
$('#sort_tabs>span').after(relevance_tab);
}
}
@@ -338,186 +309,97 @@ var liveSearch = function(){
}
};
- var change_rss_url = function(feed_url){
- if(feed_url){
- $("#ContentLeft a.rss:first").attr("href", feed_url);
- }
- }
-
- var remove_search_tag = function(tag_name){
- $.ajax({
- url: askbot['urls']['questions'],
- data: {remove_tag: tag_name},
- dataType: 'json',
- success: render_result,
- complete: try_again
- });
- };
-
- var activate_search_tags = function(){
- var search_tags = $('#searchTags .tag-left');
- $.each(search_tags, function(idx, element){
- var tag = new Tag();
- tag.decorate($(element));
- //todo: setDeleteHandler and setHandler
- //must work after decorate & must have getName
- tag.setDeleteHandler(
- function(){
- remove_search_tag(tag.getName());
- }
- );
- });
- };
+ var render_result = function(data, text_status, xhr){
+ if (data['questions'].length > 0){
+ $('#pager').toggle(data['paginator'] !== '').html(data['paginator']);
+ $('#questionCount').html(data['question_counter']);
+ render_search_tags(data['query_data']['tags'], data['query_string']);
+ if(data['faces'].length > 0) {
+ $('#contrib-users > a').remove();
+ $('#contrib-users').append(data['faces'].join(''));
+ }
+ render_related_tags(data['related_tags'], data['query_string']);
+ render_relevance_sort_tab(data['query_string']);
+ render_tag_warning(data['non_existing_tags']);
+ set_active_sort_tab(data['query_data']['sort_order'], data['query_string']);
+ if(data['feed_url']){
+ // Change RSS URL
+ $("#ContentLeft a.rss:first").attr("href", data['feed_url']);
+ }
- var render_ask_page_result = function(data, text_status, xhr){
- var container = $('#' + q_list_sel);
- container.fadeOut(200, function() {
- container.children().remove();
- $.each(data, function(idx, question){
- var url = question['url'];
- var title = question['title'];
- var answer_count = question['answer_count'];
- var list_item = $('<h2></h2>');
- var count_element = $('<span class="item-count"></span>');
- count_element.html(answer_count);
- list_item.append(count_element);
- var link = $('<a></a>');
- link.attr('href', url);
- list_item.append(link);
- title_element = $('<span class="title"></span>');
- title_element.html(title);
- link.append(title)
- container.append(list_item);
+ // Patch scope selectors
+ $('#scopeWrapper > a.scope-selector').each(function(index) {
+ var old_qs = $(this).attr('href').replace(search_url, '');
+ var scope = QSutils.get_query_string_selector_value(old_qs, 'scope');
+ qs = QSutils.patch_query_string(data['query_string'], 'scope:' + scope);
+ $(this).attr('href', search_url + qs);
});
- container.show();//show just to measure
- var unit_height = container.children(':first').outerHeight();
- container.hide();//now hide
- if (data.length > 5){
- container.css('overflow-y', 'scroll');
- container.css('height', unit_height*5 + 'px');
- } else {
- container.css('height', data.length*unit_height + 'px');
- container.css('overflow-y', 'hidden');
- }
- container.fadeIn();
- });
- };
- var render_main_page_result = function(data, text_status, xhr){
- var old_list = $('#' + q_list_sel);
- var new_list = $('<div></div>').hide();
- if (data['questions'].length > 0){
- old_list.stop(true);
-
- new_list.html(data['questions']);
- //old_list.hide();
- old_list.after(new_list);
- //old_list.remove();
- //rename new div to old
- render_paginator(data['paginator']);
- set_question_count(data['question_counter']);
- render_search_tags(data['query_data']['tags']);
- render_faces(data['faces']);
- render_related_tags(data['related_tags']);
- render_relevance_sort_tab();
- change_rss_url(data['feed_url']);
- set_active_sort_tab(sortMethod);
+ // Patch "Ask your question"
+ var askButton = $('#askButton');
+ var askHrefBase = askButton.attr('href').split('?')[0];
+ askButton.attr('href', askHrefBase + data['query_data']['ask_query_string']); /* INFO: ask_query_string should already be URL-encoded! */
+
query.focus();
- //show new div with a fadeIn effect
- old_list.fadeOut(200, function() {
+ var old_list = $('#' + q_list_sel);
+ var new_list = $('<div></div>').hide().html(data['questions']);
+ new_list.find('.timeago').timeago();
+ old_list.stop(true).after(new_list).fadeOut(200, function() {
+ //show new div with a fadeIn effect
old_list.remove();
new_list.attr('id', q_list_sel);
new_list.fadeIn(400);
});
}
- }
+ };
- var try_again = function(){
- running = false;
- eval_query();
- }
+ /* *********************************** */
- var send_query = function(query_text, sort_method){
- var post_data = {query: query_text};
- $.ajax({
- url: search_url,
- data: {query: query_text, sort: sort_method},
- dataType: 'json',
- success: render_result,
- complete: try_again
- });
- prev_text = query_text;
- }
+ // Wire search tags
+ var search_tags = $('#searchTags .tag-left');
+ $.each(search_tags, function(idx, element){
+ var tag = new Tag();
+ tag.decorate($(element));
+ //todo: setDeleteHandler and setHandler
+ //must work after decorate & must have getName
+ tag.setDeleteHandler(
+ function(){
+ remove_search_tag(tag.getName(), query_string);
+ }
+ );
+ });
+
+ // Wire X button
+ x_button.click(function () {
+ restart_query(); /* wrapped in closure because it's not yet defined at this point */
+ });
+ refresh_x_button();
+
+ // Wire query box
+ var main_page_eval_handle;
+ query.keyup(function(e){
+ refresh_x_button();
+ if (running === false){
+ clearTimeout(main_page_eval_handle);
+ main_page_eval_handle = setTimeout(eval_query, 400);
+ }
+ });
- var reset_query = function(sort_method){
- $.ajax({
- url: search_url,
- data: {reset_query: true, sort: sort_method},
- dataType: 'json',
- success: render_result,
- complete: try_again
- });
- prev_text = '';
- }
+ activate_tag_search_input();
- var refresh_main_page = function(){
- $.ajax({
- url: askbot['urls']['questions'],
- data: {preserve_state: true},
- dataType: 'json',
- success: render_main_page_result
- });
- };
+ $("form#searchForm").submit(function(event) {
+ // if user clicks the button the s(h)e probably wants page reload,
+ // so provide that experience but first update the query string
+ event.preventDefault();
+ update_query_string();
+ window.location.href = search_url + query_string;
+ });
- return {
- refresh: function(){
- query = $('input#keywords');
- refresh_main_page();
- },
- init: function(mode){
- if (mode === 'main_page'){
- //live search for the main page
- query = $('input#keywords');
- search_url = askbot['urls']['questions'];
- render_result = render_main_page_result;
-
- process_query = function(){
- if (prev_text.length === 0 && showSortByRelevance){
- if (sortMethod === 'activity-desc'){
- prevSortMethod = sortMethod;
- sortMethod = 'relevance-desc';
- }
- }
- send_query(cur_text, sortMethod);
- };
- restart_query = function() {
- reset_sort_method();
- refresh_x_button();
- reset_query(sortMethod);
- running = true;
- };
-
- activate_search_tags();
- main_page_search_listen();
- } else {
- query = $('input#id_title.questionTitleInput');
- search_url = askbot['urls']['api_get_questions'];
- render_result = render_ask_page_result;
- process_query = function(){
- send_query(cur_text);
- };
- restart_query = function(){
- $('#' + q_list_sel).css('height',0).children().remove();
- running = false;
- prev_text = '';
- //ask_page_search_listen();
- };
- ask_page_search_listen();
- }
- prev_text = $.trim(query.val());
- running = false;
- }
- };
+ /* *********************************** */
+ // Hook for tag_selector.js
+ liveSearch.refresh = function () {
+ send_query();
+ };
};
diff --git a/askbot/skins/common/media/js/live_search_new_thread.js b/askbot/skins/common/media/js/live_search_new_thread.js
new file mode 100644
index 00000000..53c820fa
--- /dev/null
+++ b/askbot/skins/common/media/js/live_search_new_thread.js
@@ -0,0 +1,82 @@
+
+var liveSearchNewThreadInit = function() {
+ var query = $('input#id_title.questionTitleInput');
+ var prev_text = $.trim(query.val());
+ var search_url = askbot['urls']['api_get_questions'];
+ var running = false;
+ var q_list_sel = 'question-list'; //id of question listing div
+
+ running = false;
+ var ask_page_eval_handle;
+ query.keyup(function(e){
+ if (running === false){
+ clearTimeout(ask_page_eval_handle);
+ ask_page_eval_handle = setTimeout(eval_query, 400);
+ }
+ });
+
+ var eval_query = function(){
+ cur_text = $.trim(query.val());
+ if (cur_text !== prev_text && running === false){
+ if (cur_text.length >= minSearchWordLength){
+ send_query(cur_text);
+ } else if (cur_text.length === 0){
+ /* restart query */
+ $('#' + q_list_sel).css('height',0).children().remove();
+ running = false;
+ prev_text = '';
+ }
+ }
+ };
+
+ var render_result = function(data, text_status, xhr){
+ var container = $('#' + q_list_sel);
+ container.fadeOut(200, function() {
+ container.children().remove();
+ $.each(data, function(idx, question){
+ var url = question['url'];
+ var title = question['title'];
+ var answer_count = question['answer_count'];
+ var list_item = $('<h2></h2>');
+ var count_element = $('<span class="item-count"></span>');
+ count_element.html(answer_count);
+ list_item.append(count_element);
+ var link = $('<a></a>');
+ link.attr('href', url);
+ list_item.append(link);
+ title_element = $('<span class="title"></span>');
+ title_element.html(title);
+ link.append(title)
+ container.append(list_item);
+ });
+ container.show();//show just to measure
+ var unit_height = container.children(':first').outerHeight();
+ container.hide();//now hide
+ if (data.length > 5){
+ container.css('overflow-y', 'scroll');
+ container.css('height', unit_height*5 + 'px');
+ } else {
+ container.css('height', data.length*unit_height + 'px');
+ container.css('overflow-y', 'hidden');
+ }
+ container.fadeIn();
+ });
+ };
+
+ var send_query = function(query_text){
+ prev_text = query_text;
+ running = true;
+ $.ajax({
+ url: search_url,
+ dataType: 'json',
+ success: render_result,
+ complete: function() {
+ running = false;
+ eval_query();
+ },
+ data: {query: query_text},
+ cache: false
+ });
+ }
+
+};
diff --git a/askbot/skins/common/media/js/modernizr.custom.js b/askbot/skins/common/media/js/modernizr.custom.js
new file mode 100644
index 00000000..cf1d0196
--- /dev/null
+++ b/askbot/skins/common/media/js/modernizr.custom.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.0.6 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-history-iepp-cssclasses-load
+ */
+;window.Modernizr=function(a,b,c){function x(a,b){return!!~(""+a).indexOf(b)}function w(a,b){return typeof a===b}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function u(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n={},o={},p={},q=[],r,s={}.hasOwnProperty,t;!w(s,c)&&!w(s.call,c)?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],c)},n.history=function(){return!!a.history&&!!history.pushState};for(var y in n)t(n,y)&&(r=y.toLowerCase(),e[r]=n[y](),q.push((e[r]?"":"no-")+r));u(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+q.join(" "):"");return e}(this,this.document),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
diff --git a/askbot/skins/common/media/js/post.js b/askbot/skins/common/media/js/post.js
index 22e2b6c4..58f2436d 100644
--- a/askbot/skins/common/media/js/post.js
+++ b/askbot/skins/common/media/js/post.js
@@ -39,7 +39,7 @@ function removeLoader() {
}
function setSubmitButtonDisabled(form, isDisabled) {
- form.find("input[type='submit']").attr("disabled", isDisabled ? "true" : "");
+ form.find('input[type="submit"]').attr("disabled", isDisabled);
}
function enableSubmitButton(form) {
@@ -65,7 +65,7 @@ function setupFormValidation(form, validationRules, validationMessages, onSubmit
if (span.length === 0){
//for resizable textarea
var element_id = element.attr('id');
- span = $("label[for='" + element_id + "']");
+ span = $('label[for="' + element_id + '"]');
}
}
span.replaceWith(error);
@@ -106,23 +106,20 @@ var CPValidator = function(){
getQuestionFormRules : function(){
return {
tags: {
- required: true,
+ required: askbot['settings']['tagsAreRequired'],
maxlength: 105,
limit_tag_count: true,
limit_tag_length: true
},
text: {
- required: true,
- minlength: 10
+ minlength: askbot['settings']['minQuestionBodyLength']
+ },
+ title: {
+ minlength: askbot['settings']['minTitleLength']
}
- /*title: {
- required: true,
- minlength: 10
- }*/
};
},
getQuestionFormMessages: function(){
- var chars = 10
return {
tags: {
required: " " + gettext('tags cannot be empty'),
@@ -132,13 +129,49 @@ var CPValidator = function(){
},
text: {
required: " " + gettext('content cannot be empty'),
- minlength: interpolate(gettext('%s content minchars'), [chars])
+ minlength: interpolate(
+ ngettext(
+ 'question body must be > %s character',
+ 'question body must be > %s characters',
+ askbot['settings']['minQuestionBodyLength']
+ ),
+ [askbot['settings']['minQuestionBodyLength'], ]
+ )
},
title: {
required: " " + gettext('please enter title'),
- minlength: interpolate(gettext('%s title minchars'), [chars])
+ minlength: interpolate(
+ ngettext(
+ 'title must be > %s character',
+ 'title must be > %s characters',
+ askbot['settings']['minTitleLength']
+ ),
+ [askbot['settings']['minTitleLength'], ]
+ )
}
};
+ },
+ getAnswerFormRules : function(){
+ return {
+ text: {
+ minlength: askbot['settings']['minAnswerBodyLength']
+ },
+ };
+ },
+ getAnswerFormMessages: function(){
+ return {
+ text: {
+ required: " " + gettext('content cannot be empty'),
+ minlength: interpolate(
+ ngettext(
+ 'answer must be > %s character',
+ 'answer must be > %s characters',
+ askbot['settings']['minAnswerBodyLength']
+ ),
+ [askbot['settings']['minAnswerBodyLength'], ]
+ )
+ },
+ }
}
};
}();
@@ -258,7 +291,7 @@ var Vote = function(){
var postId;
var questionAuthorId;
var currentUserId;
- var answerContainerIdPrefix = 'answer-container-';
+ var answerContainerIdPrefix = 'post-id-';
var voteContainerId = 'vote-buttons';
var imgIdPrefixAccept = 'answer-img-accept-';
var classPrefixFollow= 'button follow';
@@ -278,7 +311,6 @@ var Vote = function(){
var removeAllOffensiveIdPrefixAnswerFlag = 'answer-offensive-remove-all-flag-';
var offensiveClassFlag = 'offensive-flag';
var questionControlsId = 'question-controls';
- var removeQuestionLinkIdPrefix = 'question-delete-link-';
var removeAnswerLinkIdPrefix = 'answer-delete-link-';
var questionSubscribeUpdates = 'question-subscribe-updates';
var questionSubscribeSidebar= 'question-subscribe-sidebar';
@@ -316,15 +348,15 @@ var Vote = function(){
offensiveAnswer:8,
removeOffensiveAnswer:8.5,
removeAllOffensiveAnswer:8.6,
- removeQuestion: 9,
- removeAnswer:10,
+ removeQuestion: 9,//deprecate
+ removeAnswer:10,//deprecate
questionSubscribeUpdates:11,
questionUnsubscribeUpdates:12
};
var getFavoriteButton = function(){
- var favoriteButton = 'div.'+ voteContainerId +' a[class='+ classPrefixFollow +']';
- favoriteButton += ', div.'+ voteContainerId +' a[class='+ classPrefixFollowed +']';
+ var favoriteButton = 'div.'+ voteContainerId +' a[class="'+ classPrefixFollow +'"]';
+ favoriteButton += ', div.'+ voteContainerId +' a[class="'+ classPrefixFollowed +'"]';
return $(favoriteButton);
};
var getFavoriteNumber = function(){
@@ -332,27 +364,27 @@ var Vote = function(){
return $(favoriteNumber);
};
var getQuestionVoteUpButton = function(){
- var questionVoteUpButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixQuestionVoteup +']';
+ var questionVoteUpButton = 'div.'+ voteContainerId +' div[id^="'+ imgIdPrefixQuestionVoteup +'"]';
return $(questionVoteUpButton);
};
var getQuestionVoteDownButton = function(){
- var questionVoteDownButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixQuestionVotedown +']';
+ var questionVoteDownButton = 'div.'+ voteContainerId +' div[id^="'+ imgIdPrefixQuestionVotedown +'"]';
return $(questionVoteDownButton);
};
var getAnswerVoteUpButtons = function(){
- var answerVoteUpButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixAnswerVoteup +']';
+ var answerVoteUpButton = 'div.'+ voteContainerId +' div[id^="'+ imgIdPrefixAnswerVoteup +'"]';
return $(answerVoteUpButton);
};
var getAnswerVoteDownButtons = function(){
- var answerVoteDownButton = 'div.'+ voteContainerId +' div[id^='+ imgIdPrefixAnswerVotedown +']';
+ var answerVoteDownButton = 'div.'+ voteContainerId +' div[id^="'+ imgIdPrefixAnswerVotedown +'"]';
return $(answerVoteDownButton);
};
var getAnswerVoteUpButton = function(id){
- var answerVoteUpButton = 'div.'+ voteContainerId +' div[id='+ imgIdPrefixAnswerVoteup + id + ']';
+ var answerVoteUpButton = 'div.'+ voteContainerId +' div[id="'+ imgIdPrefixAnswerVoteup + id + '"]';
return $(answerVoteUpButton);
};
var getAnswerVoteDownButton = function(id){
- var answerVoteDownButton = 'div.'+ voteContainerId +' div[id='+ imgIdPrefixAnswerVotedown + id + ']';
+ var answerVoteDownButton = 'div.'+ voteContainerId +' div[id="'+ imgIdPrefixAnswerVotedown + id + '"]';
return $(answerVoteDownButton);
};
@@ -386,11 +418,6 @@ var Vote = function(){
return $(removeAllOffensiveAnswerFlag);
};
- var getremoveQuestionLink = function(){
- var removeQuestionLink = 'div#question-controls a[id^='+ removeQuestionLinkIdPrefix +']';
- return $(removeQuestionLink);
- };
-
var getquestionSubscribeUpdatesCheckbox = function(){
return $('#' + questionSubscribeUpdates);
};
@@ -400,7 +427,7 @@ var Vote = function(){
};
var getremoveAnswersLinks = function(){
- var removeAnswerLinks = 'div.answer-controls a[id^='+ removeAnswerLinkIdPrefix +']';
+ var removeAnswerLinks = 'div.answer-controls a[id^="'+ removeAnswerLinkIdPrefix +'"]';
return $(removeAnswerLinks);
};
@@ -431,7 +458,7 @@ var Vote = function(){
var bindEvents = function(){
// accept answers
- var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']';
+ var acceptedButtons = 'div.'+ voteContainerId +' div[id^="'+ imgIdPrefixAccept +'"]';
$(acceptedButtons).unbind('click').click(function(event){
Vote.accept($(event.target));
});
@@ -487,10 +514,6 @@ var Vote = function(){
Vote.remove_all_offensive(this, VoteType.removeAllOffensiveAnswer);
});
- getremoveQuestionLink().unbind('click').click(function(event){
- Vote.remove(this, VoteType.removeQuestion);
- });
-
getquestionSubscribeUpdatesCheckbox().unbind('click').click(function(event){
//despeluchar esto
if (this.checked){
@@ -545,19 +568,15 @@ var Vote = function(){
showMessage(object, acceptOwnAnswerMessage);
}
else if(data.status == "1"){
- object.attr("src", mediaUrl("media/images/vote-accepted.png"));
$("#"+answerContainerIdPrefix+postId).removeClass("accepted-answer");
$("#"+commentLinkIdPrefix+postId).removeClass("comment-link-accepted");
}
else if(data.success == "1"){
- var acceptedButtons = 'div.'+ voteContainerId +' img[id^='+ imgIdPrefixAccept +']';
- $(acceptedButtons).attr("src", mediaUrl("media/images/vote-accepted.png"));
- var answers = ("div[id^="+answerContainerIdPrefix +"]");
+ var answers = ('div[id^="'+answerContainerIdPrefix +"']");
$(answers).removeClass("accepted-answer");
- var commentLinks = ("div[id^="+answerContainerIdPrefix +"] div[id^="+ commentLinkIdPrefix +"]");
+ var commentLinks = ('div[id^="'+answerContainerIdPrefix +'"] div[id^="'+ commentLinkIdPrefix +'"]');
$(commentLinks).removeClass("comment-link-accepted");
- object.attr("src", mediaUrl("media/images/vote-accepted-on.png"));
$("#"+answerContainerIdPrefix+postId).addClass("accepted-answer");
$("#"+commentLinkIdPrefix+postId).addClass("comment-link-accepted");
}
@@ -644,9 +663,9 @@ var Vote = function(){
//_('anonymous users cannot flag offensive posts') + pleaseLogin;
if (data.success == "1"){
if(data.count > 0)
- $(object).children('span[class=darkred]').text("("+ data.count +")");
+ $(object).children('span[class="darkred"]').text("("+ data.count +")");
else
- $(object).children('span[class=darkred]').text("");
+ $(object).children('span[class="darkred"]').text("");
// Change the link text and rebind events
$(object).find("a.question-flag").html(gettext("remove flag"));
@@ -673,12 +692,12 @@ var Vote = function(){
//_('anonymous users cannot flag offensive posts') + pleaseLogin;
if (data.success == "1"){
if(data.count > 0){
- $(object).children('span[class=darkred]').text("("+ data.count +")");
+ $(object).children('span[class="darkred"]').text("("+ data.count +")");
}
else{
- $(object).children('span[class=darkred]').text("");
+ $(object).children('span[class="darkred"]').text("");
// Remove "remove all flags link" since there are no more flags to remove
- var remove_all = $(object).siblings("span.offensive-flag[id*=-offensive-remove-all-flag-]");
+ var remove_all = $(object).siblings('span.offensive-flag[id*="-offensive-remove-all-flag-"]');
$(remove_all).next("span.sep").remove();
$(remove_all).remove();
}
@@ -707,11 +726,11 @@ var Vote = function(){
//_('anonymous users cannot flag offensive posts') + pleaseLogin;
if (data.success == "1"){
if(data.count > 0)
- $(object).children('span[class=darkred]').text("("+ data.count +")");
+ $(object).children('span[class="darkred"]').text("("+ data.count +")");
else
- $(object).children('span[class=darkred]').text("");
+ $(object).children('span[class="darkred"]').text("");
// remove the link. All flags are gone
- var remove_own = $(object).siblings("span.offensive-flag[id*=-offensive-remove-flag-]")
+ var remove_own = $(object).siblings('span.offensive-flag[id*="-offensive-remove-flag-"]');
$(remove_own).find("a.question-flag").html(gettext("flag offensive"));
$(remove_own).attr("id", $(remove_own).attr("id").replace("remove-flag-", "flag-"));
@@ -894,7 +913,7 @@ var Vote = function(){
var do_proceed = false;
if (postType == 'answer'){
- postNode = $('#answer-container-' + postId);
+ postNode = $('#post-id-' + postId);
}
else if (postType == 'question'){
postNode = $('#question-table');
@@ -942,6 +961,10 @@ var questionRetagger = function(){
};
var drawNewTags = function(new_tags){
+ if (new_tags === ''){
+ tagsDiv.html('');
+ return;
+ }
new_tags = new_tags.split(/\s+/);
var tags_html = ''
$.each(new_tags, function(index, name){
@@ -1013,7 +1036,7 @@ var questionRetagger = function(){
div.validate({//copy-paste from utils.js
rules: {
tags: {
- required: true,
+ required: askbot['settings']['tagsAreRequired'],
maxlength: askbot['settings']['maxTagsPerPost'] * askbot['settings']['maxTagLength'],
limit_tag_count: true,
limit_tag_length: true
@@ -1039,10 +1062,11 @@ var questionRetagger = function(){
var tags_str = '';
links.each(function(index, element){
if (index === 0){
- tags_str = $(element).html();
+ //this is pretty bad - we should use Tag.getName()
+ tags_str = $(element).attr('data-tag-name');
}
else {
- tags_str += ' ' + $(element).html();
+ tags_str += ' ' + $(element).attr('data-tag-name');
}
});
return tags_str;
@@ -1093,6 +1117,73 @@ var questionRetagger = function(){
};
}();
+var DeletePostLink = function(){
+ SimpleControl.call(this);
+ this._post_id = null;
+};
+inherits(DeletePostLink, SimpleControl);
+
+DeletePostLink.prototype.setPostId = function(id){
+ this._post_id = id;
+};
+
+DeletePostLink.prototype.getPostId = function(){
+ return this._post_id;
+};
+
+DeletePostLink.prototype.getPostElement = function(){
+ return $('#post-id-' + this.getPostId());
+};
+
+DeletePostLink.prototype.isPostDeleted = function(){
+ return this._post_deleted;
+};
+
+DeletePostLink.prototype.setPostDeleted = function(is_deleted){
+ var post = this.getPostElement();
+ if (is_deleted === true){
+ post.addClass('deleted');
+ this._post_deleted = true;
+ this.getElement().html(gettext('undelete'));
+ } else if (is_deleted === false){
+ post.removeClass('deleted');
+ this._post_deleted = false;
+ this.getElement().html(gettext('delete'));
+ }
+};
+
+DeletePostLink.prototype.getDeleteHandler = function(){
+ var me = this;
+ var post_id = this.getPostId();
+ return function(){
+ var data = {
+ 'post_id': me.getPostId(),
+ //todo rename cancel_vote -> undo
+ 'cancel_vote': me.isPostDeleted() ? true: false
+ };
+ $.ajax({
+ type: 'POST',
+ data: data,
+ dataType: 'json',
+ url: askbot['urls']['delete_post'],
+ cache: false,
+ success: function(data){
+ if (data['success'] == true){
+ me.setPostDeleted(data['is_deleted']);
+ } else {
+ showMessage(me.getElement(), data['message']);
+ }
+ }
+ });
+ };
+};
+
+DeletePostLink.prototype.decorate = function(element){
+ this._element = element;
+ this._post_deleted = this.getPostElement().hasClass('deleted');
+ this.setHandler(this.getDeleteHandler());
+}
+
//constructor for the form
var EditCommentForm = function(){
WrappedElement.call(this);
@@ -1125,6 +1216,7 @@ EditCommentForm.prototype.attachTo = function(comment, mode){
this._submit_btn.html(gettext('save comment'));
}
this.getElement().show();
+ this.enableButtons();
this.focus();
putCursorAtEnd(this._textarea);
};
@@ -1252,13 +1344,13 @@ EditCommentForm.prototype.createDom = function(){
};
EditCommentForm.prototype.enableButtons = function(){
- this._submit_btn.attr('disabled', '');
- this._cancel_btn.attr('disabled', '');
+ this._submit_btn.attr('disabled', false);
+ this._cancel_btn.attr('disabled', false);
};
EditCommentForm.prototype.disableButtons = function(){
- this._submit_btn.attr('disabled', 'disabled');
- this._cancel_btn.attr('disabled', 'disabled');
+ this._submit_btn.attr('disabled', true);
+ this._cancel_btn.attr('disabled', true);
};
EditCommentForm.prototype.reset = function(){
@@ -1452,9 +1544,11 @@ Comment.prototype.setContent = function(data){
this._comment_body.append(this._user_link);
this._comment_body.append(' (');
- this._comment_age = $('<span class="age"></span>');
- this._comment_age.html(this._data['comment_age']);
- this._comment_body.append(this._comment_age);
+ this._comment_added_at = $('<abbr class="timeago"></abbr>');
+ this._comment_added_at.html(this._data['comment_added_at']);
+ this._comment_added_at.attr('title', this._data['comment_added_at']);
+ this._comment_added_at.timeago();
+ this._comment_body.append(this._comment_added_at);
this._comment_body.append(')');
if (this._editable){
@@ -1477,8 +1571,8 @@ Comment.prototype.dispose = function(){
if (this._user_link){
this._user_link.remove();
}
- if (this._comment_age){
- this._comment_age.remove();
+ if (this._comment_added_at){
+ this._comment_added_at.remove();
}
if (this._delete_icon){
this._delete_icon.dispose();
@@ -1605,7 +1699,7 @@ PostCommentsWidget.prototype.decorate = function(element){
this._cbox = element.find('.content');
var comments = new Array();
var me = this;
- this._cbox.children().each(function(index, element){
+ this._cbox.children('.comment').each(function(index, element){
var comment = new Comment(me);
comments.push(comment)
comment.decorate(element);
@@ -1717,7 +1811,7 @@ var socialSharing = function(){
params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1"
},
linkedin: {
- url: "http://www.linkedin.com/shareArticle?mini=true&amp;url={URL}&amp;source={TEXT}",
+ url: "http://www.linkedin.com/shareArticle?mini=true&url={URL}&title={TEXT}",
params: "width=630,height=436,toolbar=1,status=1,resizable=1,scrollbars=1"
}
};
@@ -1816,6 +1910,486 @@ QASwapper.prototype.startSwapping = function(){
}
};
+/**
+ * @constructor
+ */
+var WMD = function(){
+ WrappedElement.call(this);
+ this._markdown = undefined;
+ this._enabled_buttons = 'bold italic link blockquote code ' +
+ 'image attachment ol ul heading hr';
+ this._is_previewer_enabled = true;
+};
+inherits(WMD, WrappedElement);
+
+WMD.prototype.setEnabledButtons = function(buttons){
+ this._enabled_buttons = buttons;
+};
+
+WMD.prototype.setPreviewerEnabled = function(state){
+ this._is_previewer_enabled = state;
+ if (this._previewer){
+ this._previewer.hide();
+ }
+};
+
+WMD.prototype.setEscapeHandler = function(handler){
+ this._escape_handler = handler;
+};
+
+WMD.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ var clearfix = this.makeElement('div').addClass('clearfix');
+ this._element.append(clearfix);
+
+ var wmd_container = this.makeElement('div');
+ wmd_container.addClass('wmd-container');
+ this._element.append(wmd_container);
+
+ var wmd_buttons = this.makeElement('div')
+ .attr('id', 'wmd-button-bar')
+ .addClass('wmd-panel');
+ wmd_container.append(wmd_buttons);
+
+ var editor = this.makeElement('textarea')
+ .attr('id', 'editor');
+ wmd_container.append(editor);
+ this._textarea = editor;
+
+ if (this._markdown){
+ editor.val(this._markdown);
+ }
+
+ var previewer = this.makeElement('div')
+ .attr('id', 'previewer')
+ .addClass('wmd-preview');
+ wmd_container.append(previewer);
+ this._previewer = previewer;
+ if (this._is_previewer_enabled === false) {
+ previewer.hide();
+ }
+};
+
+WMD.prototype.setMarkdown = function(text){
+ this._markdown = text;
+ if (this._textarea){
+ this._textarea.val(text);
+ }
+};
+
+WMD.prototype.getMarkdown = function(){
+ return this._textarea.val();
+};
+
+WMD.prototype.start = function(){
+ Attacklab.Util.startEditor(true, this._enabled_buttons);
+ this._textarea.keyup(makeKeyHandler(27, this._escape_handler));
+};
+
+/**
+ * @constructor
+ */
+var TagWikiEditor = function(){
+ WrappedElement.call(this);
+ this._state = 'display';//'edit' or 'display'
+ this._content_backup = '';
+ this._is_editor_loaded = false;
+ this._enabled_editor_buttons = null;
+ this._is_previewer_enabled = false;
+};
+inherits(TagWikiEditor, WrappedElement);
+
+TagWikiEditor.prototype.backupContent = function(){
+ this._content_backup = this._content_box.contents();
+};
+
+TagWikiEditor.prototype.setEnabledEditorButtons = function(buttons){
+ this._enabled_editor_buttons = buttons;
+};
+
+TagWikiEditor.prototype.setPreviewerEnabled = function(state){
+ this._is_previewer_enabled = state;
+ if (this.isEditorLoaded()){
+ this._editor.setPreviewerEnabled(this._is_previewer_enabled);
+ }
+};
+
+TagWikiEditor.prototype.setContent = function(content){
+ this._content_box.empty();
+ this._content_box.append(content);
+};
+
+TagWikiEditor.prototype.setState = function(state){
+ if (state === 'edit'){
+ this._state = state;
+ this._edit_btn.hide();
+ this._cancel_btn.show();
+ this._save_btn.show();
+ this._cancel_sep.show();
+ } else if (state === 'display'){
+ this._state = state;
+ this._edit_btn.show();
+ this._cancel_btn.hide();
+ this._cancel_sep.hide();
+ this._save_btn.hide();
+ }
+};
+
+TagWikiEditor.prototype.restoreContent = function(){
+ var content_box = this._content_box;
+ content_box.empty();
+ $.each(this._content_backup, function(idx, element){
+ content_box.append(element);
+ });
+};
+
+TagWikiEditor.prototype.getTagId = function(){
+ return this._tag_id;
+};
+
+TagWikiEditor.prototype.isEditorLoaded = function(){
+ return this._is_editor_loaded;
+};
+
+TagWikiEditor.prototype.setEditorLoaded = function(){
+ return this._is_editor_loaded = true;
+};
+
+/**
+ * loads initial data for the editor input and activates
+ * the editor
+ */
+TagWikiEditor.prototype.startActivatingEditor = function(){
+ var editor = this._editor;
+ var me = this;
+ $.ajax({
+ type: 'GET',
+ url: askbot['urls']['load_tag_wiki_text'],
+ data: {tag_id: me.getTagId()},
+ cache: false,
+ success: function(data){
+ me.backupContent();
+ editor.setMarkdown(data);
+ me.setContent(editor.getElement());
+ me.setState('edit');
+ if (me.isEditorLoaded() === false){
+ editor.start();
+ me.setEditorLoaded();
+ }
+ }
+ });
+};
+
+TagWikiEditor.prototype.saveData = function(){
+ var me = this;
+ var text = this._editor.getMarkdown();
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ url: askbot['urls']['save_tag_wiki_text'],
+ data: {tag_id: me.getTagId(), text: text},
+ cache: false,
+ success: function(data){
+ if (data['success']){
+ me.setState('display');
+ me.setContent(data['html']);
+ } else {
+ showMessage(me.getElement(), data['message']);
+ }
+ }
+ });
+};
+
+TagWikiEditor.prototype.cancelEdit = function(){
+ this.restoreContent();
+ this.setState('display');
+};
+
+TagWikiEditor.prototype.decorate = function(element){
+ //expect <div id='group-wiki-{{id}}'><div class="content"/><a class="edit"/></div>
+ this._element = element;
+ var edit_btn = element.find('.edit-description');
+ this._edit_btn = edit_btn;
+
+ //adding two buttons...
+ var save_btn = this.makeElement('a');
+ save_btn.html(gettext('save'));
+ edit_btn.after(save_btn);
+ save_btn.hide();
+ this._save_btn = save_btn;
+
+ var cancel_btn = this.makeElement('a');
+ cancel_btn.html(gettext('cancel'));
+ save_btn.after(cancel_btn);
+ cancel_btn.hide();
+ this._cancel_btn = cancel_btn;
+
+ this._cancel_sep = $('<span> | </span>');
+ cancel_btn.before(this._cancel_sep);
+ this._cancel_sep.hide();
+
+ this._content_box = element.find('.content');
+ this._tag_id = element.attr('id').split('-').pop();
+
+ var me = this;
+ var editor = new WMD();
+ if (this._enabled_editor_buttons){
+ editor.setEnabledButtons(this._enabled_editor_buttons);
+ }
+ editor.setPreviewerEnabled(this._is_previewer_enabled);
+ editor.setEscapeHandler(function(){me.cancelEdit()});
+ this._editor = editor;
+ setupButtonEventHandlers(edit_btn, function(){ me.startActivatingEditor() });
+ setupButtonEventHandlers(cancel_btn, function(){me.cancelEdit()});
+ setupButtonEventHandlers(save_btn, function(){me.saveData()});
+};
+
+var ImageChanger = function(){
+ WrappedElement.call(this);
+ this._image_element = undefined;
+ this._delete_button = undefined;
+ this._save_url = undefined;
+ this._delete_url = undefined;
+ this._messages = undefined;
+};
+inherits(ImageChanger, WrappedElement);
+
+ImageChanger.prototype.setImageElement = function(image_element){
+ this._image_element = image_element;
+};
+
+ImageChanger.prototype.setMessages = function(messages){
+ this._messages = messages;
+};
+
+ImageChanger.prototype.setDeleteButton = function(delete_button){
+ this._delete_button = delete_button;
+};
+
+ImageChanger.prototype.setSaveUrl = function(url){
+ this._save_url = url;
+};
+
+ImageChanger.prototype.setDeleteUrl = function(url){
+ this._delete_url = url;
+};
+
+ImageChanger.prototype.setAjaxData = function(data){
+ this._ajax_data = data;
+};
+
+ImageChanger.prototype.showImage = function(image_url){
+ this._image_element.attr('src', image_url);
+ this._image_element.show();
+};
+
+ImageChanger.prototype.deleteImage = function(){
+ this._image_element.attr('src', '');
+ this._image_element.css('display', 'none');
+
+ var me = this;
+ var delete_url = this._delete_url;
+ var data = this._ajax_data;
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ url: delete_url,
+ data: data,
+ cache: false,
+ success: function(data){
+ if (data['success'] === true){
+ showMessage(me.getElement(), data['message'], 'after');
+ }
+ }
+ });
+};
+
+ImageChanger.prototype.saveImageUrl = function(image_url){
+ var me = this;
+ var data = this._ajax_data;
+ data['image_url'] = image_url;
+ var save_url = this._save_url;
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ url: save_url,
+ data: data,
+ cache: false,
+ success: function(data){
+ if (!data['success']){
+ showMessage(me.getElement(), data['message'], 'after');
+ }
+ }
+ });
+};
+
+ImageChanger.prototype.startDialog = function(){
+ //reusing the wmd's file uploader
+ var me = this;
+ var change_image_text = this._messages['change_image'];
+ var change_image_button = this._element;
+ Attacklab.Util.prompt(
+ "<h3>" + gettext('Enter the logo url or upload an image') + '</h3>',
+ 'http://',
+ function(image_url){
+ if (image_url){
+ me.saveImageUrl(image_url);
+ me.showImage(image_url);
+ change_image_button.html(change_image_text);
+ me.showDeleteButton();
+ }
+ },
+ 'image'
+ );
+};
+
+ImageChanger.prototype.showDeleteButton = function(){
+ this._delete_button.show();
+ this._delete_button.prev().show();
+};
+
+ImageChanger.prototype.hideDeleteButton = function(){
+ this._delete_button.hide();
+ this._delete_button.prev().hide();
+};
+
+
+ImageChanger.prototype.startDeleting = function(){
+ if (confirm(gettext('Do you really want to remove the image?'))){
+ this.deleteImage();
+ this._element.html(this._messages['add_image']);
+ this.hideDeleteButton();
+ this._delete_button.hide();
+ var sep = this._delete_button.prev();
+ sep.hide();
+ };
+};
+
+/**
+ * decorates an element that will serve as the image changer button
+ */
+ImageChanger.prototype.decorate = function(element){
+ this._element = element;
+ var me = this;
+ setupButtonEventHandlers(
+ element,
+ function(){
+ me.startDialog();
+ }
+ );
+ setupButtonEventHandlers(
+ this._delete_button,
+ function(){
+ me.startDeleting();
+ }
+ )
+};
+
+var UserGroupProfileEditor = function(){
+ TagWikiEditor.call(this);
+};
+inherits(UserGroupProfileEditor, TagWikiEditor);
+
+UserGroupProfileEditor.prototype.toggleEmailModeration = function(){
+ var btn = this._moderate_email_btn;
+ var group_id = this.getTagId();
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ data: {group_id: group_id},
+ url: askbot['urls']['toggle_group_email_moderation'],
+ success: function(data){
+ if (data['success']){
+ btn.html(data['new_button_text']);
+ } else {
+ showMessage(btn, data['message']);
+ }
+ }
+ });
+};
+
+UserGroupProfileEditor.prototype.decorate = function(element){
+ this.setEnabledEditorButtons('bold italic link ol ul');
+ this.setPreviewerEnabled(false);
+ UserGroupProfileEditor.superClass_.decorate.call(this, element);
+ var change_logo_btn = element.find('.change-logo');
+ this._change_logo_btn = change_logo_btn;
+
+ var moderate_email_toggle = new TwoStateToggle();
+ moderate_email_toggle.setPostData({
+ group_id: this.getTagId(),
+ property_name: 'moderate_email'
+ });
+ var moderate_email_btn = element.find('#moderate-email');
+ this._moderate_email_btn = moderate_email_btn;
+ moderate_email_toggle.decorate(moderate_email_btn);
+
+ var open_group_toggle = new TwoStateToggle();
+ open_group_toggle.setPostData({
+ group_id: this.getTagId(),
+ property_name: 'is_open'
+ });
+ var open_group_btn = element.find('#open-or-close-group');
+ open_group_toggle.decorate(open_group_btn);
+
+ var email_editor = new TextPropertyEditor();
+ email_editor.decorate(element.find('#preapproved-emails'));
+
+ var domain_editor = new TextPropertyEditor();
+ domain_editor.decorate(element.find('#preapproved-email-domains'));
+
+ var logo_changer = new ImageChanger();
+ logo_changer.setImageElement(element.find('.group-logo'));
+ logo_changer.setAjaxData({
+ group_id: this.getTagId()
+ });
+ logo_changer.setSaveUrl(askbot['urls']['save_group_logo_url']);
+ logo_changer.setDeleteUrl(askbot['urls']['delete_group_logo_url']);
+ logo_changer.setMessages({
+ change_image: gettext('change logo'),
+ add_image: gettext('add logo')
+ });
+ var delete_logo_btn = element.find('.delete-logo');
+ logo_changer.setDeleteButton(delete_logo_btn);
+ logo_changer.decorate(change_logo_btn);
+};
+
+var GroupJoinButton = function(){
+ TwoStateToggle.call(this);
+};
+inherits(GroupJoinButton, TwoStateToggle);
+
+GroupJoinButton.prototype.getPostData = function(){
+ return { group_id: this._group_id };
+};
+
+GroupJoinButton.prototype.getHandler = function(){
+ var me = this;
+ return function(){
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ data: me.getPostData(),
+ url: askbot['urls']['join_or_leave_group'],
+ success: function(data){
+ if (data['success']){
+ var new_state = data['is_member'] ? 'on-state':'off-state';
+ me.setState(new_state);
+ } else {
+ showMessage(me.getElement(), data['message']);
+ }
+ }
+ });
+ };
+};
+
+GroupJoinButton.prototype.decorate = function(elem) {
+ GroupJoinButton.superClass_.decorate.call(this, elem);
+ this._group_id = this._element.data('groupId');
+};
+
$(document).ready(function() {
$('[id^="comments-for-"]').each(function(index, element){
var comments = new PostCommentsWidget();
@@ -1825,6 +2399,13 @@ $(document).ready(function() {
var swapper = new QASwapper();
swapper.decorate($(element));
});
+ $('[id^="post-id-"]').each(function(idx, element){
+ var deleter = new DeletePostLink();
+ //confusingly .question-delete matches the answers too need rename
+ var post_id = element.id.split('-').pop();
+ deleter.setPostId(post_id);
+ deleter.decorate($(element).find('.question-delete'));
+ });
questionRetagger.init();
socialSharing.init();
});
diff --git a/askbot/skins/common/media/js/tag_selector.js b/askbot/skins/common/media/js/tag_selector.js
index 659c157b..be79a9b6 100644
--- a/askbot/skins/common/media/js/tag_selector.js
+++ b/askbot/skins/common/media/js/tag_selector.js
@@ -1,4 +1,3 @@
-
var TagDetailBox = function(box_type){
WrappedElement.call(this);
this.box_type = box_type;
@@ -73,6 +72,7 @@ TagDetailBox.prototype.renderFor = function(wildcard){
$.each(me._tag_names, function(idx, name){
var tag = new Tag();
tag.setName(name);
+ tag.setUrlParams(name)
//tag.setLinkable(false);
me._tags.push(tag);
me._tag_list_element.append(tag.getElement());
@@ -101,17 +101,20 @@ function pickedTags(){
var interestingTags = {};
var ignoredTags = {};
+ var subscribedTags = {};
var interestingTagDetailBox = new TagDetailBox('interesting');
var ignoredTagDetailBox = new TagDetailBox('ignored');
+ var subscribedTagDetailBox = new TagDetailBox('subscribed');
var sendAjax = function(tagnames, reason, action, callback){
var url = '';
- if (action == 'add'){
- if (reason == 'good'){
+ if (action == 'add') {
+ if (reason == 'good') {
url = askbot['urls']['mark_interesting_tag'];
- }
- else {
+ } else if (reason == 'bad') {
url = askbot['urls']['mark_ignored_tag'];
+ } else {
+ url = askbot['urls']['mark_subscribed_tag'];
}
}
else {
@@ -143,7 +146,7 @@ function pickedTags(){
'remove',
function(){
deleteTagLocally();
- liveSearch().refresh();
+ liveSearch.refresh();
}
);
}
@@ -154,19 +157,23 @@ function pickedTags(){
var getTagList = function(reason){
var base_selector = '.marked-tags';
- if (reason === 'good'){
+ if (reason === 'good') {
var extra_selector = '.interesting';
- } else {
+ } else if (reason === 'bad') {
var extra_selector = '.ignored';
+ } else if (reason === 'subscribed') {
+ var extra_selector = '.subscribed';
}
return $(base_selector + extra_selector);
};
var getWildcardTagDetailBox = function(reason){
- if (reason === 'good'){
+ if (reason === 'good') {
return interestingTagDetailBox;
- } else {
+ } else if (reason === 'bad') {
return ignoredTagDetailBox;
+ } else if (reason === 'subscribed') {
+ return subscribedTagDetailBox;
}
};
@@ -230,27 +237,31 @@ function pickedTags(){
var to_target = interestingTags;
var from_target = ignoredTags;
var to_tag_container;
- if (reason == 'bad'){
+ if (reason === 'bad') {
var input_sel = '#ignoredTagInput';
to_target = ignoredTags;
from_target = interestingTags;
to_tag_container = $('div .tags.ignored');
- }
- else if (reason == 'good'){
+ } else if (reason === 'good') {
var input_sel = '#interestingTagInput';
to_tag_container = $('div .tags.interesting');
- }
- else {
+ } else if (reason === 'subscribed') {
+ var input_sel = '#subscribedTagInput';
+ to_target = subscribedTags;
+ to_tag_container = $('div .tags.subscribed');
+ } else {
return;
}
var tagnames = getUniqueWords($(input_sel).attr('value'));
- $.each(tagnames, function(idx, tagname){
- if (tagname in from_target){
- unpickTag(from_target,tagname,reason,false);
- }
- });
+ if (reason !== 'subscribed') {//for "subscribed" we do not remove
+ $.each(tagnames, function(idx, tagname) {
+ if (tagname in from_target) {
+ unpickTag(from_target, tagname, reason, false);
+ }
+ });
+ }
var clean_tagnames = [];
$.each(tagnames, function(idx, tagname){
@@ -274,22 +285,23 @@ function pickedTags(){
to_tag_container
);
$(input_sel).val('');
- liveSearch().refresh();
+ liveSearch.refresh();
}
);
}
};
var collectPickedTags = function(section){
- if (section === 'interesting'){
+ if (section === 'interesting') {
var reason = 'good';
var tag_store = interestingTags;
- }
- else if (section === 'ignored'){
+ } else if (section === 'ignored') {
var reason = 'bad';
var tag_store = ignoredTags;
- }
- else {
+ } else if (section === 'subscribed') {
+ var reason = 'subscribed';
+ var tag_store = subscribedTags;
+ } else {
return;
}
$('.' + section + '.tags.marked-tags .tag-left').each(
@@ -328,7 +340,7 @@ function pickedTags(){
filter_value: $(this).val()
},
success: function(){
- liveSearch().refresh();
+ liveSearch.refresh();
}
});
});
@@ -344,7 +356,9 @@ function pickedTags(){
init: function(){
collectPickedTags('interesting');
collectPickedTags('ignored');
+ collectPickedTags('subscribed');
setupTagFilterControl('display');
+ setupTagFilterControl('email');
var ac = new AutoCompleter({
url: askbot['urls']['get_tag_list'],
preloadData: true,
@@ -364,8 +378,13 @@ function pickedTags(){
ignoredTagAc.decorate($('#ignoredTagInput'));
ignoredTagAc.setOption('onItemSelect', getResultCallback('bad'));
+ var subscribedTagAc = $.extend(true, {}, ac);
+ subscribedTagAc.decorate($('#subscribedTagInput'));
+ subscribedTagAc.setOption('onItemSelect', getResultCallback('subscribed'));
+
$("#interestingTagAdd").click(getResultCallback('good'));
$("#ignoredTagAdd").click(getResultCallback('bad'));
+ $("#subscribedTagAdd").click(getResultCallback('subscribed'));
}
};
}
diff --git a/askbot/skins/common/media/js/user.js b/askbot/skins/common/media/js/user.js
index d80adad6..ad0b8365 100644
--- a/askbot/skins/common/media/js/user.js
+++ b/askbot/skins/common/media/js/user.js
@@ -1,4 +1,4 @@
-$(document).ready(function(){
+var setup_inbox = function(){
var getSelected = function(){
@@ -18,7 +18,7 @@ $(document).ready(function(){
};
var submit = function(id_list, elements, action_type){
- if (action_type == 'delete' || action_type == 'mark_new' || action_type == 'mark_seen'){
+ if (action_type == 'delete' || action_type == 'mark_new' || action_type == 'mark_seen' || action_type == 'remove_flag' || action_type == 'delete_post'){
$.ajax({
type: 'POST',
cache: false,
@@ -26,8 +26,8 @@ $(document).ready(function(){
data: JSON.stringify({memo_list: id_list, action_type: action_type}),
url: askbot['urls']['manageInbox'],
success: function(response_data){
- if (response_data['success'] === true){
- if (action_type == 'delete'){
+ if (response_data['success'] == true){
+ if (action_type == 'delete' || action_type == 'remove_flag' || action_type == 'delete_post'){
elements.remove();
}
else if (action_type == 'mark_new'){
@@ -61,11 +61,30 @@ $(document).ready(function(){
return;
}
}
+ if (action_type == 'close'){
+ msg = ngettext('Close this entry?',
+ 'Close these entries?', data['id_list'].length);
+ if (confirm(msg) === false){
+ return;
+ }
+ }
+ if (action_type == 'remove_flag'){
+ msg = ngettext(
+ 'Remove all flags and approve this entry?',
+ 'Remove all flags and approve these entries?',
+ data['id_list'].length
+ );
+ if (confirm(msg) === false){
+ return;
+ }
+ }
submit(data['id_list'], data['elements'], action_type);
};
setupButtonEventHandlers($('#re_mark_seen'), function(){startAction('mark_seen')});
setupButtonEventHandlers($('#re_mark_new'), function(){startAction('mark_new')});
setupButtonEventHandlers($('#re_dismiss'), function(){startAction('delete')});
+ setupButtonEventHandlers($('#re_remove_flag'), function(){startAction('remove_flag')});
+ //setupButtonEventHandlers($('#re_close'), function(){startAction('close')});
setupButtonEventHandlers(
$('#sel_all'),
function(){
@@ -92,7 +111,411 @@ $(document).ready(function(){
setCheckBoxesIn('#responses .seen', false);
}
);
-});
+
+ var reject_post_dialog = new RejectPostDialog();
+ reject_post_dialog.decorate($('#reject-edit-modal'));
+ setupButtonEventHandlers(
+ $('#re_delete_post'),
+ function(){
+ var data = getSelected();
+ if (data['id_list'].length === 0){
+ return;
+ }
+ reject_post_dialog.setSelectedEditData(data);
+ reject_post_dialog.show();
+ }
+ );
+ //setupButtonEventHandlers($('.re_expand'),
+ // function(e){
+ // e.preventDefault();
+ // var re_snippet = $(this).find(".re_snippet:first")
+ // var re_content = $(this).find(".re_content:first")
+ // $(re_snippet).slideToggle();
+ // $(re_content).slideToggle();
+ // }
+ //);
+};
+
+var setup_badge_details_toggle = function(){
+ $('.badge-context-toggle').each(function(idx, elem){
+ var context_list = $(elem).parent().next('ul');
+ if (context_list.children().length > 0){
+ $(elem).addClass('active');
+ var toggle_display = function(){
+ if (context_list.css('display') == 'none'){
+ $('.badge-context-list').hide();
+ context_list.show();
+ } else {
+ context_list.hide();
+ }
+ };
+ $(elem).click(toggle_display);
+ }
+ });
+};
+
+/**
+ * @constructor
+ * manages post/edit reject reasons
+ * in the post moderation view
+ */
+var RejectPostDialog = function(){
+ WrappedElement.call(this);
+ this._selected_edit_ids = null;
+ this._selected_reason_id = null;
+ this._state = null;//'select', 'preview', 'add-new'
+};
+inherits(RejectPostDialog, WrappedElement);
+
+RejectPostDialog.prototype.setSelectedEditData = function(data){
+ this._selected_edit_data = data;
+};
+
+RejectPostDialog.prototype.setState = function(state){
+ this._state = state;
+ this.clearErrors();
+ if (this._element){
+ this._selector.hide();
+ this._adder.hide();
+ this._previewer.hide();
+ if (state === 'select'){
+ this._selector.show();
+ } else if (state === 'preview'){
+ this._previewer.show();
+ } else if (state === 'add-new'){
+ this._adder.show();
+ }
+ }
+};
+
+RejectPostDialog.prototype.show = function(){
+ $(this._element).modal('show');
+};
+
+RejectPostDialog.prototype.hide = function(){
+ $(this._element).modal('hide');
+};
+
+RejectPostDialog.prototype.resetInputs = function(){
+ if (this._title_input){
+ this._title_input.reset();
+ }
+ if (this._details_input){
+ this._details_input.reset();
+ }
+ var selected = this._element.find('.selected');
+ selected.removeClass('selected');
+};
+
+RejectPostDialog.prototype.clearErrors = function(){
+ var error = this._element.find('.alert');
+ error.remove();
+};
+
+RejectPostDialog.prototype.makeAlertBox = function(errors){
+ //construct the alert box
+ var alert_box = new AlertBox();
+ alert_box.setClass('alert-error');
+ if (typeof errors === "string"){
+ alert_box.setText(errors);
+ } else if (errors.constructor === [].constructor){
+ if (errors.length > 1){
+ alert_box.setContent(
+ '<div>' +
+ gettext('Looks there are some things to fix:') +
+ '</div>'
+ )
+ var list = this.makeElement('ul');
+ $.each(errors, function(idx, item){
+ list.append('<li>' + item + '</li>');
+ });
+ alert_box.addContent(list);
+ } else if (errors.length == 1){
+ alert_box.setContent(errors[0]);
+ } else if (errors.length == 0){
+ return;
+ }
+ } else if ('html' in errors){
+ alert_box.setContent(errors);
+ } else {
+ return;//don't know what to do
+ }
+ return alert_box;
+};
+
+RejectPostDialog.prototype.setAdderErrors = function(errors){
+ //clear previous errors
+ this.clearErrors();
+ var alert_box = this.makeAlertBox(errors);
+ this._element
+ .find('#reject-edit-modal-add-new .modal-body')
+ .prepend(alert_box.getElement());
+};
+
+RejectPostDialog.prototype.setSelectorErrors = function(errors){
+ this.clearErrors();
+ var alert_box = this.makeAlertBox(errors);
+ this._element
+ .find('#reject-edit-modal-select .modal-body')
+ .prepend(alert_box.getElement());
+};
+
+RejectPostDialog.prototype.setErrors = function(errors){
+ this.clearErrors();
+ var alert_box = this.makeAlertBox(errors);
+ var current_state = this._state;
+ this._element
+ .find('#reject-edit-modal-' + current_state + ' .modal-body')
+ .prepend(alert_box.getElement());
+};
+
+RejectPostDialog.prototype.addSelectableReason = function(data){
+ var id = data['reason_id'];
+ var title = data['title'];
+ var details = data['details'];
+ this._select_box.addItem(id, title, details);
+};
+
+RejectPostDialog.prototype.startSavingReason = function(callback){
+
+ var title_input = this._title_input;
+ var details_input = this._details_input;
+
+ var errors = [];
+ if (title_input.isBlank()){
+ errors.push(gettext('Please provide description.'));
+ }
+ if (details_input.isBlank()){
+ errors.push(gettext('Please provide details.'));
+ }
+
+ if (errors.length > 0){
+ this.setAdderErrors(errors);
+ return;//just show errors and quit
+ }
+
+ var data = {
+ title: title_input.getVal(),
+ details: details_input.getVal()
+ };
+ if (this._selected_reason_id){
+ data['reason_id'] = this._selected_reason_id;
+ }
+
+ var me = this;
+
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ url: askbot['urls']['save_post_reject_reason'],
+ data: data,
+ success: function(data){
+ if (data['success']){
+ //show current reason data and focus on it
+ if (callback){
+ callback(data);
+ } else {
+ me.addSelectableReason(data);
+ me.setState('select');
+ }
+ } else {
+ me.setAdderErrors(data['message']);
+ }
+ }
+ });
+};
+
+RejectPostDialog.prototype.rejectPost = function(reason_id){
+ var me = this;
+ var memos = this._selected_edit_data['elements'];
+ var memo_ids = this._selected_edit_data['id_list'];
+ var data = {
+ reject_reason_id: reason_id,
+ memo_list: memo_ids,
+ action_type: 'delete_post'
+ }
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ data: JSON.stringify(data),
+ url: askbot['urls']['manageInbox'],
+ success: function(data){
+ if (data['success']){
+ memos.remove();
+ me.hide();
+ } else {
+ //only fatal errors here
+ me.setErrors(data['message']);
+ }
+ }
+ });
+};
+
+RejectPostDialog.prototype.setPreviewerData = function(data){
+ this._selected_reason_id = data['id'];
+ this._element.find('.selected-reason-title').html(data['title']);
+ this._element.find('.selected-reason-details').html(data['details']);
+};
+
+RejectPostDialog.prototype.startEditingReason = function(){
+ var title = this._element.find('.selected-reason-title').html();
+ var details = this._element.find('.selected-reason-details').html();
+ this._title_input.setVal(title);
+ this._details_input.setVal(details);
+ this.setState('add-new');
+};
+
+RejectPostDialog.prototype.resetSelectedReasonId = function(){
+ this._selected_reason_id = null;
+};
+
+RejectPostDialog.prototype.getSelectedReasonId = function(){
+ return this._selected_reason_id;
+};
+
+RejectPostDialog.prototype.startDeletingReason = function(){
+ var select_box = this._select_box;
+ var data = select_box.getSelectedItemData();
+ var reason_id = data['id'];
+ var me = this;
+ if (data['id']){
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ url: askbot['urls']['delete_post_reject_reason'],
+ data: {reason_id: reason_id},
+ success: function(data){
+ if (data['success']){
+ select_box.removeItem(reason_id);
+ } else {
+ me.setSelectorErrors(data['message']);
+ }
+ }
+ });
+ } else {
+ me.setSelectorErrors(
+ gettext('A reason must be selected to delete one.')
+ )
+ }
+};
+
+RejectPostDialog.prototype.decorate = function(element){
+ this._element = element;
+ //set default state according to the # of available reasons
+ this._selector = $(element).find('#reject-edit-modal-select');
+ this._adder = $(element).find('#reject-edit-modal-add-new');
+ this._previewer = $(element).find('#reject-edit-modal-preview');
+ if (this._selector.find('li').length > 0){
+ this.setState('select');
+ this.resetInputs();
+ } else {
+ this.setState('add-new');
+ this.resetInputs();
+ }
+
+ $(this._element).find('.dropdown-toggle').dropdown();
+
+ var select_box = new SelectBox();
+ select_box.decorate($(this._selector.find('.select-box')));
+ this._select_box = select_box;
+
+ //setup tipped-inputs
+ var reject_title_input = $(this._element).find('input');
+ var title_input = new TippedInput();
+ title_input.decorate($(reject_title_input));
+ this._title_input = title_input;
+
+ var reject_details_input = $(this._element)
+ .find('textarea.reject-reason-details');
+
+ var details_input = new TippedInput();
+ details_input.decorate($(reject_details_input));
+ this._details_input = details_input;
+
+ var me = this;
+ setupButtonEventHandlers(
+ element.find('.cancel, .modal-header .close'),
+ function() {
+ me.hide();
+ me.clearErrors();
+ me.resetInputs();
+ me.resetSelectedReasonId();
+ me.setState('select');
+ }
+ );
+
+ setupButtonEventHandlers(
+ $(this._element).find('.save-reason'),
+ function(){ me.startSavingReason() }
+ );
+
+ setupButtonEventHandlers(
+ $(this._element).find('.save-reason-and-reject'),
+ function(){
+ me.startSavingReason(
+ function(data){
+ me.rejectPost(data['reason_id']);
+ }
+ );
+ }
+ );
+
+ setupButtonEventHandlers(
+ $(this._element).find('.reject'),
+ function(){
+ me.rejectPost(me.getSelectedReasonId());
+ }
+ );
+
+ setupButtonEventHandlers(
+ element.find('.select-other-reason'),
+ function(){
+ me.resetInputs();
+ me.setState('select');
+ }
+ )
+
+ setupButtonEventHandlers(
+ element.find('.add-new-reason'),
+ function(){
+ me.resetSelectedReasonId();
+ me.resetInputs();
+ me.setState('add-new')
+ }
+ );
+
+ setupButtonEventHandlers(
+ element.find('.select-this-reason'),
+ function(){
+ var data = select_box.getSelectedItemData();
+ if (data['id']){
+ me.setState('preview');
+ me.setPreviewerData(data);
+ } else {
+ me.setSelectorErrors(
+ gettext('A reason must be selected to reject post.')
+ )
+ }
+ }
+ );
+
+ setupButtonEventHandlers(
+ element.find('.edit-reason'),
+ function(){
+ me.startEditingReason();
+ }
+ );
+
+ setupButtonEventHandlers(
+ element.find('.delete-this-reason'),
+ function(){
+ me.startDeletingReason();
+ }
+ )
+};
/**
* @constructor
@@ -170,12 +593,262 @@ FollowUser.prototype.toggleState = function(){
}
};
+/**
+ * @constructor
+ * @param {string} name
+ */
+var UserGroup = function(name){
+ WrappedElement.call(this);
+ this._name = name;
+ this._content = null;
+};
+inherits(UserGroup, WrappedElement);
+
+UserGroup.prototype.getDeleteHandler = function(){
+ var group_name = this._name;
+ var me = this;
+ var groups_container = me._groups_container;
+ return function(){
+ var data = {
+ user_id: askbot['data']['viewUserId'],
+ group_name: group_name,
+ action: 'remove'
+ };
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ data: data,
+ cache: false,
+ url: askbot['urls']['edit_group_membership'],
+ success: function(){
+ groups_container.removeGroup(me);
+ }
+ });
+ };
+};
+
+UserGroup.prototype.setContent = function(content){
+ this._content = content;
+};
+
+UserGroup.prototype.getName = function(){
+ return this._name;
+};
+
+UserGroup.prototype.setGroupsContainer = function(container){
+ this._groups_container = container;
+};
+
+UserGroup.prototype.decorate = function(element){
+ this._element = element;
+ this._name = $.trim(element.find('a').html());
+ var deleter = new DeleteIcon();
+ deleter.setHandler(this.getDeleteHandler());
+ deleter.setContent(gettext('Remove'));
+ this._element.find('td:last').append(deleter.getElement());
+ this._delete_icon = deleter;
+};
+
+UserGroup.prototype.createDom = function(){
+ var element = this.makeElement('tr');
+ element.html(this._content);
+ this._element = element;
+ this.decorate(element);
+};
+
+UserGroup.prototype.dispose = function(){
+ this._delete_icon.dispose();
+ this._element.remove();
+};
+
+/**
+ * @constructor
+ */
+var GroupsContainer = function(){
+ WrappedElement.call(this);
+};
+inherits(GroupsContainer, WrappedElement);
+
+GroupsContainer.prototype.decorate = function(element){
+ this._element = element;
+ var groups = [];
+ var group_names = [];
+ var me = this;
+ //collect list of groups
+ $.each(element.find('tr'), function(idx, li){
+ var group = new UserGroup();
+ group.setGroupsContainer(me);
+ group.decorate($(li));
+ groups.push(group);
+ group_names.push(group.getName());
+ });
+ this._groups = groups;
+ this._group_names = group_names;
+};
+
+GroupsContainer.prototype.addGroup = function(group_data){
+ var group_name = group_data['name'];
+ if ($.inArray(group_name, this._group_names) > -1){
+ return;
+ }
+ var group = new UserGroup(group_name);
+ group.setContent(group_data['html']);
+ group.setGroupsContainer(this);
+ this._groups.push(group);
+ this._group_names.push(group_name);
+ this._element.append(group.getElement());
+};
+
+GroupsContainer.prototype.removeGroup = function(group){
+ var idx = $.inArray(group, this._groups);
+ if (idx === -1){
+ return;
+ }
+ this._groups.splice(idx, 1);
+ this._group_names.splice(idx, 1);
+ group.dispose();
+};
+
+var GroupAdderWidget = function(){
+ WrappedElement.call(this);
+ this._state = 'display';//display or edit
+};
+inherits(GroupAdderWidget, WrappedElement);
+
+/**
+ * @param {string} state
+ */
+GroupAdderWidget.prototype.setState = function(state){
+ if (state === 'display'){
+ this._element.html(gettext('add group'));
+ this._input.hide();
+ this._input.val('');
+ this._button.hide();
+ } else if (state === 'edit'){
+ this._element.html(gettext('cancel'));
+ this._input.show();
+ this._input.focus();
+ this._button.show();
+ } else {
+ return;
+ }
+ this._state = state;
+};
+
+GroupAdderWidget.prototype.getValue = function(){
+ return this._input.val();
+};
+
+GroupAdderWidget.prototype.addGroup = function(group_data){
+ this._groups_container.addGroup(group_data);
+};
+
+GroupAdderWidget.prototype.getAddGroupHandler = function(){
+ var me = this;
+ return function(){
+ var group_name = me.getValue();
+ var data = {
+ group_name: group_name,
+ user_id: askbot['data']['viewUserId'],
+ action: 'add'
+ };
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ data: data,
+ cache: false,
+ url: askbot['urls']['edit_group_membership'],
+ success: function(data){
+ if (data['success'] == true){
+ me.addGroup(data);
+ me.setState('display');
+ } else {
+ var message = data['message'];
+ showMessage(me.getElement(), message, 'after');
+ }
+ }
+ });
+ };
+};
+
+GroupAdderWidget.prototype.setGroupsContainer = function(container){
+ this._groups_container = container;
+};
+
+GroupAdderWidget.prototype.toggleState = function(){
+ if (this._state === 'display'){
+ this.setState('edit');
+ } else if (this._state === 'edit'){
+ this.setState('display');
+ }
+};
+
+GroupAdderWidget.prototype.decorate = function(element){
+ this._element = element;
+ var input = this.makeElement('input');
+ this._input = input;
+
+ var groupsAc = new AutoCompleter({
+ url: askbot['urls']['get_groups_list'],
+ preloadData: true,
+ minChars: 1,
+ useCache: true,
+ matchInside: false,
+ maxCacheLength: 100,
+ delay: 10
+ });
+ groupsAc.decorate(input);
+
+ var button = this.makeElement('button');
+ button.html(gettext('add'));
+ this._button = button;
+ element.before(input);
+ input.after(button);
+ this.setState('display');
+ setupButtonEventHandlers(button, this.getAddGroupHandler());
+ var me = this;
+ setupButtonEventHandlers(
+ element,
+ function(){ me.toggleState() }
+ );
+};
+
+/**
+ * @constructor
+ * allows editing user groups
+ */
+var UserGroupsEditor = function(){
+ WrappedElement.call(this);
+};
+inherits(UserGroupsEditor, WrappedElement);
+
+UserGroupsEditor.prototype.decorate = function(element){
+ this._element = element;
+ var add_link = element.find('#add-group');
+ var adder = new GroupAdderWidget();
+ adder.decorate(add_link);
+
+ var groups_container = new GroupsContainer();
+ groups_container.decorate(element.find('#groups-list'));
+ adder.setGroupsContainer(groups_container);
+ //todo - add group deleters
+};
+
(function(){
- var fbtn = $('.follow-toggle');
+ var fbtn = $('.follow-user-toggle');
if (fbtn.length === 1){
var follow_user = new FollowUser();
follow_user.decorate(fbtn);
follow_user.setUserName(askbot['data']['viewUserName']);
}
+ if (askbot['data']['userId'] !== askbot['data']['viewUserId']) {
+ if (askbot['data']['userIsAdminOrMod']){
+ var group_editor = new UserGroupsEditor();
+ group_editor.decorate($('#user-groups'));
+ } else {
+ $('#add-group').remove();
+ }
+ } else {
+ $('#add-group').remove();
+ }
})();
-
diff --git a/askbot/skins/common/media/js/utils.js b/askbot/skins/common/media/js/utils.js
index 0afd03a7..81aff7c3 100644
--- a/askbot/skins/common/media/js/utils.js
+++ b/askbot/skins/common/media/js/utils.js
@@ -1,6 +1,10 @@
//var $, scriptUrl, askbotSkin
+/**
+ * attention - this function needs to be retired
+ * as it cannot accurately give url to the media file
+ */
var mediaUrl = function(resource){
- return scriptUrl + 'm/' + askbotSkin + '/' + resource;
+ return askbot['settings']['static_url'] + 'default' + '/' + resource;
};
var cleanUrl = function(url){
@@ -109,7 +113,7 @@ var notify = function() {
return {
show: function(html) {
if (html) {
- $("body").css("margin-top", "2.2em");
+ $("body").addClass('user-messages');
$(".notify span").html(html);
}
$(".notify").fadeIn("slow");
@@ -123,13 +127,101 @@ var notify = function() {
);
}
$(".notify").fadeOut("fast");
- $("body").css("margin-top", "0");
+ $('body').removeClass('user-messages');
visible = false;
},
isVisible: function() { return visible; }
};
} ();
+/* **************************************************** */
+// Search query-string manipulation utils
+/* **************************************************** */
+
+var QSutils = QSutils || {}; // TODO: unit-test me
+
+QSutils.TAG_SEP = ','; // should match const.TAG_SEP; TODO: maybe prepopulate this in javascript.html ?
+
+QSutils.get_query_string_selector_value = function (query_string, selector) {
+ var params = query_string.split('/');
+ for(var i=0; i<params.length; i++) {
+ var param_split = params[i].split(':');
+ if(param_split[0] === selector) {
+ return param_split[1];
+ }
+ }
+ return undefined;
+};
+
+QSutils.patch_query_string = function (query_string, patch, remove) {
+ var params = query_string.split('/');
+ var patch_split = patch.split(':');
+
+ var new_query_string = '';
+ var mapping = {};
+
+ if(!remove) {
+ mapping[patch_split[0]] = patch_split[1]; // prepopulate the patched selector if it's not meant to be removed
+ }
+
+ for (var i = 0; i < params.length; i++) {
+ var param_split = params[i].split(':');
+ if(param_split[0] !== patch_split[0] && param_split[1]) {
+ mapping[param_split[0]] = param_split[1];
+ }
+ }
+
+ var add_selector = function(name) {
+ if(name in mapping) {
+ new_query_string += name + ':' + mapping[name] + '/';
+ }
+ };
+
+ /* The order of selectors should match the Django URL */
+ add_selector('scope');
+ add_selector('sort');
+ add_selector('query');
+ add_selector('tags');
+ add_selector('author');
+ add_selector('page');
+
+ return new_query_string;
+};
+
+QSutils.remove_search_tag = function(query_string, tag){
+ var tag_string = this.get_query_string_selector_value(query_string, 'tags');
+ if(!tag_string) {
+ return query_string;
+ }
+
+ var tags = tag_string.split(this.TAG_SEP);
+
+ var pos = $.inArray(encodeURIComponent(tag), tags);
+ if(pos > -1) {
+ tags.splice(pos, 1); /* array.splice() works in-place */
+ }
+
+ if(tags.length === 0) {
+ return this.patch_query_string(query_string, 'tags:', true);
+ } else {
+ return this.patch_query_string(query_string, 'tags:' + tags.join(this.TAG_SEP));
+ }
+};
+
+QSutils.add_search_tag = function(query_string, tag){
+ var tag_string = this.get_query_string_selector_value(query_string, 'tags');
+ tag = encodeURIComponent(tag);
+ if(!tag_string) {
+ tag_string = tag;
+ } else {
+ tag_string = [tag_string, tag].join(this.TAG_SEP);
+ }
+
+ return this.patch_query_string(query_string, 'tags:' + tag_string);
+};
+
+/* **************************************************** */
+
/* some google closure-like code for the ui elements */
var inherits = function(childCtor, parentCtor) {
/** @constructor taken from google closure */
@@ -151,6 +243,9 @@ WrappedElement.prototype.setElement = function(element){
WrappedElement.prototype.createDom = function(){
this._element = $('<div></div>');
};
+WrappedElement.prototype.decorate = function(element){
+ this._element = element;
+};
WrappedElement.prototype.getElement = function(){
if (this._element === null){
this.createDom();
@@ -175,6 +270,152 @@ WrappedElement.prototype.dispose = function(){
this._in_document = false;
};
+/**
+ * Can be used for an input box or textarea.
+ * The original value will be treated as an instruction.
+ * When user focuses on the field, the tip will be gone,
+ * when the user escapes without typing anything besides
+ * perhaps empty text, the instruction is restored.
+ * When instruction is shown, class "blank" is present
+ * in the input/textare element.
+ */
+var TippedInput = function(){
+ WrappedElement.call(this);
+ this._instruction = null;
+};
+inherits(TippedInput, WrappedElement);
+
+TippedInput.prototype.reset = function(){
+ $(this._element).val(this._instruction);
+ $(this._element).addClass('blank');
+};
+
+TippedInput.prototype.isBlank = function(){
+ return this.getVal() === this._instruction;
+};
+
+TippedInput.prototype.getVal = function(){
+ return this._element.val();
+};
+
+TippedInput.prototype.setVal = function(value){
+ if (value) {
+ this._element.val(value);
+ if (this.isBlank()){
+ this._element.addClass('blank');
+ } else {
+ this._element.removeClass('blank');
+ }
+ }
+};
+
+TippedInput.prototype.decorate = function(element){
+ this._element = element;
+ var instruction_text = this.getVal();
+ this._instruction = instruction_text;
+ var me = this;
+ $(element).focus(function(){
+ if (me.isBlank()){
+ $(element)
+ .val('')
+ .removeClass('blank');
+ }
+ });
+ $(element).blur(function(){
+ var val = $(element).val();
+ if ($.trim(val) === ''){
+ $(element)
+ .val(instruction_text)
+ .addClass('blank');
+ }
+ });
+ makeKeyHandler(13, function(){
+ $(element).blur();
+ });
+};
+
+/**
+ * will setup a bootstrap.js alert
+ * programmatically
+ */
+var AlertBox = function(){
+ WrappedElement.call(this);
+ this._text = null;
+};
+inherits(AlertBox, WrappedElement);
+
+AlertBox.prototype.setClass = function(classes){
+ this._classes = classes;
+ if (this._element){
+ this._element.addClass(classes);
+ }
+};
+
+AlertBox.prototype.setError = function(state){
+ this._is_error = state;
+ if (this._element) {
+ if (state === true) {
+ this._element.addClass('alert-error');
+ } else {
+ this._element.removeClass('alert-error');
+ }
+ }
+};
+
+AlertBox.prototype.setText = function(text){
+ this._text = text;
+ if (this._content){
+ this._content.html(text);
+ }
+};
+
+AlertBox.prototype.getContent = function(){
+ if (this._content){
+ return this._content;
+ } else {
+ this._content = this.makeElement('div');
+ return this._content;
+ }
+};
+
+AlertBox.prototype.setContent = function(content){
+ var container = this.getContent();
+ container.empty()
+ container.append(content);
+};
+
+AlertBox.prototype.addContent = function(content){
+ var container = this.getContent();
+ container.append(content);
+};
+
+AlertBox.prototype.createDom = function(){
+ this._element = this.makeElement('div');
+ this._element.addClass('alert fade in');
+
+ if (this._is_error) {
+ this.setError(this._is_error);
+ }
+
+ if (this._classes){
+ this._element.addClass(this._classes);
+ }
+
+ this._cancel_button = this.makeElement('button');
+ this._cancel_button
+ .addClass('close')
+ .attr('data-dismiss', 'alert')
+ .html('&times;');
+ this._element.append(this._cancel_button);
+
+ this._element.append(this.getContent());
+ if (this._text){
+ this.setText(this._text);
+ }
+
+ this._element.alert();//bootstrap.js alert
+};
+
var SimpleControl = function(){
WrappedElement.call(this);
this._handler = null;
@@ -189,6 +430,10 @@ SimpleControl.prototype.setHandler = function(handler){
}
};
+SimpleControl.prototype.getHandler = function(){
+ return this._handler;
+};
+
SimpleControl.prototype.setHandlerInternal = function(){
//default internal setHandler behavior
setupButtonEventHandlers(this._element, this._handler);
@@ -219,6 +464,7 @@ EditLink.prototype.decorate = function(element){
var DeleteIcon = function(title){
SimpleControl.call(this);
this._title = title;
+ this._content = null;
};
inherits(DeleteIcon, SimpleControl);
@@ -238,6 +484,425 @@ DeleteIcon.prototype.setHandlerInternal = function(){
DeleteIcon.prototype.createDom = function(){
this._element = this.makeElement('span');
this.decorate(this._element);
+ if (this._content !== null){
+ this.setContent(this._content);
+ }
+};
+
+DeleteIcon.prototype.setContent = function(content){
+ if (this._element === null){
+ this._content = content;
+ } else {
+ this._content = content;
+ this._element.html(content);
+ }
+}
+
+/**
+ * attaches a modal menu with a text editor
+ * to a link. The modal menu is from bootstrap.js
+ */
+var TextPropertyEditor = function(){
+ WrappedElement.call(this);
+ this._editor = null;
+};
+inherits(TextPropertyEditor, WrappedElement);
+
+TextPropertyEditor.prototype.getWidgetData = function(){
+ var data = this._element.data();
+ return {
+ object_id: data['objectId'],
+ model_name: data['modelName'],
+ property_name: data['propertyName'],
+ url: data['url'],
+ help_text: data['helpText'],
+ editor_heading: data['editorHeading']
+ };
+};
+
+TextPropertyEditor.prototype.makeEditor = function(){
+ if (this._editor) {
+ return this._editor;
+ }
+ var editor = this.makeElement('div')
+ .addClass('modal');
+ this._editor = editor;
+
+ var header = this.makeElement('div')
+ .addClass('modal-header');
+ editor.append(header);
+
+ var close_link = this.makeElement('div')
+ .addClass('close')
+ .attr('data-dismiss', 'modal')
+ .html('x');
+ header.append(close_link);
+
+ var title = this.makeElement('h3')
+ .html(this.getWidgetData()['editor_heading']);
+ header.append(title);
+
+ var body = this.makeElement('div')
+ .addClass('modal-body');
+ editor.append(body);
+
+ var textarea = this.makeElement('textarea')
+ .addClass('tipped-input blank')
+ .val(this.getWidgetData()['help_text']);
+ body.append(textarea);
+
+ var tipped_input = new TippedInput();
+ tipped_input.decorate(textarea);
+ this._text_input = tipped_input;
+
+ var footer = this.makeElement('div')
+ .addClass('modal-footer');
+ editor.append(footer);
+
+ var save_btn = this.makeElement('button')
+ .addClass('btn btn-primary')
+ .html(gettext('Save'));
+ footer.append(save_btn);
+
+ var cancel_btn = this.makeElement('button')
+ .addClass('btn cancel')
+ .html(gettext('Cancel'));
+ footer.append(cancel_btn);
+
+ var me = this;
+ setupButtonEventHandlers(save_btn, function(){
+ me.saveData();
+ });
+ setupButtonEventHandlers(cancel_btn, function(){
+ editor.modal('hide');
+ });
+ editor.modal('hide');
+
+ $(document).append(editor);
+ return editor;
+};
+
+TextPropertyEditor.prototype.openEditor = function(){
+ this._editor.modal('show');
+};
+
+TextPropertyEditor.prototype.clearMessages = function(){
+ this._editor.find('.alert').remove();
+};
+
+TextPropertyEditor.prototype.getAlert = function(){
+ var box = new AlertBox();
+ var modal_body = this._editor.find('.modal-body');
+ modal_body.prepend(box.getElement());
+ return box;
+};
+
+TextPropertyEditor.prototype.showAlert = function(text){
+ this.clearMessages();
+ var box = this.getAlert();
+ box.setText(text);
+ return box;
+};
+
+TextPropertyEditor.prototype.showError = function(text){
+ var box = this.showAlert(text);
+ box.setError(true);
+ return box;
+};
+
+TextPropertyEditor.prototype.setText = function(text){
+ this._text_input.setVal(text);
+};
+
+TextPropertyEditor.prototype.getText = function(){
+ return this._text_input.getVal();
+};
+
+TextPropertyEditor.prototype.hideDialog = function(){
+ this._editor.modal('hide');
+};
+
+TextPropertyEditor.prototype.startOpeningEditor = function(){
+ var me = this;
+ $.ajax({
+ type: 'GET',
+ dataType: 'json',
+ cache: false,
+ url: me.getWidgetData()['url'],
+ data: me.getWidgetData(),
+ success: function(data){
+ if (data['success']) {
+ me.makeEditor();
+ me.setText($.trim(data['text']));
+ me.openEditor();
+ } else {
+ showMessage(me.getElement(), data['message']);
+ }
+ }
+ });
+};
+
+TextPropertyEditor.prototype.saveData = function(){
+ var data = this.getWidgetData();
+ data['text'] = this.getText();
+ var me = this;
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ url: me.getWidgetData()['url'],
+ data: data,
+ success: function(data) {
+ if (data['success']) {
+ me.showAlert(gettext('saved'));
+ setTimeout(function(){
+ me.clearMessages();
+ me.hideDialog();
+ }, 1000);
+ } else {
+ me.showError(data['message']);
+ }
+ }
+ });
+};
+
+TextPropertyEditor.prototype.decorate = function(element){
+ this._element = element;
+ var me = this;
+ setupButtonEventHandlers(element, function(){ me.startOpeningEditor() });
+};
+
+/**
+ * A button on which user can click
+ * and become added to some group (followers, group members, etc.)
+ * or toggle some state on/off
+ * The button has four states on-prompt, off-prompt, on-state and off-state
+ * on-prompt is activated on mouseover, when user is not part of group
+ * off-prompt - on mouseover, when user is part of group
+ * on-state - when user is part of group and mouse is not over the button
+ * off-state - same as above, but when user is not part of the group
+ */
+var TwoStateToggle = function(){
+ SimpleControl.call(this);
+ this._state = null;
+ this._state_messages = {};
+ this._states = [
+ 'on-state',
+ 'off-state',
+ 'on-prompt',
+ 'off-prompt'
+ ];
+ this._handler = this.getDefaultHandler();
+ this._post_data = {};
+ this.toggleUrl = '';//public property
+};
+inherits(TwoStateToggle, SimpleControl);
+
+TwoStateToggle.prototype.setPostData = function(data){
+ this._post_data = data;
+};
+
+TwoStateToggle.prototype.getPostData = function(){
+ return this._post_data;
+};
+
+TwoStateToggle.prototype.resetStyles = function(){
+ var element = this._element;
+ var states = this._states;
+ $.each(states, function(idx, state){
+ element.removeClass(state);
+ });
+ this._element.html('');
+};
+
+TwoStateToggle.prototype.isOn = function(){
+ return this._element.hasClass('on');
+};
+
+TwoStateToggle.prototype.getDefaultHandler = function(){
+ var me = this;
+ return function(){
+ var data = me.getPostData();
+ data['disable'] = me.isOn();
+ $.ajax({
+ type: 'POST',
+ dataType: 'json',
+ cache: false,
+ url: me.toggleUrl,
+ data: data,
+ success: function(data) {
+ if (data['success']) {
+ if ( data['is_enabled'] ) {
+ me.setState('on-state');
+ } else {
+ me.setState('off-state');
+ }
+ } else {
+ showMessage(me.getElement(), data['message']);
+ }
+ }
+ });
+ };
+};
+
+TwoStateToggle.prototype.isCheckBox = function(){
+ var element = this._element;
+ return element.attr('type') === 'checkbox';
+};
+
+TwoStateToggle.prototype.setState = function(state){
+ var element = this._element;
+ this._state = state;
+ if (element) {
+ this.resetStyles();
+ element.addClass(state);
+ if (state === 'on-state') {
+ element.addClass('on');
+ } else if (state === 'off-state') {
+ element.removeClass('on');
+ }
+ if ( this.isCheckBox() ) {
+ if (state === 'on-state') {
+ element.attr('checked', true);
+ } else if (state === 'off-state') {
+ element.attr('checked', false);
+ }
+ } else {
+ this._element.html(this._state_messages[state]);
+ }
+ }
+};
+
+TwoStateToggle.prototype.decorate = function(element){
+ this._element = element;
+ //read messages for all states
+ var messages = {};
+ messages['on-state'] =
+ element.attr('data-on-state-text') || gettext('enabled');
+ messages['off-state'] =
+ element.attr('data-off-state-text') || gettext('disabled');
+ messages['on-prompt'] =
+ element.attr('data-on-prompt-text') || messages['on-state'];
+ messages['off-prompt'] =
+ element.attr('data-off-prompt-text') || messages['off-state'];
+ this._state_messages = messages;
+
+ this.toggleUrl = element.attr('data-toggle-url');
+
+ //detect state and save it
+ if (this.isCheckBox()) {
+ this._state = element.attr('checked') ? 'state-on' : 'state-off';
+ } else {
+ var text = $.trim(element.html());
+ for (var i = 0; i < this._states.length; i++){
+ var state = this._states[i];
+ if (text === messages[state]){
+ this._state = state;
+ break;
+ }
+ }
+ }
+
+ //set mouseover handler
+ var me = this;
+ element.mouseover(function(){
+ var is_on = me.isOn();
+ if (is_on){
+ me.setState('off-prompt');
+ } else {
+ me.setState('on-prompt');
+ }
+ element.css('background-color', 'red');
+ return false;
+ });
+ element.mouseout(function(){
+ var is_on = me.isOn();
+ if (is_on){
+ me.setState('on-state');
+ } else {
+ me.setState('off-state');
+ }
+ element.css('background-color', 'white');
+ return false;
+ });
+
+ setupButtonEventHandlers(element, this.getHandler());
+};
+
+/**
+ * A list of items from where one can be selected
+ */
+var SelectBox = function(){
+ WrappedElement.call(this);
+ this._items = [];
+};
+inherits(SelectBox, WrappedElement);
+
+SelectBox.prototype.removeItem = function(id){
+ var item = this.getItem(id);
+ item.fadeOut();
+ item.remove();
+};
+
+SelectBox.prototype.getItem = function(id){
+ return $(this._element.find('li[data-item-id="' + id + '"]'));
+};
+
+SelectBox.prototype.addItem = function(id, title, details){
+ /*this._items.push({
+ id: id,
+ title: title,
+ details: details
+ });*/
+ if (this._element){
+ var li = this.getItem(id);
+ var new_li = false;
+ if (li.length !== 1){
+ li = this.makeElement('li');
+ new_li = true;
+ }
+ li.attr('data-item-id', id)
+ .attr('data-original-title', details)
+ .html(title);
+ if (new_li){
+ this._element.append(li);
+ }
+ this.selectItem($(li));
+ var me = this;
+ setupButtonEventHandlers(
+ $(li),
+ function(){
+ me.selectItem($(li));
+ }
+ );
+ }
+};
+
+SelectBox.prototype.getSelectedItemData = function(){
+ var item = $(this._element.find('li.selected')[0]);
+ return {
+ id: item.attr('data-item-id'),
+ title: item.html(),
+ details: item.attr('data-original-title')
+ };
+};
+
+SelectBox.prototype.selectItem = function(item){
+ this._element.find('li').removeClass('selected');
+ item.addClass('selected');
+};
+
+SelectBox.prototype.decorate = function(element){
+ this._element = element;
+ var me = this;
+ this._element.find('li').each(function(itx, item){
+ setupButtonEventHandlers(
+ $(item),
+ function(){
+ me.selectItem($(item));
+ }
+ );
+ });
};
var Tag = function(){
@@ -326,7 +991,9 @@ Tag.prototype.decorate = function(element){
this._delete_icon.decorate(del);
}
this._inner_element = this._element.find('.tag');
- this._name = this.decodeTagName($.trim(this._inner_element.html()));
+ this._name = this.decodeTagName(
+ $.trim(this._inner_element.attr('data-tag-name'))
+ );
if (this._title !== null){
this._inner_element.attr('title', this._title);
}
@@ -356,9 +1023,10 @@ Tag.prototype.createDom = function(){
this._inner_element = this.makeElement(this._inner_html_tag);
if (this.isLinkable()){
var url = askbot['urls']['questions'];
- url += '?tags=' + escape(this.getName());
- if (this._url_params !== null){
- url += escape('&' + this._url_params);
+ var flag = false
+ var author = ''
+ if (this._url_params){
+ url += QSutils.add_search_tag(this._url_params, this.getName());
}
this._inner_element.attr('href', url);
}
@@ -366,7 +1034,7 @@ Tag.prototype.createDom = function(){
this._inner_element.attr('rel', 'tag');
if (this._title === null){
this.setTitle(
- interpolate(gettext("see questions tagged '%s'"), [this.getName()])
+ interpolate(gettext("see questions tagged '%s'"), [this.getName()])
);
}
this._inner_element.attr('title', this._title);
@@ -384,7 +1052,9 @@ Tag.prototype.createDom = function(){
if (this._delete_icon_title !== null){
this._delete_icon.setTitle(this._delete_icon_title);
}
- this._element.append(this._delete_icon.getElement());
+ var del_icon_elem = this._delete_icon.getElement();
+ del_icon_elem.text('x'); // HACK by Tomasz
+ this._element.append(del_icon_elem);
}
};
@@ -398,3 +1068,205 @@ if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typ
//our custom autocompleter
var AutoCompleter=function(a){var b={autocompleteMultiple:true,multipleSeparator:" ",inputClass:"acInput",loadingClass:"acLoading",resultsClass:"acResults",selectClass:"acSelect",queryParamName:"q",limitParamName:"limit",extraParams:{},lineSeparator:"\n",cellSeparator:"|",minChars:2,maxItemsToShow:10,delay:400,useCache:true,maxCacheLength:10,matchSubset:true,matchCase:false,matchInside:true,mustMatch:false,preloadData:false,selectFirst:false,stopCharRegex:/\s+/,selectOnly:false,formatItem:null,onItemSelect:false,autoFill:false,filterResults:true,sortResults:true,sortFunction:false,onNoMatch:false};this.options=$.extend({},b,a);this.cacheData_={};this.cacheLength_=0;this.selectClass_="jquery-autocomplete-selected-item";this.keyTimeout_=null;this.lastKeyPressed_=null;this.lastProcessedValue_=null;this.lastSelectedValue_=null;this.active_=false;this.finishOnBlur_=true;this.options.minChars=parseInt(this.options.minChars,10);if(isNaN(this.options.minChars)||this.options.minChars<1){this.options.minChars=2}this.options.maxItemsToShow=parseInt(this.options.maxItemsToShow,10);if(isNaN(this.options.maxItemsToShow)||this.options.maxItemsToShow<1){this.options.maxItemsToShow=10}this.options.maxCacheLength=parseInt(this.options.maxCacheLength,10);if(isNaN(this.options.maxCacheLength)||this.options.maxCacheLength<1){this.options.maxCacheLength=10}if(this.options.preloadData===true){this.fetchRemoteData("",function(){})}};inherits(AutoCompleter,WrappedElement);AutoCompleter.prototype.decorate=function(a){this._element=a;this._element.attr("autocomplete","off");this._results=$("<div></div>").hide();if(this.options.resultsClass){this._results.addClass(this.options.resultsClass)}this._results.css({position:"absolute"});$("body").append(this._results);this.setEventHandlers()};AutoCompleter.prototype.setEventHandlers=function(){var a=this;a._element.keydown(function(b){a.lastKeyPressed_=b.keyCode;switch(a.lastKeyPressed_){case 38:b.preventDefault();if(a.active_){a.focusPrev()}else{a.activate()}return false;break;case 40:b.preventDefault();if(a.active_){a.focusNext()}else{a.activate()}return false;break;case 9:case 13:if(a.active_){b.preventDefault();a.selectCurrent();return false}break;case 27:if(a.active_){b.preventDefault();a.finish();return false}break;default:a.activate()}});a._element.blur(function(){if(a.finishOnBlur_){setTimeout(function(){a.finish()},200)}})};AutoCompleter.prototype.position=function(){var a=this._element.offset();this._results.css({top:a.top+this._element.outerHeight(),left:a.left})};AutoCompleter.prototype.cacheRead=function(d){var f,c,b,a,e;if(this.options.useCache){d=String(d);f=d.length;if(this.options.matchSubset){c=1}else{c=f}while(c<=f){if(this.options.matchInside){a=f-c}else{a=0}e=0;while(e<=a){b=d.substr(0,c);if(this.cacheData_[b]!==undefined){return this.cacheData_[b]}e++}c++}}return false};AutoCompleter.prototype.cacheWrite=function(a,b){if(this.options.useCache){if(this.cacheLength_>=this.options.maxCacheLength){this.cacheFlush()}a=String(a);if(this.cacheData_[a]!==undefined){this.cacheLength_++}return this.cacheData_[a]=b}return false};AutoCompleter.prototype.cacheFlush=function(){this.cacheData_={};this.cacheLength_=0};AutoCompleter.prototype.callHook=function(c,b){var a=this.options[c];if(a&&$.isFunction(a)){return a(b,this)}return false};AutoCompleter.prototype.activate=function(){var b=this;var a=function(){b.activateNow()};var c=parseInt(this.options.delay,10);if(isNaN(c)||c<=0){c=250}if(this.keyTimeout_){clearTimeout(this.keyTimeout_)}this.keyTimeout_=setTimeout(a,c)};AutoCompleter.prototype.activateNow=function(){var a=this.getValue();if(a!==this.lastProcessedValue_&&a!==this.lastSelectedValue_){if(a.length>=this.options.minChars){this.active_=true;this.lastProcessedValue_=a;this.fetchData(a)}}};AutoCompleter.prototype.fetchData=function(b){if(this.options.data){this.filterAndShowResults(this.options.data,b)}else{var a=this;this.fetchRemoteData(b,function(c){a.filterAndShowResults(c,b)})}};AutoCompleter.prototype.fetchRemoteData=function(c,e){var d=this.cacheRead(c);if(d){e(d)}else{var a=this;if(this._element){this._element.addClass(this.options.loadingClass)}var b=function(g){var f=false;if(g!==false){f=a.parseRemoteData(g);a.options.data=f;a.cacheWrite(c,f)}if(a._element){a._element.removeClass(a.options.loadingClass)}e(f)};$.ajax({url:this.makeUrl(c),success:b,error:function(){b(false)}})}};AutoCompleter.prototype.setOption=function(a,b){this.options[a]=b};AutoCompleter.prototype.setExtraParam=function(b,c){var a=$.trim(String(b));if(a){if(!this.options.extraParams){this.options.extraParams={}}if(this.options.extraParams[a]!==c){this.options.extraParams[a]=c;this.cacheFlush()}}};AutoCompleter.prototype.makeUrl=function(e){var a=this;var b=this.options.url;var d=$.extend({},this.options.extraParams);if(this.options.queryParamName===false){b+=encodeURIComponent(e)}else{d[this.options.queryParamName]=e}if(this.options.limitParamName&&this.options.maxItemsToShow){d[this.options.limitParamName]=this.options.maxItemsToShow}var c=[];$.each(d,function(f,g){c.push(a.makeUrlParam(f,g))});if(c.length){b+=b.indexOf("?")==-1?"?":"&";b+=c.join("&")}return b};AutoCompleter.prototype.makeUrlParam=function(a,b){return String(a)+"="+encodeURIComponent(b)};AutoCompleter.prototype.splitText=function(a){return String(a).replace(/(\r\n|\r|\n)/g,"\n").split(this.options.lineSeparator)};AutoCompleter.prototype.parseRemoteData=function(c){var h,b,f,d,g;var e=[];var b=this.splitText(c);for(f=0;f<b.length;f++){var a=b[f].split(this.options.cellSeparator);g=[];for(d=0;d<a.length;d++){g.push(unescape(a[d]))}h=g.shift();e.push({value:unescape(h),data:g})}return e};AutoCompleter.prototype.filterAndShowResults=function(a,b){this.showResults(this.filterResults(a,b),b)};AutoCompleter.prototype.filterResults=function(d,b){var f=[];var l,c,e,m,j,a;var k,h,g;for(e=0;e<d.length;e++){m=d[e];j=typeof m;if(j==="string"){l=m;c={}}else{if($.isArray(m)){l=m[0];c=m.slice(1)}else{if(j==="object"){l=m.value;c=m.data}}}l=String(l);if(l>""){if(typeof c!=="object"){c={}}if(this.options.filterResults){h=String(b);g=String(l);if(!this.options.matchCase){h=h.toLowerCase();g=g.toLowerCase()}a=g.indexOf(h);if(this.options.matchInside){a=a>-1}else{a=a===0}}else{a=true}if(a){f.push({value:l,data:c})}}}if(this.options.sortResults){f=this.sortResults(f,b)}if(this.options.maxItemsToShow>0&&this.options.maxItemsToShow<f.length){f.length=this.options.maxItemsToShow}return f};AutoCompleter.prototype.sortResults=function(c,d){var b=this;var a=this.options.sortFunction;if(!$.isFunction(a)){a=function(g,e,h){return b.sortValueAlpha(g,e,h)}}c.sort(function(f,e){return a(f,e,d)});return c};AutoCompleter.prototype.sortValueAlpha=function(d,c,e){d=String(d.value);c=String(c.value);if(!this.options.matchCase){d=d.toLowerCase();c=c.toLowerCase()}if(d>c){return 1}if(d<c){return -1}return 0};AutoCompleter.prototype.showResults=function(e,b){var k=this;var g=$("<ul></ul>");var f,l,j,a,h=false,d=false;var c=e.length;for(f=0;f<c;f++){l=e[f];j=$("<li>"+this.showResult(l.value,l.data)+"</li>");j.data("value",l.value);j.data("data",l.data);j.click(function(){var i=$(this);k.selectItem(i)}).mousedown(function(){k.finishOnBlur_=false}).mouseup(function(){k.finishOnBlur_=true});g.append(j);if(h===false){h=String(l.value);d=j;j.addClass(this.options.firstItemClass)}if(f==c-1){j.addClass(this.options.lastItemClass)}}this.position();this._results.html(g).show();a=this._results.outerWidth()-this._results.width();this._results.width(this._element.outerWidth()-a);$("li",this._results).hover(function(){k.focusItem(this)},function(){});if(this.autoFill(h,b)){this.focusItem(d)}};AutoCompleter.prototype.showResult=function(b,a){if($.isFunction(this.options.showResult)){return this.options.showResult(b,a)}else{return b}};AutoCompleter.prototype.autoFill=function(e,c){var b,a,d,f;if(this.options.autoFill&&this.lastKeyPressed_!=8){b=String(e).toLowerCase();a=String(c).toLowerCase();d=e.length;f=c.length;if(b.substr(0,f)===a){this._element.val(e);this.selectRange(f,d);return true}}return false};AutoCompleter.prototype.focusNext=function(){this.focusMove(+1)};AutoCompleter.prototype.focusPrev=function(){this.focusMove(-1)};AutoCompleter.prototype.focusMove=function(a){var b,c=$("li",this._results);a=parseInt(a,10);for(var b=0;b<c.length;b++){if($(c[b]).hasClass(this.selectClass_)){this.focusItem(b+a);return}}this.focusItem(0)};AutoCompleter.prototype.focusItem=function(b){var a,c=$("li",this._results);if(c.length){c.removeClass(this.selectClass_).removeClass(this.options.selectClass);if(typeof b==="number"){b=parseInt(b,10);if(b<0){b=0}else{if(b>=c.length){b=c.length-1}}a=$(c[b])}else{a=$(b)}if(a){a.addClass(this.selectClass_).addClass(this.options.selectClass)}}};AutoCompleter.prototype.selectCurrent=function(){var a=$("li."+this.selectClass_,this._results);if(a.length==1){this.selectItem(a)}else{this.finish()}};AutoCompleter.prototype.selectItem=function(d){var c=d.data("value");var b=d.data("data");var a=this.displayValue(c,b);this.lastProcessedValue_=a;this.lastSelectedValue_=a;this.setValue(a);this.setCaret(a.length);this.callHook("onItemSelect",{value:c,data:b});this.finish()};AutoCompleter.prototype.isContentChar=function(a){if(a.match(this.options.stopCharRegex)){return false}else{if(a===this.options.multipleSeparator){return false}else{return true}}};AutoCompleter.prototype.getValue=function(){var c=this._element.getSelection();var d=this._element.val();var f=c.start;var e=f;for(cpos=f;cpos>=0;cpos=cpos-1){if(cpos===d.length){continue}var b=d.charAt(cpos);if(!this.isContentChar(b)){break}e=cpos}var a=f;for(cpos=f;cpos<d.length;cpos=cpos+1){if(cpos===0){continue}var b=d.charAt(cpos);if(!this.isContentChar(b)){break}a=cpos}this._selection_start=e;this._selection_end=a;return d.substring(e,a)};AutoCompleter.prototype.setValue=function(b){var a=this._element.val().substring(0,this._selection_start);var c=this._element.val().substring(this._selection_end+1);this._element.val(a+b+c)};AutoCompleter.prototype.displayValue=function(b,a){if($.isFunction(this.options.displayValue)){return this.options.displayValue(b,a)}else{return b}};AutoCompleter.prototype.finish=function(){if(this.keyTimeout_){clearTimeout(this.keyTimeout_)}if(this._element.val()!==this.lastSelectedValue_){if(this.options.mustMatch){this._element.val("")}this.callHook("onNoMatch")}this._results.hide();this.lastKeyPressed_=null;this.lastProcessedValue_=null;if(this.active_){this.callHook("onFinish")}this.active_=false};AutoCompleter.prototype.selectRange=function(d,a){var c=this._element.get(0);if(c.setSelectionRange){c.focus();c.setSelectionRange(d,a)}else{if(this.createTextRange){var b=this.createTextRange();b.collapse(true);b.moveEnd("character",a);b.moveStart("character",d);b.select()}}};AutoCompleter.prototype.setCaret=function(a){this.selectRange(a,a)};
(function($){function isRGBACapable(){var $script=$("script:first"),color=$script.css("color"),result=false;if(/^rgba/.test(color)){result=true}else{try{result=(color!=$script.css("color","rgba(0, 0, 0, 0.5)").css("color"));$script.css("color",color)}catch(e){}}return result}$.extend(true,$,{support:{rgba:isRGBACapable()}});var properties=["color","backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","outlineColor"];$.each(properties,function(i,property){$.fx.step[property]=function(fx){if(!fx.init){fx.begin=parseColor($(fx.elem).css(property));fx.end=parseColor(fx.end);fx.init=true}fx.elem.style[property]=calculateColor(fx.begin,fx.end,fx.pos)}});$.fx.step.borderColor=function(fx){if(!fx.init){fx.end=parseColor(fx.end)}var borders=properties.slice(2,6);$.each(borders,function(i,property){if(!fx.init){fx[property]={begin:parseColor($(fx.elem).css(property))}}fx.elem.style[property]=calculateColor(fx[property].begin,fx.end,fx.pos)});fx.init=true};function calculateColor(begin,end,pos){var color="rgb"+($.support.rgba?"a":"")+"("+parseInt((begin[0]+pos*(end[0]-begin[0])),10)+","+parseInt((begin[1]+pos*(end[1]-begin[1])),10)+","+parseInt((begin[2]+pos*(end[2]-begin[2])),10);if($.support.rgba){color+=","+(begin&&end?parseFloat(begin[3]+pos*(end[3]-begin[3])):1)}color+=")";return color}function parseColor(color){var match,triplet;if(match=/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(color)){triplet=[parseInt(match[1],16),parseInt(match[2],16),parseInt(match[3],16),1]}else{if(match=/#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(color)){triplet=[parseInt(match[1],16)*17,parseInt(match[2],16)*17,parseInt(match[3],16)*17,1]}else{if(match=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)){triplet=[parseInt(match[1]),parseInt(match[2]),parseInt(match[3]),1]}else{if(match=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]*)\s*\)/.exec(color)){triplet=[parseInt(match[1],10),parseInt(match[2],10),parseInt(match[3],10),parseFloat(match[4])]}else{if(color=="transparent"){triplet=[0,0,0,0]}}}}}return triplet}})(jQuery);
+
+/**
+ * Timeago is a jQuery plugin that makes it easy to support automatically
+ * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
+ *
+ * @name timeago
+ * @version 0.11.1
+ * @requires jQuery v1.2.3+
+ * @author Ryan McGeary
+ * @license MIT License - http://www.opensource.org/licenses/mit-license.php
+ *
+ * For usage and examples, visit:
+ * http://timeago.yarp.com/
+ *
+ * Copyright (c) 2008-2011, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org)
+ */
+(function($) {
+ $.timeago = function(timestamp) {
+ if (timestamp instanceof Date) {
+ return inWords(timestamp);
+ } else if (typeof timestamp === "string") {
+ return inWords($.timeago.parse(timestamp));
+ } else {
+ return inWords($.timeago.datetime(timestamp));
+ }
+ };
+ var $t = $.timeago;
+
+ $.extend($.timeago, {
+ settings: {
+ refreshMillis: 60000,
+ allowFuture: false,
+ strings: {
+ prefixAgo: null,
+ prefixFromNow: null,
+ suffixAgo: gettext("ago"),
+ suffixFromNow: gettext("from now"),
+ seconds: gettext("just now"),
+ minute: gettext("about a minute"),
+ minutes: gettext("%d minutes"),
+ hour: gettext("about an hour"),
+ hours: gettext("%d hours"),
+ day: gettext("yesterday"),
+ days: gettext("%d days"),
+ month: gettext("about a month"),
+ months: gettext("%d months"),
+ year: gettext("about a year"),
+ years: gettext("%d years"),
+ wordSeparator: " ",
+ numbers: []
+ }
+ },
+ inWords: function(distanceMillis) {
+ var $l = this.settings.strings;
+ var prefix = $l.prefixAgo;
+ var suffix = $l.suffixAgo;
+ if (this.settings.allowFuture) {
+ if (distanceMillis < 0) {
+ prefix = $l.prefixFromNow;
+ suffix = $l.suffixFromNow;
+ }
+ }
+
+ var seconds = Math.abs(distanceMillis) / 1000;
+ var minutes = seconds / 60;
+ var hours = minutes / 60;
+ var days = hours / 24;
+ var years = days / 365;
+
+ function substitute(stringOrFunction, number) {
+ var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
+ var value = ($l.numbers && $l.numbers[number]) || number;
+ return string.replace(/%d/i, value);
+ }
+
+ var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
+ seconds < 90 && substitute($l.minute, 1) ||
+ minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
+ minutes < 90 && substitute($l.hour, 1) ||
+ hours < 24 && substitute($l.hours, Math.round(hours)) ||
+ hours < 42 && substitute($l.day, 1) ||
+ days < 30 && substitute($l.days, Math.round(days)) ||
+ days < 45 && substitute($l.month, 1) ||
+ days < 365 && substitute($l.months, Math.round(days / 30)) ||
+ years < 1.5 && substitute($l.year, 1) ||
+ substitute($l.years, Math.round(years));
+
+ var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator;
+ return $.trim([prefix, words, suffix].join(separator));
+ },
+ parse: function(iso8601) {
+ var s = $.trim(iso8601);
+ s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
+ s = s.replace(/-/,"/").replace(/-/,"/");
+ s = s.replace(/T/," ").replace(/Z/," UTC");
+ s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
+ return new Date(s);
+ },
+ datetime: function(elem) {
+ // jQuery's `is()` doesn't play well with HTML5 in IE
+ var isTime = $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
+ var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title");
+ return $t.parse(iso8601);
+ }
+ });
+
+ $.fn.timeago = function() {
+ var self = this;
+ self.each(refresh);
+
+ var $s = $t.settings;
+ if ($s.refreshMillis > 0) {
+ setInterval(function() { self.each(refresh); }, $s.refreshMillis);
+ }
+ return self;
+ };
+
+ function refresh() {
+ var data = prepareData(this);
+ if (!isNaN(data.datetime)) {
+ $(this).text(inWords(data.datetime));
+ }
+ return this;
+ }
+
+ function prepareData(element) {
+ element = $(element);
+ if (!element.data("timeago")) {
+ element.data("timeago", { datetime: $t.datetime(element) });
+ var text = $.trim(element.text());
+ if (text.length > 0) {
+ element.attr("title", text);
+ }
+ }
+ return element.data("timeago");
+ }
+
+ function inWords(date) {
+ var distanceMillis = distance(date);
+ var seconds = Math.abs(distanceMillis) / 1000;
+ var minutes = seconds / 60;
+ var hours = minutes / 60;
+ var days = hours / 24;
+ var years = days / 365;
+ var months = [
+ gettext('Jan'),
+ gettext('Feb'),
+ gettext('Mar'),
+ gettext('Apr'),
+ gettext('May'),
+ gettext('Jun'),
+ gettext('Jul'),
+ gettext('Aug'),
+ gettext('Sep'),
+ gettext('Oct'),
+ gettext('Nov'),
+ gettext('Dec')
+ ];
+ //todo: rewrite this in javascript
+ if (days > 2){
+ var month_date = months[date.getMonth()] + ' ' + date.getDate()
+ if (years == 0){
+ //how to do this in js???
+ return month_date;
+ } else {
+ return month_date + ' ' + "'" + date.getYear() % 20;
+ }
+ } else if (days == 2) {
+ return gettext('2 days ago')
+ } else if (days == 1) {
+ return gettext('yesterday')
+ } else if (minutes >= 60) {
+ return interpolate(
+ ngettext(
+ '%s hour ago',
+ '%s hours ago',
+ hours
+ ),
+ [Math.floor(hours),]
+ )
+ } else if (seconds > 90){
+ return interpolate(
+ ngettext(
+ '%s min ago',
+ '%s mins ago',
+ minutes
+ ),
+ [Math.floor(minutes),]
+ )
+ } else {
+ return gettext('just now')
+ }
+ }
+
+ function distance(date) {
+ return (new Date() - date);
+ }
+
+ // fix for IE6 suckage
+ document.createElement("abbr");
+ document.createElement("time");
+}(jQuery));
diff --git a/askbot/skins/common/media/js/wmd/wmd.css b/askbot/skins/common/media/js/wmd/wmd.css
index 3ad615e7..678d70f3 100644
--- a/askbot/skins/common/media/js/wmd/wmd.css
+++ b/askbot/skins/common/media/js/wmd/wmd.css
@@ -10,12 +10,9 @@
#wmd-button-bar
{
background: url(images/editor-toolbar-background.png) repeat-x bottom;
- height:36px;
- border-left:#cce6ec 3px solid;
- border-top:#cce6ec 3px solid;
- border-right:#cce6ec 3px solid;
- float:left;
- width:730px;
+ height: 30px;
+ border: 0;
+ display: block;
}
#wmd-input
@@ -39,10 +36,7 @@
#wmd-button-row
{
position: relative;
- margin-left: 5px;
- margin-right: 5px;
- margin-bottom: 0px;
- margin-top: 10px;
+ margin: 10px 2px 0 2px;
padding: 0px;
height: 20px;
}
@@ -51,9 +45,9 @@
{
width: 1px;
height: 20px;
- margin-left: 14px;
-
- position: absolute;
+ margin-left: 2px;
+ margin-right: 4px;
+ /*position: absolute;*/
background-color: Silver;
display: inline-block;
list-style: none;
@@ -66,7 +60,7 @@
margin-left: 5px;
margin-right: 5px;
- position: absolute;
+ /*position: absolute;*/
background-image: url(images/wmd-buttons.png);
background-repeat: no-repeat;
background-position: 0px 0px;
diff --git a/askbot/skins/common/media/js/wmd/wmd.js b/askbot/skins/common/media/js/wmd/wmd.js
index 1d524361..98af264f 100644
--- a/askbot/skins/common/media/js/wmd/wmd.js
+++ b/askbot/skins/common/media/js/wmd/wmd.js
@@ -69,7 +69,7 @@ Attacklab.wmdBase = function(){
var helpLink = "http://wmd-editor.com/";
var helpHoverTitle = "WMD website";
var helpTarget = "_blank";
- var localUploadFileName = null;
+ var localUploadFileName = null;
// -------------------------------------------------------------------
// END OF YOUR CHANGES
@@ -346,6 +346,9 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
style.marginLeft = style.marginRight = "auto";
form.appendChild(input);
+ //EF. fucus at the end of the input box
+ //putCursorAtEnd($(input));
+
// The upload file input
if(dialogType == 'image' || dialogType == 'file'){
var upload_container = $('<div></div>');
@@ -846,6 +849,11 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
var creationHandle;
var undoMgr; // The undo manager
+
+ var isButtonUsed = function(button){
+ var buttons = $.trim(wmd.wmd_env.buttons).split(/\s+/);
+ return $.inArray(button, buttons) !== -1;
+ };
// Perform the button's action.
var doClick = function(button){
@@ -968,159 +976,198 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
buttonRow.id = "wmd-button-row";
buttonRow = buttonBar.appendChild(buttonRow);
+ if (isButtonUsed('bold')){
+ var boldButton = document.createElement("li");
+ boldButton.className = "wmd-button";
+ boldButton.id = "wmd-bold-button";
+ boldButton.title = toolbar_strong_label;
+ boldButton.XShift = "0px";
+ boldButton.textOp = command.doBold;
+ setupButton(boldButton, true);
+ buttonRow.appendChild(boldButton);
+ }
- var boldButton = document.createElement("li");
- boldButton.className = "wmd-button";
- boldButton.id = "wmd-bold-button";
- boldButton.title = toolbar_strong_label;
- boldButton.XShift = "0px";
- boldButton.textOp = command.doBold;
- setupButton(boldButton, true);
- buttonRow.appendChild(boldButton);
-
- var italicButton = document.createElement("li");
- italicButton.className = "wmd-button";
- italicButton.id = "wmd-italic-button";
- italicButton.title = toolbar_emphasis_label;
- italicButton.XShift = "-20px";
- italicButton.textOp = command.doItalic;
- setupButton(italicButton, true);
- buttonRow.appendChild(italicButton);
+ if (isButtonUsed('italic')){
+ var italicButton = document.createElement("li");
+ italicButton.className = "wmd-button";
+ italicButton.id = "wmd-italic-button";
+ italicButton.title = toolbar_emphasis_label;
+ italicButton.XShift = "-20px";
+ italicButton.textOp = command.doItalic;
+ setupButton(italicButton, true);
+ buttonRow.appendChild(italicButton);
+ }
- var spacer1 = document.createElement("li");
- spacer1.className = "wmd-spacer";
- spacer1.id = "wmd-spacer1";
- buttonRow.appendChild(spacer1);
+ if (
+ isButtonUsed('link') ||
+ isButtonUsed('blockquote') ||
+ isButtonUsed('code') ||
+ isButtonUsed('image') ||
+ isButtonUsed('attachment')
+ ) {
+ var spacer1 = document.createElement("li");
+ spacer1.className = "wmd-spacer";
+ spacer1.id = "wmd-spacer1";
+ buttonRow.appendChild(spacer1);
+ }
- var linkButton = document.createElement("li");
- linkButton.className = "wmd-button";
- linkButton.id = "wmd-link-button";
- linkButton.title = toolbar_hyperlink_label;
- linkButton.XShift = "-40px";
- linkButton.textOp = function(chunk, postProcessing){
- return command.doLinkOrImage(chunk, postProcessing, 'link');
- };
- setupButton(linkButton, true);
- buttonRow.appendChild(linkButton);
+ if (isButtonUsed('link')){
+ var linkButton = document.createElement("li");
+ linkButton.className = "wmd-button";
+ linkButton.id = "wmd-link-button";
+ linkButton.title = toolbar_hyperlink_label;
+ linkButton.XShift = "-40px";
+ linkButton.textOp = function(chunk, postProcessing){
+ return command.doLinkOrImage(chunk, postProcessing, 'link');
+ };
+ setupButton(linkButton, true);
+ buttonRow.appendChild(linkButton);
+ }
- var quoteButton = document.createElement("li");
- quoteButton.className = "wmd-button";
- quoteButton.id = "wmd-quote-button";
- quoteButton.title = toolbar_blockquote_label;
- quoteButton.XShift = "-60px";
- quoteButton.textOp = command.doBlockquote;
- setupButton(quoteButton, true);
- buttonRow.appendChild(quoteButton);
-
- var codeButton = document.createElement("li");
- codeButton.className = "wmd-button";
- codeButton.id = "wmd-code-button";
- codeButton.title = toolbar_code_label;
- codeButton.XShift = "-80px";
- codeButton.textOp = command.doCode;
- setupButton(codeButton, true);
- buttonRow.appendChild(codeButton);
+ if (isButtonUsed('blockquote')){
+ var quoteButton = document.createElement("li");
+ quoteButton.className = "wmd-button";
+ quoteButton.id = "wmd-quote-button";
+ quoteButton.title = toolbar_blockquote_label;
+ quoteButton.XShift = "-60px";
+ quoteButton.textOp = command.doBlockquote;
+ setupButton(quoteButton, true);
+ buttonRow.appendChild(quoteButton);
+ }
+
+ if (isButtonUsed('code')){
+ var codeButton = document.createElement("li");
+ codeButton.className = "wmd-button";
+ codeButton.id = "wmd-code-button";
+ codeButton.title = toolbar_code_label;
+ codeButton.XShift = "-80px";
+ codeButton.textOp = command.doCode;
+ setupButton(codeButton, true);
+ buttonRow.appendChild(codeButton);
+ }
- var imageButton = document.createElement("li");
- imageButton.className = "wmd-button";
- imageButton.id = "wmd-image-button";
- imageButton.title = toolbar_image_label;
- imageButton.XShift = "-100px";
- imageButton.textOp = function(chunk, postProcessing){
- return command.doLinkOrImage(chunk, postProcessing, 'image');
- };
- setupButton(imageButton, true);
- buttonRow.appendChild(imageButton);
+ if (isButtonUsed('image')){
+ var imageButton = document.createElement("li");
+ imageButton.className = "wmd-button";
+ imageButton.id = "wmd-image-button";
+ imageButton.title = toolbar_image_label;
+ imageButton.XShift = "-100px";
+ imageButton.textOp = function(chunk, postProcessing){
+ return command.doLinkOrImage(chunk, postProcessing, 'image');
+ };
+ setupButton(imageButton, true);
+ buttonRow.appendChild(imageButton);
+ }
- var attachmentButton = document.createElement("li");
- attachmentButton.className = "wmd-button";
- attachmentButton.id = "wmd-attachment-button";
- attachmentButton.title = toolbar_attachment_label;
- attachmentButton.XShift = "-120px";
- attachmentButton.textOp = function(chunk, postProcessing){
- return command.doLinkOrImage(chunk, postProcessing, 'file');
- };
- setupButton(attachmentButton, true);
- buttonRow.appendChild(attachmentButton);
+ if (isButtonUsed('attachment')){
+ var attachmentButton = document.createElement("li");
+ attachmentButton.className = "wmd-button";
+ attachmentButton.id = "wmd-attachment-button";
+ attachmentButton.title = toolbar_attachment_label;
+ attachmentButton.XShift = "-120px";
+ attachmentButton.textOp = function(chunk, postProcessing){
+ return command.doLinkOrImage(chunk, postProcessing, 'file');
+ };
+ setupButton(attachmentButton, true);
+ buttonRow.appendChild(attachmentButton);
+ }
- var spacer2 = document.createElement("li");
- spacer2.className = "wmd-spacer";
- spacer2.id = "wmd-spacer2";
- buttonRow.appendChild(spacer2);
+ if (
+ isButtonUsed('ol') ||
+ isButtonUsed('ul') ||
+ isButtonUsed('heading') ||
+ isButtonUsed('hr')
+ ) {
+ var spacer2 = document.createElement("li");
+ spacer2.className = "wmd-spacer";
+ spacer2.id = "wmd-spacer2";
+ buttonRow.appendChild(spacer2);
+ }
- var olistButton = document.createElement("li");
- olistButton.className = "wmd-button";
- olistButton.id = "wmd-olist-button";
- olistButton.title = toolbar_numbered_label;
- olistButton.XShift = "-140px";
- olistButton.textOp = function(chunk, postProcessing){
- command.doList(chunk, postProcessing, true);
- };
- setupButton(olistButton, true);
- buttonRow.appendChild(olistButton);
-
- var ulistButton = document.createElement("li");
- ulistButton.className = "wmd-button";
- ulistButton.id = "wmd-ulist-button";
- ulistButton.title = toolbar_bulleted_label;
- ulistButton.XShift = "-160px";
- ulistButton.textOp = function(chunk, postProcessing){
- command.doList(chunk, postProcessing, false);
- };
- setupButton(ulistButton, true);
- buttonRow.appendChild(ulistButton);
-
- var headingButton = document.createElement("li");
- headingButton.className = "wmd-button";
- headingButton.id = "wmd-heading-button";
- headingButton.title = toolbar_heading_label;
- headingButton.XShift = "-180px";
- headingButton.textOp = command.doHeading;
- setupButton(headingButton, true);
- buttonRow.appendChild(headingButton);
-
- var hrButton = document.createElement("li");
- hrButton.className = "wmd-button";
- hrButton.id = "wmd-hr-button";
- hrButton.title = toolbar_horizontal_label;
- hrButton.XShift = "-200px";
- hrButton.textOp = command.doHorizontalRule;
- setupButton(hrButton, true);
- buttonRow.appendChild(hrButton);
-
- var spacer3 = document.createElement("li");
- spacer3.className = "wmd-spacer";
- spacer3.id = "wmd-spacer3";
- buttonRow.appendChild(spacer3);
-
- var undoButton = document.createElement("li");
- undoButton.className = "wmd-button";
- undoButton.id = "wmd-undo-button";
- undoButton.title = toolbar_undo_label;
- undoButton.XShift = "-220px";
- undoButton.execute = function(manager){
- manager.undo();
- };
- setupButton(undoButton, true);
- buttonRow.appendChild(undoButton);
+ if (isButtonUsed('ol')) {
+ var olistButton = document.createElement("li");
+ olistButton.className = "wmd-button";
+ olistButton.id = "wmd-olist-button";
+ olistButton.title = toolbar_numbered_label;
+ olistButton.XShift = "-140px";
+ olistButton.textOp = function(chunk, postProcessing){
+ command.doList(chunk, postProcessing, true);
+ };
+ setupButton(olistButton, true);
+ buttonRow.appendChild(olistButton);
+ }
- var redoButton = document.createElement("li");
- redoButton.className = "wmd-button";
- redoButton.id = "wmd-redo-button";
- redoButton.title = toolbar_redo_label;
- if (/win/.test(nav.platform.toLowerCase())) {
- redoButton.title = toolbar_redo_label;
- }
- else {
- // mac and other non-Windows platforms
- redoButton.title = gettext('redo') + " - Ctrl+Shift+Z";
- }
- redoButton.XShift = "-240px";
- redoButton.execute = function(manager){
- manager.redo();
- };
- setupButton(redoButton, true);
- buttonRow.appendChild(redoButton);
+ if (isButtonUsed('ul')) {
+ var ulistButton = document.createElement("li");
+ ulistButton.className = "wmd-button";
+ ulistButton.id = "wmd-ulist-button";
+ ulistButton.title = toolbar_bulleted_label;
+ ulistButton.XShift = "-160px";
+ ulistButton.textOp = function(chunk, postProcessing){
+ command.doList(chunk, postProcessing, false);
+ };
+ setupButton(ulistButton, true);
+ buttonRow.appendChild(ulistButton);
+ }
+
+ if (isButtonUsed('heading')) {
+ var headingButton = document.createElement("li");
+ headingButton.className = "wmd-button";
+ headingButton.id = "wmd-heading-button";
+ headingButton.title = toolbar_heading_label;
+ headingButton.XShift = "-180px";
+ headingButton.textOp = command.doHeading;
+ setupButton(headingButton, true);
+ buttonRow.appendChild(headingButton);
+ }
+
+ if (isButtonUsed('hr')) {
+ var hrButton = document.createElement("li");
+ hrButton.className = "wmd-button";
+ hrButton.id = "wmd-hr-button";
+ hrButton.title = toolbar_horizontal_label;
+ hrButton.XShift = "-200px";
+ hrButton.textOp = command.doHorizontalRule;
+ setupButton(hrButton, true);
+ buttonRow.appendChild(hrButton);
+ }
+
+ if (isButtonUsed('undo')){
+ var spacer3 = document.createElement("li");
+ spacer3.className = "wmd-spacer";
+ spacer3.id = "wmd-spacer3";
+ buttonRow.appendChild(spacer3);
+
+ var undoButton = document.createElement("li");
+ undoButton.className = "wmd-button";
+ undoButton.id = "wmd-undo-button";
+ undoButton.title = toolbar_undo_label;
+ undoButton.XShift = "-220px";
+ undoButton.execute = function(manager){
+ manager.undo();
+ };
+ setupButton(undoButton, true);
+ buttonRow.appendChild(undoButton);
+
+ var redoButton = document.createElement("li");
+ redoButton.className = "wmd-button";
+ redoButton.id = "wmd-redo-button";
+ redoButton.title = toolbar_redo_label;
+ if (/win/.test(nav.platform.toLowerCase())) {
+ redoButton.title = toolbar_redo_label;
+ }
+ else {
+ // mac and other non-Windows platforms
+ redoButton.title = gettext('redo') + " - Ctrl+Shift+Z";
+ }
+ redoButton.XShift = "-240px";
+ redoButton.execute = function(manager){
+ manager.redo();
+ };
+ setupButton(redoButton, true);
+ buttonRow.appendChild(redoButton);
+ setUndoRedoButtonStates();
+ }
/*
var helpButton = document.createElement("li");
helpButton.className = "wmd-button";
@@ -1137,7 +1184,6 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
setupButton(helpButton, true);
buttonRow.appendChild(helpButton);
*/
- setUndoRedoButtonStates();
};
var setupEditor = function(){
@@ -1146,7 +1192,7 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
wmd.nativeUndo = true;
}
- if (!wmd.nativeUndo) {
+ if (!wmd.nativeUndo && isButtonUsed('undo')) {
undoMgr = new wmd.undoManager(function(){
previewRefreshCallback();
setUndoRedoButtonStates();
@@ -1814,13 +1860,17 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
wmd.wmd.previewManager = wmd.previewManager;
};
- util.startEditor = function(){
+ util.startEditor = function(start_now, buttons){
if (wmd.wmd_env.autostart === false) {
util.makeAPI();
return;
}
+ if (buttons){
+ wmd.wmd_env.buttons = buttons;
+ }
+
var edit; // The editor (buttons + input + outputs) - the main object.
var previewMgr; // The preview manager.
@@ -1838,7 +1888,11 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){
};
- util.addEvent(top, "load", loadListener);
+ if (start_now){
+ loadListener();
+ } else {
+ util.addEvent(top, "load", loadListener);
+ }
};
wmd.previewManager = function(){
@@ -2424,7 +2478,7 @@ if(!Attacklab.wmd)
mergeEnv(top["wmd_options"]);
Attacklab.full = true;
- var defaultButtons = "bold italic link blockquote code image ol ul heading hr";
+ var defaultButtons = "bold italic link blockquote code image attachment ol ul heading hr";
Attacklab.wmd_env.buttons = Attacklab.wmd_env.buttons || defaultButtons;
};
Attacklab.loadEnv();
diff --git a/askbot/skins/common/templates/authopenid/authopenid_macros.html b/askbot/skins/common/templates/authopenid/authopenid_macros.html
index 477d277c..9d35ac6f 100644
--- a/askbot/skins/common/templates/authopenid/authopenid_macros.html
+++ b/askbot/skins/common/templates/authopenid/authopenid_macros.html
@@ -15,44 +15,55 @@
minor_login_providers = None,
hide_local_login = False,
settings = None,
- logged_in = False
+ logged_in = False,
+ show_buttons = True
)
%}
- <div id="login-icons">
- <ul class="login-icons large">
- {% for login_provider in major_login_providers %}
- {% if login_provider.name == 'local' and hide_local_login == True %}
- {# do nothing here, left if statement this way for simplicity #}
- {% else %}
- {% if logged_in == True and login_provider.type == 'password' and login_provider.password_changeable == False %}
+ {% if show_buttons == True %}{# a hack #}
+ <div id="login-icons">
+ {% if major_login_providers %}
+ <ul class="login-icons large">
+ {% for login_provider in major_login_providers %}
+ {% if login_provider.name == 'local' and hide_local_login == True %}
+ {# do nothing here, left if statement this way for simplicity #}
+ {% else %}
+ {% if logged_in == True and login_provider.type == 'password'
+ and login_provider.password_changeable == False
+ %}
+ {% else %}
+ <li>
+ {{ login_provider_input(login_provider) }}
+ </li>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ </ul>
+ {% endif %}
+ {% if minor_login_providers %}
+ <ul class="login-icons small">
+ {% for login_provider in minor_login_providers %}
+ {% if logged_in == True and login_provider.type == 'password'
+ and login_provider.password_changeable == False
+ %}
{% else %}
<li>
{{ login_provider_input(login_provider) }}
</li>
{% endif %}
- {% endif %}
- {% endfor %}
- </ul>
- <ul class="login-icons small">
- {% for login_provider in minor_login_providers %}
- {% if logged_in == True and login_provider.type == 'password' and login_provider.password_changeable == False %}
- {% else %}
- <li>
- {{ login_provider_input(login_provider) }}
- </li>
- {% endif %}
- {% endfor %}
- </ul>
- </div>
- <fieldset
- id="openid-fs"
- {% if not login_form.openid_login_token.errors %}
- style="display:none;"
- {% endif %}
- >
- <h2 id="openid-heading">{% trans %}Please enter your <span>user name</span>, then sign in{% endtrans %}</h2>
- <p class="hint">{% trans %}(or select another login method above){% endtrans %}</p>
- <input type="text" name="openid_login_token" />
- <input class="submit-b" type="submit" name="openid_login_with_extra_token" value="{% trans %}Sign in{% endtrans %}"/>
- </fieldset>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <fieldset
+ id="openid-fs"
+ {% if not login_form.openid_login_token.errors %}
+ style="display:none;"
+ {% endif %}
+ >
+ <h2 id="openid-heading">{% trans %}Please enter your <span>user name</span>, then sign in{% endtrans %}</h2>
+ <p class="hint">{% trans %}(or select another login method above){% endtrans %}</p>
+ <input type="text" name="openid_login_token" />
+ <input class="submit-b" type="submit" name="openid_login_with_extra_token" value="{% trans %}Sign in{% endtrans %}"/>
+ </fieldset>
+ {% endif %}
{% endmacro %}
diff --git a/askbot/skins/common/templates/authopenid/changeemail.html b/askbot/skins/common/templates/authopenid/changeemail.html
index 1316a048..8afa9c49 100644
--- a/askbot/skins/common/templates/authopenid/changeemail.html
+++ b/askbot/skins/common/templates/authopenid/changeemail.html
@@ -1,20 +1,28 @@
{% extends "one_column_body.html" %}
-{% block title %}{% spaceless %}{% trans %}Change email{% endtrans %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans %}Change Email{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<!-- changeemail.html action_type={{action_type}}-->
{% if action_type=="change" %}
<h1>
{% if user.email %}
- {% trans %}Change email{% endtrans %}
+ {% trans %}Change Email{% endtrans %}
{% else %}
{% trans %}Save your email address{% endtrans %}
{% endif %}
</h1>
<p class="message">
{% if user.email %}
- {% trans %}change {{email}} info{% endtrans %}
+ {% trans %}<span class=\"strong big\">Enter your new email into the box below</span> if
+you'd like to use another email for <strong>update subscriptions</strong>.
+<br>Currently you are using <strong>%(email)s</strong>{% endtrans %}
{% else %}
- {% trans %}here is why email is required, see {{gravatar_faq_url}}{% endtrans %}
+ {% trans %}<span class='strong big'>Please enter your email address in the box below.</span>
+Valid email address is required on this Q&amp;A forum. If you like,
+you can <strong>receive updates</strong> on interesting questions or entire
+forum via email. Also, your email is used to create a unique
+<a href='%(gravatar_faq_url)s'><strong>gravatar</strong></a> image for your
+account. Email addresses are never shown or otherwise shared with anybody
+else.{% endtrans %}
{% endif %}
</p>
{% if msg %}
@@ -26,14 +34,19 @@
<input type="hidden" name="next" value="{{next}}"/>
{% endif %}
<div class="form-row-vertical">
- <label for="id_email">{% if user.email %}{% trans %}Your new Email{% endtrans %}{% else %}{% trans %}Your Email{% endtrans %}{% endif %}</label>
+ <label for="id_email">
+ {%- if user.email %}{% trans %}<strong>Your new Email:</strong>
+(will <strong>not</strong> be shown to anyone, must be valid){% endtrans -%}
+ {%- else -%}
+ {%- trans %}<strong>Your Email</strong> (<i>must be valid, never shown to others</i>){% endtrans -%}
+ {%- endif %}
{% if form.email.errors %}
<p class="error">{{form.email.errors|join(", ")}}</p>
{% endif %}
{{ form.email }}
</div>
<div class="submit-row">
- <input class="submit" type="submit" name="change_email" value="{% if user.email %}{% trans %}Change email{% endtrans %}{% else %}{% trans %}Save Email{% endtrans %}{% endif %}">
+ <input class="submit" type="submit" name="change_email" value="{% if user.email %}{% trans %}Change Email{% endtrans %}{% else %}{% trans %}Save Email{% endtrans %}{% endif %}">
{% if user.email %}
<input class="submit" type="submit" name="cancel" value="{% trans %}Cancel{% endtrans %}">
{% endif %}
@@ -45,35 +58,54 @@
{% trans %}Validate email{% endtrans %}
</div>
<p class="message">
- {% trans %}validate {{email}} info or go to {{change_email_url}}{% endtrans %}
+ {% trans %}<span class=\"strong big\">An email with a validation link has been sent to
+%(email)s.</span> Please <strong>follow the emailed link</strong> with your
+web browser. Email validation is necessary to help insure the proper use of
+email on <span class=\"orange\">Q&amp;A</span>. If you would like to use
+<strong>another email</strong>, please <a
+href='%(change_email_url)s'><strong>change it again</strong></a>.{% endtrans %}
</p>
{% elif action_type=="keep" %}
<div id="main-bar" class="headNormal">
{% trans %}Email not changed{% endtrans %}
</div>
<p class="message">
- {% trans %}old {{email}} kept, if you like go to {{change_email_url}}{% endtrans %}
+ {% trans %}<span class=\"strong big\">Your email address %(email)s has not been changed.
+</span> If you decide to change it later - you can always do it by editing
+it in your user profile or by using the <a
+href='%(change_email_url)s'><strong>previous form</strong></a> again.{% endtrans %}
</p>
{% elif action_type=="done_novalidate" %}
<div id="main-bar" class="headNormal">
{% trans %}Email changed{% endtrans %}
</div>
<p class="message">
- {% trans %}your current {{email}} can be used for this{% endtrans %}
+ {% trans %}
+<span class='big strong'>Your email address is now set to %(email)s.</span>
+Updates on the questions that you like most will be sent to this address.
+Email notifications are sent once a day or less frequently - only when there
+are any news.{% endtrans %}
</p>
{% elif action_type=="validation_complete" %}
<div id="main-bar" class="headNormal">
{% trans %}Email verified{% endtrans %}
</div>
<p class="message">
- {% trans %}thanks for verifying email{% endtrans %}
+ {% trans %}<span class=\"big strong\">Thank you for verifying your email!</span> Now
+you can <strong>ask</strong> and <strong>answer</strong> questions. Also if
+you find a very interesting question you can <strong>subscribe for the
+updates</strong> - then will be notified about changes <strong>once a day</strong>
+or less frequently.{% endtrans %}
</p>
{% elif action_type=="key_not_sent" %}
<div id="main-bar" class="headNormal">
- {% trans %}email key not sent{% endtrans %}
+ {% trans %}Validation email not sent{% endtrans %}
</div>
<p class="message">
- {% trans %}email key not sent {{email}} change email here {{change_link}}{% endtrans %}
+ {% trans %}<span class='big strong'>Your current email address %(email)s has been
+validated before</span> so the new key was not sent. You can <a
+href='%(change_link)s'>change</a> email used for update subscriptions if
+necessary.{% endtrans %}
</p>
{% endif %}
{% endblock %}
diff --git a/askbot/skins/common/templates/authopenid/complete.html b/askbot/skins/common/templates/authopenid/complete.html
index 969a173f..6408c8b4 100644
--- a/askbot/skins/common/templates/authopenid/complete.html
+++ b/askbot/skins/common/templates/authopenid/complete.html
@@ -20,25 +20,7 @@ parameters:
{% block head %}{% endblock %}
{% block title %}{% spaceless %}{% trans %}Registration{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
- <h1>{% trans %}Registration{% endtrans %}</h1>
- <div id="completetxt" >
- <div class="message">
- {% if login_type=='openid' %}
- {% trans %}register new {{provider}} account info, see {{gravatar_faq_url}}{% endtrans %}
- {% elif login_type=='legacy' %}
- {% if external_login_name_is_taken %}
- {% trans %}{{username}} already exists, choose another name for
- {{provider}}. Email is required too, see {{gravatar_faq_url}}
- {% endtrans %}
- {% else %}
- {% trans %}register new external {{provider}} account info, see {{gravatar_faq_url}}{% endtrans %}
- {% endif %}
- {% else %}
- {% trans %}register new Facebook connect account info, see {{gravatar_faq_url}}{% endtrans %}
- {% endif %}
- </div>
- <p style="display:none">{% trans %}This account already exists, please use another.{% endtrans %}</p>
- </div>
+ <h1>{% trans %}User registration{% endtrans %}</h1>
{% if openid_register_form.errors %}
<ul class="errorlist">
{% for error in openid_register_form.non_field_errors() %}
@@ -56,28 +38,33 @@ parameters:
{% endif %}
{{ openid_register_form.next }}
<div class="form-row-vertical">
- <label for="id_username">{% trans %}Screen name label{% endtrans %}</label>
+ <label for="id_username">
+ {%- trans %}<strong>Screen Name</strong> (<i>will be shown to others</i>){% endtrans %}
+ </label>
{% if openid_register_form.username.errors %}
<p class="error">{{ openid_register_form.username.errors|join(", ") }}</p>
{% endif %}
{{ openid_register_form.username }}
</div>
<div class="form-row-vertical margin-bottom">
- <label for="id_email">{% trans %}Email address label{% endtrans %}</label>
+ <label for="id_email">
+ {%- trans %}<strong>Email Address</strong> (<i>will <strong>not</strong> be shared with
+anyone, must be valid</i>)
+ {% endtrans -%}
+ </label>
{% if openid_register_form.email.errors %}
<p class="error">{{ openid_register_form.email.errors|join(", ") }}</p>
{% endif %}
{{ openid_register_form.email }}
</div>
- <p>{% trans %}receive updates motivational blurb{% endtrans %}</p>
+ <p>{% trans %}<strong>Receive forum updates by email</strong>{% endtrans %}</p>
<div class='simple-subscribe-options'>
{{email_feeds_form.subscribe}}
{% if email_feeds_form.errors %}
<p class="error">{% trans %}please select one of the options above{% endtrans %}</p>
{% endif %}
</div>
- <p class='space-above'>{% trans %}Tag filter tool will be your right panel, once you log in.{% endtrans %}</p>
- <div class="submit-row"><input type="submit" class="submit" name="bnewaccount" value="{% trans %}create account{% endtrans %}"/></div>
+ <div class="submit-row"><input type="submit" class="submit" name="bnewaccount" value="{% trans %}Signup{% endtrans %}"/></div>
</form>
</div>
{% endblock %}
diff --git a/askbot/skins/common/templates/authopenid/confirm_email.txt b/askbot/skins/common/templates/authopenid/confirm_email.txt
index 1a0f4e63..5cab7c4c 100644
--- a/askbot/skins/common/templates/authopenid/confirm_email.txt
+++ b/askbot/skins/common/templates/authopenid/confirm_email.txt
@@ -9,4 +9,4 @@
{{signup_url}}
{% trans %}Sincerely,
-Forum Administrator{% endtrans %}
+Q&A Forum Administrator{% endtrans %}
diff --git a/askbot/skins/common/templates/authopenid/email_validation.txt b/askbot/skins/common/templates/authopenid/email_validation.txt
index 9c5baa8a..bd68c61a 100644
--- a/askbot/skins/common/templates/authopenid/email_validation.txt
+++ b/askbot/skins/common/templates/authopenid/email_validation.txt
@@ -6,9 +6,9 @@
{% trans %}Following the link above will help us verify your email address.{% endtrans %}
-{% trans %}If you beleive that this message was sent in mistake -
-no further action is needed. Just ingore this email, we apologize
+{% trans %}If you believe that this message was sent in mistake -
+no further action is needed. Just ignore this email, we apologize
for any inconvenience{% endtrans %}
{% trans %}Sincerely,
-Forum Administrator{% endtrans %}
+Q&A Forum Administrator{% endtrans %}
diff --git a/askbot/skins/common/templates/authopenid/providers_javascript.html b/askbot/skins/common/templates/authopenid/providers_javascript.html
index 0fe72eb3..cd9f56b6 100644
--- a/askbot/skins/common/templates/authopenid/providers_javascript.html
+++ b/askbot/skins/common/templates/authopenid/providers_javascript.html
@@ -43,9 +43,9 @@
<script>
$(document).ready(function(){
if (typeof FB != 'undefined'){
- var ret = FB.init({appId: '{{settings.FACEBOOK_KEY}}', status: true, cookie: true, xfbml: true});
- FB.Event.subscribe('auth.sessionChange', function(response){
- if (response.session) {
+ var ret = FB.init({appId: '{{settings.FACEBOOK_KEY}}', status: true, cookie: true, xfbml: true, oauth: true});
+ FB.Event.subscribe('auth.authResponseChange', function(response){
+ if (response.authResponse) {
$('#signin-form').submit();
}
});
diff --git a/askbot/skins/common/templates/authopenid/signin.html b/askbot/skins/common/templates/authopenid/signin.html
index 4c894aa3..f9c0cfea 100644
--- a/askbot/skins/common/templates/authopenid/signin.html
+++ b/askbot/skins/common/templates/authopenid/signin.html
@@ -1,5 +1,6 @@
{% extends "two_column_body.html" %}
{% import "authopenid/authopenid_macros.html" as login_macros %}
+{% from "macros.html" import timeago %}
<!-- signin.html -->
{% block title %}{% spaceless %}{% trans %}User login{% endtrans %}{% endspaceless %}{% endblock %}
{% block forestyle %}
@@ -11,21 +12,21 @@
{% endif %}
{% if answer %}
<div class="message">
- {% trans title=answer.question.title, summary=answer.summary %}
+ {% trans title=answer.question.title|escape, summary=answer.summary|escape %}
Your answer to {{title}} {{summary}} will be posted once you log in
{% endtrans %}
</div>
{% endif %}
{% if question %}
<div class="message">
- {% trans title=question.title, summary=question.summary %}Your question
+ {% trans title=question.title|escape, summary=question.summary|escape %}Your question
{{title}} {{summary}} will be posted once you log in
{% endtrans %}
</div>
{% endif %}
<p id='login-intro'>
{% if view_subtype == 'default' and have_buttons %}
- {% trans %}Take a pick of your favorite service below to sign in using secure OpenID or similar technology. Your external service password always stays confidential and you don't have to rememeber or create another one.{% endtrans %}
+ {% trans %}Choose your favorite service below to sign in using secure OpenID or similar technology. Your external service password always stays confidential and you don't have to rememeber or create another one.{% endtrans %}
{% elif view_subtype == 'add_openid' and have_buttons %}
{% if existing_login_methods %}
{% trans %}It's a good idea to make sure that your existing login methods still work, or add a new one. Please click any of the icons below to check/change or add new login methods.{% endtrans %}
@@ -61,7 +62,8 @@
minor_login_providers = minor_login_providers,
hide_local_login = settings.SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN,
settings = settings,
- logged_in = user.is_authenticated()
+ logged_in = user.is_authenticated(),
+ show_buttons = have_buttons
)
}}
{% if use_password_login == True %}
@@ -83,9 +85,15 @@
>
{{login_form.password_action}}
{% if user.is_anonymous() %}
- <h2 id="password-heading">
- {% trans %}Please enter your <span>user name and password</span>, then sign in{% endtrans %}
- </h2>
+ {% if have_buttons %}
+ <h2 id="password-heading">
+ {% trans %}or enter your <span>user name and password</span>, then sign in{% endtrans %}
+ </h2>
+ {% else %}
+ <h1 class="section-title">
+ {% trans %}Please, sign in{% endtrans %}
+ </h1>
+ {% endif %}
{% if have_buttons %}
<p class="hint">{% trans %}(or select another login method above){% endtrans %}</p>
{% endif %}
@@ -103,7 +111,7 @@
</tr>
</table>
<p id="local_login_buttons">
- <input class="submit-b" name="login_with_password" type="submit" value="{% trans %}Login{% endtrans %}" />
+ <input class="submit-b" name="login_with_password" type="submit" value="{% trans %}Sign in{% endtrans %}" />
{% if settings.USE_LDAP_FOR_PASSWORD_LOGIN == False %}
<a class="create-password-account" style="vertical-align:middle" href="{% url user_signup_with_password %}?login_provider=local">{% trans %}Create a password-protected account{% endtrans %}</a>
{% endif %}
@@ -117,6 +125,8 @@
<td><label for="id_new_password">{% trans %}New password{% endtrans %}</label></td>
<td>
{{login_form.new_password}}
+ </td>
+ <td>
<span class="error">{{login_form.new_password.errors[0]}}</span>
</td>
</tr>
@@ -124,6 +134,8 @@
<td><label for="id_new_password_retyped">{% trans %}Please, retype{% endtrans %}</label></td>
<td>
{{login_form.new_password_retyped}}
+ </td>
+ <td>
<span class="error">{{login_form.new_password_retyped.errors[0]}}</span>
</td>
</tr>
@@ -158,7 +170,7 @@
</td>
<td>
{% if login_method.last_used_timestamp %}
- {{login_method.last_used_timestamp|diff_date}}
+ {{ timeago(login_method.last_used_timestamp) }}
{% endif %}
</td>
<td>
@@ -209,33 +221,7 @@
{% endif %}
{% endif %}
{% endblock %}
-
-{% block sidebar %}
- {% if have_buttons %}
- <div class="box">
- <h2>{% trans %}Why use OpenID?{% endtrans %}</h2>
- <ul>
- <li>
- {% trans %}with openid it is easier{% endtrans %}
- </li>
- <li>
- {% trans %}reuse openid{% endtrans %}
- </li>
- <li>
- {% trans %}openid is widely adopted{% endtrans %}
- </li>
- <li>
- {% trans %}openid is supported open standard{% endtrans %}
- </li>
- </ul>
- <p class="info-box-follow-up-links">
- <a href="http://openid.net/what/" target="_blank">{% trans %}Find out more{% endtrans %} »</a><br/>
- <a href="http://openid.net/get/" target="_blank">{% trans %}Get OpenID{% endtrans %} »</a>
- </p>
- </div>
- {% endif %}
-{% endblock%}
-{%block endjs%}
-{%include "authopenid/providers_javascript.html" %}
-{%endblock%}
+{% block endjs %}
+{% include "authopenid/providers_javascript.html" %}
+{% endblock %}
<!-- end signin.html -->
diff --git a/askbot/skins/common/templates/authopenid/signup_with_password.html b/askbot/skins/common/templates/authopenid/signup_with_password.html
index 9911facf..e65cd518 100644
--- a/askbot/skins/common/templates/authopenid/signup_with_password.html
+++ b/askbot/skins/common/templates/authopenid/signup_with_password.html
@@ -22,8 +22,12 @@
</form>
<h2>{% trans %}or create a new user name and password here{% endtrans %}</h2>
{% else %}
- <h1>{% trans %}Create login name and password{% endtrans %}</h1>
- <p class="message">{% trans %}Traditional signup info{% endtrans %}</p>
+ <h1 class="section-title">{% trans %}Create login name and password{% endtrans %}</h1>
+ <!--p class="message">{% trans %}<span class='strong big'>If you prefer, create your forum login name and
+password here. However</span>, please keep in mind that we also support
+<strong>OpenID</strong> login method. With <strong>OpenID</strong> you can
+simply reuse your external login (e.g. Gmail or AOL) without ever sharing
+your login details with anyone and having to remember yet another password.{% endtrans %}</p-->
{%endif%}
<form action="{% url user_signup_with_password %}" method="post" accept-charset="utf-8">{% csrf_token %}
{{form.login_provider}}
@@ -33,7 +37,9 @@
<li><label for="password1_id">{{form.password1.label}}</label>{{form.password1}}{{form.password1.errors}}</li>
<li><label for="password2_id">{{form.password2.label}}</label>{{form.password2}}{{form.password2.errors}}</li>
</ul>
- <p style="margin-top: 10px">{% trans %}receive updates motivational blurb{% endtrans %}</p>
+ <p style="margin-top: 10px">
+ {% trans %}<strong>Receive periodic updates by email</strong>{% endtrans %}
+ </p>
<div class='simple-subscribe-options'>
{{email_feeds_form.subscribe}}
{% if email_feeds_form.errors %}
@@ -44,7 +50,7 @@
<p class="signup_p">{% trans %}Please read and type in the two words below to help us prevent automated account creation.{% endtrans %}</p>
{{form.recaptcha}}
{% endif %}
- <div class="submit-row"><input type="submit" class="submit" value="{% trans %}Create Account{% endtrans %}" />
+ <div class="submit-row"><input type="submit" class="submit" value="{% trans %}Signup{% endtrans %}" />
{% if settings.PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS == False %}
<strong>{% trans %}or{% endtrans %}
<a href="{{ settings.LOGIN_URL }}">{% trans %}return to OpenID login{% endtrans %}</a></strong>
diff --git a/askbot/skins/common/templates/debug_header.html b/askbot/skins/common/templates/debug_header.html
new file mode 100644
index 00000000..e1230265
--- /dev/null
+++ b/askbot/skins/common/templates/debug_header.html
@@ -0,0 +1,27 @@
+{% if settings.USING_RUNSERVER %}
+ {% if settings.DEBUG == False %}
+ <div>
+ <p>
+ You are seeing this message because you are using Django runserver
+ and DEBUG_MODE is False. Runserver should not be used in production.
+ </p>
+ <p>
+ To serve static media in production - please run:
+ <pre>python manage.py collectstatic</pre>
+ </p>
+ <p>
+ If you do not see page styling - set DEBUG_MODE = True.
+ </p>
+ </div>
+ {% endif %}
+{% else %}
+ {% if settings.DEBUG == True %}
+ <div>
+ <p>
+ Debug mode is on, do not use it in production.
+ To turn it off, use DEBUG = False in your
+ settings.py file.
+ </p>
+ </div>
+ {% endif %}
+{% endif %}
diff --git a/askbot/skins/common/templates/question/answer_author_info.html b/askbot/skins/common/templates/question/answer_author_info.html
index f17cb62c..1c729b51 100644
--- a/askbot/skins/common/templates/question/answer_author_info.html
+++ b/askbot/skins/common/templates/question/answer_author_info.html
@@ -1,6 +1,8 @@
{{
macros.post_last_updater_and_creator_info(
answer,
- settings.MIN_REP_TO_EDIT_WIKI
+ settings.MIN_REP_TO_EDIT_WIKI,
+ karma_mode = settings.KARMA_MODE,
+ badges_mode = settings.BADGES_MODE
)
}}
diff --git a/askbot/skins/common/templates/question/answer_comments.html b/askbot/skins/common/templates/question/answer_comments.html
index 1a1e97fb..e6b5e1c5 100644
--- a/askbot/skins/common/templates/question/answer_comments.html
+++ b/askbot/skins/common/templates/question/answer_comments.html
@@ -1,5 +1,5 @@
{{
- macros.post_comments_widget(
+ macros.post_comments_widget(
post = answer,
show_post = show_post,
show_comment = show_comment,
diff --git a/askbot/skins/common/templates/question/answer_controls.html b/askbot/skins/common/templates/question/answer_controls.html
index 562aa9d1..50f40144 100644
--- a/askbot/skins/common/templates/question/answer_controls.html
+++ b/askbot/skins/common/templates/question/answer_controls.html
@@ -1,52 +1,45 @@
-{% set pipe=joiner('<span class="sep">|</span>') %}
-<span class="linksopt">{{ pipe() }}
+{#<span class="action-link swap-qa">
+ <a id="swap-question-with-answer-{{answer.id}}">{% trans %}swap with question{% endtrans %}</a>
+</span>uncomment if needed#}
+<span class="action-link">
<a class="permant-link"
- href="{{ answer.get_absolute_url() }}"
- title="{% trans %}answer permanent link{% endtrans %}">
- {% trans %}permanent link{% endtrans %}
+ href="{{ answer.get_absolute_url(question_post=question) }}"
+ title="{% trans %}permanent link{% endtrans %}">
+ {% trans %}link{% endtrans %}
</a>
</span>
-{% if request.user|can_edit_post(answer) %}{{ pipe() }}
-<span class="action-link"><a class="question-edit" href="{% url edit_answer answer.id %}">{% trans %}edit{% endtrans %}</a></span>
-{% endif %}
-
-{% if request.user|can_remove_all_flags_offensive(answer)%}{{ pipe() }}
-<span id="answer-offensive-remove-all-flag-{{ answer.id }}" class="offensive-flag"
- title="{% trans %}remove all flags{% endtrans %}">
- <a class="question-flag">{% trans %}remove all flags{% endtrans %}</a>
+<span id='post-{{answer.id}}-delete' class="action-link delete-post">
+ <a class="question-delete"
+ >{% if answer.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
+</span>
+{% if answer.offensive_flag_count > 0 %}
+<span
+ id="answer-offensive-remove-flag-{{ answer.id }}"
+ class="action-link offensive-flag"
+ title="{% trans %}remove offensive flag{% endtrans %}"
+>
+ <a class="question-flag">{% trans %}remove flag{% endtrans %}</a>
</span>
-{%endif%}
-
-{% if request.user|can_flag_offensive(answer) %}{{ pipe() }}
-<span id="answer-offensive-flag-{{ answer.id }}" class="offensive-flag"
- title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}">
- <a class="question-flag">{% trans %}flag offensive{% endtrans %}
- {% if request.user|can_see_offensive_flags(answer) %}
- <span class="darkred">{% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %}</span>
- {% endif %}
+<span
+ id="answer-offensive-flag-{{ answer.id }}"
+ class="action-link offensive-flag"
+ title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}"
+>
+ <a class="question-flag">{% trans %}flag offensive{% endtrans %} ({{ answer.offensive_flag_count }})</a>
</a>
</span>
-
-{% elif request.user|can_remove_flag_offensive(answer)%}{{ pipe() }}
-<span id="answer-offensive-remove-flag-{{ answer.id }}" class="offensive-flag"
- title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}">
- <a class="question-flag">{% trans %}remove flag{% endtrans %}
- {% if request.user|can_see_offensive_flags(answer) %}
- <span class="darkred">{% if answer.offensive_flag_count > 0 %}({{ answer.offensive_flag_count }}){% endif %}</span>
- {% endif %}</a>
+{% else %}
+<span
+ id="answer-offensive-flag-{{ answer.id }}"
+ class="action-link offensive-flag"
+ title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}"
+>
+ <a class="question-flag">{% trans %}flag offensive{% endtrans %}</a>
</span>
{% endif %}
-
-{% if request.user|can_delete_post(answer) %}{{ pipe() }}
- {% spaceless %}
- <span class="action-link">
- <a class="question-delete" id="answer-delete-link-{{answer.id}}">
- {% if answer.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
- </span>
- {% endspaceless %}
-{% endif %}
-{% if settings.ALLOW_SWAPPING_QUESTION_WITH_ANSWER and request.user.is_authenticated() and request.user.is_administrator_or_moderator() %}{{ pipe() }}
- <span class="action-link">
- <a id="swap-question-with-answer-{{answer.id}}">{% trans %}swap with question{% endtrans %}</a>
- </span>
-{% endif %}
+<span id='post-{{answer.id}}-edit' class="action-link">
+ <a class="question-edit" href="{% url edit_answer answer.id %}">{% trans %}edit{% endtrans %}</a>
+</span>
+<script type="text/javascript">
+ askbot['functions']['renderPostControls']('{{answer.id}}');
+</script>
diff --git a/askbot/skins/common/templates/question/answer_vote_buttons.html b/askbot/skins/common/templates/question/answer_vote_buttons.html
index 0ff57e4b..242bf2be 100644
--- a/askbot/skins/common/templates/question/answer_vote_buttons.html
+++ b/askbot/skins/common/templates/question/answer_vote_buttons.html
@@ -1,27 +1,10 @@
-{{ macros.post_vote_buttons(
- post = answer,
- visitor_vote = user_answer_votes[answer.id]
- )
-}}
-{% if request.user == question.author or (request.user.is_authenticated() and (request.user.is_moderator() or request.user.is_administrator())) %}
-<img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept"
- {% if answer.accepted %}
- src="{{'/images/vote-accepted-on.png'|media}}"
- {% else %}
- src="{{'/images/vote-accepted.png'|media}}"
- {% endif %}
- alt="{% trans %}mark this answer as correct (click again to undo){% endtrans %}"
- title="{% trans %}mark this answer as correct (click again to undo){% endtrans %}" />
-{% else %}
- {% if answer.accepted %}
- <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept"
- {% if answer.accepted %}
- src="{{'/images/vote-accepted-on.png'|media}}"
+{{ macros.post_vote_buttons(post = answer) }}
+<div
+ id="answer-img-accept-{{ answer.id }}"
+ class="answer-img-accept"
+ {% if answer.accepted() %}
+ title="{% trans %}this answer has been selected as correct{% endtrans %}"
{% else %}
- src="{{'/images/vote-accepted.png'|media}}"
+ title="{% trans %}mark this answer as correct (click again to undo){% endtrans %}"
{% endif %}
- alt="{% trans question_author=question.author.username %}{{question_author}} has selected this answer as correct{% endtrans %}"
- title="{% trans questsion_author=question.author.username%}{{question_author}} has selected this answer as correct{% endtrans %}"
- />
- {% endif %}
-{% endif %}
+></div>
diff --git a/askbot/skins/common/templates/question/closed_question_info.html b/askbot/skins/common/templates/question/closed_question_info.html
index 73ff4e47..f6f3f557 100644
--- a/askbot/skins/common/templates/question/closed_question_info.html
+++ b/askbot/skins/common/templates/question/closed_question_info.html
@@ -1,5 +1,5 @@
<div class="question-status">
-<h3>{% trans close_reason=question.get_close_reason_display() %}The question has been closed for the following reason <b>"{{ close_reason }}"</b> <i>by{% endtrans %}
-<a href="{{ question.closed_by.get_profile_url() }}">{{ question.closed_by.username }}</a> </i><br>
-{% trans closed_at=question.closed_at %}close date {{closed_at}}{% endtrans %}</h3>
+ <h3>{% trans close_reason=thread.get_close_reason_display() %}The question has been closed for the following reason <b>"{{ close_reason }}"</b> <i>by{% endtrans %}
+ <a href="{{ thread.closed_by.get_profile_url() }}">{{ thread.closed_by.username|escape }}</a> </i><br>
+ {% trans closed_at=thread.closed_at %}close date {{closed_at}}{% endtrans %}</h3>
</div>
diff --git a/askbot/skins/common/templates/question/question_author_info.html b/askbot/skins/common/templates/question/question_author_info.html
index e43f8931..c25b7d84 100644
--- a/askbot/skins/common/templates/question/question_author_info.html
+++ b/askbot/skins/common/templates/question/question_author_info.html
@@ -1,6 +1,8 @@
{{
macros.post_last_updater_and_creator_info(
question,
- settings.MIN_REP_TO_EDIT_WIKI
+ settings.MIN_REP_TO_EDIT_WIKI,
+ karma_mode = settings.KARMA_MODE,
+ badges_mode = settings.BADGES_MODE
)
}}
diff --git a/askbot/skins/common/templates/question/question_comments.html b/askbot/skins/common/templates/question/question_comments.html
index 36d175a5..e9d3f724 100644
--- a/askbot/skins/common/templates/question/question_comments.html
+++ b/askbot/skins/common/templates/question/question_comments.html
@@ -1,10 +1,10 @@
{{
macros.post_comments_widget(
- post = question,
- show_post = show_post,
- show_comment = show_comment,
- show_comment_position = show_comment_position,
- user = request.user,
- max_comments = settings.MAX_COMMENTS_TO_SHOW
- )
+ post = question,
+ show_post = show_post,
+ show_comment = show_comment,
+ show_comment_position = show_comment_position,
+ user = request.user,
+ max_comments = settings.MAX_COMMENTS_TO_SHOW
+ )
}}
diff --git a/askbot/skins/common/templates/question/question_controls.html b/askbot/skins/common/templates/question/question_controls.html
index 54e70d11..c782d9ad 100644
--- a/askbot/skins/common/templates/question/question_controls.html
+++ b/askbot/skins/common/templates/question/question_controls.html
@@ -1,50 +1,39 @@
-{% set pipe=joiner('<span class="sep">|</span>') %}
-{% if request.user|can_edit_post(question) %}{{ pipe() }}
- <a class="question-edit" href="{% url edit_question question.id %}">{% trans %}edit{% endtrans %}</a>
-{% endif %}
-{% if request.user|can_retag_question(question) %}{{ pipe() }}
- <a id="retag" class="question-retag"href="{% url retag_question question.id %}">{% trans %}retag{% endtrans %}</a>
- <script type="text/javascript">
- var retagUrl = "{% url retag_question question.id %}";
- </script>
-{% endif %}
-{% if question.closed %}
- {% if request.user|can_reopen_question(question) %}{{ pipe() }}
+<a
+ id="post-{{question.id}}-delete"
+ class="question-delete"
+>{% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
+{% if thread.closed %}
<a class="question-close" href="{% url reopen question.id %}">{% trans %}reopen{% endtrans %}</a>
- {% endif %}
{% else %}
- {% if request.user|can_close_question(question) %}{{ pipe() }}
<a class="question-close" href="{% url close question.id %}">{% trans %}close{% endtrans %}</a>
- {% endif %}
{% endif %}
-
-{% if request.user|can_remove_all_flags_offensive(question)%}{{ pipe() }}
-<span id="question-offensive-remove-all-flag-{{ question.id }}" class="offensive-flag"
- title="{% trans %}remove all flags{% endtrans %}">
- <a class="question-flag">{% trans %}remove all flags{% endtrans %}</a>
-</span>
-{%endif%}
-
-{% if request.user|can_flag_offensive(question) %}{{ pipe() }}
-<span id="question-offensive-flag-{{ question.id }}" class="offensive-flag"
- title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}">
- <a class="question-flag">{% trans %}flag offensive{% endtrans %}
- {% if request.user|can_see_offensive_flags(question) %}
- <span class="darkred">{% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %}</span>
- {% endif %}</a>
-</span>
-
-{% elif request.user|can_remove_flag_offensive(question)%}{{ pipe() }}
-<span id="question-offensive-remove-flag-{{ question.id }}" class="offensive-flag"
- title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}">
- <a class="question-flag">{% trans %}remove flag{% endtrans %}
- {% if request.user|can_see_offensive_flags(question) %}
- <span class="darkred">{% if question.offensive_flag_count > 0 %}({{ question.offensive_flag_count }}){% endif %}</span>
- {% endif %}</a>
-</span>
-
-{% endif %}
-
-{% if request.user|can_delete_post(question) %}{{ pipe() }}
- <a id="question-delete-link-{{question.id}}" class="question-delete">{% if question.deleted %}{% trans %}undelete{% endtrans %}{% else %}{% trans %}delete{% endtrans %}{% endif %}</a>
+{% if question.offensive_flag_count > 0 %}
+ <span
+ id="question-offensive-remove-flag-{{ question.id }}"
+ class="offensive-flag"
+ title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}"
+ >
+ <a class="question-flag">{% trans %}remove flag{% endtrans %}</a>
+ </span>
+ <span
+ id="question-offensive-flag-{{ question.id }}" class="offensive-flag"
+ title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}"
+ >
+ <a class="question-flag">{% trans %}flag offensive{% endtrans %} ({{ question.offensive_flag_count }})</a>
+ </span>
+{% else %}
+ <span
+ id="question-offensive-flag-{{ question.id }}" class="offensive-flag"
+ title="{% trans %}report as offensive (i.e containing spam, advertising, malicious text, etc.){% endtrans %}"
+ >
+ <a class="question-flag">{% trans %}flag offensive{% endtrans %}</a>
+ </span>
{% endif %}
+<script type="text/javascript">
+ var retagUrl = "{% url retag_question question.id %}";
+</script>
+<a id="retag" class="question-retag"href="{% url retag_question question.id %}">{% trans %}retag{% endtrans %}</a>
+<a id="post-{{question.id}}-edit" class="question-edit" href="{% url edit_question question.id %}">{% trans %}edit{% endtrans %}</a>
+<script type="text/javascript">
+ askbot['functions']['renderPostControls']('{{question.id}}');
+</script>
diff --git a/askbot/skins/common/templates/question/question_tags.html b/askbot/skins/common/templates/question/question_tags.html
index d104fe05..4b01be81 100644
--- a/askbot/skins/common/templates/question/question_tags.html
+++ b/askbot/skins/common/templates/question/question_tags.html
@@ -1,7 +1,8 @@
-{{ macros.tag_list_widget(
- tags = question.get_tag_names(),
+{{
+ macros.tag_list_widget(
+ tags = thread.get_tag_names(),
id = 'question-tags',
css_class = 'post-tags tags',
- tag_css_class = 'post-tag',
+ tag_css_class = 'post-tag'
)
}}
diff --git a/askbot/skins/common/templates/question/question_vote_buttons.html b/askbot/skins/common/templates/question/question_vote_buttons.html
index ce6b18ff..6b8774cc 100644
--- a/askbot/skins/common/templates/question/question_vote_buttons.html
+++ b/askbot/skins/common/templates/question/question_vote_buttons.html
@@ -1,4 +1 @@
-{{ macros.post_vote_buttons(
- post = question,
- visitor_vote = user_question_vote)
-}}
+{{ macros.post_vote_buttons(post = question) }}
diff --git a/askbot/skins/common/templates/widgets/edit_post.html b/askbot/skins/common/templates/widgets/edit_post.html
index 16970a78..66f79237 100644
--- a/askbot/skins/common/templates/widgets/edit_post.html
+++ b/askbot/skins/common/templates/widgets/edit_post.html
@@ -7,31 +7,35 @@
</div>
</div>
{% endif %}
-<div id="wmd-button-bar" class="wmd-panel"></div>
-<div class="form-item">
+<div class='wmd-container'>
+ <div id="wmd-button-bar" class="wmd-panel"></div>
{{ post_form.text }}{# this element is resizable and will be wrapped by js #}
+</div>
+<div class="form-item">
<label for="editor" class="form-error">{{ post_form.text.errors }}</label>
</div>
{# need label element for resizable input, b/c form validation won't find span #}
{% if post_type == 'question' %}
<div class="form-item">
- {% if mandatory_tags %}
- <label for="id_tags">
- <strong>{% trans %}tags{% endtrans %},</strong>
- {% trans %}one of these is required{% endtrans %}
- </label>
- {{
- tag_list_widget(
- mandatory_tags,
- make_links = False,
- css_class = 'clearfix'
- )
- }}
- {% else %}
- <label for="id_tags">
- <strong>{% trans %}tags{% endtrans %}:</strong>
+ {% if tags_are_required %}
+ <label for=id_tags">
+ {% if mandatory_tags %}
+ <strong>{% trans %}tags{% endtrans %}</strong>
+ {% trans %}, one of these is required{% endtrans %}
+ {{
+ tag_list_widget(
+ mandatory_tags,
+ make_links = False,
+ css_class = 'clearfix'
+ )
+ }}
+ {% else %}
+ <strong>{% trans %}tags:{% endtrans %}</strong>
{% trans %}(required){% endtrans %}
+ {% endif %}
</label>
+ {% else %}
+ <strong>{% trans %}tags:{% endtrans %}</strong>
{% endif %}
<span class="form-error">{{ post_form.tags.errors }}</span><br/>
{{ post_form.tags }}
diff --git a/askbot/skins/common/templates/widgets/related_tags.html b/askbot/skins/common/templates/widgets/related_tags.html
index 34ea698e..05520998 100644
--- a/askbot/skins/common/templates/widgets/related_tags.html
+++ b/askbot/skins/common/templates/widgets/related_tags.html
@@ -1,6 +1,6 @@
-{% cache 0 "tags" tags search_tags scope sort query context.page context.page_size language_code %}
+{% cache 0 "tags" tags search_tags scope sort query context.page language_code %}
<div class="box">
- <h2>{% trans %}Related tags{% endtrans %}</h2>
+ <h2>{% trans %}Tags{% endtrans %}</h2>
{% if tag_list_type == 'list' %}
<ul id="related-tags" class="tags">
{% for tag in tags %}
@@ -9,13 +9,20 @@
tag.name,
html_tag = 'div',
extra_content = '<span class="tag-number">&#215; ' ~
- tag.local_used_count|intcomma ~ '</span>'
+ tag.local_used_count|intcomma ~ '</span>',
+ search_state = search_state
)}}
</li>
{% endfor %}
</ul>
{% else %}
- {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
+ {{
+ macros.tag_cloud(
+ tags = tags,
+ font_sizes = font_size,
+ search_state = search_state
+ )
+ }}
{% endif %}
</div>
{% endcache %}
diff --git a/askbot/skins/common/templates/widgets/search_bar.html b/askbot/skins/common/templates/widgets/search_bar.html
index 5efe3860..59c4fd58 100644
--- a/askbot/skins/common/templates/widgets/search_bar.html
+++ b/askbot/skins/common/templates/widgets/search_bar.html
@@ -8,7 +8,7 @@
{% elif active_tab == "users" %}
action="{% url users %}"
{% else %}
- action="{% url questions %}"
+ action="{% url questions %}" id="searchForm"
{% endif %}
method="get">
<input type="submit" value="" name="search" class="searchBtn" />
@@ -30,16 +30,16 @@
autocomplete="off"
value="{{ query|default_if_none('') }}"
name="query"
- id="keywords"/>
- {% if query %}{# query is only defined by questions view #}
+ id="keywords"
+ />
<input type="button"
value="X"
name="reset_query"
- {# todo - make sure it works on Enter keypress #}
- onclick="window.location.href='{% url questions %}?reset_query=true'"
- class="cancelSearchBtn"/>
- {% endif %}
-
+ class="cancelSearchBtn"
+ {% if not query %}{# query is only defined by questions view (active_tab) #}
+ style="display: none;"
+ {% endif %}
+ />
</form>
</div>
{% endspaceless %}
diff --git a/askbot/skins/common/templates/widgets/tag_selector.html b/askbot/skins/common/templates/widgets/tag_selector.html
index 7db1912d..7c6fe92e 100644
--- a/askbot/skins/common/templates/widgets/tag_selector.html
+++ b/askbot/skins/common/templates/widgets/tag_selector.html
@@ -6,7 +6,8 @@
macros.tag_list_widget(
interesting_tag_names,
deletable = True,
- css_class = 'interesting marked-tags'
+ css_class = 'interesting marked-tags',
+ search_state = search_state
)
}}
{# todo - add this via js
@@ -14,7 +15,7 @@
format(tag_name = tag_name)
#}
<div class="inputs">
- <input id="interestingTagInput" autocomplete="off" type="text"/>&nbsp;
+ <input id="interestingTagInput" autocomplete="off" type="text"/>
<input id="interestingTagAdd" type="submit" value="{% trans %}add{% endtrans %}"/>
</div>
<h2>{% trans %}Ignored tags{% endtrans %}</h2>
@@ -22,7 +23,8 @@
macros.tag_list_widget(
ignored_tag_names,
deletable = True,
- css_class = 'ignored marked-tags'
+ css_class = 'ignored marked-tags',
+ search_state = search_state
)
}}
{# todo: add this via javascript
@@ -30,17 +32,58 @@
format(tag_name = tag_name)
#}
<div class="inputs">
- <input id="ignoredTagInput" autocomplete="off" type="text"/>&nbsp;
+ <input id="ignoredTagInput" autocomplete="off" type="text"/>
<input id="ignoredTagAdd" type="submit" value="{% trans %}add{% endtrans%}"/>
</div>
- <h3>{% trans %}Display tag filter{% endtrans%}</h3>
+ {% if settings.SUBSCRIBED_TAG_SELECTOR_ENABLED %}
+ <h2>{% trans %}Subscribed tags{% endtrans %}</h2>
+ {{
+ macros.tag_list_widget(
+ subscribed_tag_names,
+ deletable = True,
+ css_class = 'subscribed marked-tags',
+ search_state = search_state
+ )
+ }}
+ {# todo: add this via javascript
+ "remove '%(tag_name)s' from the list of ignored tags"|
+ format(tag_name = tag_name)
+ #}
+ <div class="inputs">
+ <input id="subscribedTagInput" autocomplete="off" type="text"/>
+ <input id="subscribedTagAdd" type="submit" value="{% trans %}add{% endtrans%}"/>
+ </div>
+ {% endif %}
+ <h3>{% trans %}Show only questions from{% endtrans%}</h3>
<div id="displayTagFilterControl">
{{
macros.radio_select(
name = "display_tag_filter_strategy",
value = request.user.display_tag_filter_strategy,
- choices = tag_filter_strategy_choices
+ choices = display_tag_filter_strategy_choices
)
}}
</div>
+ {% if settings.SUBSCRIBED_TAG_SELECTOR_ENABLED %}
+ <h3>{% trans %}Send me email alerts for{% endtrans%}</h3>
+ <div id="emailTagFilterControl">
+ {{
+ macros.radio_select(
+ name = "email_tag_filter_strategy",
+ value = request.user.email_tag_filter_strategy,
+ choices = email_tag_filter_strategy_choices
+ )
+ }}
+ {% if request.user.is_authenticated() %}
+ <p>
+ <a
+ href="{%
+ url user_profile
+ request.user.id, request.user.username|slugify
+ %}?sort=email_subscriptions"
+ >{% trans %}Change frequency of emails{% endtrans %}</a>
+ </p>
+ {% endif %}
+ </div>
+ {% endif %}
</div>
diff --git a/askbot/skins/default/media/bootstrap/bootstrap.zip b/askbot/skins/default/media/bootstrap/bootstrap.zip
new file mode 100644
index 00000000..86a13bb9
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/bootstrap.zip
Binary files differ
diff --git a/askbot/skins/default/media/bootstrap/css/bootstrap.css b/askbot/skins/default/media/bootstrap/css/bootstrap.css
new file mode 100644
index 00000000..3e829732
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/css/bootstrap.css
@@ -0,0 +1,4635 @@
+/*!
+ * Bootstrap v2.0.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix {
+ *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+}
+.clearfix:after {
+ clear: both;
+}
+.hide-text {
+ overflow: hidden;
+ text-indent: 100%;
+ white-space: nowrap;
+}
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 28px;
+ /* Make inputs at least the height of their button counterpart */
+
+ /* Makes inputs behave like true block-level elements */
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+ display: block;
+}
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+audio:not([controls]) {
+ display: none;
+}
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+a:hover,
+a:active {
+ outline: 0;
+}
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ height: auto;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+ vertical-align: middle;
+}
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+button,
+input {
+ *overflow: visible;
+ line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+body {
+ margin: 0;
+ font-family: Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+ color: #333333;
+ background-color: #ffffff;
+}
+a {
+ color: #0088cc;
+ text-decoration: none;
+}
+a:hover {
+ color: #005580;
+ text-decoration: underline;
+}
+.row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+.row:before,
+.row:after {
+ display: table;
+ content: "";
+}
+.row:after {
+ clear: both;
+}
+[class*="span"] {
+ float: left;
+ margin-left: 20px;
+}
+.container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+.span12 {
+ width: 940px;
+}
+.span11 {
+ width: 860px;
+}
+.span10 {
+ width: 780px;
+}
+.span9 {
+ width: 700px;
+}
+.span8 {
+ width: 620px;
+}
+.span7 {
+ width: 540px;
+}
+.span6 {
+ width: 460px;
+}
+.span5 {
+ width: 380px;
+}
+.span4 {
+ width: 300px;
+}
+.span3 {
+ width: 220px;
+}
+.span2 {
+ width: 140px;
+}
+.span1 {
+ width: 60px;
+}
+.offset12 {
+ margin-left: 980px;
+}
+.offset11 {
+ margin-left: 900px;
+}
+.offset10 {
+ margin-left: 820px;
+}
+.offset9 {
+ margin-left: 740px;
+}
+.offset8 {
+ margin-left: 660px;
+}
+.offset7 {
+ margin-left: 580px;
+}
+.offset6 {
+ margin-left: 500px;
+}
+.offset5 {
+ margin-left: 420px;
+}
+.offset4 {
+ margin-left: 340px;
+}
+.offset3 {
+ margin-left: 260px;
+}
+.offset2 {
+ margin-left: 180px;
+}
+.offset1 {
+ margin-left: 100px;
+}
+.row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+.row-fluid:before,
+.row-fluid:after {
+ display: table;
+ content: "";
+}
+.row-fluid:after {
+ clear: both;
+}
+.row-fluid > [class*="span"] {
+ float: left;
+ margin-left: 2.127659574%;
+}
+.row-fluid > [class*="span"]:first-child {
+ margin-left: 0;
+}
+.row-fluid > .span12 {
+ width: 99.99999998999999%;
+}
+.row-fluid > .span11 {
+ width: 91.489361693%;
+}
+.row-fluid > .span10 {
+ width: 82.97872339599999%;
+}
+.row-fluid > .span9 {
+ width: 74.468085099%;
+}
+.row-fluid > .span8 {
+ width: 65.95744680199999%;
+}
+.row-fluid > .span7 {
+ width: 57.446808505%;
+}
+.row-fluid > .span6 {
+ width: 48.93617020799999%;
+}
+.row-fluid > .span5 {
+ width: 40.425531911%;
+}
+.row-fluid > .span4 {
+ width: 31.914893614%;
+}
+.row-fluid > .span3 {
+ width: 23.404255317%;
+}
+.row-fluid > .span2 {
+ width: 14.89361702%;
+}
+.row-fluid > .span1 {
+ width: 6.382978723%;
+}
+.container {
+ margin-left: auto;
+ margin-right: auto;
+ *zoom: 1;
+}
+.container:before,
+.container:after {
+ display: table;
+ content: "";
+}
+.container:after {
+ clear: both;
+}
+.container-fluid {
+ padding-left: 20px;
+ padding-right: 20px;
+ *zoom: 1;
+}
+.container-fluid:before,
+.container-fluid:after {
+ display: table;
+ content: "";
+}
+.container-fluid:after {
+ clear: both;
+}
+p {
+ margin: 0 0 9px;
+ font-family: Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+}
+p small {
+ font-size: 11px;
+ color: #999999;
+}
+.lead {
+ margin-bottom: 18px;
+ font-size: 20px;
+ font-weight: 200;
+ line-height: 27px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0;
+ font-family: inherit;
+ font-weight: bold;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+ font-weight: normal;
+ color: #999999;
+}
+h1 {
+ font-size: 30px;
+ line-height: 36px;
+}
+h1 small {
+ font-size: 18px;
+}
+h2 {
+ font-size: 24px;
+ line-height: 36px;
+}
+h2 small {
+ font-size: 18px;
+}
+h3 {
+ line-height: 27px;
+ font-size: 18px;
+}
+h3 small {
+ font-size: 14px;
+}
+h4,
+h5,
+h6 {
+ line-height: 18px;
+}
+h4 {
+ font-size: 14px;
+}
+h4 small {
+ font-size: 12px;
+}
+h5 {
+ font-size: 12px;
+}
+h6 {
+ font-size: 11px;
+ color: #999999;
+ text-transform: uppercase;
+}
+.page-header {
+ padding-bottom: 17px;
+ margin: 18px 0;
+ border-bottom: 1px solid #eeeeee;
+}
+.page-header h1 {
+ line-height: 1;
+}
+ul,
+ol {
+ padding: 0;
+ margin: 0 0 9px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-bottom: 0;
+}
+ul {
+ list-style: disc;
+}
+ol {
+ list-style: decimal;
+}
+li {
+ line-height: 18px;
+}
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+dl {
+ margin-bottom: 18px;
+}
+dt,
+dd {
+ line-height: 18px;
+}
+dt {
+ font-weight: bold;
+ line-height: 17px;
+}
+dd {
+ margin-left: 9px;
+}
+.dl-horizontal dt {
+ float: left;
+ clear: left;
+ width: 120px;
+ text-align: right;
+}
+.dl-horizontal dd {
+ margin-left: 130px;
+}
+hr {
+ margin: 18px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
+}
+strong {
+ font-weight: bold;
+}
+em {
+ font-style: italic;
+}
+.muted {
+ color: #999999;
+}
+abbr[title] {
+ border-bottom: 1px dotted #ddd;
+ cursor: help;
+}
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 18px;
+ border-left: 5px solid #eeeeee;
+}
+blockquote p {
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 22.5px;
+}
+blockquote small {
+ display: block;
+ line-height: 18px;
+ color: #999999;
+}
+blockquote small:before {
+ content: '\2014 \00A0';
+}
+blockquote.pull-right {
+ float: right;
+ padding-left: 0;
+ padding-right: 15px;
+ border-left: 0;
+ border-right: 5px solid #eeeeee;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+ text-align: right;
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+address {
+ display: block;
+ margin-bottom: 18px;
+ line-height: 18px;
+ font-style: normal;
+}
+small {
+ font-size: 100%;
+}
+cite {
+ font-style: normal;
+}
+code,
+pre {
+ padding: 0 3px 2px;
+ font-family: Menlo, Monaco, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+code {
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+}
+pre {
+ display: block;
+ padding: 8.5px;
+ margin: 0 0 9px;
+ font-size: 12.025px;
+ line-height: 18px;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ white-space: pre;
+ white-space: pre-wrap;
+ word-break: break-all;
+ word-wrap: break-word;
+}
+pre.prettyprint {
+ margin-bottom: 18px;
+}
+pre code {
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+/*.label {
+ padding: 1px 4px 2px;
+ font-size: 10.998px;
+ font-weight: bold;
+ line-height: 13px;
+ color: #ffffff;
+ vertical-align: middle;
+ white-space: nowrap;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #999999;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.label:hover {
+ color: #ffffff;
+ text-decoration: none;
+}*/
+.label-important {
+ background-color: #b94a48;
+}
+.label-important:hover {
+ background-color: #953b39;
+}
+.label-warning {
+ background-color: #f89406;
+}
+.label-warning:hover {
+ background-color: #c67605;
+}
+.label-success {
+ background-color: #468847;
+}
+.label-success:hover {
+ background-color: #356635;
+}
+.label-info {
+ background-color: #3a87ad;
+}
+.label-info:hover {
+ background-color: #2d6987;
+}
+.label-inverse {
+ background-color: #333333;
+}
+.label-inverse:hover {
+ background-color: #1a1a1a;
+}
+.badge {
+ padding: 1px 9px 2px;
+ font-size: 12.025px;
+ font-weight: bold;
+ white-space: nowrap;
+ color: #ffffff;
+ background-color: #999999;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+.badge:hover {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.badge-error {
+ background-color: #b94a48;
+}
+.badge-error:hover {
+ background-color: #953b39;
+}
+.badge-warning {
+ background-color: #f89406;
+}
+.badge-warning:hover {
+ background-color: #c67605;
+}
+.badge-success {
+ background-color: #468847;
+}
+.badge-success:hover {
+ background-color: #356635;
+}
+.badge-info {
+ background-color: #3a87ad;
+}
+.badge-info:hover {
+ background-color: #2d6987;
+}
+.badge-inverse {
+ background-color: #333333;
+}
+.badge-inverse:hover {
+ background-color: #1a1a1a;
+}
+table {
+ max-width: 100%;
+ border-collapse: collapse;
+ border-spacing: 0;
+ background-color: transparent;
+}
+.table {
+ width: 100%;
+ margin-bottom: 18px;
+}
+.table th,
+.table td {
+ padding: 8px;
+ line-height: 18px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+.table th {
+ font-weight: bold;
+}
+.table thead th {
+ vertical-align: bottom;
+}
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+.table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+.table-condensed th,
+.table-condensed td {
+ padding: 4px 5px;
+}
+.table-bordered {
+ border: 1px solid #dddddd;
+ border-left: 0;
+ border-collapse: separate;
+ *border-collapse: collapsed;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.table-bordered th,
+.table-bordered td {
+ border-left: 1px solid #dddddd;
+}
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+ border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child th:first-child,
+.table-bordered tbody:first-child tr:first-child td:first-child {
+ -webkit-border-radius: 4px 0 0 0;
+ -moz-border-radius: 4px 0 0 0;
+ border-radius: 4px 0 0 0;
+}
+.table-bordered thead:first-child tr:first-child th:last-child,
+.table-bordered tbody:first-child tr:first-child td:last-child {
+ -webkit-border-radius: 0 4px 0 0;
+ -moz-border-radius: 0 4px 0 0;
+ border-radius: 0 4px 0 0;
+}
+.table-bordered thead:last-child tr:last-child th:first-child,
+.table-bordered tbody:last-child tr:last-child td:first-child {
+ -webkit-border-radius: 0 0 0 4px;
+ -moz-border-radius: 0 0 0 4px;
+ border-radius: 0 0 0 4px;
+}
+.table-bordered thead:last-child tr:last-child th:last-child,
+.table-bordered tbody:last-child tr:last-child td:last-child {
+ -webkit-border-radius: 0 0 4px 0;
+ -moz-border-radius: 0 0 4px 0;
+ border-radius: 0 0 4px 0;
+}
+.table-striped tbody tr:nth-child(odd) td,
+.table-striped tbody tr:nth-child(odd) th {
+ background-color: #f9f9f9;
+}
+.table tbody tr:hover td,
+.table tbody tr:hover th {
+ background-color: #f5f5f5;
+}
+table .span1 {
+ float: none;
+ width: 44px;
+ margin-left: 0;
+}
+table .span2 {
+ float: none;
+ width: 124px;
+ margin-left: 0;
+}
+table .span3 {
+ float: none;
+ width: 204px;
+ margin-left: 0;
+}
+table .span4 {
+ float: none;
+ width: 284px;
+ margin-left: 0;
+}
+table .span5 {
+ float: none;
+ width: 364px;
+ margin-left: 0;
+}
+table .span6 {
+ float: none;
+ width: 444px;
+ margin-left: 0;
+}
+table .span7 {
+ float: none;
+ width: 524px;
+ margin-left: 0;
+}
+table .span8 {
+ float: none;
+ width: 604px;
+ margin-left: 0;
+}
+table .span9 {
+ float: none;
+ width: 684px;
+ margin-left: 0;
+}
+table .span10 {
+ float: none;
+ width: 764px;
+ margin-left: 0;
+}
+table .span11 {
+ float: none;
+ width: 844px;
+ margin-left: 0;
+}
+table .span12 {
+ float: none;
+ width: 924px;
+ margin-left: 0;
+}
+table .span13 {
+ float: none;
+ width: 1004px;
+ margin-left: 0;
+}
+table .span14 {
+ float: none;
+ width: 1084px;
+ margin-left: 0;
+}
+table .span15 {
+ float: none;
+ width: 1164px;
+ margin-left: 0;
+}
+table .span16 {
+ float: none;
+ width: 1244px;
+ margin-left: 0;
+}
+table .span17 {
+ float: none;
+ width: 1324px;
+ margin-left: 0;
+}
+table .span18 {
+ float: none;
+ width: 1404px;
+ margin-left: 0;
+}
+table .span19 {
+ float: none;
+ width: 1484px;
+ margin-left: 0;
+}
+table .span20 {
+ float: none;
+ width: 1564px;
+ margin-left: 0;
+}
+table .span21 {
+ float: none;
+ width: 1644px;
+ margin-left: 0;
+}
+table .span22 {
+ float: none;
+ width: 1724px;
+ margin-left: 0;
+}
+table .span23 {
+ float: none;
+ width: 1804px;
+ margin-left: 0;
+}
+table .span24 {
+ float: none;
+ width: 1884px;
+ margin-left: 0;
+}
+form {
+ margin: 0 0 18px;
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 27px;
+ font-size: 19.5px;
+ line-height: 36px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #eee;
+}
+legend small {
+ font-size: 13.5px;
+ color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 18px;
+}
+input,
+button,
+select,
+textarea {
+ font-family: Arial, sans-serif;
+}
+label {
+ display: block;
+ margin-bottom: 5px;
+ color: #333333;
+}
+input,
+textarea,
+select,
+.uneditable-input {
+}
+.uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+label input,
+label textarea,
+label select {
+ display: block;
+}
+input[type="image"],
+input[type="checkbox"],
+input[type="radio"] {
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin: 3px 0;
+ *margin-top: 0;
+ /* IE7 */
+
+ line-height: normal;
+ cursor: pointer;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ border: 0 \9;
+ /* IE9 and down */
+
+}
+input[type="image"] {
+ border: 0;
+}
+input[type="file"] {
+ width: auto;
+ padding: initial;
+ line-height: initial;
+ border: initial;
+ background-color: #ffffff;
+ background-color: initial;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ width: auto;
+ height: auto;
+}
+select,
+input[type="file"] {
+ height: 28px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
+
+ line-height: 28px;
+}
+input[type="file"] {
+ line-height: 18px \9;
+}
+select {
+ width: 220px;
+ background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="image"] {
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+textarea {
+ height: auto;
+}
+input[type="hidden"] {
+ display: none;
+}
+.radio,
+.checkbox {
+ padding-left: 18px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -18px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+ padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+input,
+textarea {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+ transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+input:focus,
+textarea:focus {
+ border-color: rgba(82, 168, 236, 0.8);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
+
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus,
+select:focus {
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.input-mini {
+ width: 60px;
+}
+.input-small {
+ width: 90px;
+}
+.input-medium {
+ width: 150px;
+}
+.input-large {
+ width: 210px;
+}
+.input-xlarge {
+ width: 270px;
+}
+.input-xxlarge {
+ width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input {
+ float: none;
+ margin-left: 0;
+}
+input,
+textarea,
+.uneditable-input {
+ margin-left: 0;
+}
+input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 930px;
+}
+input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 850px;
+}
+input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 770px;
+}
+input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 690px;
+}
+input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 610px;
+}
+input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 530px;
+}
+input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 450px;
+}
+input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 370px;
+}
+input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 290px;
+}
+input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 210px;
+}
+input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 130px;
+}
+input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 50px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+ background-color: #eeeeee;
+ border-color: #ddd;
+ cursor: not-allowed;
+}
+.control-group.warning > label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+ color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ color: #c09853;
+ border-color: #c09853;
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: 0 0 6px #dbc59e;
+ -moz-box-shadow: 0 0 6px #dbc59e;
+ box-shadow: 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+.control-group.error > label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+ color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ color: #b94a48;
+ border-color: #b94a48;
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: 0 0 6px #d59392;
+ -moz-box-shadow: 0 0 6px #d59392;
+ box-shadow: 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+.control-group.success > label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+ color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ color: #468847;
+ border-color: #468847;
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+ border-color: #356635;
+ -webkit-box-shadow: 0 0 6px #7aba7b;
+ -moz-box-shadow: 0 0 6px #7aba7b;
+ box-shadow: 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+input:focus:required:invalid,
+textarea:focus:required:invalid,
+select:focus:required:invalid {
+ color: #b94a48;
+ border-color: #ee5f5b;
+}
+input:focus:required:invalid:focus,
+textarea:focus:required:invalid:focus,
+select:focus:required:invalid:focus {
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+ padding: 17px 20px 18px;
+ margin-top: 18px;
+ margin-bottom: 18px;
+ background-color: #eeeeee;
+ border-top: 1px solid #ddd;
+ *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+ display: table;
+ content: "";
+}
+.form-actions:after {
+ clear: both;
+}
+.uneditable-input {
+ display: block;
+ background-color: #ffffff;
+ border-color: #eee;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ cursor: not-allowed;
+}
+:-moz-placeholder {
+ color: #999999;
+}
+::-webkit-input-placeholder {
+ color: #999999;
+}
+.help-block,
+.help-inline {
+ color: #555555;
+}
+.help-block {
+ display: block;
+ margin-bottom: 9px;
+}
+.help-inline {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ vertical-align: middle;
+ padding-left: 5px;
+}
+.input-prepend,
+.input-append {
+ margin-bottom: 5px;
+}
+.input-prepend input,
+.input-append input,
+.input-prepend select,
+.input-append select,
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+ *margin-left: 0;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-prepend input:focus,
+.input-append input:focus,
+.input-prepend select:focus,
+.input-append select:focus,
+.input-prepend .uneditable-input:focus,
+.input-append .uneditable-input:focus {
+ position: relative;
+ z-index: 2;
+}
+.input-prepend .uneditable-input,
+.input-append .uneditable-input {
+ border-left-color: #ccc;
+}
+.input-prepend .add-on,
+.input-append .add-on {
+ display: inline-block;
+ width: auto;
+ min-width: 16px;
+ height: 18px;
+ padding: 4px 5px;
+ font-weight: normal;
+ line-height: 18px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ vertical-align: middle;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+}
+.input-prepend .add-on,
+.input-append .add-on,
+.input-prepend .btn,
+.input-append .btn {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-prepend .active,
+.input-append .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+ margin-right: -1px;
+}
+.input-append input,
+.input-append select .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-append .uneditable-input {
+ border-left-color: #eee;
+ border-right-color: #ccc;
+}
+.input-append .add-on,
+.input-append .btn {
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.search-query {
+ padding-left: 14px;
+ padding-right: 14px;
+ margin-bottom: 0;
+ -webkit-border-radius: 14px;
+ -moz-border-radius: 14px;
+ border-radius: 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+ display: inline-block;
+ margin-bottom: 0;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+ display: none;
+}
+.form-search label,
+.form-inline label {
+ display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+ margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: 0;
+ margin-right: 3px;
+}
+.control-group {
+ margin-bottom: 9px;
+}
+legend + .control-group {
+ margin-top: 18px;
+ -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+ margin-bottom: 18px;
+ *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+ display: table;
+ content: "";
+}
+.form-horizontal .control-group:after {
+ clear: both;
+}
+.form-horizontal .control-label {
+ float: left;
+ width: 140px;
+ padding-top: 5px;
+ text-align: right;
+}
+.form-horizontal .controls {
+ margin-left: 160px;
+ /* Super jank IE7 fix to ensure the inputs in .input-append and input-prepend don't inherit the margin of the parent, in this case .controls */
+
+ *display: inline-block;
+ *margin-left: 0;
+ *padding-left: 20px;
+}
+.form-horizontal .help-block {
+ margin-top: 9px;
+ margin-bottom: 0;
+}
+.form-horizontal .form-actions {
+ padding-left: 160px;
+}
+.btn {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ padding: 4px 10px 4px;
+ margin-bottom: 0;
+ font-size: 13px;
+ line-height: 18px;
+ color: #333333;
+ text-align: center;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ vertical-align: middle;
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(top, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ border: 1px solid #cccccc;
+ border-bottom-color: #b3b3b3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ cursor: pointer;
+ *margin-left: .3em;
+}
+.btn:hover,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+ background-color: #e6e6e6;
+}
+.btn:active,
+.btn.active {
+ background-color: #cccccc \9;
+}
+.btn:first-child {
+ *margin-left: 0;
+}
+.btn:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -ms-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+}
+.btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ outline: 0;
+}
+.btn.disabled,
+.btn[disabled] {
+ cursor: default;
+ background-image: none;
+ background-color: #e6e6e6;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.btn-large {
+ padding: 9px 14px;
+ font-size: 15px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.btn-large [class^="icon-"] {
+ margin-top: 1px;
+}
+.btn-small {
+ padding: 5px 9px;
+ font-size: 11px;
+ line-height: 16px;
+}
+.btn-small [class^="icon-"] {
+ margin-top: -1px;
+}
+.btn-mini {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 14px;
+}
+.btn-primary,
+.btn-primary:hover,
+.btn-warning,
+.btn-warning:hover,
+.btn-danger,
+.btn-danger:hover,
+.btn-success,
+.btn-success:hover,
+.btn-info,
+.btn-info:hover,
+.btn-inverse,
+.btn-inverse:hover {
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ color: #ffffff;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+ color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+ background-color: #0074cc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0055cc);
+ background-image: linear-gradient(top, #0088cc, #0055cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
+ border-color: #0055cc #0055cc #003580;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+ background-color: #0055cc;
+}
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #004099 \9;
+}
+.btn-warning {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(top, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+ background-color: #f89406;
+}
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #c67605 \9;
+}
+.btn-danger {
+ background-color: #da4f49;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(top, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+ background-color: #bd362f;
+}
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #942a25 \9;
+}
+.btn-success {
+ background-color: #5bb75b;
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: -ms-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(top, #62c462, #51a351);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+ background-color: #51a351;
+}
+.btn-success:active,
+.btn-success.active {
+ background-color: #408140 \9;
+}
+.btn-info {
+ background-color: #49afcd;
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(top, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+ background-color: #2f96b4;
+}
+.btn-info:active,
+.btn-info.active {
+ background-color: #24748c \9;
+}
+.btn-inverse {
+ background-color: #414141;
+ background-image: -moz-linear-gradient(top, #555555, #222222);
+ background-image: -ms-linear-gradient(top, #555555, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
+ background-image: -webkit-linear-gradient(top, #555555, #222222);
+ background-image: -o-linear-gradient(top, #555555, #222222);
+ background-image: linear-gradient(top, #555555, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+.btn-inverse:hover,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+ background-color: #222222;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+ background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+ *padding-top: 2px;
+ *padding-bottom: 2px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+ *margin-right: .3em;
+}
+[class^="icon-"]:last-child,
+[class*=" icon-"]:last-child {
+ *margin-left: 0;
+}
+.icon-white {
+ background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+ background-position: 0 0;
+}
+.icon-music {
+ background-position: -24px 0;
+}
+.icon-search {
+ background-position: -48px 0;
+}
+.icon-envelope {
+ background-position: -72px 0;
+}
+.icon-heart {
+ background-position: -96px 0;
+}
+.icon-star {
+ background-position: -120px 0;
+}
+.icon-star-empty {
+ background-position: -144px 0;
+}
+.icon-user {
+ background-position: -168px 0;
+}
+.icon-film {
+ background-position: -192px 0;
+}
+.icon-th-large {
+ background-position: -216px 0;
+}
+.icon-th {
+ background-position: -240px 0;
+}
+.icon-th-list {
+ background-position: -264px 0;
+}
+.icon-ok {
+ background-position: -288px 0;
+}
+.icon-remove {
+ background-position: -312px 0;
+}
+.icon-zoom-in {
+ background-position: -336px 0;
+}
+.icon-zoom-out {
+ background-position: -360px 0;
+}
+.icon-off {
+ background-position: -384px 0;
+}
+.icon-signal {
+ background-position: -408px 0;
+}
+.icon-cog {
+ background-position: -432px 0;
+}
+.icon-trash {
+ background-position: -456px 0;
+}
+.icon-home {
+ background-position: 0 -24px;
+}
+.icon-file {
+ background-position: -24px -24px;
+}
+.icon-time {
+ background-position: -48px -24px;
+}
+.icon-road {
+ background-position: -72px -24px;
+}
+.icon-download-alt {
+ background-position: -96px -24px;
+}
+.icon-download {
+ background-position: -120px -24px;
+}
+.icon-upload {
+ background-position: -144px -24px;
+}
+.icon-inbox {
+ background-position: -168px -24px;
+}
+.icon-play-circle {
+ background-position: -192px -24px;
+}
+.icon-repeat {
+ background-position: -216px -24px;
+}
+.icon-refresh {
+ background-position: -240px -24px;
+}
+.icon-list-alt {
+ background-position: -264px -24px;
+}
+.icon-lock {
+ background-position: -287px -24px;
+}
+.icon-flag {
+ background-position: -312px -24px;
+}
+.icon-headphones {
+ background-position: -336px -24px;
+}
+.icon-volume-off {
+ background-position: -360px -24px;
+}
+.icon-volume-down {
+ background-position: -384px -24px;
+}
+.icon-volume-up {
+ background-position: -408px -24px;
+}
+.icon-qrcode {
+ background-position: -432px -24px;
+}
+.icon-barcode {
+ background-position: -456px -24px;
+}
+.icon-tag {
+ background-position: 0 -48px;
+}
+.icon-tags {
+ background-position: -25px -48px;
+}
+.icon-book {
+ background-position: -48px -48px;
+}
+.icon-bookmark {
+ background-position: -72px -48px;
+}
+.icon-print {
+ background-position: -96px -48px;
+}
+.icon-camera {
+ background-position: -120px -48px;
+}
+.icon-font {
+ background-position: -144px -48px;
+}
+.icon-bold {
+ background-position: -167px -48px;
+}
+.icon-italic {
+ background-position: -192px -48px;
+}
+.icon-text-height {
+ background-position: -216px -48px;
+}
+.icon-text-width {
+ background-position: -240px -48px;
+}
+.icon-align-left {
+ background-position: -264px -48px;
+}
+.icon-align-center {
+ background-position: -288px -48px;
+}
+.icon-align-right {
+ background-position: -312px -48px;
+}
+.icon-align-justify {
+ background-position: -336px -48px;
+}
+.icon-list {
+ background-position: -360px -48px;
+}
+.icon-indent-left {
+ background-position: -384px -48px;
+}
+.icon-indent-right {
+ background-position: -408px -48px;
+}
+.icon-facetime-video {
+ background-position: -432px -48px;
+}
+.icon-picture {
+ background-position: -456px -48px;
+}
+.icon-pencil {
+ background-position: 0 -72px;
+}
+.icon-map-marker {
+ background-position: -24px -72px;
+}
+.icon-adjust {
+ background-position: -48px -72px;
+}
+.icon-tint {
+ background-position: -72px -72px;
+}
+.icon-edit {
+ background-position: -96px -72px;
+}
+.icon-share {
+ background-position: -120px -72px;
+}
+.icon-check {
+ background-position: -144px -72px;
+}
+.icon-move {
+ background-position: -168px -72px;
+}
+.icon-step-backward {
+ background-position: -192px -72px;
+}
+.icon-fast-backward {
+ background-position: -216px -72px;
+}
+.icon-backward {
+ background-position: -240px -72px;
+}
+.icon-play {
+ background-position: -264px -72px;
+}
+.icon-pause {
+ background-position: -288px -72px;
+}
+.icon-stop {
+ background-position: -312px -72px;
+}
+.icon-forward {
+ background-position: -336px -72px;
+}
+.icon-fast-forward {
+ background-position: -360px -72px;
+}
+.icon-step-forward {
+ background-position: -384px -72px;
+}
+.icon-eject {
+ background-position: -408px -72px;
+}
+.icon-chevron-left {
+ background-position: -432px -72px;
+}
+.icon-chevron-right {
+ background-position: -456px -72px;
+}
+.icon-plus-sign {
+ background-position: 0 -96px;
+}
+.icon-minus-sign {
+ background-position: -24px -96px;
+}
+.icon-remove-sign {
+ background-position: -48px -96px;
+}
+.icon-ok-sign {
+ background-position: -72px -96px;
+}
+.icon-question-sign {
+ background-position: -96px -96px;
+}
+.icon-info-sign {
+ background-position: -120px -96px;
+}
+.icon-screenshot {
+ background-position: -144px -96px;
+}
+.icon-remove-circle {
+ background-position: -168px -96px;
+}
+.icon-ok-circle {
+ background-position: -192px -96px;
+}
+.icon-ban-circle {
+ background-position: -216px -96px;
+}
+.icon-arrow-left {
+ background-position: -240px -96px;
+}
+.icon-arrow-right {
+ background-position: -264px -96px;
+}
+.icon-arrow-up {
+ background-position: -289px -96px;
+}
+.icon-arrow-down {
+ background-position: -312px -96px;
+}
+.icon-share-alt {
+ background-position: -336px -96px;
+}
+.icon-resize-full {
+ background-position: -360px -96px;
+}
+.icon-resize-small {
+ background-position: -384px -96px;
+}
+.icon-plus {
+ background-position: -408px -96px;
+}
+.icon-minus {
+ background-position: -433px -96px;
+}
+.icon-asterisk {
+ background-position: -456px -96px;
+}
+.icon-exclamation-sign {
+ background-position: 0 -120px;
+}
+.icon-gift {
+ background-position: -24px -120px;
+}
+.icon-leaf {
+ background-position: -48px -120px;
+}
+.icon-fire {
+ background-position: -72px -120px;
+}
+.icon-eye-open {
+ background-position: -96px -120px;
+}
+.icon-eye-close {
+ background-position: -120px -120px;
+}
+.icon-warning-sign {
+ background-position: -144px -120px;
+}
+.icon-plane {
+ background-position: -168px -120px;
+}
+.icon-calendar {
+ background-position: -192px -120px;
+}
+.icon-random {
+ background-position: -216px -120px;
+}
+.icon-comment {
+ background-position: -240px -120px;
+}
+.icon-magnet {
+ background-position: -264px -120px;
+}
+.icon-chevron-up {
+ background-position: -288px -120px;
+}
+.icon-chevron-down {
+ background-position: -313px -119px;
+}
+.icon-retweet {
+ background-position: -336px -120px;
+}
+.icon-shopping-cart {
+ background-position: -360px -120px;
+}
+.icon-folder-close {
+ background-position: -384px -120px;
+}
+.icon-folder-open {
+ background-position: -408px -120px;
+}
+.icon-resize-vertical {
+ background-position: -432px -119px;
+}
+.icon-resize-horizontal {
+ background-position: -456px -118px;
+}
+.btn-group {
+ position: relative;
+ *zoom: 1;
+ *margin-left: .3em;
+}
+.btn-group:before,
+.btn-group:after {
+ display: table;
+ content: "";
+}
+.btn-group:after {
+ clear: both;
+}
+.btn-group:first-child {
+ *margin-left: 0;
+}
+.btn-group + .btn-group {
+ margin-left: 5px;
+}
+.btn-toolbar {
+ margin-top: 9px;
+ margin-bottom: 9px;
+}
+.btn-toolbar .btn-group {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+.btn-group .btn {
+ position: relative;
+ float: left;
+ margin-left: -1px;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.btn-group .btn:first-child {
+ margin-left: 0;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
+}
+.btn-group .btn:last-child,
+.btn-group .dropdown-toggle {
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+}
+.btn-group .btn.large:first-child {
+ margin-left: 0;
+ -webkit-border-top-left-radius: 6px;
+ -moz-border-radius-topleft: 6px;
+ border-top-left-radius: 6px;
+ -webkit-border-bottom-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ border-bottom-left-radius: 6px;
+}
+.btn-group .btn.large:last-child,
+.btn-group .large.dropdown-toggle {
+ -webkit-border-top-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ -moz-border-radius-bottomright: 6px;
+ border-bottom-right-radius: 6px;
+}
+.btn-group .btn:hover,
+.btn-group .btn:focus,
+.btn-group .btn:active,
+.btn-group .btn.active {
+ z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+.btn-group .btn-mini.dropdown-toggle {
+ padding-left: 5px;
+ padding-right: 5px;
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+.btn-group .btn-small.dropdown-toggle {
+ *padding-top: 4px;
+ *padding-bottom: 4px;
+}
+.btn-group .btn-large.dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open {
+ *z-index: 1000;
+}
+.btn-group.open .dropdown-menu {
+ display: block;
+ margin-top: 1px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.btn-group.open .dropdown-toggle {
+ background-image: none;
+ -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.btn .caret {
+ margin-top: 7px;
+ margin-left: 0;
+}
+.btn:hover .caret,
+.open.btn-group .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.btn-mini .caret {
+ margin-top: 5px;
+}
+.btn-small .caret {
+ margin-top: 6px;
+}
+.btn-large .caret {
+ margin-top: 6px;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 5px solid #000000;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 0.75;
+ filter: alpha(opacity=75);
+}
+.nav {
+ margin-left: 0;
+ margin-bottom: 18px;
+ list-style: none;
+}
+.nav > li > a {
+ display: block;
+}
+.nav > li > a:hover {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav .nav-header {
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 18px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
+}
+.nav li + .nav-header {
+ margin-top: 9px;
+}
+.nav-list {
+ padding-left: 15px;
+ padding-right: 15px;
+ margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+ margin-left: -15px;
+ margin-right: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+ padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
+}
+.nav-list [class^="icon-"] {
+ margin-right: 2px;
+}
+.nav-list .divider {
+ height: 1px;
+ margin: 8px 1px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+ *width: 100%;
+ *margin: -5px 0 5px;
+}
+.nav-tabs,
+.nav-pills {
+ *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+ display: table;
+ content: "";
+}
+.nav-tabs:after,
+.nav-pills:after {
+ clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+ float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 18px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover {
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-pills > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover {
+ color: #ffffff;
+ background-color: #0088cc;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li > a {
+ margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+ border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover {
+ border-color: #ddd;
+ z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+ margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+ margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu,
+.nav-pills .dropdown-menu {
+ margin-top: 1px;
+ border-width: 1px;
+}
+.nav-pills .dropdown-menu {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.nav-tabs .dropdown-toggle .caret,
+.nav-pills .dropdown-toggle .caret {
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+ margin-top: 6px;
+}
+.nav-tabs .dropdown-toggle:hover .caret,
+.nav-pills .dropdown-toggle:hover .caret {
+ border-top-color: #005580;
+ border-bottom-color: #005580;
+}
+.nav-tabs .active .dropdown-toggle .caret,
+.nav-pills .active .dropdown-toggle .caret {
+ border-top-color: #333333;
+ border-bottom-color: #333333;
+}
+.nav > .dropdown.active > a:hover {
+ color: #000000;
+ cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > .open.active > a:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
+}
+.nav .open .caret,
+.nav .open.active .caret,
+.nav .open a:hover .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover {
+ border-color: #999999;
+}
+.tabbable {
+ *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ content: "";
+}
+.tabbable:after {
+ clear: both;
+}
+.tab-content {
+ display: table;
+ width: 100%;
+}
+.tabs-below .nav-tabs,
+.tabs-right .nav-tabs,
+.tabs-left .nav-tabs {
+ border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+ display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+ display: block;
+}
+.tabs-below .nav-tabs {
+ border-top: 1px solid #ddd;
+}
+.tabs-below .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+.tabs-below .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.tabs-below .nav-tabs > li > a:hover {
+ border-bottom-color: transparent;
+ border-top-color: #ddd;
+}
+.tabs-below .nav-tabs .active > a,
+.tabs-below .nav-tabs .active > a:hover {
+ border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left .nav-tabs > li,
+.tabs-right .nav-tabs > li {
+ float: none;
+}
+.tabs-left .nav-tabs > li > a,
+.tabs-right .nav-tabs > li > a {
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+.tabs-left .nav-tabs {
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
+}
+.tabs-left .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+.tabs-left .nav-tabs > li > a:hover {
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left .nav-tabs .active > a,
+.tabs-left .nav-tabs .active > a:hover {
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
+}
+.tabs-right .nav-tabs {
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
+}
+.tabs-right .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+.tabs-right .nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right .nav-tabs .active > a,
+.tabs-right .nav-tabs .active > a:hover {
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
+}
+.navbar {
+ *position: relative;
+ *z-index: 2;
+ overflow: visible;
+ margin-bottom: 18px;
+}
+.navbar-inner {
+ padding-left: 20px;
+ padding-right: 20px;
+ background-color: #2c2c2c;
+ background-image: -moz-linear-gradient(top, #333333, #222222);
+ background-image: -ms-linear-gradient(top, #333333, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
+ background-image: -o-linear-gradient(top, #333333, #222222);
+ background-image: linear-gradient(top, #333333, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+}
+.navbar .container {
+ width: auto;
+}
+.btn-navbar {
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-left: 5px;
+ margin-right: 5px;
+ background-color: #2c2c2c;
+ background-image: -moz-linear-gradient(top, #333333, #222222);
+ background-image: -ms-linear-gradient(top, #333333, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
+ background-image: -o-linear-gradient(top, #333333, #222222);
+ background-image: linear-gradient(top, #333333, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+.btn-navbar:hover,
+.btn-navbar:active,
+.btn-navbar.active,
+.btn-navbar.disabled,
+.btn-navbar[disabled] {
+ background-color: #222222;
+}
+.btn-navbar:active,
+.btn-navbar.active {
+ background-color: #080808 \9;
+}
+.btn-navbar .icon-bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+ margin-top: 3px;
+}
+.nav-collapse.collapse {
+ height: auto;
+}
+.navbar {
+ color: #999999;
+}
+.navbar .brand:hover {
+ text-decoration: none;
+}
+.navbar .brand {
+ float: left;
+ display: block;
+ padding: 8px 20px 12px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ line-height: 1;
+ color: #ffffff;
+}
+.navbar .navbar-text {
+ margin-bottom: 0;
+ line-height: 40px;
+}
+.navbar .btn,
+.navbar .btn-group {
+ margin-top: 5px;
+}
+.navbar .btn-group .btn {
+ margin-top: 0;
+}
+.navbar-form {
+ margin-bottom: 0;
+ *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+ display: table;
+ content: "";
+}
+.navbar-form:after {
+ clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+ margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select {
+ display: inline-block;
+ margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+ margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+ margin-top: 6px;
+ white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+ margin-top: 0;
+}
+.navbar-search {
+ position: relative;
+ float: left;
+ margin-top: 6px;
+ margin-bottom: 0;
+}
+.navbar-search .search-query {
+ padding: 4px 9px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ color: #ffffff;
+ background-color: #626262;
+ border: 1px solid #151515;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -ms-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+.navbar-search .search-query:-moz-placeholder {
+ color: #cccccc;
+}
+.navbar-search .search-query::-webkit-input-placeholder {
+ color: #cccccc;
+}
+.navbar-search .search-query:focus,
+.navbar-search .search-query.focused {
+ padding: 5px 10px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ outline: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+.navbar-fixed-top {
+ top: 0;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+}
+.navbar .nav {
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+ float: right;
+}
+.navbar .nav > li {
+ display: block;
+ float: left;
+}
+.navbar .nav > li > a {
+ float: none;
+ padding: 10px 10px 11px;
+ line-height: 19px;
+ color: #999999;
+ text-decoration: none;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar .nav > li > a:hover {
+ background-color: transparent;
+ color: #ffffff;
+ text-decoration: none;
+}
+.navbar .nav .active > a,
+.navbar .nav .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #222222;
+}
+.navbar .divider-vertical {
+ height: 40px;
+ width: 1px;
+ margin: 0 9px;
+ overflow: hidden;
+ background-color: #222222;
+ border-right: 1px solid #333333;
+}
+.navbar .nav.pull-right {
+ margin-left: 10px;
+ margin-right: 0;
+}
+.navbar .dropdown-menu {
+ margin-top: 1px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.navbar .dropdown-menu:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+ top: -7px;
+ left: 9px;
+}
+.navbar .dropdown-menu:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ position: absolute;
+ top: -6px;
+ left: 10px;
+}
+.navbar-fixed-bottom .dropdown-menu:before {
+ border-top: 7px solid #ccc;
+ border-top-color: rgba(0, 0, 0, 0.2);
+ border-bottom: 0;
+ bottom: -7px;
+ top: auto;
+}
+.navbar-fixed-bottom .dropdown-menu:after {
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+ bottom: -6px;
+ top: auto;
+}
+.navbar .nav .dropdown-toggle .caret,
+.navbar .nav .open.dropdown .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+.navbar .nav .active .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.navbar .nav .open > .dropdown-toggle,
+.navbar .nav .active > .dropdown-toggle,
+.navbar .nav .open.active > .dropdown-toggle {
+ background-color: transparent;
+}
+.navbar .nav .active > .dropdown-toggle:hover {
+ color: #ffffff;
+}
+.navbar .nav.pull-right .dropdown-menu,
+.navbar .nav .dropdown-menu.pull-right {
+ left: auto;
+ right: 0;
+}
+.navbar .nav.pull-right .dropdown-menu:before,
+.navbar .nav .dropdown-menu.pull-right:before {
+ left: auto;
+ right: 12px;
+}
+.navbar .nav.pull-right .dropdown-menu:after,
+.navbar .nav .dropdown-menu.pull-right:after {
+ left: auto;
+ right: 13px;
+}
+.breadcrumb {
+ padding: 7px 14px;
+ margin: 0 0 18px;
+ list-style: none;
+ background-color: #fbfbfb;
+ background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
+ background-image: linear-gradient(top, #ffffff, #f5f5f5);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
+ border: 1px solid #ddd;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+}
+.breadcrumb li {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ text-shadow: 0 1px 0 #ffffff;
+}
+.breadcrumb .divider {
+ padding: 0 5px;
+ color: #999999;
+}
+.breadcrumb .active a {
+ color: #333333;
+}
+.pagination {
+ height: 36px;
+ margin: 18px 0;
+}
+.pagination ul {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ margin-left: 0;
+ margin-bottom: 0;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.pagination li {
+ display: inline;
+}
+.pagination a {
+ float: left;
+ padding: 0 14px;
+ line-height: 34px;
+ text-decoration: none;
+ border: 1px solid #ddd;
+ border-left-width: 0;
+}
+.pagination a:hover,
+.pagination .active a {
+ background-color: #f5f5f5;
+}
+.pagination .active a {
+ color: #999999;
+ cursor: default;
+}
+.pagination .disabled span,
+.pagination .disabled a,
+.pagination .disabled a:hover {
+ color: #999999;
+ background-color: transparent;
+ cursor: default;
+}
+.pagination li:first-child a {
+ border-left-width: 1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.pagination li:last-child a {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.pagination-centered {
+ text-align: center;
+}
+.pagination-right {
+ text-align: right;
+}
+.pager {
+ margin-left: 0;
+ margin-bottom: 18px;
+ list-style: none;
+ text-align: center;
+ *zoom: 1;
+}
+.pager:before,
+.pager:after {
+ display: table;
+ content: "";
+}
+.pager:after {
+ clear: both;
+}
+.pager li {
+ display: inline;
+}
+.pager a {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ /*border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;*/
+}
+.pager a:hover {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.pager .next a {
+ float: right;
+}
+.pager .previous a {
+ float: left;
+}
+.pager .disabled a,
+.pager .disabled a:hover {
+ color: #999999;
+ background-color: #fff;
+ cursor: default;
+}
+.thumbnails {
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
+}
+.thumbnails:before,
+.thumbnails:after {
+ display: table;
+ content: "";
+}
+.thumbnails:after {
+ clear: both;
+}
+.thumbnails > li {
+ float: left;
+ margin: 0 0 18px 20px;
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 1;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+a.thumbnail:hover {
+ border-color: #0088cc;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+.thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+}
+.thumbnail .caption {
+ padding: 9px;
+}
+.alert {
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 18px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ color: #c09853;
+}
+.alert-heading {
+ color: inherit;
+}
+.alert .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 18px;
+}
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #468847;
+}
+.alert-danger,
+.alert-error {
+ background-color: #f2dede;
+ border-color: #eed3d7;
+ color: #b94a48;
+}
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #3a87ad;
+}
+.alert-block {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+ margin-bottom: 0;
+}
+.alert-block p + p {
+ margin-top: 5px;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@-ms-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+.progress {
+ overflow: hidden;
+ height: 18px;
+ margin-bottom: 18px;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.progress .bar {
+ width: 0%;
+ height: 18px;
+ color: #ffffff;
+ font-size: 12px;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -ms-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(top, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -ms-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .bar {
+ background-color: #149bdf;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+.progress.active .bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-danger .bar {
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(top, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
+}
+.progress-danger.progress-striped .bar {
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-success .bar {
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -ms-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(top, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
+}
+.progress-success.progress-striped .bar {
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-info .bar {
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(top, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
+}
+.progress-info.progress-striped .bar {
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-warning .bar {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -ms-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(top, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
+}
+.progress-warning.progress-striped .bar {
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.hero-unit {
+ padding: 60px;
+ margin-bottom: 30px;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.hero-unit h1 {
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ color: inherit;
+ letter-spacing: -1px;
+}
+.hero-unit p {
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 27px;
+ color: inherit;
+}
+.tooltip {
+ position: absolute;
+ z-index: 1020;
+ display: block;
+ visibility: visible;
+ padding: 5px;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.tooltip.top {
+ margin-top: -2px;
+}
+.tooltip.right {
+ margin-left: 2px;
+}
+.tooltip.bottom {
+ margin-top: 2px;
+}
+.tooltip.left {
+ margin-left: -2px;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 5px solid #000000;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #000000;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 5px solid #000000;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ padding: 5px;
+}
+.popover.top {
+ margin-top: -5px;
+}
+.popover.right {
+ margin-left: 5px;
+}
+.popover.bottom {
+ margin-top: 5px;
+}
+.popover.left {
+ margin-left: -5px;
+}
+.popover.top .arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-top: 5px solid #000000;
+}
+.popover.right .arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 5px solid #000000;
+}
+.popover.bottom .arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-left: 5px solid transparent;
+ border-right: 5px solid transparent;
+ border-bottom: 5px solid #000000;
+}
+.popover.left .arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 5px solid #000000;
+}
+.popover .arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+}
+.popover-inner {
+ padding: 3px;
+ width: 280px;
+ overflow: hidden;
+ background: #000000;
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+}
+.popover-title {
+ padding: 9px 15px;
+ line-height: 1;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid #eee;
+ -webkit-border-radius: 3px 3px 0 0;
+ -moz-border-radius: 3px 3px 0 0;
+ border-radius: 3px 3px 0 0;
+}
+.popover-content {
+ padding: 14px;
+ background-color: #ffffff;
+ -webkit-border-radius: 0 0 3px 3px;
+ -moz-border-radius: 0 0 3px 3px;
+ border-radius: 0 0 3px 3px;
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.popover-content p,
+.popover-content ul,
+.popover-content ol {
+ margin-bottom: 0;
+}
+.modal-open .dropdown-menu {
+ z-index: 2050;
+}
+.modal-open .dropdown.open {
+ *z-index: 2050;
+}
+.modal-open .popover {
+ z-index: 2060;
+}
+.modal-open .tooltip {
+ z-index: 2070;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.modal {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ z-index: 1050;
+ overflow: auto;
+ width: 560px;
+ margin: -250px 0 0 -280px;
+ background-color: #ffffff;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ *border: 1px solid #999;
+ /* IE6-7 */
+
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+.modal.fade {
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
+ -moz-transition: opacity .3s linear, top .3s ease-out;
+ -ms-transition: opacity .3s linear, top .3s ease-out;
+ -o-transition: opacity .3s linear, top .3s ease-out;
+ transition: opacity .3s linear, top .3s ease-out;
+ top: -25%;
+}
+.modal.fade.in {
+ top: 50%;
+}
+.modal-header {
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+ margin-top: 2px;
+}
+.modal-body {
+ overflow-y: auto;
+ max-height: 400px;
+ padding: 15px;
+}
+.modal-form {
+ margin-bottom: 0;
+}
+.modal-footer {
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+ *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: "";
+}
+.modal-footer:after {
+ clear: both;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle {
+ *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+ outline: 0;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid #000000;
+ opacity: 0.3;
+ filter: alpha(opacity=30);
+ content: "";
+}
+.dropdown .caret {
+ margin-top: 8px;
+ margin-left: 2px;
+}
+.dropdown:hover .caret,
+.open.dropdown .caret {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ float: left;
+ display: none;
+ min-width: 160px;
+ padding: 4px 0;
+ margin: 0;
+ list-style: none;
+ background-color: #ffffff;
+ border-color: #ccc;
+ border-color: rgba(0, 0, 0, 0.2);
+ border-style: solid;
+ border-width: 1px;
+ -webkit-border-radius: 0 0 5px 5px;
+ -moz-border-radius: 0 0 5px 5px;
+ border-radius: 0 0 5px 5px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 8px 1px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+ *width: 100%;
+ *margin: -5px 0 5px;
+}
+.dropdown-menu a {
+ display: block;
+ padding: 3px 15px;
+ clear: both;
+ font-weight: normal;
+ line-height: 18px;
+ color: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu li > a:hover,
+.dropdown-menu .active > a,
+.dropdown-menu .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+}
+.dropdown.open {
+ *z-index: 1000;
+}
+.dropdown.open .dropdown-toggle {
+ color: #ffffff;
+ background: #ccc;
+ background: rgba(0, 0, 0, 0.3);
+}
+.dropdown.open .dropdown-menu {
+ display: block;
+}
+.pull-right .dropdown-menu {
+ left: auto;
+ right: 0;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "\2191";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+.typeahead {
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.accordion {
+ margin-bottom: 18px;
+}
+.accordion-group {
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.accordion-heading {
+ border-bottom: 0;
+}
+.accordion-heading .accordion-toggle {
+ display: block;
+ padding: 8px 15px;
+}
+.accordion-inner {
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
+}
+.carousel {
+ position: relative;
+ margin-bottom: 18px;
+ line-height: 1;
+}
+.carousel-inner {
+ overflow: hidden;
+ width: 100%;
+ position: relative;
+}
+.carousel .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -ms-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel .item > img {
+ display: block;
+ line-height: 1;
+}
+.carousel .active,
+.carousel .next,
+.carousel .prev {
+ display: block;
+}
+.carousel .active {
+ left: 0;
+}
+.carousel .next,
+.carousel .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel .next {
+ left: 100%;
+}
+.carousel .prev {
+ left: -100%;
+}
+.carousel .next.left,
+.carousel .prev.right {
+ left: 0;
+}
+.carousel .active.left {
+ left: -100%;
+}
+.carousel .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.carousel-control.right {
+ left: auto;
+ right: 15px;
+}
+.carousel-control:hover {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-caption {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 10px 15px 5px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
+}
+.carousel-caption h4,
+.carousel-caption p {
+ color: #ffffff;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #eee;
+ border: 1px solid rgba(0, 0, 0, 0.05);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.well-small {
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.close {
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 18px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover {
+ color: #000000;
+ text-decoration: none;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
+ cursor: pointer;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.hide {
+ display: none;
+}
+.show {
+ display: block;
+}
+.invisible {
+ visibility: hidden;
+}
+.fade {
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -ms-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+ opacity: 0;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -ms-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+ position: relative;
+ overflow: hidden;
+ height: 0;
+}
+.collapse.in {
+ height: auto;
+}
+/*!
+ * Bootstrap Responsive v2.0.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.hidden {
+ display: none;
+ visibility: hidden;
+}
+.visible-phone {
+ display: none;
+}
+.visible-tablet {
+ display: none;
+}
+.visible-desktop {
+ display: block;
+}
+.hidden-phone {
+ display: block;
+}
+.hidden-tablet {
+ display: block;
+}
+.hidden-desktop {
+ display: none;
+}
+@media (max-width: 767px) {
+ .visible-phone {
+ display: block;
+ }
+ .hidden-phone {
+ display: none;
+ }
+ .hidden-desktop {
+ display: block;
+ }
+ .visible-desktop {
+ display: none;
+ }
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .visible-tablet {
+ display: block;
+ }
+ .hidden-tablet {
+ display: none;
+ }
+ .hidden-desktop {
+ display: block;
+ }
+ .visible-desktop {
+ display: none;
+ }
+}
+@media (max-width: 480px) {
+ .nav-collapse {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+ .page-header h1 small {
+ display: block;
+ line-height: 18px;
+ }
+ input[type="checkbox"],
+ input[type="radio"] {
+ border: 1px solid #ccc;
+ }
+ .form-horizontal .control-group > label {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ .form-horizontal .controls {
+ margin-left: 0;
+ }
+ .form-horizontal .control-list {
+ padding-top: 0;
+ }
+ .form-horizontal .form-actions {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .modal {
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ right: 10px;
+ width: auto;
+ margin: 0;
+ }
+ .modal.fade.in {
+ top: auto;
+ }
+ .modal-header .close {
+ padding: 10px;
+ margin: -10px;
+ }
+ .carousel-caption {
+ position: static;
+ }
+}
+@media (max-width: 767px) {
+ body {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .navbar-fixed-top {
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .container {
+ width: auto;
+ }
+ .row-fluid {
+ width: 100%;
+ }
+ .row {
+ margin-left: 0;
+ }
+ .row > [class*="span"],
+ .row-fluid > [class*="span"] {
+ float: none;
+ display: block;
+ width: auto;
+ margin: 0;
+ }
+ .thumbnails [class*="span"] {
+ width: auto;
+ }
+ input[class*="span"],
+ select[class*="span"],
+ textarea[class*="span"],
+ .uneditable-input {
+ display: block;
+ width: 100%;
+ min-height: 28px;
+ /* Make inputs at least the height of their button counterpart */
+
+ /* Makes inputs behave like true block-level elements */
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-prepend input[class*="span"],
+ .input-append input[class*="span"] {
+ width: auto;
+ }
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .row {
+ margin-left: -20px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ content: "";
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ margin-left: 20px;
+ }
+ .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 724px;
+ }
+ .span12 {
+ width: 724px;
+ }
+ .span11 {
+ width: 662px;
+ }
+ .span10 {
+ width: 600px;
+ }
+ .span9 {
+ width: 538px;
+ }
+ .span8 {
+ width: 476px;
+ }
+ .span7 {
+ width: 414px;
+ }
+ .span6 {
+ width: 352px;
+ }
+ .span5 {
+ width: 290px;
+ }
+ .span4 {
+ width: 228px;
+ }
+ .span3 {
+ width: 166px;
+ }
+ .span2 {
+ width: 104px;
+ }
+ .span1 {
+ width: 42px;
+ }
+ .offset12 {
+ margin-left: 764px;
+ }
+ .offset11 {
+ margin-left: 702px;
+ }
+ .offset10 {
+ margin-left: 640px;
+ }
+ .offset9 {
+ margin-left: 578px;
+ }
+ .offset8 {
+ margin-left: 516px;
+ }
+ .offset7 {
+ margin-left: 454px;
+ }
+ .offset6 {
+ margin-left: 392px;
+ }
+ .offset5 {
+ margin-left: 330px;
+ }
+ .offset4 {
+ margin-left: 268px;
+ }
+ .offset3 {
+ margin-left: 206px;
+ }
+ .offset2 {
+ margin-left: 144px;
+ }
+ .offset1 {
+ margin-left: 82px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ content: "";
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid > [class*="span"] {
+ float: left;
+ margin-left: 2.762430939%;
+ }
+ .row-fluid > [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid > .span12 {
+ width: 99.999999993%;
+ }
+ .row-fluid > .span11 {
+ width: 91.436464082%;
+ }
+ .row-fluid > .span10 {
+ width: 82.87292817100001%;
+ }
+ .row-fluid > .span9 {
+ width: 74.30939226%;
+ }
+ .row-fluid > .span8 {
+ width: 65.74585634900001%;
+ }
+ .row-fluid > .span7 {
+ width: 57.182320438000005%;
+ }
+ .row-fluid > .span6 {
+ width: 48.618784527%;
+ }
+ .row-fluid > .span5 {
+ width: 40.055248616%;
+ }
+ .row-fluid > .span4 {
+ width: 31.491712705%;
+ }
+ .row-fluid > .span3 {
+ width: 22.928176794%;
+ }
+ .row-fluid > .span2 {
+ width: 14.364640883%;
+ }
+ .row-fluid > .span1 {
+ width: 5.801104972%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 714px;
+ }
+ input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 652px;
+ }
+ input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 590px;
+ }
+ input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 528px;
+ }
+ input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 466px;
+ }
+ input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 404px;
+ }
+ input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 342px;
+ }
+ input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 280px;
+ }
+ input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 218px;
+ }
+ input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 156px;
+ }
+ input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 94px;
+ }
+ input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 32px;
+ }
+}
+@media (max-width: 979px) {
+ body {
+ padding-top: 0;
+ }
+ .navbar-fixed-top {
+ position: static;
+ margin-bottom: 18px;
+ }
+ .navbar-fixed-top .navbar-inner {
+ padding: 5px;
+ }
+ .navbar .container {
+ width: auto;
+ padding: 0;
+ }
+ .navbar .brand {
+ padding-left: 10px;
+ padding-right: 10px;
+ margin: 0 0 0 -5px;
+ }
+ .navbar .nav-collapse {
+ clear: left;
+ }
+ .navbar .nav {
+ float: none;
+ margin: 0 0 9px;
+ }
+ .navbar .nav > li {
+ float: none;
+ }
+ .navbar .nav > li > a {
+ margin-bottom: 2px;
+ }
+ .navbar .nav > .divider-vertical {
+ display: none;
+ }
+ .navbar .nav .nav-header {
+ color: #999999;
+ text-shadow: none;
+ }
+ .navbar .nav > li > a,
+ .navbar .dropdown-menu a {
+ padding: 6px 15px;
+ font-weight: bold;
+ color: #999999;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ }
+ .navbar .dropdown-menu li + li a {
+ margin-bottom: 2px;
+ }
+ .navbar .nav > li > a:hover,
+ .navbar .dropdown-menu a:hover {
+ background-color: #222222;
+ }
+ .navbar .dropdown-menu {
+ position: static;
+ top: auto;
+ left: auto;
+ float: none;
+ display: block;
+ max-width: none;
+ margin: 0 15px;
+ padding: 0;
+ background-color: transparent;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar .dropdown-menu:before,
+ .navbar .dropdown-menu:after {
+ display: none;
+ }
+ .navbar .dropdown-menu .divider {
+ display: none;
+ }
+ .navbar-form,
+ .navbar-search {
+ float: none;
+ padding: 9px 15px;
+ margin: 9px 0;
+ border-top: 1px solid #222222;
+ border-bottom: 1px solid #222222;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ }
+ .navbar .nav.pull-right {
+ float: none;
+ margin-left: 0;
+ }
+ .navbar-static .navbar-inner {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .btn-navbar {
+ display: block;
+ }
+ .nav-collapse {
+ overflow: hidden;
+ height: 0;
+ }
+}
+@media (min-width: 980px) {
+ .nav-collapse.collapse {
+ height: auto !important;
+ overflow: visible !important;
+ }
+}
+@media (min-width: 1200px) {
+ .row {
+ margin-left: -30px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ content: "";
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ margin-left: 30px;
+ }
+ .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 1170px;
+ }
+ .span12 {
+ width: 1170px;
+ }
+ .span11 {
+ width: 1070px;
+ }
+ .span10 {
+ width: 970px;
+ }
+ .span9 {
+ width: 870px;
+ }
+ .span8 {
+ width: 770px;
+ }
+ .span7 {
+ width: 670px;
+ }
+ .span6 {
+ width: 570px;
+ }
+ .span5 {
+ width: 470px;
+ }
+ .span4 {
+ width: 370px;
+ }
+ .span3 {
+ width: 270px;
+ }
+ .span2 {
+ width: 170px;
+ }
+ .span1 {
+ width: 70px;
+ }
+ .offset12 {
+ margin-left: 1230px;
+ }
+ .offset11 {
+ margin-left: 1130px;
+ }
+ .offset10 {
+ margin-left: 1030px;
+ }
+ .offset9 {
+ margin-left: 930px;
+ }
+ .offset8 {
+ margin-left: 830px;
+ }
+ .offset7 {
+ margin-left: 730px;
+ }
+ .offset6 {
+ margin-left: 630px;
+ }
+ .offset5 {
+ margin-left: 530px;
+ }
+ .offset4 {
+ margin-left: 430px;
+ }
+ .offset3 {
+ margin-left: 330px;
+ }
+ .offset2 {
+ margin-left: 230px;
+ }
+ .offset1 {
+ margin-left: 130px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ content: "";
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid > [class*="span"] {
+ float: left;
+ margin-left: 2.564102564%;
+ }
+ .row-fluid > [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid > .span12 {
+ width: 100%;
+ }
+ .row-fluid > .span11 {
+ width: 91.45299145300001%;
+ }
+ .row-fluid > .span10 {
+ width: 82.905982906%;
+ }
+ .row-fluid > .span9 {
+ width: 74.358974359%;
+ }
+ .row-fluid > .span8 {
+ width: 65.81196581200001%;
+ }
+ .row-fluid > .span7 {
+ width: 57.264957265%;
+ }
+ .row-fluid > .span6 {
+ width: 48.717948718%;
+ }
+ .row-fluid > .span5 {
+ width: 40.170940171000005%;
+ }
+ .row-fluid > .span4 {
+ width: 31.623931624%;
+ }
+ .row-fluid > .span3 {
+ width: 23.076923077%;
+ }
+ .row-fluid > .span2 {
+ width: 14.529914530000001%;
+ }
+ .row-fluid > .span1 {
+ width: 5.982905983%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 1160px;
+ }
+ input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 1060px;
+ }
+ input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 960px;
+ }
+ input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 860px;
+ }
+ input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 760px;
+ }
+ input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 660px;
+ }
+ input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 560px;
+ }
+ input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 460px;
+ }
+ input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 360px;
+ }
+ input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 260px;
+ }
+ input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 160px;
+ }
+ input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 60px;
+ }
+ .thumbnails {
+ margin-left: -30px;
+ }
+ .thumbnails > li {
+ margin-left: 30px;
+ }
+}
diff --git a/askbot/skins/default/media/bootstrap/css/bootstrap.min.css b/askbot/skins/default/media/bootstrap/css/bootstrap.min.css
new file mode 100644
index 00000000..17b18fb6
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/css/bootstrap.min.css
@@ -0,0 +1,706 @@
+/*!
+ * Bootstrap v2.0.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
+.clearfix:after{clear:both;}
+.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
+.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+a:hover,a:active{outline:0;}
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;}
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
+button,input{*overflow:visible;line-height:normal;}
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+body{margin:0;font-family:Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
+a{color:#0088cc;text-decoration:none;}
+a:hover{color:#005580;text-decoration:underline;}
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
+.row:after{clear:both;}
+[class*="span"]{float:left;margin-left:20px;}
+.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
+.span12{width:940px;}
+.span11{width:860px;}
+.span10{width:780px;}
+.span9{width:700px;}
+.span8{width:620px;}
+.span7{width:540px;}
+.span6{width:460px;}
+.span5{width:380px;}
+.span4{width:300px;}
+.span3{width:220px;}
+.span2{width:140px;}
+.span1{width:60px;}
+.offset12{margin-left:980px;}
+.offset11{margin-left:900px;}
+.offset10{margin-left:820px;}
+.offset9{margin-left:740px;}
+.offset8{margin-left:660px;}
+.offset7{margin-left:580px;}
+.offset6{margin-left:500px;}
+.offset5{margin-left:420px;}
+.offset4{margin-left:340px;}
+.offset3{margin-left:260px;}
+.offset2{margin-left:180px;}
+.offset1{margin-left:100px;}
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
+.row-fluid:after{clear:both;}
+.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
+.row-fluid>[class*="span"]:first-child{margin-left:0;}
+.row-fluid > .span12{width:99.99999998999999%;}
+.row-fluid > .span11{width:91.489361693%;}
+.row-fluid > .span10{width:82.97872339599999%;}
+.row-fluid > .span9{width:74.468085099%;}
+.row-fluid > .span8{width:65.95744680199999%;}
+.row-fluid > .span7{width:57.446808505%;}
+.row-fluid > .span6{width:48.93617020799999%;}
+.row-fluid > .span5{width:40.425531911%;}
+.row-fluid > .span4{width:31.914893614%;}
+.row-fluid > .span3{width:23.404255317%;}
+.row-fluid > .span2{width:14.89361702%;}
+.row-fluid > .span1{width:6.382978723%;}
+.container{margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
+.container:after{clear:both;}
+.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
+.container-fluid:after{clear:both;}
+p{margin:0 0 9px;font-family:Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
+.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
+h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
+h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
+h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
+h4,h5,h6{line-height:18px;}
+h4{font-size:14px;}h4 small{font-size:12px;}
+h5{font-size:12px;}
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
+.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
+.page-header h1{line-height:1;}
+ul,ol{padding:0;margin:0 0 9px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:18px;}
+ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
+dl{margin-bottom:18px;}
+dt,dd{line-height:18px;}
+dt{font-weight:bold;line-height:17px;}
+dd{margin-left:9px;}
+.dl-horizontal dt{float:left;clear:left;width:120px;text-align:right;}
+.dl-horizontal dd{margin-left:130px;}
+hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
+strong{font-weight:bold;}
+em{font-style:italic;}
+.muted{color:#999999;}
+abbr[title]{border-bottom:1px dotted #ddd;cursor:help;}
+abbr.initialism{font-size:90%;text-transform:uppercase;}
+blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
+blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
+blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
+small{font-size:100%;}
+cite{font-style:normal;}
+code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
+pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;}pre.prettyprint{margin-bottom:18px;}
+pre code{padding:0;color:inherit;background-color:transparent;border:0;}
+.pre-scrollable{max-height:340px;overflow-y:scroll;}
+.label{padding:1px 4px 2px;font-size:10.998px;font-weight:bold;line-height:13px;color:#ffffff;vertical-align:middle;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.label:hover{color:#ffffff;text-decoration:none;}
+.label-important{background-color:#b94a48;}
+.label-important:hover{background-color:#953b39;}
+.label-warning{background-color:#f89406;}
+.label-warning:hover{background-color:#c67605;}
+.label-success{background-color:#468847;}
+.label-success:hover{background-color:#356635;}
+.label-info{background-color:#3a87ad;}
+.label-info:hover{background-color:#2d6987;}
+.label-inverse{background-color:#333333;}
+.label-inverse:hover{background-color:#1a1a1a;}
+.badge{padding:1px 9px 2px;font-size:12.025px;font-weight:bold;white-space:nowrap;color:#ffffff;background-color:#999999;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
+.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
+.badge-error{background-color:#b94a48;}
+.badge-error:hover{background-color:#953b39;}
+.badge-warning{background-color:#f89406;}
+.badge-warning:hover{background-color:#c67605;}
+.badge-success{background-color:#468847;}
+.badge-success:hover{background-color:#356635;}
+.badge-info{background-color:#3a87ad;}
+.badge-info:hover{background-color:#2d6987;}
+.badge-inverse{background-color:#333333;}
+.badge-inverse:hover{background-color:#1a1a1a;}
+table{max-width:100%;border-collapse:collapse;border-spacing:0;background-color:transparent;}
+.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
+.table th{font-weight:bold;}
+.table thead th{vertical-align:bottom;}
+.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
+.table tbody+tbody{border-top:2px solid #dddddd;}
+.table-condensed th,.table-condensed td{padding:4px 5px;}
+.table-bordered{border:1px solid #dddddd;border-left:0;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
+.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
+.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
+.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
+.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
+.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
+.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
+.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}
+table .span1{float:none;width:44px;margin-left:0;}
+table .span2{float:none;width:124px;margin-left:0;}
+table .span3{float:none;width:204px;margin-left:0;}
+table .span4{float:none;width:284px;margin-left:0;}
+table .span5{float:none;width:364px;margin-left:0;}
+table .span6{float:none;width:444px;margin-left:0;}
+table .span7{float:none;width:524px;margin-left:0;}
+table .span8{float:none;width:604px;margin-left:0;}
+table .span9{float:none;width:684px;margin-left:0;}
+table .span10{float:none;width:764px;margin-left:0;}
+table .span11{float:none;width:844px;margin-left:0;}
+table .span12{float:none;width:924px;margin-left:0;}
+table .span13{float:none;width:1004px;margin-left:0;}
+table .span14{float:none;width:1084px;margin-left:0;}
+table .span15{float:none;width:1164px;margin-left:0;}
+table .span16{float:none;width:1244px;margin-left:0;}
+table .span17{float:none;width:1324px;margin-left:0;}
+table .span18{float:none;width:1404px;margin-left:0;}
+table .span19{float:none;width:1484px;margin-left:0;}
+table .span20{float:none;width:1564px;margin-left:0;}
+table .span21{float:none;width:1644px;margin-left:0;}
+table .span22{float:none;width:1724px;margin-left:0;}
+table .span23{float:none;width:1804px;margin-left:0;}
+table .span24{float:none;width:1884px;margin-left:0;}
+form{margin:0 0 18px;}
+fieldset{padding:0;margin:0;border:0;}
+legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}legend small{font-size:13.5px;color:#999999;}
+label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px;}
+input,button,select,textarea{font-family:Arial,sans-serif;}
+label{display:block;margin-bottom:5px;color:#333333;}
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.uneditable-textarea{width:auto;height:auto;}
+label input,label textarea,label select{display:block;}
+input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \9;}
+input[type="image"]{border:0;}
+input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
+select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
+input[type="file"]{line-height:18px \9;}
+select{width:220px;background-color:#ffffff;}
+select[multiple],select[size]{height:auto;}
+input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+textarea{height:auto;}
+input[type="hidden"]{display:none;}
+.radio,.checkbox{padding-left:18px;}
+.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
+.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
+.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
+.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
+input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
+input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
+input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.input-mini{width:60px;}
+.input-small{width:90px;}
+.input-medium{width:150px;}
+.input-large{width:210px;}
+.input-xlarge{width:270px;}
+.input-xxlarge{width:530px;}
+input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
+input,textarea,.uneditable-input{margin-left:0;}
+input.span12, textarea.span12, .uneditable-input.span12{width:930px;}
+input.span11, textarea.span11, .uneditable-input.span11{width:850px;}
+input.span10, textarea.span10, .uneditable-input.span10{width:770px;}
+input.span9, textarea.span9, .uneditable-input.span9{width:690px;}
+input.span8, textarea.span8, .uneditable-input.span8{width:610px;}
+input.span7, textarea.span7, .uneditable-input.span7{width:530px;}
+input.span6, textarea.span6, .uneditable-input.span6{width:450px;}
+input.span5, textarea.span5, .uneditable-input.span5{width:370px;}
+input.span4, textarea.span4, .uneditable-input.span4{width:290px;}
+input.span3, textarea.span3, .uneditable-input.span3{width:210px;}
+input.span2, textarea.span2, .uneditable-input.span2{width:130px;}
+input.span1, textarea.span1, .uneditable-input.span1{width:50px;}
+input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#eeeeee;border-color:#ddd;cursor:not-allowed;}
+.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
+.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
+.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
+.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
+.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
+.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
+.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
+.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
+.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
+input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
+.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#eeeeee;border-top:1px solid #ddd;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";}
+.form-actions:after{clear:both;}
+.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
+:-moz-placeholder{color:#999999;}
+::-webkit-input-placeholder{color:#999999;}
+.help-block,.help-inline{color:#555555;}
+.help-block{display:block;margin-bottom:9px;}
+.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
+.input-prepend,.input-append{margin-bottom:5px;}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{*margin-left:0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
+.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
+.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #ffffff;vertical-align:middle;background-color:#eeeeee;border:1px solid #ccc;}
+.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
+.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
+.input-append input,.input-append select .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-append .uneditable-input{border-left-color:#eee;border-right-color:#ccc;}
+.input-append .add-on,.input-append .btn{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
+.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;margin-bottom:0;}
+.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
+.form-search label,.form-inline label{display:inline-block;}
+.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
+.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
+.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
+.control-group{margin-bottom:9px;}
+legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
+.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
+.form-horizontal .control-group:after{clear:both;}
+.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right;}
+.form-horizontal .controls{margin-left:160px;*display:inline-block;*margin-left:0;*padding-left:20px;}
+.form-horizontal .help-block{margin-top:9px;margin-bottom:0;}
+.form-horizontal .form-actions{padding-left:160px;}
+.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #cccccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;}
+.btn:active,.btn.active{background-color:#cccccc \9;}
+.btn:first-child{*margin-left:0;}
+.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
+.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0;}
+.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-large [class^="icon-"]{margin-top:1px;}
+.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
+.btn-small [class^="icon-"]{margin-top:-1px;}
+.btn-mini{padding:2px 6px;font-size:11px;line-height:14px;}
+.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
+.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
+.btn-primary{background-color:#0074cc;background-image:-moz-linear-gradient(top, #0088cc, #0055cc);background-image:-ms-linear-gradient(top, #0088cc, #0055cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));background-image:-webkit-linear-gradient(top, #0088cc, #0055cc);background-image:-o-linear-gradient(top, #0088cc, #0055cc);background-image:linear-gradient(top, #0088cc, #0055cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);border-color:#0055cc #0055cc #003580;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0055cc;}
+.btn-primary:active,.btn-primary.active{background-color:#004099 \9;}
+.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
+.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
+.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
+.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
+.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
+.btn-success:active,.btn-success.active{background-color:#408140 \9;}
+.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
+.btn-info:active,.btn-info.active{background-color:#24748c \9;}
+.btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top, #555555, #222222);background-image:-ms-linear-gradient(top, #555555, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));background-image:-webkit-linear-gradient(top, #555555, #222222);background-image:-o-linear-gradient(top, #555555, #222222);background-image:linear-gradient(top, #555555, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222222;}
+.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
+button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
+button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
+button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
+button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
+[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}
+.icon-white{background-image:url("../img/glyphicons-halflings-white.png");}
+.icon-glass{background-position:0 0;}
+.icon-music{background-position:-24px 0;}
+.icon-search{background-position:-48px 0;}
+.icon-envelope{background-position:-72px 0;}
+.icon-heart{background-position:-96px 0;}
+.icon-star{background-position:-120px 0;}
+.icon-star-empty{background-position:-144px 0;}
+.icon-user{background-position:-168px 0;}
+.icon-film{background-position:-192px 0;}
+.icon-th-large{background-position:-216px 0;}
+.icon-th{background-position:-240px 0;}
+.icon-th-list{background-position:-264px 0;}
+.icon-ok{background-position:-288px 0;}
+.icon-remove{background-position:-312px 0;}
+.icon-zoom-in{background-position:-336px 0;}
+.icon-zoom-out{background-position:-360px 0;}
+.icon-off{background-position:-384px 0;}
+.icon-signal{background-position:-408px 0;}
+.icon-cog{background-position:-432px 0;}
+.icon-trash{background-position:-456px 0;}
+.icon-home{background-position:0 -24px;}
+.icon-file{background-position:-24px -24px;}
+.icon-time{background-position:-48px -24px;}
+.icon-road{background-position:-72px -24px;}
+.icon-download-alt{background-position:-96px -24px;}
+.icon-download{background-position:-120px -24px;}
+.icon-upload{background-position:-144px -24px;}
+.icon-inbox{background-position:-168px -24px;}
+.icon-play-circle{background-position:-192px -24px;}
+.icon-repeat{background-position:-216px -24px;}
+.icon-refresh{background-position:-240px -24px;}
+.icon-list-alt{background-position:-264px -24px;}
+.icon-lock{background-position:-287px -24px;}
+.icon-flag{background-position:-312px -24px;}
+.icon-headphones{background-position:-336px -24px;}
+.icon-volume-off{background-position:-360px -24px;}
+.icon-volume-down{background-position:-384px -24px;}
+.icon-volume-up{background-position:-408px -24px;}
+.icon-qrcode{background-position:-432px -24px;}
+.icon-barcode{background-position:-456px -24px;}
+.icon-tag{background-position:0 -48px;}
+.icon-tags{background-position:-25px -48px;}
+.icon-book{background-position:-48px -48px;}
+.icon-bookmark{background-position:-72px -48px;}
+.icon-print{background-position:-96px -48px;}
+.icon-camera{background-position:-120px -48px;}
+.icon-font{background-position:-144px -48px;}
+.icon-bold{background-position:-167px -48px;}
+.icon-italic{background-position:-192px -48px;}
+.icon-text-height{background-position:-216px -48px;}
+.icon-text-width{background-position:-240px -48px;}
+.icon-align-left{background-position:-264px -48px;}
+.icon-align-center{background-position:-288px -48px;}
+.icon-align-right{background-position:-312px -48px;}
+.icon-align-justify{background-position:-336px -48px;}
+.icon-list{background-position:-360px -48px;}
+.icon-indent-left{background-position:-384px -48px;}
+.icon-indent-right{background-position:-408px -48px;}
+.icon-facetime-video{background-position:-432px -48px;}
+.icon-picture{background-position:-456px -48px;}
+.icon-pencil{background-position:0 -72px;}
+.icon-map-marker{background-position:-24px -72px;}
+.icon-adjust{background-position:-48px -72px;}
+.icon-tint{background-position:-72px -72px;}
+.icon-edit{background-position:-96px -72px;}
+.icon-share{background-position:-120px -72px;}
+.icon-check{background-position:-144px -72px;}
+.icon-move{background-position:-168px -72px;}
+.icon-step-backward{background-position:-192px -72px;}
+.icon-fast-backward{background-position:-216px -72px;}
+.icon-backward{background-position:-240px -72px;}
+.icon-play{background-position:-264px -72px;}
+.icon-pause{background-position:-288px -72px;}
+.icon-stop{background-position:-312px -72px;}
+.icon-forward{background-position:-336px -72px;}
+.icon-fast-forward{background-position:-360px -72px;}
+.icon-step-forward{background-position:-384px -72px;}
+.icon-eject{background-position:-408px -72px;}
+.icon-chevron-left{background-position:-432px -72px;}
+.icon-chevron-right{background-position:-456px -72px;}
+.icon-plus-sign{background-position:0 -96px;}
+.icon-minus-sign{background-position:-24px -96px;}
+.icon-remove-sign{background-position:-48px -96px;}
+.icon-ok-sign{background-position:-72px -96px;}
+.icon-question-sign{background-position:-96px -96px;}
+.icon-info-sign{background-position:-120px -96px;}
+.icon-screenshot{background-position:-144px -96px;}
+.icon-remove-circle{background-position:-168px -96px;}
+.icon-ok-circle{background-position:-192px -96px;}
+.icon-ban-circle{background-position:-216px -96px;}
+.icon-arrow-left{background-position:-240px -96px;}
+.icon-arrow-right{background-position:-264px -96px;}
+.icon-arrow-up{background-position:-289px -96px;}
+.icon-arrow-down{background-position:-312px -96px;}
+.icon-share-alt{background-position:-336px -96px;}
+.icon-resize-full{background-position:-360px -96px;}
+.icon-resize-small{background-position:-384px -96px;}
+.icon-plus{background-position:-408px -96px;}
+.icon-minus{background-position:-433px -96px;}
+.icon-asterisk{background-position:-456px -96px;}
+.icon-exclamation-sign{background-position:0 -120px;}
+.icon-gift{background-position:-24px -120px;}
+.icon-leaf{background-position:-48px -120px;}
+.icon-fire{background-position:-72px -120px;}
+.icon-eye-open{background-position:-96px -120px;}
+.icon-eye-close{background-position:-120px -120px;}
+.icon-warning-sign{background-position:-144px -120px;}
+.icon-plane{background-position:-168px -120px;}
+.icon-calendar{background-position:-192px -120px;}
+.icon-random{background-position:-216px -120px;}
+.icon-comment{background-position:-240px -120px;}
+.icon-magnet{background-position:-264px -120px;}
+.icon-chevron-up{background-position:-288px -120px;}
+.icon-chevron-down{background-position:-313px -119px;}
+.icon-retweet{background-position:-336px -120px;}
+.icon-shopping-cart{background-position:-360px -120px;}
+.icon-folder-close{background-position:-384px -120px;}
+.icon-folder-open{background-position:-408px -120px;}
+.icon-resize-vertical{background-position:-432px -119px;}
+.icon-resize-horizontal{background-position:-456px -118px;}
+.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
+.btn-group:after{clear:both;}
+.btn-group:first-child{*margin-left:0;}
+.btn-group+.btn-group{margin-left:5px;}
+.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
+.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
+.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
+.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
+.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
+.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
+.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
+.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:3px;*padding-bottom:3px;}
+.btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px;}
+.btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px;}
+.btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px;}
+.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
+.btn .caret{margin-top:7px;margin-left:0;}
+.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
+.btn-mini .caret{margin-top:5px;}
+.btn-small .caret{margin-top:6px;}
+.btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
+.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
+.nav{margin-left:0;margin-bottom:18px;list-style:none;}
+.nav>li>a{display:block;}
+.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
+.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
+.nav li+.nav-header{margin-top:9px;}
+.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
+.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
+.nav-list>li>a{padding:3px 15px;}
+.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
+.nav-list [class^="icon-"]{margin-right:2px;}
+.nav-list .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
+.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}
+.nav-tabs:after,.nav-pills:after{clear:both;}
+.nav-tabs>li,.nav-pills>li{float:left;}
+.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
+.nav-tabs{border-bottom:1px solid #ddd;}
+.nav-tabs>li{margin-bottom:-1px;}
+.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
+.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
+.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;}
+.nav-stacked>li{float:none;}
+.nav-stacked>li>a{margin-right:0;}
+.nav-tabs.nav-stacked{border-bottom:0;}
+.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
+.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
+.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
+.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
+.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
+.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}
+.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
+.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;}
+.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;border-bottom-color:#333333;}
+.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}
+.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
+.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
+.tabs-stacked .open>a:hover{border-color:#999999;}
+.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}
+.tabbable:after{clear:both;}
+.tab-content{display:table;width:100%;}
+.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}
+.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
+.tab-content>.active,.pill-content>.active{display:block;}
+.tabs-below .nav-tabs{border-top:1px solid #ddd;}
+.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}
+.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
+.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}
+.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}
+.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
+.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
+.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
+.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
+.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
+.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
+.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
+.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
+.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
+.navbar{*position:relative;*z-index:2;overflow:visible;margin-bottom:18px;}
+.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
+.navbar .container{width:auto;}
+.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}
+.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;}
+.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
+.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
+.nav-collapse.collapse{height:auto;}
+.navbar{color:#999999;}.navbar .brand:hover{text-decoration:none;}
+.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;}
+.navbar .navbar-text{margin-bottom:0;line-height:40px;}
+.navbar .btn,.navbar .btn-group{margin-top:5px;}
+.navbar .btn-group .btn{margin-top:0;}
+.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}
+.navbar-form:after{clear:both;}
+.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
+.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0;}
+.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
+.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
+.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;}
+.navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
+.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
+.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
+.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
+.navbar-fixed-top{top:0;}
+.navbar-fixed-bottom{bottom:0;}
+.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
+.navbar .nav.pull-right{float:right;}
+.navbar .nav>li{display:block;float:left;}
+.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
+.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;}
+.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;}
+.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}
+.navbar .nav.pull-right{margin-left:10px;margin-right:0;}
+.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
+.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
+.navbar-fixed-bottom .dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
+.navbar-fixed-bottom .dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
+.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
+.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}
+.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}
+.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}
+.navbar .nav.pull-right .dropdown-menu,.navbar .nav .dropdown-menu.pull-right{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before,.navbar .nav .dropdown-menu.pull-right:before{left:auto;right:12px;}
+.navbar .nav.pull-right .dropdown-menu:after,.navbar .nav .dropdown-menu.pull-right:after{left:auto;right:13px;}
+.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}
+.breadcrumb .divider{padding:0 5px;color:#999999;}
+.breadcrumb .active a{color:#333333;}
+.pagination{height:36px;margin:18px 0;}
+.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
+.pagination li{display:inline;}
+.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;}
+.pagination a:hover,.pagination .active a{background-color:#f5f5f5;}
+.pagination .active a{color:#999999;cursor:default;}
+.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;}
+.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.pagination-centered{text-align:center;}
+.pagination-right{text-align:right;}
+.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";}
+.pager:after{clear:both;}
+.pager li{display:inline;}
+.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
+.pager a:hover{text-decoration:none;background-color:#f5f5f5;}
+.pager .next a{float:right;}
+.pager .previous a{float:left;}
+.pager .disabled a,.pager .disabled a:hover{color:#999999;background-color:#fff;cursor:default;}
+.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";}
+.thumbnails:after{clear:both;}
+.thumbnails>li{float:left;margin:0 0 18px 20px;}
+.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}
+a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
+.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
+.thumbnail .caption{padding:9px;}
+.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;}
+.alert-heading{color:inherit;}
+.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}
+.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
+.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
+.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
+.alert-block{padding-top:14px;padding-bottom:14px;}
+.alert-block>p,.alert-block>ul{margin-bottom:0;}
+.alert-block p+p{margin-top:5px;}
+@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
+.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
+.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
+.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);}
+.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
+.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);}
+.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
+.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);}
+.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
+.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);}
+.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
+.hero-unit{padding:60px;margin-bottom:30px;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
+.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit;}
+.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
+.tooltip.top{margin-top:-2px;}
+.tooltip.right{margin-left:2px;}
+.tooltip.bottom{margin-top:2px;}
+.tooltip.left{margin-left:-2px;}
+.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
+.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
+.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
+.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
+.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.tooltip-arrow{position:absolute;width:0;height:0;}
+.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;}
+.popover.right{margin-left:5px;}
+.popover.bottom{margin-top:5px;}
+.popover.left{margin-left:-5px;}
+.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
+.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
+.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
+.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
+.popover .arrow{position:absolute;width:0;height:0;}
+.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
+.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}
+.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;}
+.modal-open .dropdown-menu{z-index:2050;}
+.modal-open .dropdown.open{*z-index:2050;}
+.modal-open .popover{z-index:2060;}
+.modal-open .tooltip{z-index:2070;}
+.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
+.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
+.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
+.modal.fade.in{top:50%;}
+.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
+.modal-body{overflow-y:auto;max-height:400px;padding:15px;}
+.modal-form{margin-bottom:0;}
+.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";}
+.modal-footer:after{clear:both;}
+.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
+.modal-footer .btn-group .btn+.btn{margin-left:-1px;}
+.dropdown{position:relative;}
+.dropdown-toggle{*margin-bottom:-3px;}
+.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
+.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"";}
+.dropdown .caret{margin-top:8px;margin-left:2px;}
+.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);}
+.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.pull-right{right:0;left:auto;}
+.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
+.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333333;white-space:nowrap;}
+.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;}
+.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
+.dropdown.open .dropdown-menu{display:block;}
+.pull-right .dropdown-menu{left:auto;right:0;}
+.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"\2191";}
+.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
+.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.accordion{margin-bottom:18px;}
+.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
+.accordion-heading{border-bottom:0;}
+.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
+.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
+.carousel{position:relative;margin-bottom:18px;line-height:1;}
+.carousel-inner{overflow:hidden;width:100%;position:relative;}
+.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}
+.carousel .item>img{display:block;line-height:1;}
+.carousel .active,.carousel .next,.carousel .prev{display:block;}
+.carousel .active{left:0;}
+.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;}
+.carousel .next{left:100%;}
+.carousel .prev{left:-100%;}
+.carousel .next.left,.carousel .prev.right{left:0;}
+.carousel .active.left{left:-100%;}
+.carousel .active.right{left:100%;}
+.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
+.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
+.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);}
+.carousel-caption h4,.carousel-caption p{color:#ffffff;}
+.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
+.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
+.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}
+.pull-right{float:right;}
+.pull-left{float:left;}
+.hide{display:none;}
+.show{display:block;}
+.invisible{visibility:hidden;}
+.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
+.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}
+.hidden{display:none;visibility:hidden;}
+.visible-phone{display:none;}
+.visible-tablet{display:none;}
+.visible-desktop{display:block;}
+.hidden-phone{display:block;}
+.hidden-tablet{display:block;}
+.hidden-desktop{display:none;}
+@media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
diff --git a/askbot/skins/default/media/bootstrap/img/glyphicons-halflings-white.png b/askbot/skins/default/media/bootstrap/img/glyphicons-halflings-white.png
new file mode 100644
index 00000000..a20760bf
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/img/glyphicons-halflings-white.png
Binary files differ
diff --git a/askbot/skins/default/media/bootstrap/img/glyphicons-halflings.png b/askbot/skins/default/media/bootstrap/img/glyphicons-halflings.png
new file mode 100644
index 00000000..92d4445d
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/img/glyphicons-halflings.png
Binary files differ
diff --git a/askbot/skins/default/media/bootstrap/js/bootstrap.js b/askbot/skins/default/media/bootstrap/js/bootstrap.js
new file mode 100644
index 00000000..d2d9200d
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/js/bootstrap.js
@@ -0,0 +1,1737 @@
+/* ===================================================
+ * bootstrap-transition.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+!function( $ ) {
+
+ $(function () {
+
+ "use strict"
+
+ /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
+ * ======================================================= */
+
+ $.support.transition = (function () {
+ var thisBody = document.body || document.documentElement
+ , thisStyle = thisBody.style
+ , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
+
+ return support && {
+ end: (function () {
+ var transitionEnd = "TransitionEnd"
+ if ( $.browser.webkit ) {
+ transitionEnd = "webkitTransitionEnd"
+ } else if ( $.browser.mozilla ) {
+ transitionEnd = "transitionend"
+ } else if ( $.browser.opera ) {
+ transitionEnd = "oTransitionEnd"
+ }
+ return transitionEnd
+ }())
+ }
+ })()
+
+ })
+
+}( window.jQuery );
+/* =========================================================
+ * bootstrap-modal.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function ( content, options ) {
+ this.options = options
+ this.$element = $(content)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+
+ if (this.isShown) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+ this.$element.trigger('show')
+
+ escape.call(this)
+ backdrop.call(this, function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function ( e ) {
+ e && e.preventDefault()
+
+ if (!this.isShown) return
+
+ var that = this
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ escape.call(this)
+
+ this.$element
+ .trigger('hide')
+ .removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ hideWithTransition.call(this) :
+ hideModal.call(this)
+ }
+
+ }
+
+
+ /* MODAL PRIVATE METHODS
+ * ===================== */
+
+ function hideWithTransition() {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ hideModal.call(that)
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ hideModal.call(that)
+ })
+ }
+
+ function hideModal( that ) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ backdrop.call(this)
+ }
+
+ function backdrop( callback ) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
+ removeBackdrop.call(this)
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ function removeBackdrop() {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ function escape() {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ $(document).on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ $(document).off('keyup.dismiss.modal')
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
+
+ e.preventDefault()
+ $target.modal(option)
+ })
+ })
+
+}( window.jQuery );
+/* ============================================================
+ * bootstrap-dropdown.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle="dropdown"]'
+ , Dropdown = function ( element ) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function ( e ) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+ , isActive
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+ !isActive && $parent.toggleClass('open')
+
+ return false
+ }
+
+ }
+
+ function clearMenus() {
+ $(toggle).parent().removeClass('open')
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html').on('click.dropdown.data-api', clearMenus)
+ $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ })
+
+}( window.jQuery );
+/* =============================================================
+ * bootstrap-scrollspy.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================== */
+
+!function ( $ ) {
+
+ "use strict"
+
+ /* SCROLLSPY CLASS DEFINITION
+ * ========================== */
+
+ function ScrollSpy( element, options) {
+ var process = $.proxy(this.process, this)
+ , $element = $(element).is('body') ? $(window) : $(element)
+ , href
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+ this.$scrollElement = $element.on('scroll.scroll.data-api', process)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.$body = $('body').on('click.scroll.data-api', this.selector, process)
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.prototype = {
+
+ constructor: ScrollSpy
+
+ , refresh: function () {
+ this.targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var href = $(this).attr('href')
+ return /^#\w/.test(href) && $(href).length ? href : null
+ })
+
+ this.offsets = $.map(this.targets, function (id) {
+ return $(id).position().top
+ })
+ }
+
+ , process: function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ , offsets = this.offsets
+ , targets = this.targets
+ , activeTarget = this.activeTarget
+ , i
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ , activate: function (target) {
+ var active
+
+ this.activeTarget = target
+
+ this.$body
+ .find(this.selector).parent('.active')
+ .removeClass('active')
+
+ active = this.$body
+ .find(this.selector + '[href="' + target + '"]')
+ .parent('li')
+ .addClass('active')
+
+ if ( active.parent('.dropdown-menu') ) {
+ active.closest('li.dropdown').addClass('active')
+ }
+ }
+
+ }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.scrollspy = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('scrollspy')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+ $.fn.scrollspy.defaults = {
+ offset: 10
+ }
+
+
+ /* SCROLLSPY DATA-API
+ * ================== */
+
+ $(function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}( window.jQuery );
+/* ========================================================
+ * bootstrap-tab.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function ( element ) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ $this.trigger({
+ type: 'show'
+ , relatedTarget: previous
+ })
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}( window.jQuery );
+/* ===========================================================
+ * bootstrap-tooltip.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+!function( $ ) {
+
+ "use strict"
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Tooltip = function ( element, options ) {
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.prototype = {
+
+ constructor: Tooltip
+
+ , init: function ( type, element, options ) {
+ var eventIn
+ , eventOut
+
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.enabled = true
+
+ if (this.options.trigger != 'manual') {
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ , getOptions: function ( options ) {
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ , enter: function ( e ) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.show) {
+ self.show()
+ } else {
+ self.hoverState = 'in'
+ setTimeout(function() {
+ if (self.hoverState == 'in') {
+ self.show()
+ }
+ }, self.options.delay.show)
+ }
+ }
+
+ , leave: function ( e ) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.hide) {
+ self.hide()
+ } else {
+ self.hoverState = 'out'
+ setTimeout(function() {
+ if (self.hoverState == 'out') {
+ self.hide()
+ }
+ }, self.options.delay.hide)
+ }
+ }
+
+ , show: function () {
+ var $tip
+ , inside
+ , pos
+ , actualWidth
+ , actualHeight
+ , placement
+ , tp
+
+ if (this.hasContent() && this.enabled) {
+ $tip = this.tip()
+ this.setContent()
+
+ if (this.options.animation) {
+ $tip.addClass('fade')
+ }
+
+ placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ inside = /in/.test(placement)
+
+ $tip
+ .remove()
+ .css({ top: 0, left: 0, display: 'block' })
+ .appendTo(inside ? this.$element : document.body)
+
+ pos = this.getPosition(inside)
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ switch (inside ? placement.split(' ')[1] : placement) {
+ case 'bottom':
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'top':
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'left':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+ break
+ case 'right':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+ break
+ }
+
+ $tip
+ .css(tp)
+ .addClass(placement)
+ .addClass('in')
+ }
+ }
+
+ , setContent: function () {
+ var $tip = this.tip()
+ $tip.find('.tooltip-inner').html(this.getTitle())
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ , hide: function () {
+ var that = this
+ , $tip = this.tip()
+
+ $tip.removeClass('in')
+
+ function removeWithAnimation() {
+ var timeout = setTimeout(function () {
+ $tip.off($.support.transition.end).remove()
+ }, 500)
+
+ $tip.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ $tip.remove()
+ })
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ removeWithAnimation() :
+ $tip.remove()
+ }
+
+ , fixTitle: function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ }
+ }
+
+ , hasContent: function () {
+ return this.getTitle()
+ }
+
+ , getPosition: function (inside) {
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+ width: this.$element[0].offsetWidth
+ , height: this.$element[0].offsetHeight
+ })
+ }
+
+ , getTitle: function () {
+ var title
+ , $e = this.$element
+ , o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ title = (title || '').toString().replace(/(^\s*|\s*$)/, "")
+
+ return title
+ }
+
+ , tip: function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ , validate: function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ , enable: function () {
+ this.enabled = true
+ }
+
+ , disable: function () {
+ this.enabled = false
+ }
+
+ , toggleEnabled: function () {
+ this.enabled = !this.enabled
+ }
+
+ , toggle: function () {
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+ * ========================= */
+
+ $.fn.tooltip = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tooltip')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+ $.fn.tooltip.defaults = {
+ animation: true
+ , delay: 0
+ , selector: false
+ , placement: 'top'
+ , trigger: 'hover'
+ , title: ''
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+ }
+
+}( window.jQuery );
+/* ===========================================================
+ * bootstrap-popover.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function( $ ) {
+
+ "use strict"
+
+ var Popover = function ( element, options ) {
+ this.init('popover', element, options)
+ }
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+ , content = this.getContent()
+
+ $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
+ $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
+
+ $tip.removeClass('fade top bottom left right in')
+ }
+
+ , hasContent: function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ , getContent: function () {
+ var content
+ , $e = this.$element
+ , o = this.options
+
+ content = $e.attr('data-content')
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+
+ content = content.toString().replace(/(^\s*|\s*$)/, "")
+
+ return content
+ }
+
+ , tip: function() {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ }
+ return this.$tip
+ }
+
+ })
+
+
+ /* POPOVER PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.popover = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('popover')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+ placement: 'right'
+ , content: ''
+ , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
+ })
+
+}( window.jQuery );
+/* ==========================================================
+ * bootstrap-alert.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function ( el ) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype = {
+
+ constructor: Alert
+
+ , close: function ( e ) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.trigger('close')
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent
+ .trigger('close')
+ .removeClass('in')
+
+ function removeElement() {
+ $parent
+ .trigger('closed')
+ .remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.alert = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+ })
+
+}( window.jQuery );
+/* ============================================================
+ * bootstrap-button.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype = {
+
+ constructor: Button
+
+ , setState: function ( state ) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ , toggle: function () {
+ var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ })
+ })
+
+}( window.jQuery );
+/* =============================================================
+ * bootstrap-collapse.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ var Collapse = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options["parent"]) {
+ this.$parent = $(this.options["parent"])
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension = this.dimension()
+ , scroll = $.camelCase(['scroll', dimension].join('-'))
+ , actives = this.$parent && this.$parent.find('.in')
+ , hasData
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', 'show', 'shown')
+ this.$element[dimension](this.$element[0][scroll])
+
+ }
+
+ , hide: function () {
+ var dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', 'hide', 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function ( size ) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size ? 'addClass' : 'removeClass']('collapse')
+
+ return this
+ }
+
+ , transition: function ( method, startEvent, completeEvent ) {
+ var that = this
+ , complete = function () {
+ if (startEvent == 'show') that.reset()
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element
+ .trigger(startEvent)
+ [method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $(target).collapse(option)
+ })
+ })
+
+}( window.jQuery );
+/* ==========================================================
+ * bootstrap-carousel.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.carousel.defaults, options)
+ this.options.slide && this.slide(this.options.slide)
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.prototype = {
+
+ cycle: function () {
+ this.interval = setInterval($.proxy(this.next, this), this.options.interval)
+ return this
+ }
+
+ , to: function (pos) {
+ var $active = this.$element.find('.active')
+ , children = $active.parent().children()
+ , activePos = children.index($active)
+ , that = this
+
+ if (pos > (children.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activePos == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ }
+
+ , pause: function () {
+ clearInterval(this.interval)
+ this.interval = null
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ if ($next.hasClass('active')) return
+
+ if (!$.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger('slide')
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ } else {
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.trigger('slide')
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.carousel = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (typeof option == 'string' || (option = options.slide)) data[option]()
+ else data.cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ , pause: 'hover'
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(function () {
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+ $target.carousel(options)
+ e.preventDefault()
+ })
+ })
+
+}( window.jQuery );
+/* =============================================================
+ * bootstrap-typeahead.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ var Typeahead = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.source = this.options.source
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element.val(val)
+ this.$element.change();
+ return this.hide()
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.offset(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu.css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+
+ this.$menu.show()
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var that = this
+ , items
+ , q
+
+ this.query = this.$element.val()
+
+ if (!this.query) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.grep(this.source, function (item) {
+ if (that.matcher(item)) return item
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>'
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ items.first().addClass('active')
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keypress, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , keypress: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , blur: function (e) {
+ var that = this
+ setTimeout(function () { that.hide() }, 150)
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ }
+
+ , mouseenter: function (e) {
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.typeahead = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(function () {
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ e.preventDefault()
+ $this.typeahead($this.data())
+ })
+ })
+
+}( window.jQuery ); \ No newline at end of file
diff --git a/askbot/skins/default/media/bootstrap/js/bootstrap.min.js b/askbot/skins/default/media/bootstrap/js/bootstrap.min.js
new file mode 100644
index 00000000..edfee401
--- /dev/null
+++ b/askbot/skins/default/media/bootstrap/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/**
+* Bootstrap.js by @fat & @mdo
+* plugins: bootstrap-transition.js, bootstrap-modal.js, bootstrap-dropdown.js, bootstrap-scrollspy.js, bootstrap-tab.js, bootstrap-tooltip.js, bootstrap-popover.js, bootstrap-alert.js, bootstrap-button.js, bootstrap-collapse.js, bootstrap-carousel.js, bootstrap-typeahead.js
+* Copyright 2012 Twitter, Inc.
+* http://www.apache.org/licenses/LICENSE-2.0.txt
+*/
+!function(a){a(function(){a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=(a||"").toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger("close").removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;return!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.$element.change(),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},keypress:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery) \ No newline at end of file
diff --git a/askbot/skins/default/media/images/OFL.txt b/askbot/skins/default/media/images/OFL.txt
new file mode 100644
index 00000000..3bc11311
--- /dev/null
+++ b/askbot/skins/default/media/images/OFL.txt
@@ -0,0 +1,93 @@
+Copyright (c) 2010, Jan Gerner (post@yanone.de)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/askbot/skins/default/media/images/OpenSans-CondBold.ttf b/askbot/skins/default/media/images/OpenSans-CondBold.ttf
new file mode 100644
index 00000000..83966f21
--- /dev/null
+++ b/askbot/skins/default/media/images/OpenSans-CondBold.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/OpenSans-CondLight.ttf b/askbot/skins/default/media/images/OpenSans-CondLight.ttf
new file mode 100644
index 00000000..97c355b9
--- /dev/null
+++ b/askbot/skins/default/media/images/OpenSans-CondLight.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/OpenSans-CondLightItalic.ttf b/askbot/skins/default/media/images/OpenSans-CondLightItalic.ttf
new file mode 100644
index 00000000..0b45898d
--- /dev/null
+++ b/askbot/skins/default/media/images/OpenSans-CondLightItalic.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf
new file mode 100644
index 00000000..c693c4b3
--- /dev/null
+++ b/askbot/skins/default/media/images/YanoneKaffeesatz-Bold.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf
new file mode 100644
index 00000000..b59e4894
--- /dev/null
+++ b/askbot/skins/default/media/images/YanoneKaffeesatz-ExtraLight.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf
new file mode 100644
index 00000000..5026d3bd
--- /dev/null
+++ b/askbot/skins/default/media/images/YanoneKaffeesatz-Light.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf b/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf
new file mode 100644
index 00000000..808ce0d0
--- /dev/null
+++ b/askbot/skins/default/media/images/YanoneKaffeesatz-Regular.ttf
Binary files differ
diff --git a/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip b/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip
new file mode 100644
index 00000000..55e9731a
--- /dev/null
+++ b/askbot/skins/default/media/images/Yanone_Kaffeesatz.zip
Binary files differ
diff --git a/askbot/skins/default/media/style/lib_style.css b/askbot/skins/default/media/style/lib_style.css
new file mode 100644
index 00000000..a92af477
--- /dev/null
+++ b/askbot/skins/default/media/style/lib_style.css
@@ -0,0 +1,22 @@
+/* General Predifined classes, read more in lesscss.org */
+/* Variables for Colors*/
+/* Variables for fonts*/
+/* "Trebuchet MS", sans-serif;*/
+/* Buttons */
+.button-style-hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+/* General styles for gradients */
+/* Receive exactly positions for background Sprite */
+/* CSS3 Elements */
diff --git a/askbot/skins/default/media/style/lib_style.less b/askbot/skins/default/media/style/lib_style.less
index 4f2bad79..05ab38f5 100644
--- a/askbot/skins/default/media/style/lib_style.less
+++ b/askbot/skins/default/media/style/lib_style.less
@@ -14,9 +14,45 @@
@body-font:Arial; /* "Trebuchet MS", sans-serif;*/
@sort-font:Georgia, serif;
-@main-font:'Yanone Kaffeesatz', sans-serif;
+@main-font:'Open Sans Condensed', Arial, sans-serif;
@secondary-font:Arial;
+/* Buttons */
+
+.button-style(@h:20px, @f:14px){
+ height:@h;
+ font-size:@f;
+ text-align:center;
+ text-decoration:none;
+ cursor:pointer;
+ color:@button-label;
+ font-family:@main-font;
+ .text-shadow(0px,1px,0px,#c6d9dd);
+ border-top:#eaf2f3 1px solid;
+ .linear-gradient(#d1e2e5,#a9c2c7);
+ .rounded-corners(4px);
+ .box-shadow(1px, 1px, 2px, #636363)
+}
+
+.button-style-hover{
+ .linear-gradient(#cde5e9,#94b3ba);
+ text-decoration:none;
+ .text-shadow(0px, 1px, 0px, #c6d9dd);
+}
+
+/* General styles for gradients */
+
+.linear-gradient(@start:#eee,@end:#fff,@stop:25%){
+ background-color: @start;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start), color-stop(@stop, @start), to(@end));
+ background-image: -webkit-linear-gradient(@start, @start @stop, @end);
+ background-image: -moz-linear-gradient(top, @start, @start @stop, @end);
+ background-image: -ms-linear-gradient(@start, @start @stop, @end);
+ background-image: -o-linear-gradient(@start, @start @stop, @end);
+ background-image: linear-gradient(@start, @start @stop, @end);
+}
+
/* Receive exactly positions for background Sprite */
.sprites(@hor,@vert,@back:url(../images/sprites.png)){
@@ -26,7 +62,7 @@
/* CSS3 Elements */
.box-shadow (@hor: 0px, @vert: 0px, @blur: 5px, @shadow: #929292){
- -webkit-box-shadow: @arguments;
+ -webkit-box-shadow: @arguments ;
-moz-box-shadow: @arguments;
box-shadow: @arguments;
}
@@ -53,3 +89,13 @@
-webkit-border-top-left-radius:@radio;
-webkit-border-top-right-radius:@radio;
}
+
+.rounded-corners-right(@radio:5px){
+ border-top-right-radius:@radio;
+ border-bottom-right-radius:@radio;
+ -moz-border-radius-topright:@radio;
+ -moz-border-radius-bottomright:@radio;
+ -webkit-border-bottom-right-radius:@radio;
+ -webkit-border-top-right-radius:@radio;
+}
+
diff --git a/askbot/skins/default/media/style/style.css b/askbot/skins/default/media/style/style.css
index 3a38a9cb..7a695825 100644
--- a/askbot/skins/default/media/style/style.css
+++ b/askbot/skins/default/media/style/style.css
@@ -1,520 +1,3592 @@
@import url(jquery.autocomplete.css);
-body{background:#FFF;font-size:14px;line-height:150%;margin:0;padding:0;color:#000;font-family:Arial;}
-div{margin:0 auto;padding:0;}
-h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p{margin:0;padding:0;border:none;}
-label{vertical-align:middle;}
-hr{border:none;border-top:1px dashed #ccccce;}
-input,select{vertical-align:middle;font-family:Trebuchet MS,"segoe ui",Helvetica,Tahoma,Verdana,MingLiu,PMingLiu,Arial,sans-serif;margin-left:0px;}
-textarea:focus,input:focus{outline:none;}
-iframe{border:none;}
-p{font-size:14px;line-height:140%;margin-bottom:6px;}
-a{color:#1b79bd;text-decoration:none;cursor:pointer;}
-h2{font-size:21px;padding:3px 0 3px 5px;}
-h3{font-size:19px;padding:3px 0 3px 5px;}
-ul{list-style:disc;margin-left:20px;padding-left:0px;margin-bottom:1em;}
-ol{list-style:decimal;margin-left:30px;margin-bottom:1em;padding-left:0px;}
-td ul{vertical-align:middle;}
-li input{margin:3px 3px 4px 3px;}
-pre{font-family:Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;font-size:100%;margin-bottom:10px;background-color:#F5F5F5;padding-left:5px;padding-top:5px;padding-bottom:20px ! ie7;}
-code{font-family:Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;font-size:100%;}
-blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0px 1px 10px;background-color:#F5F5F5;}
-* html .clearfix,* html .paginator{height:1;overflow:visible;}
-+html .clearfix,+html .paginator{min-height:1%;}
-.clearfix:after,.paginator:after{clear:both;content:".";display:block;height:0;visibility:hidden;}
-.badges a{color:#763333;text-decoration:underline;}
-a:hover{text-decoration:underline;}
-.badge-context-toggle.active{cursor:pointer;text-decoration:underline;}
-h1{font-size:24px;padding:10px 0 5px 0px;}
-body.user-messages{margin-top:2.4em;}
-.left{float:left;}
-.right{float:right;}
-.clean{clear:both;}
-.center{margin:0 auto;padding:0;}
-.notify{position:fixed;top:0px;left:0px;width:100%;z-index:100;padding:0;text-align:center;background-color:#f5dd69;border-top:#fff 1px solid;font-family:'Yanone Kaffeesatz',sans-serif;}.notify p.notification{margin-top:6px;margin-bottom:6px;font-size:16px;color:#424242;}
-#closeNotify{position:absolute;right:5px;top:7px;color:#735005;text-decoration:none;line-height:18px;background:-6px -5px url(../images/sprites.png) no-repeat;cursor:pointer;width:20px;height:20px;}
-#closeNotify:hover{background:-26px -5px url(../images/sprites.png) no-repeat;}
-#header{margin-top:0px;background:#16160f;font-family:'Yanone Kaffeesatz',sans-serif;}
-.content-wrapper{width:960px;margin:auto;position:relative;}
-#logo img{padding:5px 0px 5px 0px;height:75px;width:auto;float:left;}
-#userToolsNav{height:20px;padding-bottom:5px;}#userToolsNav a{height:35px;text-align:right;margin-left:20px;text-decoration:underline;color:#d0e296;font-size:16px;}
-#userToolsNav a:first-child{margin-left:0;}
-#userToolsNav a#ab-responses{margin-left:3px;}
-#userToolsNav .user-info,#userToolsNav .user-micro-info{color:#b5b593;}
-#userToolsNav a img{vertical-align:middle;margin-bottom:2px;}
-#userToolsNav .user-info a{margin:0;text-decoration:none;}
-#metaNav{float:right;}#metaNav a{color:#e2e2ae;padding:0px 0px 0px 35px;height:25px;line-height:30px;margin:5px 0px 0px 10px;font-size:18px;font-weight:100;text-decoration:none;display:block;float:left;}
-#metaNav a:hover{text-decoration:underline;}
-#metaNav a.on{font-weight:bold;color:#FFF;text-decoration:none;}
-#metaNav a.special{font-size:18px;color:#B02B2C;font-weight:bold;text-decoration:none;}
-#metaNav a.special:hover{text-decoration:underline;}
-#metaNav #navTags{background:-50px -5px url(../images/sprites.png) no-repeat;}
-#metaNav #navUsers{background:-125px -5px url(../images/sprites.png) no-repeat;}
-#metaNav #navBadges{background:-210px -5px url(../images/sprites.png) no-repeat;}
-#header.with-logo #userToolsNav{position:absolute;bottom:0;right:0px;}
-#header.without-logo #userToolsNav{float:left;margin-top:7px;}
-#header.without-logo #metaNav{margin-bottom:7px;}
-#secondaryHeader{height:55px;background:#e9e9e1;border-bottom:#d3d3c2 1px solid;border-top:#fcfcfc 1px solid;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;}#secondaryHeader #homeButton{border-right:#afaf9e 1px solid;background:-6px -36px url(../images/sprites.png) no-repeat;height:55px;width:43px;display:block;float:left;}
-#secondaryHeader #homeButton:hover{background:-51px -36px url(../images/sprites.png) no-repeat;}
-#secondaryHeader #scopeWrapper{width:688px;float:left;}#secondaryHeader #scopeWrapper a{display:block;float:left;}
-#secondaryHeader #scopeWrapper .scope-selector{font-size:21px;color:#5a5a4b;height:55px;line-height:55px;margin-left:24px;}
-#secondaryHeader #scopeWrapper .on{background:url(../images/scopearrow.png) no-repeat center bottom;}
-#secondaryHeader #scopeWrapper .ask-message{font-size:24px;}
-#searchBar{display:inline-block;background-color:#fff;width:412px;border:1px solid #c9c9b5;float:right;height:42px;margin:6px 0px 0px 15px;}#searchBar .searchInput,#searchBar .searchInputCancelable{font-size:30px;height:40px;font-weight:300;background:#FFF;border:0px;color:#484848;padding-left:10px;font-family:Arial;vertical-align:middle;}
-#searchBar .searchInput{width:352px;}
-#searchBar .searchInputCancelable{width:317px;}
-#searchBar .logoutsearch{width:337px;}
-#searchBar .searchBtn{font-size:10px;color:#666;background-color:#eee;height:42px;border:#FFF 1px solid;line-height:22px;text-align:center;float:right;margin:0px;width:48px;background:-98px -36px url(../images/sprites.png) no-repeat;cursor:pointer;}
-#searchBar .searchBtn:hover{background:-146px -36px url(../images/sprites.png) no-repeat;}
-#searchBar .cancelSearchBtn{font-size:30px;color:#ce8888;background:#fff;height:42px;border:0px;border-left:#deded0 1px solid;text-align:center;width:35px;cursor:pointer;}
-#searchBar .cancelSearchBtn:hover{color:#d84040;}
-body.anon #searchBar{width:500px;}body.anon #searchBar .searchInput{width:440px;}
-body.anon #searchBar .searchInputCancelable{width:405px;}
-#askButton{background:url(../images/bigbutton.png) repeat-x bottom;line-height:44px;text-align:center;width:200px;height:42px;font-size:23px;color:#4a757f;margin-top:7px;float:right;text-transform:uppercase;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;}
-#askButton:hover{text-decoration:none;background:url(../images/bigbutton.png) repeat-x top;text-shadow:0px 1px 0px #c6d9dd;-moz-text-shadow:0px 1px 0px #c6d9dd;-webkit-text-shadow:0px 1px 0px #c6d9dd;}
-#ContentLeft{width:730px;float:left;position:relative;padding-bottom:10px;}
-#ContentRight{width:200px;float:right;padding:0 0px 10px 0px;}
-#ContentFull{float:left;width:960px;}
-.box{background:#fff;padding:4px 0px 10px 0px;width:200px;}.box p{margin-bottom:4px;}
-.box p.info-box-follow-up-links{text-align:right;margin:0;}
-.box h2{padding-left:0;background:#eceeeb;height:30px;line-height:30px;text-align:right;font-size:18px !important;font-weight:normal;color:#656565;padding-right:10px;margin-bottom:10px;font-family:'Yanone Kaffeesatz',sans-serif;}
-.box h3{color:#4a757f;font-size:18px;text-align:left;font-weight:normal;font-family:'Yanone Kaffeesatz',sans-serif;padding-left:0px;}
-.box .contributorback{background:#eceeeb url(../images/contributorsback.png) no-repeat center left;}
-.box label{color:#707070;font-size:15px;display:block;float:right;text-align:left;font-family:'Yanone Kaffeesatz',sans-serif;width:80px;margin-right:18px;}
-.box #displayTagFilterControl label{width:160px;}
-.box ul{margin-left:22px;}
-.box li{list-style-type:disc;font-size:13px;line-height:20px;margin-bottom:10px;color:#707070;}
-.box ul.tags{list-style:none;margin:0;padding:0;line-height:170%;display:block;}
-.box #displayTagFilterControl p label{color:#707070;font-size:15px;}
-.box .inputs #interestingTagInput,.box .inputs #ignoredTagInput{width:158px;border:#c9c9b5 1px solid;height:25px;}
-.box .inputs #interestingTagAdd,.box .inputs #ignoredTagAdd{background:url(../images/small-button-blue.png) repeat-x top;border:0;color:#4a757f;font-weight:bold;font-size:12px;width:30px;height:27px;margin-top:-2px;cursor:pointer;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0px 1px 0px #e6f6fa;-moz-text-shadow:0px 1px 0px #e6f6fa;-webkit-text-shadow:0px 1px 0px #e6f6fa;-webkit-box-shadow:1px 1px 2px #808080;-moz-box-shadow:1px 1px 2px #808080;box-shadow:1px 1px 2px #808080;}
-.box .inputs #interestingTagAdd:hover,.box .inputs #ignoredTagAdd:hover{background:url(../images/small-button-blue.png) repeat-x bottom;}
-.box img.gravatar{margin:1px;}
-.box a.followed,.box a.follow{background:url(../images/medium-button.png) top repeat-x;height:34px;line-height:34px;text-align:center;border:0;font-family:'Yanone Kaffeesatz',sans-serif;color:#4a757f;font-weight:normal;font-size:21px;margin-top:3px;display:block;width:120px;text-decoration:none;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin:0 auto;padding:0;}
-.box a.followed:hover,.box a.follow:hover{text-decoration:none;background:url(../images/medium-button.png) bottom repeat-x;text-shadow:0px 1px 0px #c6d9dd;-moz-text-shadow:0px 1px 0px #c6d9dd;-webkit-text-shadow:0px 1px 0px #c6d9dd;}
-.box a.followed div.unfollow{display:none;}
-.box a.followed:hover div{display:none;}
-.box a.followed:hover div.unfollow{display:inline;color:#a05736;}
-.box .favorite-number{padding:5px 0 0 5px;font-size:100%;font-family:Arial;font-weight:bold;color:#777;text-align:center;}
-.box .notify-sidebar #question-subscribe-sidebar{margin:7px 0 0 3px;}
-.statsWidget p{color:#707070;font-size:16px;border-bottom:#cccccc 1px solid;font-size:13px;}.statsWidget p strong{float:right;padding-right:10px;}
-.questions-related{word-wrap:break-word;}.questions-related p{line-height:20px;padding:4px 0px 4px 0px;font-size:16px;font-weight:normal;border-bottom:#cccccc 1px solid;}
-.questions-related a{font-size:13px;}
-#tips li{color:#707070;font-size:13px;list-style-image:url(../images/tips.png);}
-#tips a{font-size:16px;}
-#markdownHelp li{color:#707070;font-size:13px;}
-#markdownHelp a{font-size:16px;}
-.tabBar{background-color:#eff5f6;height:30px;margin-bottom:3px;margin-top:3px;float:right;font-family:Georgia,serif;font-size:16px;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;}
-.tabBar h2{float:left;}
-.tabsA,.tabsC{float:right;position:relative;display:block;height:20px;}
-.tabsA{float:right;}
-.tabsC{float:left;}
-.tabsA a,.tabsC a{border-left:1px solid #d0e1e4;color:#7ea9b3;display:block;float:left;height:20px;line-height:20px;padding:4px 7px 4px 7px;text-decoration:none;}
-.tabsA a.on,.tabsC a.on,.tabsA a:hover,.tabsC a:hover{color:#4a757f;}
-.tabsA .label,.tabsC .label{float:left;color:#646464;margin-top:4px;margin-right:5px;}
-.main-page .tabsA .label{margin-left:8px;}
-.tabsB a{background:#eee;border:1px solid #eee;color:#777;display:block;float:left;height:22px;line-height:28px;margin:5px 0px 0 4px;padding:0 11px 0 11px;text-decoration:none;}
-.tabsC .first{border:none;}
-.rss{float:right;font-size:16px;color:#f57900;margin:5px 0px 3px 7px;width:52px;padding-left:2px;padding-top:3px;background:#ffffff url(../images/feed-icon-small.png) no-repeat center right;float:right;font-family:Georgia,serif;font-size:16px;}
-.rss:hover{color:#F4A731 !important;}
-#questionCount{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;margin-bottom:8px;padding-top:6px;font-family:'Yanone Kaffeesatz',sans-serif;}
-#listSearchTags{float:left;margin-top:3px;color:#707070;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif;}
-ul#searchTags{margin-left:10px;float:right;padding-top:2px;}
-.search-tips{font-size:16px;line-height:17px;color:#707070;margin:5px 0 10px 0;padding:0px;float:left;font-family:'Yanone Kaffeesatz',sans-serif;}.search-tips a{text-decoration:underline;color:#1b79bd;}
-#question-list{float:left;position:relative;background-color:#FFF;padding:0;width:100%;}
-.short-summary{position:relative;filter:inherit;padding:10px;border-bottom:1px solid #DDDBCE;margin-bottom:1px;overflow:hidden;width:710px;float:left;background:url(../images/summary-background.png) repeat-x;}.short-summary h2{font-size:24px;font-weight:normal;line-height:26px;padding-left:0;margin-bottom:8px;display:block;font-family:'Yanone Kaffeesatz',sans-serif;}
-.short-summary a{color:#464646;}
-.short-summary .userinfo{text-align:right;line-height:16px;font-family:Arial;padding-right:4px;}
-.short-summary .userinfo .relativetime,.short-summary span.anonymous{font-size:11px;clear:both;font-weight:normal;color:#555;}
-.short-summary .userinfo a{font-weight:bold;font-size:11px;}
-.short-summary .counts{float:right;margin:4px 0 0 5px;font-family:'Yanone Kaffeesatz',sans-serif;}
-.short-summary .counts .item-count{padding:0px 5px 0px 5px;font-size:25px;font-family:'Yanone Kaffeesatz',sans-serif;}
-.short-summary .counts .votes div,.short-summary .counts .views div,.short-summary .counts .answers div,.short-summary .counts .favorites div{margin-top:3px;font-size:14px;line-height:14px;color:#646464;}
-.short-summary .tags{margin-top:0;}
-.short-summary .votes,.short-summary .answers,.short-summary .favorites,.short-summary .views{text-align:center;margin:0 3px;padding:8px 2px 0px 2px;width:51px;float:right;height:44px;border:#dbdbd4 1px solid;}
-.short-summary .votes{background:url(../images/vote-background.png) repeat-x;}
-.short-summary .answers{background:url(../images/answers-background.png) repeat-x;}
-.short-summary .views{background:url(../images/view-background.png) repeat-x;}
-.short-summary .no-votes .item-count{color:#b1b5b6;}
-.short-summary .some-votes .item-count{color:#4a757f;}
-.short-summary .no-answers .item-count{color:#b1b5b6;}
-.short-summary .some-answers .item-count{color:#eab243;}
-.short-summary .no-views .item-count{color:#b1b5b6;}
-.short-summary .some-views .item-count{color:#d33f00;}
-.short-summary .accepted .item-count{background:url(../images/accept.png) no-repeat top right;display:block;text-align:center;width:40px;color:#eab243;}
-.short-summary .some-favorites .item-count{background:#338333;color:#d0f5a9;}
-.short-summary .no-favorites .item-count{background:#eab243;color:yellow;}
-.evenMore{font-size:13px;color:#707070;padding:15px 0px 10px 0px;clear:both;}
-.evenMore a{text-decoration:underline;color:#1b79bd;}
-.pager{margin-top:10px;margin-bottom:16px;}
-.pagesize{margin-top:10px;margin-bottom:16px;float:right;}
-.paginator{padding:5px 0 10px 0;font-size:13px;margin-bottom:10px;}.paginator .prev a,.paginator .prev a:visited,.paginator .next a,.paginator .next a:visited{background-color:#fff;color:#777;padding:2px 4px 3px 4px;}
-.paginator a{color:#7ea9b3;}
-.paginator .prev{margin-right:.5em;}
-.paginator .next{margin-left:.5em;}
-.paginator .page a,.paginator .page a:visited,.paginator .curr{padding:.25em;background-color:#fff;margin:0em .25em;color:#ff;}
-.paginator .curr{background-color:#8ebcc7;color:#fff;font-weight:bold;}
-.paginator .next a,.paginator .prev a{color:#7ea9b3;}
-.paginator .page a:hover,.paginator .curr a:hover,.paginator .prev a:hover,.paginator .next a:hover{color:#8C8C8C;background-color:#E1E1E1;text-decoration:none;}
-.paginator .text{color:#777;padding:.3em;}
-.paginator .paginator-container-left{padding:5px 0 10px 0;}
-.tag-size-1{font-size:12px;}
-.tag-size-2{font-size:13px;}
-.tag-size-3{font-size:14px;}
-.tag-size-4{font-size:15px;}
-.tag-size-5{font-size:16px;}
-.tag-size-6{font-size:17px;}
-.tag-size-7{font-size:18px;}
-.tag-size-8{font-size:19px;}
-.tag-size-9{font-size:20px;}
-.tag-size-10{font-size:21px;}
-ul.tags,ul.tags.marked-tags,ul#related-tags{list-style:none;margin:0;padding:0;line-height:170%;display:block;}
-ul.tags li{float:left;display:block;margin:0 5px 0 0;padding:0;height:20px;}
-.wildcard-tags{clear:both;}
-ul.tags.marked-tags li,.wildcard-tags ul.tags li{margin-bottom:5px;}
-#tagSelector div.inputs{clear:both;float:none;margin-bottom:10px;}
-.tags-page ul.tags li,ul#ab-user-tags li{width:160px;margin:5px;}
-ul#related-tags li{margin:0 5px 5px 0;float:left;clear:left;}
-.tag-left{background:url(../images/tag-right.png) no-repeat right center;border:none;cursor:pointer;display:block;float:left;height:20px;margin:0 5px 0 0;padding:0;}
-.tag-right{background:url(../images/tag-left.png) no-repeat left center;border:none;display:block;float:left;height:20px;line-height:20px;font-weight:normal;font-size:11px;padding:0px 10px 0px 15px;text-decoration:none;text-align:center;white-space:nowrap;vertical-align:middle;font-family:Arial;color:#717179;}
-.deletable-tag{margin-right:3px;white-space:nowrap;}
-.deletable-tag .tag-right{padding-right:0px;float:left;}
-.deletable-tag.tag-left{padding-right:0px;}
-.tags a.tag-right,.tags span.tag-right{color:#585858;text-decoration:none;}
-.tags a:hover{color:#1A1A1A;}
-.users-page h1,.tags-page h1{float:left;}
-.main-page h1{margin-right:5px;}
-span.delete-icon{padding-left:13px;vertical-align:bottom;background:url(../images/close-small-dark.png) bottom no-repeat;cursor:default;}
-span.delete-icon:hover{background:url(../images/close-small-dark.png) top no-repeat;}
-.tags span.delete-icon{float:left;height:20px;width:8px;margin:0px 0 0 10px;display:block;}
-.tag-number{font-weight:normal;float:left;font-size:16px;color:#5d5d5d;}
-.badges .tag-number{float:none;display:inline;padding-right:15px;}
-.section-title{color:#7ea9b3;font-family:'Yanone Kaffeesatz',sans-serif;font-weight:bold;font-size:24px;}
-#fmask{margin-bottom:30px;width:100%;}
-#askFormBar{display:inline-block;padding:4px 7px 5px 0px;margin-top:0px;}#askFormBar p{margin:0 0 5px 0;font-size:14px;color:#525252;line-height:1.4;}
-#askFormBar .questionTitleInput{font-size:24px;line-height:24px;height:36px;margin:0px;padding:0px 0 0 5px;border:#cce6ec 3px solid;width:725px;}
-.ask-page div#question-list,.edit-question-page div#question-list{float:none;border-bottom:#f0f0ec 1px solid;float:left;margin-bottom:10px;}.ask-page div#question-list a,.edit-question-page div#question-list a{line-height:30px;}
-.ask-page div#question-list h2,.edit-question-page div#question-list h2{font-size:13px;padding-bottom:0;color:#1b79bd;border-top:#f0f0ec 1px solid;border-left:#f0f0ec 1px solid;height:30px;line-height:30px;font-weight:normal;}
-.ask-page div#question-list span,.edit-question-page div#question-list span{width:28px;height:26px;line-height:26px;text-align:center;margin-right:10px;float:left;display:block;color:#fff;background:#b8d0d5;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;}
-.ask-page label,.edit-question-page label{color:#525252;font-size:13px;}
-.ask-page #id_tags,.edit-question-page #id_tags{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px;}
-.title-desc{color:#707070;font-size:13px;}
-#fmanswer input.submit,.ask-page input.submit,.edit-question-page input.submit{float:left;background:url(../images/medium-button.png) top repeat-x;height:34px;border:0;font-family:'Yanone Kaffeesatz',sans-serif;color:#4a757f;font-weight:normal;font-size:21px;margin-top:3px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:1px 1px 2px #636363;-moz-box-shadow:1px 1px 2px #636363;box-shadow:1px 1px 2px #636363;margin-right:7px;}
-#fmanswer input.submit:hover,.ask-page input.submit:hover,.edit-question-page input.submit:hover{text-decoration:none;background:url(../images/medium-button.png) bottom repeat-x;text-shadow:0px 1px 0px #c6d9dd;-moz-text-shadow:0px 1px 0px #c6d9dd;-webkit-text-shadow:0px 1px 0px #c6d9dd;}
-#editor{font-size:100%;min-height:200px;line-height:18px;margin:0;border-left:#cce6ec 3px solid;border-bottom:#cce6ec 3px solid;border-right:#cce6ec 3px solid;border-top:0;padding:10px;margin-bottom:10px;width:710px;}
-#id_title{width:100%;}
-.wmd-preview{margin:3px 0 5px 0;padding:6px;background-color:#F5F5F5;min-height:20px;overflow:auto;font-size:13px;font-family:Arial;}.wmd-preview p{margin-bottom:14px;line-height:1.4;font-size:14px;}
-.wmd-preview pre{background-color:#E7F1F8;}
-.wmd-preview blockquote{background-color:#eee;}
-.wmd-preview IMG{max-width:600px;}
-.preview-toggle{width:100%;color:#b6a475;text-align:left;}
-.preview-toggle span:hover{cursor:pointer;}
-.after-editor{margin-top:15px;margin-bottom:15px;}
-.checkbox{margin-left:5px;font-weight:normal;cursor:help;}
-.question-options{margin-top:1px;color:#666;line-height:13px;margin-bottom:5px;}
-.question-options label{vertical-align:text-bottom;}
-.edit-content-html{border-top:1px dotted #D8D2A9;border-bottom:1px dotted #D8D2A9;margin:5px 0 5px 0;}
-.edit-question-page,#fmedit,.wmd-preview{color:#525252;}.edit-question-page #id_revision,#fmedit #id_revision,.wmd-preview #id_revision{font-size:14px;margin-top:5px;margin-bottom:5px;}
-.edit-question-page #id_title,#fmedit #id_title,.wmd-preview #id_title{font-size:24px;line-height:24px;height:36px;margin:0px;padding:0px 0 0 5px;border:#cce6ec 3px solid;width:725px;margin-bottom:10px;}
-.edit-question-page #id_summary,#fmedit #id_summary,.wmd-preview #id_summary{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px;}
-.edit-question-page .title-desc,#fmedit .title-desc,.wmd-preview .title-desc{margin-bottom:10px;}
-.question-page h1{padding-top:0px;font-family:'Yanone Kaffeesatz',sans-serif;}
-.question-page h1 a{color:#464646;font-size:30px;font-weight:normal;line-height:1;}
-.question-page p.rss{float:none;clear:both;padding:3px 0 0 23px;font-size:15px;width:110px;background-position:center left;margin-left:0px !important;}
-.question-page p.rss a{font-family:'Yanone Kaffeesatz',sans-serif;vertical-align:top;}
-.question-page .question-content{float:right;width:682px;margin-bottom:10px;}
-.question-page #question-table{float:left;border-top:#f0f0f0 1px solid;}
-.question-page #question-table,.question-page .answer-table{margin:6px 0 6px 0;border-spacing:0px;width:670px;padding-right:10px;}
-.question-page .answer-table{margin-top:0px;border-bottom:1px solid #D4D4D4;float:right;}
-.question-page .answer-table td,.question-page #question-table td{width:20px;vertical-align:top;}
-.question-page .question-body,.question-page .answer-body{overflow:auto;margin-top:10px;font-family:Arial;color:#4b4b4b;}.question-page .question-body p,.question-page .answer-body p{margin-bottom:14px;line-height:1.4;font-size:14px;padding:0px 5px 5px 0px;}
-.question-page .question-body a,.question-page .answer-body a{color:#1b79bd;}
-.question-page .question-body li,.question-page .answer-body li{margin-bottom:7px;}
-.question-page .question-body IMG,.question-page .answer-body IMG{max-width:600px;}
-.question-page .post-update-info-container{float:right;width:175px;}
-.question-page .post-update-info{background:#ffffff url(../images/background-user-info.png) repeat-x bottom;float:right;font-size:9px;font-family:Arial;width:158px;padding:4px;margin:0px 0px 5px 5px;line-height:14px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-webkit-box-shadow:0px 2px 1px #bfbfbf;-moz-box-shadow:0px 2px 1px #bfbfbf;box-shadow:0px 2px 1px #bfbfbf;}.question-page .post-update-info p{line-height:13px;font-size:11px;margin:0 0 2px 1px;padding:0;}
-.question-page .post-update-info a{color:#444;}
-.question-page .post-update-info .gravatar{float:left;margin-right:4px;}
-.question-page .post-update-info p.tip{color:#444;line-height:13px;font-size:10px;}
-.question-page .post-controls{font-size:11px;line-height:12px;min-width:200px;padding-left:5px;text-align:right;clear:left;float:right;margin-top:10px;margin-bottom:8px;}.question-page .post-controls a{color:#777;padding:0px 3px 3px 22px;cursor:pointer;border:none;font-size:12px;font-family:Arial;text-decoration:none;height:18px;display:block;float:right;line-height:18px;margin-top:-2px;margin-left:4px;}
-.question-page .post-controls a:hover{background-color:#f5f0c9;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;}
-.question-page .post-controls .sep{color:#ccc;float:right;height:18px;font-size:18px;}
-.question-page .post-controls .question-delete,.question-page .answer-controls .question-delete{background:url(../images/delete.png) no-repeat center left;padding-left:16px;}
-.question-page .post-controls .question-flag,.question-page .answer-controls .question-flag{background:url(../images/flag.png) no-repeat center left;}
-.question-page .post-controls .question-edit,.question-page .answer-controls .question-edit{background:url(../images/edit2.png) no-repeat center left;}
-.question-page .post-controls .question-retag,.question-page .answer-controls .question-retag{background:url(../images/retag.png) no-repeat center left;}
-.question-page .post-controls .question-close,.question-page .answer-controls .question-close{background:url(../images/close.png) no-repeat center left;}
-.question-page .post-controls .permant-link,.question-page .answer-controls .permant-link{background:url(../images/link.png) no-repeat center left;}
-.question-page .tabBar{width:100%;}
-.question-page #questionCount{float:left;font-family:'Yanone Kaffeesatz',sans-serif;line-height:15px;}
-.question-page .question-img-upvote,.question-page .question-img-downvote,.question-page .answer-img-upvote,.question-page .answer-img-downvote{width:25px;height:20px;cursor:pointer;}
-.question-page .question-img-upvote,.question-page .answer-img-upvote{background:url(../images/vote-arrow-up-new.png) no-repeat;}
-.question-page .question-img-downvote,.question-page .answer-img-downvote{background:url(../images/vote-arrow-down-new.png) no-repeat;}
-.question-page .question-img-upvote:hover,.question-page .question-img-upvote.on,.question-page .answer-img-upvote:hover,.question-page .answer-img-upvote.on{background:url(../images/vote-arrow-up-on-new.png) no-repeat;}
-.question-page .question-img-downvote:hover,.question-page .question-img-downvote.on,.question-page .answer-img-downvote:hover,.question-page .answer-img-downvote.on{background:url(../images/vote-arrow-down-on-new.png) no-repeat;}
-.question-page #fmanswer_button{margin:8px 0px ;}
-.question-page .question-img-favorite:hover{background:url(../images/vote-favorite-on.png);}
-.question-page div.comments{padding:0;}
-.question-page #comment-title{font-weight:bold;font-size:23px;color:#7ea9b3;width:200px;float:left;font-family:'Yanone Kaffeesatz',sans-serif;}
-.question-page .comments{font-size:12px;clear:both;}.question-page .comments div.controls{clear:both;float:left;width:100%;margin:3px 0 20px 5px;}
-.question-page .comments .controls a{color:#988e4c;padding:0 3px 2px 22px;font-family:Arial;font-size:13px;background:url(../images/comment.png) no-repeat center left;}
-.question-page .comments .controls a:hover{background-color:#f5f0c9;text-decoration:none;}
-.question-page .comments .button{color:#988e4c;font-size:11px;padding:3px;cursor:pointer;}
-.question-page .comments a{background-color:inherit;color:#1b79bd;padding:0;}
-.question-page .comments form.post-comments{margin:3px 26px 0 42px;}.question-page .comments form.post-comments textarea{font-size:13px;line-height:1.3;}
-.question-page .comments textarea{height:42px;width:100%;margin:7px 0 5px 1px;font-family:Arial;outline:none;overflow:auto;font-size:12px;line-height:140%;padding-left:2px;padding-top:4px;border:#cce6ec 3px solid;}
-.question-page .comments input{margin-left:10px;margin-top:1px;vertical-align:top;width:100px;}
-.question-page .comments button{background:url(../images/small-button-blue.png) repeat-x top;border:0;color:#4a757f;font-family:Arial;font-size:13px;width:100px;font-weight:bold;height:27px;line-height:25px;margin-bottom:5px;cursor:pointer;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0px 1px 0px #e6f6fa;-moz-text-shadow:0px 1px 0px #e6f6fa;-webkit-text-shadow:0px 1px 0px #e6f6fa;-webkit-box-shadow:1px 1px 2px #808080;-moz-box-shadow:1px 1px 2px #808080;box-shadow:1px 1px 2px #808080;}
-.question-page .comments button:hover{background:url(../images/small-button-blue.png) bottom repeat-x;text-shadow:0px 1px 0px #c6d9dd;-moz-text-shadow:0px 1px 0px #c6d9dd;-webkit-text-shadow:0px 1px 0px #c6d9dd;}
-.question-page .comments .counter{display:inline-block;width:245px;float:right;color:#b6a475 !important;vertical-align:top;font-family:Arial;float:right;text-align:right;}
-.question-page .comments .comment{border-bottom:1px solid #edeeeb;clear:both;margin:0;margin-top:8px;padding-bottom:4px;overflow:auto;font-family:Arial;font-size:11px;min-height:25px;background:#ffffff url(../images/comment-background.png) bottom repeat-x;border-radius:5px;-ms-border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;-khtml-border-radius:5px;}
-.question-page .comments div.comment:hover{background-color:#efefef;}
-.question-page .comments a.author{background-color:inherit;color:#1b79bd;padding:0;}
-.question-page .comments a.author:hover{text-decoration:underline;}
-.question-page .comments span.delete-icon{background:url(../images/close-small.png) no-repeat;}
-.question-page .comments span.delete-icon:hover{border:#BC564B 2px solid;border-radius:10px;-ms-border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;}
-.question-page .comments .content{margin-bottom:7px;}
-.question-page .comments .comment-votes{float:left;width:37px;line-height:130%;padding:6px 5px 6px 3px;}
-.question-page .comments .comment-body{line-height:1.3;margin:3px 26px 0 46px;padding:5px 3px;color:#666;font-size:13px;}.question-page .comments .comment-body .edit{padding-left:6px;}
-.question-page .comments .comment-body p{font-size:13px;line-height:1.3;margin-bottom:3px;padding:0;}
-.question-page .comments .comment-delete{float:right;width:14px;line-height:130%;padding:8px 6px;}
-.question-page .comments .upvote{margin:0px;padding-right:17px;padding-top:2px;text-align:right;height:20px;font-size:13px;font-weight:bold;color:#777;}
-.question-page .comments .upvote.upvoted{color:#d64000;}
-.question-page .comments .upvote.hover{background:url(../images/go-up-grey.png) no-repeat;background-position:right 1px;}
-.question-page .comments .upvote:hover{background:url(../images/go-up-orange.png) no-repeat;background-position:right 1px;}
-.question-page .comments .help-text{float:right;text-align:right;color:gray;margin-bottom:0px;margin-top:0px;line-height:50%;}
-.question-page #questionTools{font-size:22px;margin-top:11px;text-align:left;}
-.question-page .question-status{margin-top:10px;margin-bottom:15px;padding:20px;background-color:#fef7cc;text-align:center;border:#e1c04a 1px solid;}
-.question-page .question-status h3{font-size:20px;color:#707070;font-weight:normal;}
-.question-page .vote-buttons{float:left;text-align:center;padding-top:2px;margin:10px 10px 0px 3px;}
-.question-page .vote-buttons IMG{cursor:pointer;}
-.question-page .vote-number{font-family:'Yanone Kaffeesatz',sans-serif;padding:0px 0 5px 0;font-size:25px;font-weight:bold;color:#777;}
-.question-page .vote-buttons .notify-sidebar{text-align:left;width:120px;}
-.question-page .vote-buttons .notify-sidebar label{vertical-align:top;}
-.question-page .tabBar-answer{margin-bottom:15px;padding-left:7px;width:723px;margin-top:10px;}
-.question-page .answer .vote-buttons{float:left;}
-.question-page .accepted-answer{background-color:#f7fecc;border-bottom-color:#9BD59B;}.question-page .accepted-answer .vote-buttons{width:27px;margin-right:10px;margin-top:10px;}
-.question-page .answer .post-update-info a{color:#444444;}
-.question-page .answered{background:#CCC;color:#999;}
-.question-page .answered-accepted{background:#DCDCDC;color:#763333;}.question-page .answered-accepted strong{color:#E1E818;}
-.question-page .answered-by-owner{background:#F1F1FF;}.question-page .answered-by-owner .comments .button{background-color:#E6ECFF;}
-.question-page .answered-by-owner .comments{background-color:#E6ECFF;}
-.question-page .answered-by-owner .vote-buttons{margin-right:10px;}
-.question-page .answer-img-accept:hover{background:url(../images/vote-accepted-on.png);}
-.question-page .answer-body a{color:#1b79bd;}
-.question-page .answer-body li{margin-bottom:0.7em;}
-.question-page #fmanswer{color:#707070;line-height:1.2;margin-top:10px;}.question-page #fmanswer h2{font-family:'Yanone Kaffeesatz',sans-serif;color:#7ea9b3;font-size:24px;}
-.question-page #fmanswer label{font-size:13px;}
-.question-page .message{padding:5px;margin:0px 0 10px 0;}
-.facebook-share.icon,.twitter-share.icon,.linkedin-share.icon,.identica-share.icon{background:url(../images/socialsprite.png) no-repeat;display:block;text-indent:-100em;height:25px;width:25px;margin-bottom:3px;}
-.facebook-share.icon:hover,.twitter-share.icon:hover,.linkedin-share.icon:hover,.identica-share.icon:hover{opacity:0.8;filter:alpha(opacity=80);}
-.facebook-share.icon{background-position:-26px 0px;}
-.identica-share.icon{background-position:-78px 0px;}
-.twitter-share.icon{margin-top:10px;background-position:0px 0px;}
-.linkedin-share.icon{background-position:-52px 0px;}
-.openid-signin,.meta,.users-page,.user-profile-edit-page{font-size:13px;line-height:1.3;color:#525252;}.openid-signin p,.meta p,.users-page p,.user-profile-edit-page p{font-size:13px;color:#707070;line-height:1.3;font-family:Arial;color:#525252;margin-bottom:12px;}
-.openid-signin h2,.meta h2,.users-page h2,.user-profile-edit-page h2{color:#525252;padding-left:0px;font-size:16px;}
-.openid-signin form,.meta form,.users-page form,.user-profile-edit-page form,.user-profile-page form{margin-bottom:15px;}
-.openid-signin input[type="text"],.meta input[type="text"],.users-page input[type="text"],.user-profile-edit-page input[type="text"],.user-profile-page input[type="text"],.openid-signin input[type="password"],.meta input[type="password"],.users-page input[type="password"],.user-profile-edit-page input[type="password"],.user-profile-page input[type="password"],.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{border:#cce6ec 3px solid;height:25px;padding-left:5px;width:395px;font-size:14px;}
-.openid-signin select,.meta select,.users-page select,.user-profile-edit-page select,.user-profile-page select{width:405px;height:30px;}
-.openid-signin textarea,.meta textarea,.users-page textarea,.user-profile-edit-page textarea,.user-profile-page textarea{border:#cce6ec 3px solid;padding-left:5px;padding-top:5px;width:395px;font-size:14px;}
-.openid-signin input.submit,.meta input.submit,.users-page input.submit,.user-profile-edit-page input.submit,.user-profile-page input.submit{background:url(../images/small-button-blue.png) repeat-x top;border:0;color:#4a757f;font-weight:bold;font-size:13px;font-family:Arial;height:26px;margin:5px 0px;width:100px;cursor:pointer;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0px 1px 0px #e6f6fa;-moz-text-shadow:0px 1px 0px #e6f6fa;-webkit-text-shadow:0px 1px 0px #e6f6fa;-webkit-box-shadow:1px 1px 2px #808080;-moz-box-shadow:1px 1px 2px #808080;box-shadow:1px 1px 2px #808080;}
-.openid-signin input.submit:hover,.meta input.submit:hover,.users-page input.submit:hover,.user-profile-edit-page input.submit:hover,.user-profile-page input.submit:hover{background:url(../images/small-button-blue.png) repeat-x bottom;text-decoration:none;}
-.openid-signin .cancel,.meta .cancel,.users-page .cancel,.user-profile-edit-page .cancel,.user-profile-page .cancel{background:url(../images/small-button-cancel.png) repeat-x top !important;color:#525252 !important;}
-.openid-signin .cancel:hover,.meta .cancel:hover,.users-page .cancel:hover,.user-profile-edit-page .cancel:hover,.user-profile-page .cancel:hover{background:url(../images/small-button-cancel.png) repeat-x bottom !important;}
-#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{margin-top:10px;}#email-input-fs #id_email,#local_login_buttons #id_email,#password-fs #id_email,#openid-fs #id_email,#email-input-fs #id_username,#local_login_buttons #id_username,#password-fs #id_username,#openid-fs #id_username,#email-input-fs #id_password,#local_login_buttons #id_password,#password-fs #id_password,#openid-fs #id_password{font-size:12px;line-height:20px;height:20px;margin:0px;padding:0px 0 0 5px;border:#cce6ec 3px solid;width:200px;}
-#email-input-fs .submit-b,#local_login_buttons .submit-b,#password-fs .submit-b,#openid-fs .submit-b{background:url(../images/small-button-blue.png) repeat-x top;border:0;color:#4a757f;font-weight:bold;font-size:13px;font-family:Arial;height:24px;margin-top:-2px;padding-left:10px;padding-right:10px;cursor:pointer;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0px 1px 0px #e6f6fa;-moz-text-shadow:0px 1px 0px #e6f6fa;-webkit-text-shadow:0px 1px 0px #e6f6fa;-webkit-box-shadow:1px 1px 2px #808080;-moz-box-shadow:1px 1px 2px #808080;box-shadow:1px 1px 2px #808080;}
-#email-input-fs .submit-b:hover,#local_login_buttons .submit-b:hover,#password-fs .submit-b:hover,#openid-fs .submit-b:hover{background:url(../images/small-button-blue.png) repeat-x bottom;}
-.openid-input{background:url(../images/openid.gif) no-repeat;padding-left:15px;cursor:pointer;}
-.openid-login-input{background-position:center left;background:url(../images/openid.gif) no-repeat 0% 50%;padding:5px 5px 5px 15px;cursor:pointer;font-family:Trebuchet MS;font-weight:300;font-size:150%;width:500px;}
-.openid-login-submit{height:40px;width:80px;line-height:40px;cursor:pointer;border:1px solid #777;font-weight:bold;font-size:120%;}
-.tabBar-user{width:375px;}
-.user{padding:5px;line-height:140%;width:166px;border:#eee 1px solid;margin-bottom:5px;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;}.user .user-micro-info{color:#525252;}
-.user ul{margin:0;list-style-type:none;}
-.user .thumb{clear:both;float:left;margin-right:4px;display:inline;}
-.tabBar-tags{width:270px;margin-bottom:15px;}
-a.medal{font-size:17px;line-height:250%;margin-right:5px;color:#333;text-decoration:none;background:url(../images/medala.gif) no-repeat;border-left:1px solid #EEE;border-top:1px solid #EEE;border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:4px 12px 4px 6px;}
-a:hover.medal{color:#333;text-decoration:none;background:url(../images/medala_on.gif) no-repeat;border-left:1px solid #E7E296;border-top:1px solid #E7E296;border-bottom:1px solid #D1CA3D;border-right:1px solid #D1CA3D;}
-#award-list .user{float:left;margin:5px;}
-.tabBar-profile{width:100%;margin-bottom:15px;float:left;}
-.user-profile-page{font-size:13px;color:#525252;}.user-profile-page p{font-size:13px;line-height:1.3;color:#525252;}
-.user-profile-page .avatar img{border:#eee 1px solid;padding:5px;}
-.user-profile-page h2{padding:10px 0px 10px 0px;font-family:'Yanone Kaffeesatz',sans-serif;}
-.user-details{font-size:13px;}.user-details h3{font-size:16px;}
-.user-about{background-color:#EEEEEE;height:200px;line-height:20px;overflow:auto;padding:10px;width:90%;}.user-about p{font-size:13px;}
-.follow-toggle,.submit{border:0 !important;color:#4a757f;font-weight:bold;font-size:12px;height:26px;line-height:26px;margin-top:-2px;font-size:15px;cursor:pointer;font-family:'Yanone Kaffeesatz',sans-serif;background:url(../images/small-button-blue.png) repeat-x top;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;text-shadow:0px 1px 0px #e6f6fa;-moz-text-shadow:0px 1px 0px #e6f6fa;-webkit-text-shadow:0px 1px 0px #e6f6fa;-webkit-box-shadow:1px 1px 2px #808080;-moz-box-shadow:1px 1px 2px #808080;box-shadow:1px 1px 2px #808080;}
-.follow-toggle:hover,.submit:hover{background:url(../images/small-button-blue.png) repeat-x bottom;text-decoration:none !important;}
-.follow-toggle .follow{font-color:#000;font-style:normal;}
-.follow-toggle .unfollow div.unfollow-red{display:none;}
-.follow-toggle .unfollow:hover div.unfollow-red{display:inline;color:#fff;font-weight:bold;color:#A05736;}
-.follow-toggle .unfollow:hover div.unfollow-green{display:none;}
-.count{font-family:'Yanone Kaffeesatz',sans-serif;font-size:200%;font-weight:700;color:#777777;}
-.scoreNumber{font-family:'Yanone Kaffeesatz',sans-serif;font-size:35px;font-weight:800;color:#777;line-height:40px;margin-top:3px;}
-.vote-count{font-family:Arial;font-size:160%;font-weight:700;color:#777;}
-.answer-summary{display:block;clear:both;padding:3px;}
-.answer-votes{background-color:#EEEEEE;color:#555555;float:left;font-family:Arial;font-size:15px;font-weight:bold;height:17px;padding:2px 4px 5px;text-align:center;text-decoration:none;width:20px;margin-right:10px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;}
-.karma-summary{padding:5px;font-size:13px;}
-.karma-summary h3{text-align:center;font-weight:bold;padding:5px;}
-.karma-diagram{width:477px;height:300px;float:left;margin-right:10px;}
-.karma-details{float:right;width:450px;height:250px;overflow-y:auto;word-wrap:break-word;}.karma-details p{margin-bottom:10px;}
-.karma-gained{font-weight:bold;background:#eee;width:25px;margin-right:5px;color:green;padding:3px;display:block;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;}
-.karma-lost{font-weight:bold;background:#eee;width:25px;color:red;padding:3px;display:block;margin-right:5px;float:left;text-align:center;border-radius:3px;-ms-border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;}
-.submit-row{margin-bottom:10px;}
-.revision{margin:10px 0 10px 0;font-size:13px;color:#525252;}.revision p{font-size:13px;line-height:1.3;color:#525252;}
-.revision h3{font-family:'Yanone Kaffeesatz',sans-serif;font-size:21px;padding-left:0px;}
-.revision .header{background-color:#F5F5F5;padding:5px;cursor:pointer;}
-.revision .author{background-color:#e9f3f5;}
-.revision .summary{padding:5px 0 10px 0;}
-.revision .summary span{background-color:#fde785;padding:6px;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;display:inline;-webkit-box-shadow:1px 1px 4px #cfb852;-moz-box-shadow:1px 1px 4px #cfb852;box-shadow:1px 1px 4px #cfb852;}
-.revision .answerbody{padding:10px 0 5px 10px;}
-.revision .revision-mark{width:150px;text-align:left;display:inline-block;font-size:11px;overflow:hidden;}.revision .revision-mark .gravatar{float:left;margin-right:4px;padding-top:5px;}
-.revision .revision-number{font-size:300%;font-weight:bold;font-family:sans-serif;}
-del,del .post-tag{color:#C34719;}
-ins .post-tag,ins p,ins{background-color:#E6F0A2;}
-.vote-notification{z-index:1;cursor:pointer;display:none;position:absolute;font-family:Arial;font-size:14px;font-weight:normal;color:white;background-color:#8e0000;text-align:center;padding-bottom:10px;-webkit-box-shadow:0px 2px 4px #370000;-moz-box-shadow:0px 2px 4px #370000;box-shadow:0px 2px 4px #370000;border-radius:4px;-ms-border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;}.vote-notification h3{background:url(../images/notification.png) repeat-x top;padding:10px 10px 10px 10px;font-size:13px;margin-bottom:5px;border-top:#8e0000 1px solid;color:#fff;font-weight:normal;border-top-right-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;}
-.vote-notification a{color:#fb7321;text-decoration:underline;font-weight:bold;}
-#ground{width:100%;clear:both;border-top:1px solid #000;padding:6px 0 0 0;background:#16160f;font-size:16px;font-family:'Yanone Kaffeesatz',sans-serif;}#ground p{margin-bottom:0;}
-.footer-links{color:#EEE;text-align:left;width:500px;float:left;}.footer-links a{color:#e7e8a8;}
-.powered-link{width:500px;float:left;text-align:left;}.powered-link a{color:#8ebcc7;}
-.copyright{color:#616161;width:450px;float:right;text-align:right;}.copyright a{color:#8ebcc7;}
-.copyright img.license-logo{margin:6px 0px 20px 10px;float:right;}
-.notify-me{float:left;}
-span.text-counter{margin-right:20px;}
-span.form-error{color:#990000;font-weight:normal;margin-left:5px;}
-p.form-item{margin:0px;}
-.deleted{background:#F4E7E7 none repeat scroll 0 0;}
-.form-row{line-height:25px;}
-table.form-as-table{margin-top:5px;}
-table.form-as-table ul{list-style-type:none;display:inline;}
-table.form-as-table li{display:inline;}
-table.form-as-table td{text-align:right;}
-table.form-as-table th{text-align:left;font-weight:normal;}
-table.ab-subscr-form{width:45em;}
-table.ab-tag-filter-form{width:45em;}
-.submit-row{line-height:30px;padding-top:10px;display:block;clear:both;}
-.errors{line-height:20px;color:red;}
-.error{color:darkred;margin:0;font-size:10px;}
-label.retag-error{color:darkred;padding-left:5px;font-size:10px;}
-.fieldset{border:none;margin-top:10px;padding:10px;}
-span.form-error{color:#990000;font-size:90%;font-weight:normal;margin-left:5px;}
-.favorites-empty{width:32px;height:45px;float:left;}
-.user-info-table{margin-bottom:10px;border-spacing:0;}
-.user-stats-table .narrow{width:660px;}
-.narrow .summary h3{padding:0px;margin:0px;}
-.relativetime{font-weight:bold;text-decoration:none;}
-.narrow .tags{float:left;}
-.user-action-1{font-weight:bold;color:#333;}
-.user-action-2{font-weight:bold;color:#CCC;}
-.user-action-3{color:#333;}
-.user-action-4{color:#333;}
-.user-action-5{color:darkred;}
-.user-action-6{color:darkred;}
-.user-action-7{color:#333;}
-.user-action-8{padding:3px;font-weight:bold;background-color:#CCC;color:#763333;}
-.revision-summary{background-color:#FFFE9B;padding:2px;}
-.question-title-link a{font-weight:bold;color:#0077CC;}
-.answer-title-link a{color:#333;}
-.post-type-1 a{font-weight:bold;}
-.post-type-3 a{font-weight:bold;}
-.post-type-5 a{font-weight:bold;}
-.post-type-2 a{color:#333;}
-.post-type-4 a{color:#333;}
-.post-type-6 a{color:#333;}
-.post-type-8 a{color:#333;}
-.hilite{background-color:#ff0;}
-.hilite1{background-color:#ff0;}
-.hilite2{background-color:#f0f;}
-.hilite3{background-color:#0ff;}
-.gold,.badge1{color:#FFCC00;}
-.silver,.badge2{color:#CCCCCC;}
-.bronze,.badge3{color:#CC9933;}
-.score{font-weight:800;color:#333;}
-a.comment{background:#EEE;color:#993300;padding:5px;}
-a.offensive{color:#999;}
-.message h1{padding-top:0px;font-size:15px;}
-.message p{margin-bottom:0px;}
-p.space-above{margin-top:10px;}
-.warning{color:red;}
-button::-moz-focus-inner{padding:0;border:none;}
-.submit{cursor:pointer;background-color:#D4D0C8;height:30px;border:1px solid #777777;font-weight:bold;font-size:120%;}
-.submit:hover{text-decoration:underline;}
-.submit.small{margin-right:5px;height:20px;font-weight:normal;font-size:12px;padding:1px 5px;}
-.submit.small:hover{text-decoration:none;}
-.question-page a.submit{display:-moz-inline-stack;display:inline-block;line-height:30px;padding:0 5px;*display:inline;}
-.noscript{position:fixed;top:0px;left:0px;width:100%;z-index:100;padding:5px 0;text-align:center;font-family:sans-serif;font-size:120%;font-weight:Bold;color:#FFFFFF;background-color:#AE0000;}
-.big{font-size:14px;}
-.strong{font-weight:bold;}
-.orange{color:#d64000;font-weight:bold;}
-.grey{color:#808080;}
-.about div{padding:10px 5px 10px 5px;border-top:1px dashed #aaaaaa;}
-.highlight{background-color:#FFF8C6;}
-.nomargin{margin:0;}
-.margin-bottom{margin-bottom:10px;}
-.margin-top{margin-top:10px;}
-.inline-block{display:inline-block;}
-.action-status{margin:0;border:none;text-align:center;line-height:10px;font-size:12px;padding:0;}
-.action-status span{padding:3px 5px 3px 5px;background-color:#fff380;font-weight:normal;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;}
-.list-table td{vertical-align:top;}
-table.form-as-table .errorlist{display:block;margin:0;padding:0 0 0 5px;text-align:left;font-size:10px;color:darkred;}
-table.form-as-table input{display:inline;margin-left:4px;}
-table.form-as-table th{vertical-align:bottom;padding-bottom:4px;}
-.form-row-vertical{margin-top:8px;display:block;}
-.form-row-vertical label{margin-bottom:3px;display:block;}
-.text-align-right{text-align:center;}
-ul.form-horizontal-rows{list-style:none;margin:0;}
-ul.form-horizontal-rows li{position:relative;height:40px;}
-ul.form-horizontal-rows label{display:inline-block;}
-ul.form-horizontal-rows ul.errorlist{list-style:none;color:darkred;font-size:10px;line-height:10px;position:absolute;top:2px;left:180px;text-align:left;margin:0;}
-ul.form-horizontal-rows ul.errorlist li{height:10px;}
-ul.form-horizontal-rows label{position:absolute;left:0px;bottom:6px;margin:0px;line-height:12px;font-size:12px;}
-ul.form-horizontal-rows li input{position:absolute;bottom:0px;left:180px;margin:0px;}
-.narrow .summary{float:left;}
-.user-profile-tool-links{font-weight:bold;vertical-align:top;}
-ul.post-tags{margin-left:7px;}
-ul.post-tags li{margin-top:4px;margin-bottom:3px;}
-ul.post-retag{margin-bottom:0px;margin-left:5px;}
-#question-controls .tags{margin:0 0 3px 0;}
-#tagSelector{padding-bottom:2px;margin-bottom:0;}
-#related-tags{padding-left:3px;}
-#hideIgnoredTagsControl{margin:5px 0 0 0;}
-#hideIgnoredTagsControl label{font-size:12px;color:#666;}
-#hideIgnoredTagsCb{margin:0 2px 0 1px;}
-#recaptcha_widget_div{width:318px;float:left;clear:both;}
-p.signup_p{margin:20px 0px 0px 0px;}
-.simple-subscribe-options ul{list-style:none;list-style-position:outside;margin:0;}
-.wmd-preview a{color:#1b79bd;}
-.wmd-preview li{margin-bottom:7px;font-size:14px;}
-.search-result-summary{font-weight:bold;font-size:18px;line-height:22px;margin:0px 0px 0px 0px;padding:2px 0 0 0;float:left;}
-.faq-rep-item{text-align:right;padding-right:5px;}
-.user-info-table .gravatar{margin:0;}
-#responses{clear:both;line-height:18px;margin-bottom:15px;}
-#responses div.face{float:left;text-align:center;width:54px;padding:3px;overflow:hidden;}
-.response-parent{margin-top:18px;}
-.response-parent strong{font-size:20px;}
-.re{min-height:57px;clear:both;margin-top:10px;}
-#responses input{float:left;}
-#re_tools{margin-bottom:10px;}
-#re_sections{margin-bottom:6px;}
-#re_sections .on{font-weight:bold;}
-.avatar-page ul{list-style:none;}
-.avatar-page li{display:inline;}
-.user-profile-page .avatar p{margin-bottom:0px;}
-.user-profile-page .tabBar a#stats{margin-left:0;}
-.user-profile-page img.gravatar{margin:2px 0 3px 0;}
-.user-profile-page h3{padding:0;margin-top:-3px;}
-.userList{font-size:13px;}
-img.flag{border:1px solid #eee;vertical-align:text-top;}
-.main-page img.flag{vertical-align:text-bottom;}
-a.edit{padding-left:3px;color:#145bff;}
-.str{color:#080;}
-.kwd{color:#008;}
-.com{color:#800;}
-.typ{color:#606;}
-.lit{color:#066;}
-.pun{color:#660;}
-.pln{color:#000;}
-.tag{color:#008;}
-.atn{color:#606;}
-.atv{color:#080;}
-.dec{color:#606;}
-pre.prettyprint{clear:both;padding:3px;border:0px solid #888;}
-@media print{.str{color:#060;} .kwd{color:#006;font-weight:bold;} .com{color:#600;font-style:italic;} .typ{color:#404;font-weight:bold;} .lit{color:#044;} .pun{color:#440;} .pln{color:#000;} .tag{color:#006;font-weight:bold;} .atn{color:#404;} .atv{color:#060;}}
+/* General Predifined classes, read more in lesscss.org */
+/* Variables for Colors*/
+/* Variables for fonts*/
+/* "Trebuchet MS", sans-serif;*/
+/* Buttons */
+.button-style-hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+/* General styles for gradients */
+/* Receive exactly positions for background Sprite */
+/* CSS3 Elements */
+/* Library of predifined less functions styles */
+/* ----- General HTML Styles----- */
+body {
+ background: #FFF;
+ font-size: 14px;
+ line-height: 150%;
+ margin: 0;
+ padding: 0;
+ color: #000;
+ font-family: Arial;
+}
+div {
+ margin: 0 auto;
+ padding: 0;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+ul,
+li,
+dl,
+dt,
+dd,
+form,
+img,
+p {
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+label {
+ vertical-align: middle;
+}
+hr {
+ border: none;
+ border-top: 1px dashed #ccccce;
+}
+input,
+select {
+ vertical-align: middle;
+ font-family: Trebuchet MS, "segoe ui", Helvetica, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif;
+ margin-left: 0px;
+}
+textarea:focus,
+input:focus {
+ outline: none;
+}
+iframe {
+ border: none;
+}
+p {
+ font-size: 14px;
+ line-height: 140%;
+ margin-bottom: 6px;
+}
+a {
+ color: #1b79bd;
+ text-decoration: none;
+ cursor: pointer;
+}
+h2 {
+ font-size: 21px;
+ padding: 3px 0 3px 5px;
+}
+h3 {
+ font-size: 19px;
+ padding: 3px 0 3px 5px;
+}
+ul {
+ list-style: disc;
+ margin-left: 20px;
+ padding-left: 0px;
+ margin-bottom: 1em;
+}
+ol {
+ list-style: decimal;
+ margin-left: 30px;
+ margin-bottom: 1em;
+ padding-left: 0px;
+}
+td ul {
+ vertical-align: middle;
+}
+li input {
+ margin: 3px 3px 4px 3px;
+}
+pre {
+ font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;
+ font-size: 100%;
+ margin-bottom: 10px;
+ /*overflow: auto;*/
+
+ background-color: #F5F5F5;
+ padding-left: 5px;
+ padding-top: 5px;
+ /*width: 671px;*/
+
+ padding-bottom: 20px ! ie7;
+}
+code {
+ font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace;
+ font-size: 100%;
+}
+blockquote {
+ margin-bottom: 10px;
+ margin-right: 15px;
+ padding: 10px 0px 1px 10px;
+ background-color: #F5F5F5;
+}
+/* http://pathfindersoftware.com/2007/09/developers-note-2/ */
+* html .clearfix,
+* html .paginator {
+ height: 1;
+ overflow: visible;
+}
++ html .clearfix,
++ html .paginator {
+ min-height: 1%;
+}
+.clearfix:after,
+.paginator:after {
+ clear: both;
+ content: ".";
+ display: block;
+ height: 0;
+ visibility: hidden;
+}
+.badges a {
+ color: #763333;
+ text-decoration: underline;
+}
+a:hover {
+ text-decoration: underline;
+}
+.badge-context-toggle.active {
+ cursor: pointer;
+ text-decoration: underline;
+}
+h1 {
+ font-size: 24px;
+ padding: 0px 0 5px 0px;
+}
+/* ----- Extra space above for messages ----- */
+body.user-messages {
+ margin-top: 2.4em;
+}
+/* ----- Custom positions ----- */
+.left {
+ float: left;
+}
+.right {
+ float: right;
+}
+.clean {
+ clear: both;
+}
+.center {
+ margin: 0 auto;
+ padding: 0;
+}
+/* ----- Notify message bar , check blocks/system_messages.html ----- */
+.notify {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ z-index: 100;
+ padding: 0;
+ text-align: center;
+ background-color: #f5dd69;
+ border-top: #fff 1px solid;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.notify p.notification {
+ margin-top: 6px;
+ margin-bottom: 6px;
+ font-size: 16px;
+ color: #424242;
+}
+#closeNotify {
+ position: absolute;
+ right: 5px;
+ top: 7px;
+ color: #735005;
+ text-decoration: none;
+ line-height: 18px;
+ background: -6px -5px url(../images/sprites.png) no-repeat;
+ cursor: pointer;
+ width: 20px;
+ height: 20px;
+}
+#closeNotify:hover {
+ background: -26px -5px url(../images/sprites.png) no-repeat;
+}
+/* ----- Header, check blocks/header.html ----- */
+#header {
+ margin-top: 0px;
+ background: #16160f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.content-wrapper {
+ /* wrapper positioning class */
+
+ width: 960px;
+ margin: auto;
+ position: relative;
+}
+#logo img {
+ padding: 5px 0px 5px 0px;
+ height: 75px;
+ width: auto;
+ float: left;
+}
+#userToolsNav {
+ /* Navigation bar containing login link or user information, check widgets/user_navigation.html*/
+
+ height: 20px;
+ padding-bottom: 5px;
+}
+#userToolsNav a {
+ height: 35px;
+ text-align: right;
+ margin-left: 20px;
+ text-decoration: underline;
+ color: #d0e296;
+ font-size: 16px;
+}
+#userToolsNav a:first-child {
+ margin-left: 0;
+}
+#userToolsNav a#ab-responses {
+ margin-left: 3px;
+}
+#userToolsNav .user-info,
+#userToolsNav .user-micro-info {
+ color: #b5b593;
+}
+#userToolsNav a img {
+ vertical-align: middle;
+ margin-bottom: 2px;
+}
+#userToolsNav .user-info a {
+ margin: 0;
+ text-decoration: none;
+}
+#metaNav {
+ /* Top Navigation bar containing links for tags, people and badges, check widgets/header.html */
+
+ float: right;
+ /* for #header.with-logo it is modified */
+
+ margin-right: 7px;
+}
+#metaNav a {
+ color: #e2e2ae;
+ padding: 0px 0px 0px 35px;
+ height: 25px;
+ line-height: 25px;
+ margin: 5px 0px 0px 10px;
+ font-size: 18px;
+ font-weight: 100;
+ text-decoration: none;
+ display: block;
+ float: left;
+}
+#metaNav a:hover {
+ text-decoration: underline;
+}
+#metaNav a.on {
+ font-weight: bold;
+ color: #FFF;
+ text-decoration: none;
+}
+#metaNav a.special {
+ font-size: 18px;
+ color: #B02B2C;
+ font-weight: bold;
+ text-decoration: none;
+}
+#metaNav a.special:hover {
+ text-decoration: underline;
+}
+#metaNav #navTags {
+ background: -50px -5px url(../images/sprites.png) no-repeat;
+}
+#metaNav #navUsers {
+ background: -125px -5px url(../images/sprites.png) no-repeat;
+}
+#metaNav #navGroups {
+ background: -125px -5px url(../images/sprites.png) no-repeat;
+}
+#metaNav #navBadges {
+ background: -210px -5px url(../images/sprites.png) no-repeat;
+}
+#header.with-logo #userToolsNav {
+ position: absolute;
+ bottom: 0;
+ right: 0px;
+}
+#header.without-logo #userToolsNav {
+ float: left;
+ margin-top: 7px;
+}
+#header.without-logo #metaNav {
+ margin-bottom: 7px;
+}
+#secondaryHeader {
+ /* Div containing Home button, scope navigation, search form and ask button, check blocks/secondary_header.html */
+
+ height: 55px;
+ background: #e9e9e1;
+ border-bottom: #d3d3c2 1px solid;
+ border-top: #fcfcfc 1px solid;
+ margin-bottom: 10px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+#secondaryHeader #homeButton {
+ border-right: #afaf9e 1px solid;
+ background: -6px -36px url(../images/sprites.png) no-repeat;
+ height: 55px;
+ width: 43px;
+ display: block;
+ float: left;
+}
+#secondaryHeader #homeButton:hover {
+ background: -51px -36px url(../images/sprites.png) no-repeat;
+}
+#secondaryHeader #scopeWrapper {
+ width: 688px;
+ float: left;
+}
+#secondaryHeader #scopeWrapper a {
+ display: block;
+ float: left;
+}
+#secondaryHeader #scopeWrapper .scope-selector {
+ font-size: 20px;
+ color: #7a7a6b;
+ height: 55px;
+ line-height: 55px;
+ margin-left: 16px;
+}
+#secondaryHeader #scopeWrapper .on {
+ background: url(../images/scopearrow.png) no-repeat center bottom;
+}
+#secondaryHeader #scopeWrapper .ask-message {
+ font-size: 24px;
+}
+#searchBar {
+ /* Main search form , check widgets/search_bar.html */
+
+ display: inline-block;
+ background-color: #fff;
+ width: 400px;
+ border: 1px solid #c9c9b5;
+ float: right;
+ height: 42px;
+ margin: 6px 0px 0px 15px;
+}
+#searchBar .searchInput,
+#searchBar .searchInputCancelable {
+ font-size: 26px;
+ height: 39px;
+ font-weight: 300;
+ background: #FFF;
+ border: 0px;
+ color: #484848;
+ padding-left: 10px;
+ padding-top: 1px;
+ font-family: Arial;
+ vertical-align: top;
+}
+#searchBar .searchInput {
+ width: 340px;
+}
+#searchBar .searchInputCancelable {
+ width: 305px;
+}
+#searchBar .logoutsearch {
+ width: 337px;
+}
+#searchBar .searchBtn {
+ font-size: 10px;
+ color: #666;
+ background-color: #eee;
+ height: 42px;
+ border: #FFF 1px solid;
+ line-height: 22px;
+ text-align: center;
+ float: right;
+ margin: 0px;
+ width: 48px;
+ background: -98px -36px url(../images/sprites.png) no-repeat;
+ cursor: pointer;
+}
+#searchBar .searchBtn:hover {
+ background: -146px -36px url(../images/sprites.png) no-repeat;
+}
+#searchBar .cancelSearchBtn {
+ font-size: 30px;
+ color: #ce8888;
+ background: #fff;
+ height: 42px;
+ border: 0px;
+ border-left: #deded0 1px solid;
+ text-align: center;
+ width: 35px;
+ cursor: pointer;
+}
+#searchBar .cancelSearchBtn:hover {
+ color: #d84040;
+}
+body.anon #searchBar {
+ width: 500px;
+}
+body.anon #searchBar .searchInput {
+ width: 440px;
+}
+body.anon #searchBar .searchInputCancelable {
+ width: 405px;
+}
+#askButton {
+ /* check blocks/secondary_header.html and widgets/ask_button.html*/
+
+ line-height: 44px;
+ margin-top: 6px;
+ float: right;
+ text-transform: uppercase;
+ height: 42px;
+ font-size: 20px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ width: 200px;
+ /* to match width of sidebar */
+
+}
+#askButton:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+/* ----- Content layout, check two_column_body.html or one_column_body.html ----- */
+#ContentLeft {
+ width: 730px;
+ float: left;
+ position: relative;
+ padding-bottom: 10px;
+}
+#ContentRight {
+ width: 200px;
+ float: right;
+ padding: 0 0px 10px 0px;
+}
+#ContentFull {
+ float: left;
+ width: 960px;
+}
+/* ----- Sidebar Widgets Box, check main_page/sidebar.html or question/sidebar.html ----- */
+.box {
+ background: #fff;
+ padding: 4px 0px 10px 0px;
+ width: 200px;
+ /* widgets for question template */
+
+ /* notify by email box */
+
+}
+.box p {
+ margin-bottom: 4px;
+ color: #707070;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.box p.info-box-follow-up-links {
+ text-align: right;
+ margin: 0;
+}
+.box h2 {
+ padding-left: 0;
+ background: #eceeeb;
+ height: 30px;
+ line-height: 30px;
+ text-align: right;
+ font-size: 18px !important;
+ font-weight: normal;
+ color: #656565;
+ padding-right: 10px;
+ margin-bottom: 10px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ width: 190px;
+}
+.box h3 {
+ color: #4a757f;
+ font-size: 18px;
+ text-align: left;
+ font-weight: normal;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ padding-left: 0px;
+}
+.box .contributorback {
+ background: #eceeeb url(../images/contributorsback.png) no-repeat center left;
+}
+.box label {
+ color: #707070;
+ font-size: 15px;
+ vertical-align: bottom;
+ display: inline;
+ text-align: left;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.box #displayTagFilterControl label,
+.box #emailTagFilterControl label {
+ /*Especial width just for the tag filter boxes in index page*/
+
+ width: 160px;
+}
+.box ul {
+ margin-left: 22px;
+}
+.box li {
+ list-style-type: disc;
+ font-size: 13px;
+ line-height: 20px;
+ margin-bottom: 10px;
+ color: #707070;
+}
+.box ul.tags {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ line-height: 170%;
+ display: block;
+}
+.box #displayTagFilterControl p label {
+ color: #707070;
+ font-size: 15px;
+}
+.box .inputs #interestingTagInput,
+.box .inputs #ignoredTagInput,
+.box .inputs #subscribedTagInput,
+.box .inputs #ab-tag-search {
+ width: 152px;
+ padding-left: 5px;
+ border: #c9c9b5 1px solid;
+ height: 25px;
+}
+.box .inputs #ab-tag-search {
+ width: 138px;
+}
+.box .inputs #interestingTagAdd,
+.box .inputs #ignoredTagAdd,
+.box .inputs #subscribedTagAdd,
+.box .inputs #ab-tag-search-add {
+ border: 0;
+ font-weight: bold;
+ margin-top: -2px;
+ height: 27px;
+ font-size: 14px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+}
+.box .inputs #interestingTagAdd:hover,
+.box .inputs #ignoredTagAdd:hover,
+.box .inputs #ab-tag-search-add:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.box .inputs #ab-tag-search-add {
+ width: 47px;
+}
+.box img.gravatar {
+ margin: 1px;
+}
+.box a.followed,
+.box a.follow {
+ line-height: 34px;
+ border: 0;
+ font-weight: normal;
+ margin-top: 3px;
+ display: block;
+ height: 34px;
+ font-size: 21px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ margin: 0 auto;
+ padding: 0;
+ width: 130px;
+}
+.box a.followed:hover,
+.box a.follow:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.box a.followed div.unfollow {
+ display: none;
+}
+.box a.followed:hover div {
+ display: none;
+}
+.box a.followed:hover div.unfollow {
+ display: inline;
+ color: #a05736;
+}
+.box .favorite-number {
+ padding: 5px 0 0 5px;
+ font-size: 100%;
+ font-family: Arial;
+ font-weight: bold;
+ color: #777;
+ text-align: center;
+}
+.box .notify-sidebar #question-subscribe-sidebar {
+ margin: 0 0 0 3px;
+}
+.users-page .box label {
+ display: inline;
+ float: none;
+}
+.statsWidget p {
+ color: #707070;
+ font-size: 16px;
+ border-bottom: #cccccc 1px solid;
+ font-size: 13px;
+}
+.statsWidget p strong {
+ float: right;
+ padding-right: 10px;
+}
+.questions-related {
+ word-wrap: break-word;
+}
+.questions-related p {
+ line-height: 20px;
+ padding: 4px 0px 4px 0px;
+ font-size: 16px;
+ font-weight: normal;
+ border-bottom: #cccccc 1px solid;
+}
+.questions-related a {
+ font-size: 13px;
+}
+/* tips and markdown help are widgets for ask template */
+#tips li {
+ color: #707070;
+ font-size: 13px;
+ list-style-image: url(../images/tips.png);
+}
+#tips a {
+ font-size: 16px;
+}
+#markdownHelp li {
+ color: #707070;
+ font-size: 13px;
+}
+#markdownHelp a {
+ font-size: 16px;
+}
+/* ----- Sorting top Tab, check main_page/tab_bar.html ------*/
+.tabBar {
+ background-color: #eff5f6;
+ height: 30px;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ float: right;
+ font-family: Georgia, serif;
+ font-size: 16px;
+ border-radius: 5px;
+ -ms-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -khtml-border-radius: 5px;
+}
+.tabBar h2 {
+ float: left;
+}
+.tabsA,
+.tabsC {
+ float: right;
+ position: relative;
+ display: block;
+ height: 20px;
+}
+/* tabsA - used for sorting */
+.tabsA {
+ float: right;
+}
+.tabsC {
+ float: left;
+}
+.tabsA a,
+.tabsC a {
+ border-left: 1px solid #d0e1e4;
+ color: #7ea9b3;
+ display: block;
+ float: left;
+ height: 20px;
+ line-height: 20px;
+ padding: 4px 7px 4px 7px;
+ text-decoration: none;
+}
+.tabsA a.on,
+.tabsC a.on,
+.tabsA a:hover,
+.tabsC a:hover {
+ color: #4a757f;
+}
+.tabsA .label,
+.tabsC .label {
+ float: left;
+ color: #646464;
+ margin: 4px 5px 0px 8px;
+}
+.main-page .tabsA .label {
+ margin-left: 8px;
+}
+.tabsB a {
+ background: #eee;
+ border: 1px solid #eee;
+ color: #777;
+ display: block;
+ float: left;
+ height: 22px;
+ line-height: 28px;
+ margin: 5px 0px 0 4px;
+ padding: 0 11px 0 11px;
+ text-decoration: none;
+}
+.tabsC .first {
+ border: none;
+}
+.rss {
+ float: right;
+ font-size: 16px;
+ color: #f57900;
+ margin: 5px 0px 3px 7px;
+ width: 52px;
+ padding-left: 2px;
+ padding-top: 3px;
+ background: #ffffff url(../images/feed-icon-small.png) no-repeat center right;
+ float: right;
+ font-family: Georgia, serif;
+ font-size: 16px;
+}
+.rss:hover {
+ color: #F4A731 !important;
+}
+/* ----- Headline, containing number of questions and tags selected, check main_page/headline.html ----- */
+#questionCount {
+ font-weight: bold;
+ font-size: 20px;
+ color: #7ea9b3;
+ width: 200px;
+ float: left;
+ margin-bottom: 6px;
+ padding-top: 6px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+#listSearchTags {
+ float: left;
+ margin-top: 3px;
+ color: #707070;
+ font-size: 16px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+ul#searchTags {
+ margin-left: 10px;
+ float: right;
+ padding-top: 2px;
+}
+.search-tips {
+ font-size: 16px;
+ line-height: 17px;
+ color: #707070;
+ margin: 5px 0 10px 0;
+ padding: 0px;
+ float: left;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.search-tips a {
+ text-decoration: underline;
+ color: #1b79bd;
+}
+/* ----- Question list , check main_page/content.html and macros/macros.html----- */
+#question-list {
+ float: left;
+ position: relative;
+ background-color: #FFF;
+ padding: 0;
+ width: 100%;
+}
+.short-summary {
+ position: relative;
+ filter: inherit;
+ padding: 10px 0 3px 0;
+ border-bottom: 1px solid #DDDBCE;
+ margin-bottom: 1px;
+ overflow: hidden;
+ width: 733px;
+ float: left;
+ /*background: url(../images/summary-background.png) repeat-x;*/
+
+}
+.short-summary h2 {
+ font-size: 20px;
+ font-weight: normal;
+ line-height: 26px;
+ padding-left: 0;
+ margin-bottom: 7px;
+ display: block;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.short-summary a {
+ color: #464646;
+}
+.short-summary .userinfo {
+ text-align: right;
+ line-height: 16px;
+ font-family: Arial;
+ padding-right: 4px;
+}
+.short-summary .userinfo .timeago,
+.short-summary span.anonymous {
+ font-size: 11px;
+ clear: both;
+ font-weight: normal;
+ color: #555;
+}
+.short-summary .userinfo a {
+ font-weight: bold;
+ font-size: 11px;
+}
+.short-summary .counts {
+ float: right;
+ margin: 4px 0 0 5px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.short-summary .counts .item-count {
+ padding: 0px 5px 0px 5px;
+ font-size: 25px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.short-summary .counts .votes div,
+.short-summary .counts .views div,
+.short-summary .counts .answers div,
+.short-summary .counts .favorites div {
+ margin-top: 3px;
+ font-size: 14px;
+ line-height: 14px;
+ color: #646464;
+}
+.short-summary .tags {
+ margin: 0 0 0 1px;
+}
+.short-summary .votes,
+.short-summary .answers,
+.short-summary .favorites,
+.short-summary .views {
+ text-align: center;
+ margin: 0 3px;
+ padding: 8px 2px 0px 2px;
+ width: 51px;
+ float: right;
+ height: 44px;
+ border: #dbdbd4 1px solid;
+}
+.short-summary .votes {
+ background: url(../images/vote-background.png) repeat-x;
+}
+.short-summary .answers {
+ background: url(../images/answers-background.png) repeat-x;
+}
+.short-summary .views {
+ background: url(../images/view-background.png) repeat-x;
+}
+.short-summary .no-votes .item-count {
+ color: #b1b5b6;
+}
+.short-summary .some-votes .item-count {
+ color: #4a757f;
+}
+.short-summary .no-answers .item-count {
+ color: #b1b5b6;
+}
+.short-summary .some-answers .item-count {
+ color: #eab243;
+}
+.short-summary .no-views .item-count {
+ color: #b1b5b6;
+}
+.short-summary .some-views .item-count {
+ color: #d33f00;
+}
+.short-summary .accepted .item-count {
+ background: url(../images/accept.png) no-repeat top right;
+ display: block;
+ text-align: center;
+ width: 40px;
+ color: #eab243;
+}
+.short-summary .some-favorites .item-count {
+ background: #338333;
+ color: #d0f5a9;
+}
+.short-summary .no-favorites .item-count {
+ background: #eab243;
+ color: yellow;
+}
+/* ----- Question list Paginator , check main_content/pager.html and macros/utils_macros.html----- */
+.evenMore {
+ font-size: 13px;
+ color: #707070;
+ padding: 15px 0px 10px 0px;
+ clear: both;
+}
+.evenMore a {
+ text-decoration: underline;
+ color: #1b79bd;
+}
+.pager {
+ margin-top: 10px;
+ margin-bottom: 16px;
+}
+.pagesize {
+ margin-top: 10px;
+ margin-bottom: 16px;
+ float: right;
+}
+.paginator {
+ padding: 5px 0 10px 0;
+ font-size: 13px;
+ margin-bottom: 10px;
+}
+.paginator .prev a,
+.paginator .prev a:visited,
+.paginator .next a,
+.paginator .next a:visited {
+ background-color: #fff;
+ color: #777;
+ padding: 2px 4px 3px 4px;
+}
+.paginator a {
+ color: #7ea9b3;
+}
+.paginator .prev {
+ margin-right: .5em;
+}
+.paginator .next {
+ margin-left: .5em;
+}
+.paginator .page a,
+.paginator .page a:visited,
+.paginator .curr {
+ padding: .25em;
+ background-color: #fff;
+ margin: 0em .25em;
+ color: #ff;
+}
+.paginator .curr {
+ background-color: #8ebcc7;
+ color: #fff;
+ font-weight: bold;
+}
+.paginator .next a,
+.paginator .prev a {
+ color: #7ea9b3;
+}
+.paginator .page a:hover,
+.paginator .curr a:hover,
+.paginator .prev a:hover,
+.paginator .next a:hover {
+ color: #8C8C8C;
+ background-color: #E1E1E1;
+ text-decoration: none;
+}
+.paginator .text {
+ color: #777;
+ padding: .3em;
+}
+.paginator .paginator-container-left {
+ padding: 5px 0 10px 0;
+}
+/* ----- Tags Styles ----- */
+/* tag formatting is also copy-pasted in template
+ because it must be the same in the emails
+ askbot/models/__init__.py:format_instant_notification_email()
+*/
+/* tag cloud */
+.tag-size-1 {
+ font-size: 12px;
+}
+.tag-size-2 {
+ font-size: 13px;
+}
+.tag-size-3 {
+ font-size: 14px;
+}
+.tag-size-4 {
+ font-size: 15px;
+}
+.tag-size-5 {
+ font-size: 16px;
+}
+.tag-size-6 {
+ font-size: 17px;
+}
+.tag-size-7 {
+ font-size: 18px;
+}
+.tag-size-8 {
+ font-size: 19px;
+}
+.tag-size-9 {
+ font-size: 20px;
+}
+.tag-size-10 {
+ font-size: 21px;
+}
+ul.tags,
+ul.tags.marked-tags,
+ul#related-tags {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ line-height: 170%;
+ display: block;
+}
+ul.tags li {
+ float: left;
+ display: block;
+ margin: 0 8px 8px 0;
+ padding: 0;
+ height: 20px;
+}
+.wildcard-tags {
+ clear: both;
+}
+ul.tags.marked-tags li,
+.wildcard-tags ul.tags li {
+ margin-bottom: 5px;
+}
+#tagSelector div.inputs {
+ clear: both;
+ float: none;
+ margin-bottom: 10px;
+}
+.tags-page ul.tags li,
+ul#ab-user-tags li {
+ width: 160px;
+ margin: 5px;
+ margin-left: 0;
+}
+.tags-page ul.tags {
+ margin-left: 5px;
+}
+ul#related-tags li {
+ margin: 0 5px 8px 0;
+ float: left;
+ clear: left;
+}
+/* .tag-left and .tag-right are for the sliding doors decoration of tags */
+.tag-left {
+ cursor: pointer;
+ display: block;
+ float: left;
+ height: 17px;
+ margin: 0 5px 0 0;
+ padding: 0;
+ -webkit-box-shadow: 0px 0px 5px #d3d6d7;
+ -moz-box-shadow: 0px 0px 5px #d3d6d7;
+ box-shadow: 0px 0px 5px #d3d6d7;
+}
+.tag-right {
+ background: #f3f6f6;
+ border: #fff 1px solid ;
+ border-top: #fff 2px solid;
+ outline: #cfdbdb 1px solid;
+ /* .box-shadow(0px,1px,0px,#88a8a8);*/
+
+ display: block;
+ float: left;
+ height: 17px;
+ line-height: 17px;
+ font-weight: normal;
+ font-size: 11px;
+ padding: 0px 8px 0px 8px;
+ text-decoration: none;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ font-family: Arial;
+ color: #717179;
+}
+.deletable-tag {
+ margin-right: 3px;
+ white-space: nowrap;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+}
+.tags a.tag-right,
+.tags span.tag-right {
+ color: #585858;
+ text-decoration: none;
+}
+.tags a:hover {
+ color: #1A1A1A;
+}
+.users-page h1,
+.tags-page h1,
+.groups-page h1 {
+ float: left;
+}
+.main-page h1 {
+ margin-right: 5px;
+}
+.delete-icon {
+ margin-top: -1px;
+ float: left;
+ height: 21px;
+ width: 18px;
+ display: block;
+ line-height: 20px;
+ text-align: center;
+ background: #bbcdcd;
+ cursor: default;
+ color: #fff;
+ border-top: #cfdbdb 1px solid;
+ font-family: Arial;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ text-shadow: 0px 1px 0px #7ea0a0;
+ -moz-text-shadow: 0px 1px 0px #7ea0a0;
+ -webkit-text-shadow: 0px 1px 0px #7ea0a0;
+}
+.delete-icon:hover {
+ background: #b32f2f;
+}
+.tag-number {
+ font-weight: normal;
+ float: left;
+ font-size: 16px;
+ color: #5d5d5d;
+}
+.badges .tag-number {
+ float: none;
+ display: inline;
+ padding-right: 15px;
+}
+/* ----- Ask and Edit Question Form template----- */
+.section-title {
+ color: #7ea9b3;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ font-weight: bold;
+ font-size: 24px;
+}
+#fmask {
+ margin-bottom: 30px;
+ width: 100%;
+}
+#askFormBar {
+ display: inline-block;
+ padding: 4px 7px 0px 0px;
+ margin-top: 0px;
+}
+#askFormBar p {
+ margin: 0 0 5px 0;
+ font-size: 14px;
+ color: #525252;
+ line-height: 1.4;
+}
+#askFormBar .questionTitleInput {
+ font-size: 24px;
+ line-height: 24px;
+ height: 36px;
+ margin: 0px;
+ padding: 0px 0 0 5px;
+ border: #cce6ec 3px solid;
+ width: 719px;
+}
+.ask-page div#question-list,
+.edit-question-page div#question-list {
+ border-bottom: #f0f0ec 1px solid;
+ float: none;
+}
+.ask-page div#question-list a,
+.edit-question-page div#question-list a {
+ line-height: 30px;
+}
+.ask-page div#question-list h2,
+.edit-question-page div#question-list h2 {
+ font-size: 13px;
+ padding-bottom: 0;
+ color: #1b79bd;
+ border-top: #f0f0ec 1px solid;
+ border-left: #f0f0ec 1px solid;
+ height: 30px;
+ line-height: 30px;
+ font-weight: normal;
+}
+.ask-page div#question-list span,
+.edit-question-page div#question-list span {
+ width: 28px;
+ height: 26px;
+ line-height: 26px;
+ text-align: center;
+ margin-right: 10px;
+ float: left;
+ display: block;
+ color: #fff;
+ background: #b8d0d5;
+ border-radius: 3px;
+ -ms-border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -khtml-border-radius: 3px;
+}
+.ask-page label,
+.edit-question-page label {
+ color: #525252;
+ font-size: 13px;
+}
+.ask-page #id_tags,
+.edit-question-page #id_tags {
+ border: #cce6ec 3px solid;
+ height: 25px;
+ padding-left: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.title-desc {
+ color: #707070;
+ font-size: 13px;
+ margin-bottom: 5px;
+}
+#fmanswer input.submit,
+.ask-page input.submit,
+.edit-question-page input.submit {
+ float: left;
+ font-weight: normal;
+ margin-top: 3px;
+ height: 34px;
+ font-size: 21px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ margin-right: 7px;
+}
+#fmanswer input.submit:hover,
+.ask-page input.submit:hover,
+.edit-question-page input.submit:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.wmd-container {
+ border: #cce6ec 3px solid;
+}
+.users-page .wmd-container {
+ width: 200px;
+}
+.ask-page .wmd-container,
+.question-page .wmd-container,
+.edit-question-page .wmd-container,
+.edit-answer-page .wmd-container {
+ width: 723px;
+}
+.ask-page #editor,
+.question-page #editor,
+.edit-question-page #editor,
+.edit-answer-page #editor {
+ width: 710px;
+ padding: 6px;
+}
+#editor {
+ /* adjustment for editor preview */
+
+ display: block;
+ font-size: 100%;
+ min-height: 200px;
+ line-height: 18px;
+ margin: 0;
+ border: 0;
+}
+.users-page #editor {
+ width: 192px;
+}
+#id_title {
+ width: 100%;
+}
+.wmd-preview {
+ margin: 0;
+ padding: 5px;
+ background-color: #F5F5F5;
+ min-height: 20px;
+ overflow: auto;
+ font-size: 13px;
+ font-family: Arial;
+}
+.wmd-preview p {
+ margin-bottom: 14px;
+ line-height: 1.4;
+ font-size: 14px;
+}
+.wmd-preview p:last-child {
+ margin-bottom: 0;
+}
+.wmd-preview pre {
+ background-color: #E7F1F8;
+}
+.wmd-preview blockquote {
+ background-color: #eee;
+}
+.wmd-preview IMG {
+ max-width: 600px;
+}
+.user-page .wmd-buttons {
+ width: 725px;
+}
+.preview-toggle {
+ width: 100%;
+ color: #b6a475;
+ /*letter-spacing:1px;*/
+
+ text-align: left;
+}
+.preview-toggle span:hover {
+ cursor: pointer;
+}
+.after-editor {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+.checkbox {
+ margin-left: 5px;
+ font-weight: normal;
+ cursor: help;
+}
+.question-options {
+ margin-top: 1px;
+ color: #666;
+ line-height: 13px;
+ margin-bottom: 5px;
+}
+.question-options label {
+ vertical-align: text-bottom;
+}
+.edit-content-html {
+ border-top: 1px dotted #D8D2A9;
+ border-bottom: 1px dotted #D8D2A9;
+ margin: 5px 0 5px 0;
+}
+.edit-question-page,
+#fmedit,
+.wmd-preview {
+ color: #525252;
+}
+.edit-question-page #id_revision,
+#fmedit #id_revision,
+.wmd-preview #id_revision {
+ font-size: 14px;
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+.edit-question-page #id_title,
+#fmedit #id_title,
+.wmd-preview #id_title {
+ font-size: 24px;
+ line-height: 24px;
+ height: 36px;
+ margin: 0px;
+ padding: 0px 0 0 5px;
+ border: #cce6ec 3px solid;
+ width: 719px;
+ margin-bottom: 10px;
+}
+.edit-question-page #id_summary,
+#fmedit #id_summary,
+.wmd-preview #id_summary {
+ border: #cce6ec 3px solid;
+ height: 25px;
+ padding-left: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.edit-question-page .title-desc,
+#fmedit .title-desc,
+.wmd-preview .title-desc {
+ margin-bottom: 10px;
+}
+/* ----- Question template ----- */
+.question-page h1 {
+ padding-top: 0px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.question-page h1 a {
+ color: #464646;
+ font-size: 26px;
+ font-weight: normal;
+ line-height: 1;
+}
+.question-page p.rss {
+ float: none;
+ clear: both;
+ padding: 3px 0 0 23px;
+ font-size: 15px;
+ width: 130px;
+ background-position: center left;
+ margin-left: 0px !important;
+}
+.question-page p.rss a {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ vertical-align: top;
+}
+.question-page .question-content {
+ float: right;
+ width: 682px;
+ margin-bottom: 10px;
+}
+.question-page #question-table {
+ float: left;
+ border-top: #f0f0f0 1px solid;
+}
+.question-page #question-table,
+.question-page .answer-table {
+ margin: 8px 0 6px 0;
+ border-spacing: 0px;
+ width: 670px;
+ padding-right: 10px;
+}
+.question-page .answer-table {
+ margin-top: 0px;
+ border-bottom: 1px solid #D4D4D4;
+ float: right;
+}
+.question-page .answer-table td,
+.question-page #question-table td {
+ width: 20px;
+ vertical-align: top;
+}
+.question-page .question-body,
+.question-page .answer-body {
+ overflow: auto;
+ margin-top: 10px;
+ font-family: Arial;
+ color: #4b4b4b;
+}
+.question-page .question-body p,
+.question-page .answer-body p {
+ margin-bottom: 14px;
+ line-height: 1.4;
+ font-size: 14px;
+ padding: 0px 5px 5px 0px;
+}
+.question-page .question-body a,
+.question-page .answer-body a {
+ color: #1b79bd;
+}
+.question-page .question-body li,
+.question-page .answer-body li {
+ margin-bottom: 7px;
+}
+.question-page .question-body IMG,
+.question-page .answer-body IMG {
+ max-width: 600px;
+}
+.question-page .post-update-info-container {
+ float: right;
+ width: 175px;
+}
+.question-page .post-update-info {
+ background: #ffffff url(../images/background-user-info.png) repeat-x bottom;
+ float: right;
+ font-size: 9px;
+ font-family: Arial;
+ width: 158px;
+ padding: 4px;
+ margin: 0px 0px 5px 5px;
+ line-height: 14px;
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 0px 2px 1px #bfbfbf;
+ -moz-box-shadow: 0px 2px 1px #bfbfbf;
+ box-shadow: 0px 2px 1px #bfbfbf;
+}
+.question-page .post-update-info p {
+ line-height: 13px;
+ font-size: 11px;
+ margin: 0 0 2px 1px;
+ padding: 0;
+}
+.question-page .post-update-info a {
+ color: #444;
+}
+.question-page .post-update-info .gravatar {
+ float: left;
+ margin-right: 4px;
+}
+.question-page .post-update-info p.tip {
+ color: #444;
+ line-height: 13px;
+ font-size: 10px;
+}
+.question-page .post-controls {
+ font-size: 11px;
+ line-height: 12px;
+ min-width: 200px;
+ padding-left: 5px;
+ text-align: right;
+ clear: left;
+ float: right;
+ margin-top: 10px;
+ margin-bottom: 8px;
+}
+.question-page .post-controls a {
+ color: #777;
+ padding: 0px 7px 3px 18px;
+ cursor: pointer;
+ border: none;
+ font-size: 12px;
+ font-family: Arial;
+ text-decoration: none;
+ height: 18px;
+ display: block;
+ float: right;
+ line-height: 18px;
+ margin-top: -2px;
+ margin-left: 4px;
+}
+.question-page .post-controls a:hover {
+ background-color: #f5f0c9;
+ border-radius: 3px;
+ -ms-border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -khtml-border-radius: 3px;
+}
+.question-page .post-controls .sep {
+ color: #ccc;
+ float: right;
+ height: 18px;
+ font-size: 18px;
+}
+.question-page .post-controls .question-delete,
+.question-page .answer-controls .question-delete {
+ background: url(../images/delete.png) no-repeat center left;
+ padding-left: 11px;
+}
+.question-page .post-controls .question-flag,
+.question-page .answer-controls .question-flag {
+ background: url(../images/flag.png) no-repeat center left;
+}
+.question-page .post-controls .question-edit,
+.question-page .answer-controls .question-edit {
+ background: url(../images/edit2.png) no-repeat center left;
+}
+.question-page .post-controls .question-retag,
+.question-page .answer-controls .question-retag {
+ background: url(../images/retag.png) no-repeat center left;
+}
+.question-page .post-controls .question-close,
+.question-page .answer-controls .question-close {
+ background: url(../images/close.png) no-repeat center left;
+}
+.question-page .post-controls .permant-link,
+.question-page .answer-controls .permant-link {
+ background: url(../images/link.png) no-repeat center left;
+}
+.question-page .tabBar {
+ width: 100%;
+}
+.question-page #questionCount {
+ float: left;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ line-height: 15px;
+}
+.question-page .question-img-upvote,
+.question-page .question-img-downvote,
+.question-page .answer-img-upvote,
+.question-page .answer-img-downvote {
+ width: 25px;
+ height: 20px;
+ cursor: pointer;
+}
+.question-page .question-img-upvote,
+.question-page .answer-img-upvote {
+ background: url(../images/vote-arrow-up-new.png) no-repeat;
+}
+.question-page .question-img-downvote,
+.question-page .answer-img-downvote {
+ background: url(../images/vote-arrow-down-new.png) no-repeat;
+}
+.question-page .question-img-upvote:hover,
+.question-page .question-img-upvote.on,
+.question-page .answer-img-upvote:hover,
+.question-page .answer-img-upvote.on {
+ background: url(../images/vote-arrow-up-on-new.png) no-repeat;
+}
+.question-page .question-img-downvote:hover,
+.question-page .question-img-downvote.on,
+.question-page .answer-img-downvote:hover,
+.question-page .answer-img-downvote.on {
+ background: url(../images/vote-arrow-down-on-new.png) no-repeat;
+}
+.question-page #fmanswer_button {
+ margin: 8px 0px;
+}
+.question-page #fmanswer_button.answer-own-question {
+ width: 150px;
+}
+.question-page .question-img-favorite:hover {
+ background: url(../images/vote-favorite-on.png);
+}
+.question-page div.comments {
+ padding: 0;
+}
+.question-page #comment-title {
+ font-weight: bold;
+ font-size: 23px;
+ color: #7ea9b3;
+ width: 200px;
+ float: left;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.question-page .comments {
+ font-size: 12px;
+ clear: both;
+}
+.question-page .comments div.controls {
+ clear: both;
+ float: left;
+ width: 100%;
+ margin: 3px 0 20px 5px;
+}
+.question-page .comments .controls a {
+ color: #988e4c;
+ padding: 0 3px 2px 22px;
+ font-family: Arial;
+ font-size: 13px;
+ background: url(../images/comment.png) no-repeat center left;
+}
+.question-page .comments .controls a:hover {
+ background-color: #f5f0c9;
+ text-decoration: none;
+}
+.question-page .comments .button {
+ color: #988e4c;
+ font-size: 11px;
+ padding: 3px;
+ cursor: pointer;
+}
+.question-page .comments a {
+ background-color: inherit;
+ color: #1b79bd;
+ padding: 0;
+}
+.question-page .comments form.post-comments {
+ margin: 3px 26px 0 42px;
+}
+.question-page .comments form.post-comments textarea {
+ font-size: 13px;
+ line-height: 1.3;
+}
+.question-page .comments textarea {
+ height: 42px;
+ width: 100%;
+ margin: 7px 0 5px 1px;
+ font-family: Arial;
+ outline: none;
+ overflow: auto;
+ font-size: 12px;
+ line-height: 140%;
+ padding-left: 2px;
+ padding-top: 3px;
+ border: #cce6ec 3px solid;
+}
+.question-page .comments input {
+ margin-left: 10px;
+ margin-top: 1px;
+ vertical-align: top;
+ width: 100px;
+}
+.question-page .comments button {
+ line-height: 25px;
+ margin-bottom: 5px;
+ height: 27px;
+ font-size: 12px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ font-family: Arial;
+ font-weight: bold;
+}
+.question-page .comments button:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.question-page .comments .counter {
+ display: inline-block;
+ width: 245px;
+ float: right;
+ color: #b6a475 !important;
+ vertical-align: top;
+ font-family: Arial;
+ float: right;
+ text-align: right;
+}
+.question-page .comments .comment {
+ border-bottom: 1px solid #edeeeb;
+ clear: both;
+ margin: 0;
+ margin-top: 8px;
+ padding-bottom: 4px;
+ overflow: auto;
+ font-family: Arial;
+ font-size: 11px;
+ min-height: 25px;
+ background: #ffffff url(../images/comment-background.png) bottom repeat-x;
+ border-radius: 5px;
+ -ms-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -khtml-border-radius: 5px;
+}
+.question-page .comments div.comment:hover {
+ background-color: #efefef;
+}
+.question-page .comments a.author {
+ background-color: inherit;
+ color: #1b79bd;
+ padding: 0;
+}
+.question-page .comments a.author:hover {
+ text-decoration: underline;
+}
+.question-page .comments span.delete-icon {
+ background: url(../images/close-small.png) no-repeat;
+ border: 0;
+ width: 14px;
+ height: 14px;
+}
+.question-page .comments span.delete-icon:hover {
+ border: #BC564B 2px solid;
+ border-radius: 10px;
+ -ms-border-radius: 10px;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -khtml-border-radius: 10px;
+ margin: -3px 0px 0px -2px;
+}
+.question-page .comments .content {
+ margin-bottom: 7px;
+}
+.question-page .comments .comment-votes {
+ float: left;
+ width: 37px;
+ line-height: 130%;
+ padding: 6px 5px 6px 3px;
+}
+.question-page .comments .comment-body {
+ line-height: 1.3;
+ margin: 3px 26px 0 46px;
+ padding: 5px 3px;
+ color: #666;
+ font-size: 13px;
+}
+.question-page .comments .comment-body .edit {
+ padding-left: 6px;
+}
+.question-page .comments .comment-body p {
+ font-size: 13px;
+ line-height: 1.3;
+ margin-bottom: 3px;
+ padding: 0;
+}
+.question-page .comments .comment-delete {
+ float: right;
+ width: 14px;
+ line-height: 130%;
+ padding: 8px 6px;
+}
+.question-page .comments .upvote {
+ margin: 0px;
+ padding-right: 17px;
+ padding-top: 2px;
+ text-align: right;
+ height: 20px;
+ font-size: 13px;
+ font-weight: bold;
+ color: #777;
+}
+.question-page .comments .upvote.upvoted {
+ color: #d64000;
+}
+.question-page .comments .upvote.hover {
+ background: url(../images/go-up-grey.png) no-repeat;
+ background-position: right 1px;
+}
+.question-page .comments .upvote:hover {
+ background: url(../images/go-up-orange.png) no-repeat;
+ background-position: right 1px;
+}
+.question-page .comments .help-text {
+ float: right;
+ text-align: right;
+ color: gray;
+ margin-bottom: 0px;
+ margin-top: 0px;
+ line-height: 50%;
+}
+.question-page #questionTools {
+ font-size: 22px;
+ margin-top: 11px;
+ text-align: left;
+}
+.question-page .question-status {
+ margin-top: 10px;
+ margin-bottom: 15px;
+ padding: 20px;
+ background-color: #fef7cc;
+ text-align: center;
+ border: #e1c04a 1px solid;
+}
+.question-page .question-status h3 {
+ font-size: 20px;
+ color: #707070;
+ font-weight: normal;
+}
+.question-page .vote-buttons {
+ float: left;
+ text-align: center;
+ padding-top: 2px;
+ margin: 0px 10px 0px 3px;
+ /* small IE fixes */
+
+ *margin: 0;
+ *height: 210px;
+ *width: 30px;
+}
+.question-page .vote-buttons IMG {
+ cursor: pointer;
+}
+.question-page .vote-number {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ padding: 2px 0 5px 0;
+ font-size: 25px;
+ font-weight: bold;
+ color: #777;
+}
+.question-page .vote-buttons .notify-sidebar {
+ text-align: left;
+ width: 130px;
+ margin-top: 7px;
+}
+.question-page .vote-buttons .notify-sidebar label {
+ vertical-align: top;
+}
+.question-page .tabBar-answer {
+ margin-bottom: 15px;
+ padding-left: 7px;
+ width: 723px;
+ margin-top: 10px;
+}
+.question-page .answer .vote-buttons {
+ float: left;
+}
+.question-page .accepted-answer {
+ background-color: #f7fecc;
+ border-bottom-color: #9BD59B;
+}
+.question-page .accepted-answer .vote-buttons {
+ width: 27px;
+ margin-right: 10px;
+ margin-top: 10px;
+}
+.question-page .answer .post-update-info a {
+ color: #444444;
+}
+.question-page .answered {
+ background: #CCC;
+ color: #999;
+}
+.question-page .answered-accepted {
+ background: #DCDCDC;
+ color: #763333;
+}
+.question-page .answered-accepted strong {
+ color: #E1E818;
+}
+.question-page .answered-by-owner {
+ background: #F1F1FF;
+}
+.question-page .answered-by-owner .comments .button {
+ background-color: #E6ECFF;
+}
+.question-page .answered-by-owner .comments {
+ background-color: #E6ECFF;
+}
+.question-page .answered-by-owner .vote-buttons {
+ margin-right: 10px;
+}
+.question-page .answer-img-accept {
+ background: url(../images/vote-accepted.png);
+ width: 23px;
+ height: 23px;
+}
+.question-page .accepted-answer .answer-img-accept,
+.question-page .answer-img-accept:hover {
+ background: url(../images/vote-accepted-on.png);
+}
+.question-page .answer-body a {
+ color: #1b79bd;
+}
+.question-page .answer-body li {
+ margin-bottom: 0.7em;
+}
+.question-page #fmanswer {
+ color: #707070;
+ line-height: 1.2;
+ margin-top: 10px;
+}
+.question-page #fmanswer h2 {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ color: #7ea9b3;
+ font-size: 24px;
+}
+.question-page #fmanswer label {
+ font-size: 13px;
+}
+.question-page .message {
+ padding: 5px;
+ margin: 0px 0 10px 0;
+}
+.facebook-share.icon,
+.twitter-share.icon,
+.linkedin-share.icon,
+.identica-share.icon {
+ background: url(../images/socialsprite.png) no-repeat;
+ display: block;
+ text-indent: -100em;
+ height: 25px;
+ width: 25px;
+ margin-bottom: 3px;
+}
+.facebook-share.icon:hover,
+.twitter-share.icon:hover,
+.linkedin-share.icon:hover,
+.identica-share.icon:hover {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.facebook-share.icon {
+ background-position: -26px 0px;
+}
+.identica-share.icon {
+ background-position: -78px 0px;
+}
+.twitter-share.icon {
+ margin-top: 10px;
+ background-position: 0px 0px;
+}
+.linkedin-share.icon {
+ background-position: -52px 0px;
+}
+/* -----Content pages, Login, About, FAQ, Users----- */
+.openid-signin,
+.meta,
+.user-profile-edit-page {
+ font-size: 13px;
+ line-height: 1.3;
+ color: #525252;
+}
+.openid-signin p,
+.meta p,
+.user-profile-edit-page p {
+ font-size: 13px;
+ color: #707070;
+ line-height: 1.3;
+ font-family: Arial;
+ color: #525252;
+ margin-bottom: 12px;
+}
+.openid-signin h2,
+.meta h2,
+.user-profile-edit-page h2 {
+ color: #525252;
+ padding-left: 0px;
+ font-size: 16px;
+}
+.openid-signin form,
+.meta form,
+.users-page form,
+.user-profile-edit-page form,
+.user-profile-page form {
+ margin-bottom: 15px;
+}
+.openid-signin input[type="text"],
+.meta input[type="text"],
+.users-page input[type="text"],
+.user-profile-edit-page input[type="text"],
+.user-profile-page input[type="text"],
+.openid-signin input[type="password"],
+.meta input[type="password"],
+.users-page input[type="password"],
+.user-profile-edit-page input[type="password"],
+.user-profile-page input[type="password"],
+.openid-signin select,
+.meta select,
+.users-page select,
+.user-profile-edit-page select,
+.user-profile-page select {
+ border: #cce6ec 3px solid;
+ height: 25px;
+ padding-left: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.openid-signin select,
+.meta select,
+.users-page select,
+.user-profile-edit-page select,
+.user-profile-page select {
+ width: 405px;
+ height: 30px;
+}
+.openid-signin textarea,
+.meta textarea,
+.users-page textarea,
+.user-profile-edit-page textarea,
+.user-profile-page textarea {
+ border: #cce6ec 3px solid;
+ padding-left: 5px;
+ padding-top: 5px;
+ width: 395px;
+ font-size: 14px;
+}
+.openid-signin input.submit,
+.meta input.submit,
+.users-page input.submit,
+.user-profile-edit-page input.submit,
+.user-profile-page input.submit {
+ font-weight: normal;
+ margin: 5px 0px;
+ height: 26px;
+ font-size: 15px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ font-family: Arial;
+}
+.openid-signin input.submit:hover,
+.meta input.submit:hover,
+.users-page input.submit:hover,
+.user-profile-edit-page input.submit:hover,
+.user-profile-page input.submit:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.openid-signin .cancel,
+.meta .cancel,
+.users-page .cancel,
+.user-profile-edit-page .cancel,
+.user-profile-page .cancel {
+ background: url(../images/small-button-cancel.png) repeat-x top !important;
+ color: #525252 !important;
+}
+.openid-signin .cancel:hover,
+.meta .cancel:hover,
+.users-page .cancel:hover,
+.user-profile-edit-page .cancel:hover,
+.user-profile-page .cancel:hover {
+ background: url(../images/small-button-cancel.png) repeat-x bottom !important;
+}
+.openid-signin form {
+ margin-bottom: 5px;
+}
+#email-input-fs,
+#local_login_buttons,
+#password-fs,
+#openid-fs {
+ margin-top: 10px;
+}
+#email-input-fs #id_email,
+#local_login_buttons #id_email,
+#password-fs #id_email,
+#openid-fs #id_email,
+#email-input-fs #id_username,
+#local_login_buttons #id_username,
+#password-fs #id_username,
+#openid-fs #id_username,
+#email-input-fs #id_password,
+#local_login_buttons #id_password,
+#password-fs #id_password,
+#openid-fs #id_password {
+ font-size: 12px;
+ line-height: 20px;
+ height: 20px;
+ margin: 0px;
+ padding: 0px 0 0 5px;
+ border: #cce6ec 3px solid;
+ width: 200px;
+}
+#email-input-fs .submit-b,
+#local_login_buttons .submit-b,
+#password-fs .submit-b,
+#openid-fs .submit-b {
+ height: 24px;
+ font-size: 15px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+ font-family: Arial;
+ font-weight: bold;
+ padding-right: 10px;
+ border: 0;
+}
+#email-input-fs .submit-b:hover,
+#local_login_buttons .submit-b:hover,
+#password-fs .submit-b:hover,
+#openid-fs .submit-b:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+}
+.openid-input {
+ background: url(../images/openid.gif) no-repeat;
+ padding-left: 15px;
+ cursor: pointer;
+}
+.openid-login-input {
+ background-position: center left;
+ background: url(../images/openid.gif) no-repeat 0% 50%;
+ padding: 5px 5px 5px 15px;
+ cursor: pointer;
+ font-family: Trebuchet MS;
+ font-weight: 300;
+ font-size: 150%;
+ width: 500px;
+}
+.openid-login-submit {
+ height: 40px;
+ width: 80px;
+ line-height: 40px;
+ cursor: pointer;
+ border: 1px solid #777;
+ font-weight: bold;
+ font-size: 120%;
+}
+/* People page */
+/*.users-page .tabBar{
+ width:375px;
+}*/
+.user {
+ padding: 5px 10px 5px 0;
+ line-height: 140%;
+ width: 166px;
+ height: 32px;
+ margin-bottom: 5px;
+}
+.user .user-micro-info {
+ color: #525252;
+}
+.user ul {
+ margin: 0;
+ list-style-type: none;
+}
+.user .thumb {
+ clear: both;
+ float: left;
+ margin-right: 4px;
+ display: inline;
+}
+/* tags page */
+.tabBar-tags {
+ width: 270px;
+ margin-bottom: 15px;
+}
+/* badges page */
+a.medal {
+ font-size: 17px;
+ line-height: 250%;
+ margin-right: 5px;
+ color: #333;
+ text-decoration: none;
+ background: url(../images/medala.gif) no-repeat;
+ border-left: 1px solid #EEE;
+ border-top: 1px solid #EEE;
+ border-bottom: 1px solid #CCC;
+ border-right: 1px solid #CCC;
+ padding: 4px 12px 4px 6px;
+}
+a:hover.medal {
+ color: #333;
+ text-decoration: none;
+ background: url(../images/medala_on.gif) no-repeat;
+ border-left: 1px solid #E7E296;
+ border-top: 1px solid #E7E296;
+ border-bottom: 1px solid #D1CA3D;
+ border-right: 1px solid #D1CA3D;
+}
+#award-list .user {
+ float: left;
+ margin: 5px;
+}
+/* profile page */
+.tabBar-profile {
+ width: 100%;
+ margin-bottom: 15px;
+ float: left;
+}
+.user-profile-page {
+ font-size: 13px;
+ color: #525252;
+}
+.user-profile-page p {
+ font-size: 13px;
+ line-height: 1.3;
+ color: #525252;
+}
+.user-profile-page .avatar img {
+ border: #eee 1px solid;
+ padding: 5px;
+}
+.user-profile-page h2 {
+ padding: 10px 0px 10px 0px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+.user-details {
+ font-size: 13px;
+}
+.user-details h3 {
+ font-size: 16px;
+}
+.user-about {
+ background-color: #EEEEEE;
+ height: 200px;
+ line-height: 20px;
+ overflow: auto;
+ padding: 10px;
+ width: 90%;
+}
+.user-about p {
+ font-size: 13px;
+}
+.follow-toggle,
+.submit {
+ border: 0 !important;
+ font-weight: bold;
+ line-height: 26px;
+ margin-top: -2px;
+ height: 26px;
+ font-size: 14px;
+ text-align: center;
+ text-decoration: none;
+ cursor: pointer;
+ color: #4a757f;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ border-top: #eaf2f3 1px solid;
+ background-color: #d1e2e5;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#d1e2e5), color-stop(25%, #d1e2e5), to(#a9c2c7));
+ background-image: -webkit-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -moz-linear-gradient(top, #d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -ms-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: -o-linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ background-image: linear-gradient(#d1e2e5, #d1e2e5 25%, #a9c2c7);
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-box-shadow: 1px 1px 2px #636363;
+ -moz-box-shadow: 1px 1px 2px #636363;
+ box-shadow: 1px 1px 2px #636363;
+}
+.follow-toggle:hover,
+.submit:hover {
+ background-color: #cde5e9;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cde5e9), color-stop(25%, #cde5e9), to(#94b3ba));
+ background-image: -webkit-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -moz-linear-gradient(top, #cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -ms-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: -o-linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ background-image: linear-gradient(#cde5e9, #cde5e9 25%, #94b3ba);
+ text-decoration: none;
+ text-shadow: 0px 1px 0px #c6d9dd;
+ -moz-text-shadow: 0px 1px 0px #c6d9dd;
+ -webkit-text-shadow: 0px 1px 0px #c6d9dd;
+ text-decoration: none !important;
+}
+.follow-toggle .follow {
+ font-color: #000;
+ font-style: normal;
+}
+.follow-toggle .unfollow div.unfollow-red {
+ display: none;
+}
+.follow-toggle .unfollow:hover div.unfollow-red {
+ display: inline;
+ color: #fff;
+ font-weight: bold;
+ color: #A05736;
+}
+.follow-toggle .unfollow:hover div.unfollow-green {
+ display: none;
+}
+.count {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ font-size: 200%;
+ font-weight: 700;
+ color: #777777;
+}
+.scoreNumber {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ font-size: 35px;
+ font-weight: 800;
+ color: #777;
+ line-height: 40px;
+ /*letter-spacing:0px*/
+
+ margin-top: 3px;
+}
+.vote-count {
+ font-family: Arial;
+ font-size: 160%;
+ font-weight: 700;
+ color: #777;
+}
+.answer-summary {
+ display: block;
+ clear: both;
+ padding: 3px;
+}
+.answer-votes {
+ background-color: #EEEEEE;
+ color: #555555;
+ float: left;
+ font-family: Arial;
+ font-size: 15px;
+ font-weight: bold;
+ height: 17px;
+ padding: 2px 4px 5px;
+ text-align: center;
+ text-decoration: none;
+ width: 20px;
+ margin-right: 10px;
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+}
+.karma-summary {
+ padding: 5px;
+ font-size: 13px;
+}
+.karma-summary h3 {
+ text-align: center;
+ font-weight: bold;
+ padding: 5px;
+}
+.karma-diagram {
+ width: 477px;
+ height: 300px;
+ float: left;
+ margin-right: 10px;
+}
+.karma-details {
+ float: right;
+ width: 450px;
+ height: 250px;
+ overflow-y: auto;
+ word-wrap: break-word;
+}
+.karma-details p {
+ margin-bottom: 10px;
+}
+.karma-gained {
+ font-weight: bold;
+ background: #eee;
+ width: 25px;
+ margin-right: 5px;
+ color: green;
+ padding: 3px;
+ display: block;
+ float: left;
+ text-align: center;
+ border-radius: 3px;
+ -ms-border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -khtml-border-radius: 3px;
+}
+.karma-lost {
+ font-weight: bold;
+ background: #eee;
+ width: 25px;
+ color: red;
+ padding: 3px;
+ display: block;
+ margin-right: 5px;
+ float: left;
+ text-align: center;
+ border-radius: 3px;
+ -ms-border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -khtml-border-radius: 3px;
+}
+.submit-row {
+ margin-bottom: 10px;
+}
+/*----- Revision pages ----- */
+.revision {
+ margin: 10px 0 10px 0;
+ font-size: 13px;
+ color: #525252;
+}
+.revision p {
+ font-size: 13px;
+ line-height: 1.3;
+ color: #525252;
+}
+.revision h3 {
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+ font-size: 21px;
+ padding-left: 0px;
+}
+.revision .header {
+ background-color: #F5F5F5;
+ padding: 5px;
+ cursor: pointer;
+}
+.revision .author {
+ background-color: #e9f3f5;
+}
+.revision .summary {
+ padding: 5px 0 10px 0;
+}
+.revision .summary span {
+ background-color: #fde785;
+ padding: 6px;
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ display: inline;
+ -webkit-box-shadow: 1px 1px 4px #cfb852;
+ -moz-box-shadow: 1px 1px 4px #cfb852;
+ box-shadow: 1px 1px 4px #cfb852;
+}
+.revision .answerbody {
+ padding: 10px 0 5px 10px;
+}
+.revision .revision-mark {
+ width: 150px;
+ text-align: left;
+ display: inline-block;
+ font-size: 11px;
+ overflow: hidden;
+}
+.revision .revision-mark .gravatar {
+ float: left;
+ margin-right: 4px;
+ padding-top: 5px;
+}
+.revision .revision-number {
+ font-size: 300%;
+ font-weight: bold;
+ font-family: sans-serif;
+}
+del,
+del .post-tag {
+ color: #C34719;
+}
+ins .post-tag,
+ins p,
+ins {
+ background-color: #E6F0A2;
+}
+/* ----- Red Popup notification ----- */
+.vote-notification {
+ z-index: 1;
+ cursor: pointer;
+ display: none;
+ position: absolute;
+ font-family: Arial;
+ font-size: 14px;
+ font-weight: normal;
+ color: white;
+ background-color: #8e0000;
+ text-align: center;
+ padding-bottom: 10px;
+ -webkit-box-shadow: 0px 2px 4px #370000;
+ -moz-box-shadow: 0px 2px 4px #370000;
+ box-shadow: 0px 2px 4px #370000;
+ border-radius: 4px;
+ -ms-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -khtml-border-radius: 4px;
+}
+.vote-notification h3 {
+ background: url(../images/notification.png) repeat-x top;
+ padding: 10px 10px 10px 10px;
+ font-size: 13px;
+ margin-bottom: 5px;
+ border-top: #8e0000 1px solid;
+ color: #fff;
+ font-weight: normal;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+}
+.vote-notification a {
+ color: #fb7321;
+ text-decoration: underline;
+ font-weight: bold;
+}
+/* ----- Footer links , check blocks/footer.html----- */
+#ground {
+ width: 100%;
+ clear: both;
+ border-top: 1px solid #000;
+ padding: 6px 0 0 0;
+ background: #16160f;
+ font-size: 16px;
+ font-family: 'Open Sans Condensed', Arial, sans-serif;
+}
+#ground p {
+ margin-bottom: 0;
+}
+.footer-links {
+ color: #EEE;
+ text-align: left;
+ width: 500px;
+ float: left;
+}
+.footer-links a {
+ color: #e7e8a8;
+}
+.powered-link {
+ width: 500px;
+ float: left;
+ text-align: left;
+}
+.powered-link a {
+ color: #8ebcc7;
+}
+.copyright {
+ color: #616161;
+ width: 450px;
+ float: right;
+ text-align: right;
+}
+.copyright a {
+ color: #8ebcc7;
+}
+.copyright img.license-logo {
+ margin: 6px 0px 20px 10px;
+ float: right;
+}
+.notify-me {
+ float: left;
+}
+span.text-counter {
+ margin-right: 20px;
+}
+span.form-error {
+ color: #990000;
+ font-weight: normal;
+ margin-left: 5px;
+}
+ul.errorlist {
+ margin-bottom: 0;
+}
+p.form-item {
+ margin: 0px;
+}
+.deleted {
+ background: #F4E7E7 none repeat scroll 0 0;
+}
+/* openid styles */
+.form-row {
+ line-height: 25px;
+}
+table.form-as-table {
+ margin-top: 5px;
+}
+table.form-as-table ul {
+ list-style-type: none;
+ display: inline;
+}
+table.form-as-table li {
+ display: inline;
+}
+table.form-as-table td {
+ text-align: right;
+}
+table.form-as-table th {
+ text-align: left;
+ font-weight: normal;
+}
+table.ab-subscr-form {
+ width: 45em;
+}
+table.ab-tag-filter-form {
+ width: 45em;
+}
+.submit-row {
+ line-height: 30px;
+ padding-top: 10px;
+ display: block;
+ clear: both;
+}
+.errors {
+ line-height: 20px;
+ color: red;
+}
+.error {
+ color: darkred;
+ margin: 0;
+ font-size: 10px;
+}
+label.retag-error {
+ color: darkred;
+ padding-left: 5px;
+ font-size: 10px;
+}
+.fieldset {
+ border: none;
+ margin-top: 10px;
+ padding: 10px;
+}
+span.form-error {
+ color: #990000;
+ font-size: 90%;
+ font-weight: normal;
+ margin-left: 5px;
+}
+/*
+.favorites-count-off {
+ color: #919191;
+ float: left;
+ text-align: center;
+}
+
+.favorites-count {
+ color: #D4A849;
+ float: left;
+ text-align: center;
+}
+*/
+/* todo: get rid of this in html */
+.favorites-empty {
+ width: 32px;
+ height: 45px;
+ float: left;
+}
+.user-info-table {
+ margin-bottom: 10px;
+ border-spacing: 0;
+}
+/* todo: remove this hack? */
+.user-stats-table .narrow {
+ width: 660px;
+}
+.narrow .summary h3 {
+ padding: 0px;
+ margin: 0px;
+}
+.timeago {
+ font-weight: bold;
+ text-decoration: none;
+}
+.narrow .tags {
+ float: left;
+}
+/* todo: make these more semantic */
+.user-action-1 {
+ font-weight: bold;
+ color: #333;
+}
+.user-action-2 {
+ font-weight: bold;
+ color: #CCC;
+}
+.user-action-3 {
+ color: #333;
+}
+.user-action-4 {
+ color: #333;
+}
+.user-action-5 {
+ color: darkred;
+}
+.user-action-6 {
+ color: darkred;
+}
+.user-action-7 {
+ color: #333;
+}
+.user-action-8 {
+ padding: 3px;
+ font-weight: bold;
+ background-color: #CCC;
+ color: #763333;
+}
+.revision-summary {
+ background-color: #FFFE9B;
+ padding: 2px;
+}
+.question-title-link a {
+ font-weight: bold;
+ color: #0077CC;
+}
+.answer-title-link a {
+ color: #333;
+}
+/* todo: make these more semantic */
+.post-type-1 a {
+ font-weight: bold;
+}
+.post-type-3 a {
+ font-weight: bold;
+}
+.post-type-5 a {
+ font-weight: bold;
+}
+.post-type-2 a {
+ color: #333;
+}
+.post-type-4 a {
+ color: #333;
+}
+.post-type-6 a {
+ color: #333;
+}
+.post-type-8 a {
+ color: #333;
+}
+.hilite {
+ background-color: #ff0;
+}
+.hilite1 {
+ background-color: #ff0;
+}
+.hilite2 {
+ background-color: #f0f;
+}
+.hilite3 {
+ background-color: #0ff;
+}
+.gold,
+.badge1 {
+ color: #FFCC00;
+}
+.silver,
+.badge2 {
+ color: #CCCCCC;
+}
+.bronze,
+.badge3 {
+ color: #CC9933;
+}
+.score {
+ font-weight: 800;
+ color: #333;
+}
+a.comment {
+ background: #EEE;
+ color: #993300;
+ padding: 5px;
+}
+a.offensive {
+ color: #999;
+}
+.message h1 {
+ padding-top: 0px;
+ font-size: 15px;
+}
+.message p {
+ margin-bottom: 0px;
+}
+p.space-above {
+ margin-top: 10px;
+}
+.warning {
+ color: red;
+}
+button::-moz-focus-inner {
+ padding: 0;
+ border: none;
+}
+.submit {
+ cursor: pointer;
+ /*letter-spacing:1px;*/
+
+ background-color: #D4D0C8;
+ height: 30px;
+ border: 1px solid #777777;
+ /* width:100px; */
+
+ font-weight: bold;
+ font-size: 120%;
+}
+.submit:hover {
+ text-decoration: underline;
+}
+.submit.small {
+ margin-right: 5px;
+ height: 20px;
+ font-weight: normal;
+ font-size: 12px;
+ padding: 1px 5px;
+}
+.submit.small:hover {
+ text-decoration: none;
+}
+.question-page a.submit {
+ display: -moz-inline-stack;
+ display: inline-block;
+ line-height: 30px;
+ padding: 0 5px;
+ *display: inline;
+}
+.noscript {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ z-index: 100;
+ padding: 5px 0;
+ text-align: center;
+ font-family: sans-serif;
+ font-size: 120%;
+ font-weight: Bold;
+ color: #FFFFFF;
+ background-color: #AE0000;
+}
+.big {
+ font-size: 14px;
+}
+.strong {
+ font-weight: bold;
+}
+.orange {
+ /* used in django.po */
+
+ color: #d64000;
+ font-weight: bold;
+}
+.grey {
+ color: #808080;
+}
+.about div {
+ padding: 10px 5px 10px 5px;
+ border-top: 1px dashed #aaaaaa;
+}
+.highlight {
+ background-color: #FFF8C6;
+}
+.nomargin {
+ margin: 0;
+}
+.margin-bottom {
+ margin-bottom: 10px;
+}
+.margin-top {
+ margin-top: 10px;
+}
+.inline-block {
+ display: inline-block;
+}
+.action-status {
+ margin: 0;
+ border: none;
+ text-align: center;
+ line-height: 10px;
+ font-size: 12px;
+ padding: 0;
+}
+.action-status span {
+ padding: 3px 5px 3px 5px;
+ background-color: #fff380;
+ /* nice yellow */
+
+ font-weight: normal;
+ -moz-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+.list-table {
+ border-spacing: 0;
+}
+.list-table td {
+ vertical-align: top;
+}
+/* these need to go */
+table.form-as-table .errorlist {
+ display: block;
+ margin: 0;
+ padding: 0 0 0 5px;
+ text-align: left;
+ font-size: 10px;
+ color: darkred;
+}
+table.form-as-table input {
+ display: inline;
+ margin-left: 4px;
+}
+table.form-as-table th {
+ vertical-align: bottom;
+ padding-bottom: 4px;
+}
+.form-row-vertical {
+ margin-top: 8px;
+ display: block;
+}
+.form-row-vertical label {
+ margin-bottom: 3px;
+ display: block;
+}
+/* above stuff needs to go */
+.text-align-right {
+ text-align: center;
+}
+ul.form-horizontal-rows {
+ list-style: none;
+ margin: 0;
+}
+ul.form-horizontal-rows li {
+ position: relative;
+ height: 40px;
+}
+ul.form-horizontal-rows label {
+ display: inline-block;
+}
+ul.form-horizontal-rows ul.errorlist {
+ list-style: none;
+ color: darkred;
+ font-size: 10px;
+ line-height: 10px;
+ position: absolute;
+ top: 2px;
+ left: 180px;
+ text-align: left;
+ margin: 0;
+}
+ul.form-horizontal-rows ul.errorlist li {
+ height: 10px;
+}
+ul.form-horizontal-rows label {
+ position: absolute;
+ left: 0px;
+ bottom: 6px;
+ margin: 0px;
+ line-height: 12px;
+ font-size: 12px;
+}
+ul.form-horizontal-rows li input {
+ position: absolute;
+ bottom: 0px;
+ left: 180px;
+ margin: 0px;
+}
+.narrow .summary {
+ float: left;
+}
+.user-profile-tool-links {
+ font-weight: bold;
+ vertical-align: top;
+}
+ul.post-tags {
+ margin-left: 3px;
+}
+ul.post-tags li {
+ margin-top: 4px;
+ margin-bottom: 3px;
+}
+ul.post-retag {
+ margin-bottom: 0px;
+ margin-left: 5px;
+}
+ul.post-retag input {
+ width: 400px;
+ height: 1.5em;
+ margin: 3px 0 0 -3px;
+}
+#question-controls .tags {
+ margin: 0 0 3px 0;
+}
+#tagSelector {
+ padding-bottom: 2px;
+ margin-bottom: 0;
+}
+#related-tags {
+ padding-left: 3px;
+}
+#hideIgnoredTagsControl {
+ margin: 5px 0 0 0;
+}
+#hideIgnoredTagsControl label {
+ font-size: 12px;
+ color: #666;
+}
+#hideIgnoredTagsCb {
+ margin: 0 2px 0 1px;
+}
+#recaptcha_widget_div {
+ width: 318px;
+ float: left;
+ clear: both;
+}
+p.signup_p {
+ margin: 20px 0px 0px 0px;
+}
+.simple-subscribe-options ul {
+ list-style: none;
+ list-style-position: outside;
+ margin: 0;
+}
+/* a workaround to set link colors correctly */
+.wmd-preview a {
+ color: #1b79bd;
+}
+.wmd-preview li {
+ margin-bottom: 7px;
+ font-size: 14px;
+}
+.search-result-summary {
+ font-weight: bold;
+ font-size: 18px;
+ line-height: 22px;
+ margin: 0px 0px 0px 0px;
+ padding: 2px 0 0 0;
+ float: left;
+}
+.faq-rep-item {
+ text-align: right;
+ padding-right: 5px;
+}
+.user-info-table .gravatar {
+ margin: 0;
+}
+#responses {
+ clear: both;
+ line-height: 18px;
+ margin-bottom: 15px;
+}
+#responses div.face {
+ float: left;
+ text-align: center;
+ width: 54px;
+ padding: 3px;
+ overflow: hidden;
+}
+.response-parent {
+ margin-top: 18px;
+}
+.response-parent strong {
+ font-size: 20px;
+}
+.re {
+ min-height: 57px;
+ clear: both;
+ margin-top: 10px;
+}
+#responses input {
+ float: left;
+}
+#re_tools {
+ margin-bottom: 10px;
+}
+#re_sections {
+ margin-bottom: 6px;
+}
+#re_sections .on {
+ font-weight: bold;
+}
+.avatar-page ul {
+ list-style: none;
+}
+.avatar-page li {
+ display: inline;
+}
+.user-profile-page .avatar p {
+ margin-bottom: 0px;
+}
+.user-profile-page .tabBar a#stats {
+ margin-left: 0;
+}
+.user-profile-page img.gravatar {
+ margin: 2px 0 3px 0;
+}
+.user-profile-page h3 {
+ padding: 0;
+ margin-top: -3px;
+}
+.user-profile-page ul.tags {
+ margin-left: 5px;
+}
+.userList {
+ font-size: 13px;
+}
+img.flag {
+ border: 1px solid #eee;
+ vertical-align: text-top;
+}
+.main-page img.flag {
+ vertical-align: text-bottom;
+}
+/* Pretty printing styles. Used with prettify.js. */
+a.edit {
+ padding-left: 3px;
+ color: #145bff;
+}
+.str {
+ color: #080;
+}
+.kwd {
+ color: #008;
+}
+.com {
+ color: #800;
+}
+.typ {
+ color: #606;
+}
+.lit {
+ color: #066;
+}
+.pun {
+ color: #660;
+}
+.pln {
+ color: #000;
+}
+.tag {
+ color: #008;
+}
+/* name conflict here */
+.atn {
+ color: #606;
+}
+.atv {
+ color: #080;
+}
+.dec {
+ color: #606;
+}
+pre.prettyprint {
+ clear: both;
+ padding: 3px;
+ border: 0px solid #888;
+}
+@media print {
+ .str {
+ color: #060;
+ }
+ .kwd {
+ color: #006;
+ font-weight: bold;
+ }
+ .com {
+ color: #600;
+ font-style: italic;
+ }
+ .typ {
+ color: #404;
+ font-weight: bold;
+ }
+ .lit {
+ color: #044;
+ }
+ .pun {
+ color: #440;
+ }
+ .pln {
+ color: #000;
+ }
+ .tag {
+ color: #006;
+ font-weight: bold;
+ }
+ .atn {
+ color: #404;
+ }
+ .atv {
+ color: #060;
+ }
+}
+#leading-sidebar {
+ float: left;
+}
+/* language-specific fixes */
+body.lang-es #searchBar {
+ width: 398px;
+}
+body.lang-es #searchBar .searchInput {
+ width: 337px;
+}
+body.lang-es #searchBar .searchInputCancelable {
+ width: 302px;
+}
+body.anon.lang-es #searchBar {
+ width: 485px;
+}
+body.anon.lang-es #searchBar .searchInput {
+ width: 425px;
+}
+body.anon.lang-es #searchBar .searchInputCancelable {
+ width: 390px;
+}
+/* user groups */
+#user-groups ul {
+ margin-bottom: 0px;
+}
+#user-groups .delete-icon {
+ float: none;
+ display: inline;
+ color: #525252;
+ padding: 0 3px 0 3px;
+ background: #ccc;
+ border-radius: 4px;
+ line-height: inherit;
+ -moz-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+#user-groups .delete-icon:hover {
+ color: white;
+ background: #b32f2f;
+}
+.users-page .wmd-prompt-dialog {
+ background: #ccc;
+}
+.group-wiki .content > p:last-child {
+ margin-bottom: 5px;
+}
+.group-wiki .group-logo {
+ float: left;
+ margin: 0 5px 3px 0;
+}
+.group-wiki .follow-toggle.group-join-btn {
+ margin: 4px auto 10px auto;
+ display: block;
+}
+.group-wiki .controls {
+ margin: 0 0 10px 0;
+}
+img.group-logo {
+ height: 60px;
+ /* important to align with the line spacing */
+
+}
+#groups-list {
+ margin-left: 0px;
+}
+#groups-list .group-name {
+ padding-right: 20px;
+}
+#groups-list td {
+ padding-bottom: 5px;
+}
+#reject-edit-modal input,
+#reject-edit-modal textarea {
+ width: 514px;
+}
+input.tipped-input,
+textarea.tipped-input {
+ padding-left: 5px;
+}
+.tipped-input.blank {
+ color: #707070;
+}
+.select-box {
+ margin: 0;
+}
+.select-box li {
+ list-style-type: none;
+ list-style-position: inside;
+ padding-left: 7px;
+ font-size: 14px;
+ line-height: 25px;
+}
+.select-box li.selected,
+.select-box li.selected:hover {
+ background-color: #fcf8e3;
+ color: #c09853;
+}
+.select-box li:hover {
+ background-color: #cecece;
+ color: white;
+}
+/* fixes for bootstrap */
+.caret {
+ margin-bottom: 7px;
+}
+.btn-group {
+ text-align: left;
+}
+.btn-toolbar {
+ margin: 0;
+}
+.modal-footer {
+ text-align: left;
+}
+.modal p {
+ font-size: 14px;
+}
+.modal-body > textarea {
+ width: 515px;
+ margin-bottom: 0px;
+}
diff --git a/askbot/skins/default/media/style/style.less b/askbot/skins/default/media/style/style.less
index 6c21e6d3..4e272eca 100644
--- a/askbot/skins/default/media/style/style.less
+++ b/askbot/skins/default/media/style/style.less
@@ -151,9 +151,10 @@ a:hover {
h1 {
font-size: 24px;
- padding: 10px 0 5px 0px;
+ padding: 0px 0 5px 0px;
}
+
/* ----- Extra space above for messages ----- */
body.user-messages {
@@ -269,12 +270,13 @@ body.user-messages {
#metaNav {/* Top Navigation bar containing links for tags, people and badges, check widgets/header.html */
float: right;/* for #header.with-logo it is modified */
+ margin-right: 7px;
a {
color: #e2e2ae;
padding: 0px 0px 0px 35px;
height: 25px;
- line-height: 30px;
+ line-height: 25px;
margin:5px 0px 0px 10px;
font-size: 18px;
font-weight: 100;
@@ -312,6 +314,10 @@ body.user-messages {
.sprites(-125px,-5px)
}
+ #navGroups{
+ .sprites(-125px,-5px)
+ }
+
#navBadges{
.sprites(-210px,-5px)
}
@@ -363,11 +369,11 @@ body.user-messages {
}
.scope-selector{
- font-size:21px;
- color:#5a5a4b;
+ font-size:20px;
+ color:#7a7a6b;
height:55px;
line-height:55px;
- margin-left:24px
+ margin-left:16px
}
.on{
background:url(../images/scopearrow.png) no-repeat center bottom;
@@ -380,32 +386,33 @@ body.user-messages {
}
#searchBar { /* Main search form , check widgets/search_bar.html */
- display:inline-block;
+ display: inline-block;
background-color: #fff;
- width:412px;
+ width: 400px;
border: 1px solid #c9c9b5;
float:right;
height:42px;
margin:6px 0px 0px 15px;
.searchInput, .searchInputCancelable{
- font-size: 30px;
- height: 40px;
+ font-size: 26px;
+ height: 39px;
font-weight:300;
background:#FFF;
border:0px;
color:#484848;
padding-left:10px;
+ padding-top: 1px;
font-family:@body-font;
- vertical-align: middle;
+ vertical-align: top;
}
.searchInput,{
- width: 352px;
+ width: 340px;
}
.searchInputCancelable {
- width: 317px;
+ width: 305px;
}
.logoutsearch {
@@ -463,24 +470,16 @@ body.anon {
#askButton{ /* check blocks/secondary_header.html and widgets/ask_button.html*/
- background: url(../images/bigbutton.png) repeat-x bottom;
line-height:44px;
- text-align:center;
- width:200px;
- height:42px;
- font-size:23px;
- color:@button-label;
- margin-top:7px;
+ margin-top:6px;
float:right;
text-transform:uppercase;
- .rounded-corners(5px);
- .box-shadow(1px, 1px, 2px, #636363)
+ .button-style(42px, 20px);
+ width: 200px;/* to match width of sidebar */
}
#askButton:hover{
- text-decoration:none;
- background: url(../images/bigbutton.png) repeat-x top;
- .text-shadow(0px, 1px, 0px, #c6d9dd)
+ .button-style-hover;
}
/* ----- Content layout, check two_column_body.html or one_column_body.html ----- */
@@ -512,6 +511,8 @@ body.anon {
p {
margin-bottom: 4px;
+ color: @info-text;
+ font-family:@main-font;
}
p.info-box-follow-up-links {
@@ -531,6 +532,7 @@ body.anon {
padding-right:10px;
margin-bottom:10px;
font-family:@main-font;
+ width:190px;
}
h3{
color:#4a757f;
@@ -547,15 +549,14 @@ body.anon {
label {
color: @info-text;
font-size:15px;
- display: block;
- float: right;
+ vertical-align: bottom;
+ display: inline;
text-align:left;
font-family:@main-font;
- width:80px;
- margin-right:18px;
}
- #displayTagFilterControl label { /*Especial width just for the display tag filter box in index page*/
+ #displayTagFilterControl label,
+ #emailTagFilterControl label { /*Especial width just for the tag filter boxes in index page*/
width:160px;
}
@@ -583,29 +584,35 @@ body.anon {
}
.inputs{
- #interestingTagInput, #ignoredTagInput{
- width:158px;
+ #interestingTagInput,
+ #ignoredTagInput,
+ #subscribedTagInput,
+ #ab-tag-search {
+ width:152px;
+ padding-left:5px;
border:#c9c9b5 1px solid;
height:25px;
}
- #interestingTagAdd, #ignoredTagAdd{
- background:url(../images/small-button-blue.png) repeat-x top;
+ #ab-tag-search {
+ width: 138px;
+ }
+ #interestingTagAdd,
+ #ignoredTagAdd,
+ #subscribedTagAdd,
+ #ab-tag-search-add {
border:0;
- color:@button-label;
font-weight:bold;
- font-size:12px;
- width:30px;
- height:27px;
margin-top:-2px;
- cursor:pointer;
+ .button-style(27px, 14px);
.rounded-corners(4px);
- .text-shadow(0px,1px,0px,#E6F6FA);
- .box-shadow(1px, 1px, 2px, #808080);
-
-
+ }
+ #interestingTagAdd:hover,
+ #ignoredTagAdd:hover,
+ #ab-tag-search-add:hover {
+ .button-style-hover;
}
- #interestingTagAdd:hover, #ignoredTagAdd:hover{
- background:url(../images/small-button-blue.png) repeat-x bottom;
+ #ab-tag-search-add {
+ width: 47px;
}
}
@@ -616,28 +623,18 @@ body.anon {
/* widgets for question template */
a.followed, a.follow{
- background: url(../images/medium-button.png) top repeat-x;
- height:34px;
line-height:34px;
- text-align:center;
border:0;
- font-family:@main-font;
- color:@button-label;
font-weight:normal;
- font-size:21px;
margin-top:3px;
-
display:block;
- width:120px;
- text-decoration:none;
- .rounded-corners(4px);
- .box-shadow(1px, 1px, 2px, #636363);
+ .button-style(34px,21px);
.center;
+ width: 130px;
}
a.followed:hover, a.follow:hover{
- text-decoration:none;
- background: url(../images/medium-button.png) bottom repeat-x;
+ .button-style-hover;
.text-shadow(0px, 1px, 0px, #c6d9dd);
}
@@ -664,16 +661,21 @@ body.anon {
/* notify by email box */
.notify-sidebar #question-subscribe-sidebar {
- margin: 7px 0 0 3px;
+ margin: 0 0 0 3px;
}
}
+.users-page .box label {
+ display: inline;
+ float: none;
+}
+
.statsWidget p{
color:@info-text;
font-size:16px;
border-bottom:#cccccc 1px solid;
font-size:13px;
-
+
strong{
float:right;
padding-right:10px;
@@ -681,23 +683,30 @@ body.anon {
}
.questions-related {
word-wrap: break-word;
-
+
p {
line-height: 20px;
- padding: 4px 0px 4px 0px;
+ padding: 4px 0px 9px 0px;
font-size: 16px;
font-weight:normal;
border-bottom:#cccccc 1px solid;
}
- a{
+ p:first-child {
+ margin-top: -4px;
+ }
+ p:last-child {
+ border: none;
+ }
+ a {
font-size:13px;
+ line-height: 1.3;
}
}
/* tips and markdown help are widgets for ask template */
#tips{
li{
- color:@info-text;
+ color:@info-text;
font-size:13px;
list-style-image: url(../images/tips.png);
}
@@ -767,8 +776,7 @@ body.anon {
.tabsA .label, .tabsC .label {
float: left;
color: #646464;
- margin-top:4px;
- margin-right:5px;
+ margin:4px 5px 0px 8px;
}
.main-page .tabsA .label {
@@ -814,12 +822,12 @@ body.anon {
#questionCount{
font-weight:bold;
- font-size:23px;
+ font-size:20px;
color:@section-title;
width:200px;
float:left;
- margin-bottom:8px;
- padding-top:6px;
+ margin-bottom:6px;
+ padding-top: 6px;
font-family:@main-font;
}
@@ -865,20 +873,20 @@ ul#searchTags {
.short-summary {
position: relative;
filter: inherit;
- padding: 10px;
+ padding: 10px 0 3px 0;
border-bottom: 1px solid #DDDBCE;
margin-bottom:1px;
overflow: hidden;
- width: 710px;
+ width: 733px;
float: left;
- background: url(../images/summary-background.png) repeat-x;
-
+ /*background: url(../images/summary-background.png) repeat-x;*/
+
h2 {
- font-size: 24px;
+ font-size: 20px;
font-weight:normal;
line-height: 26px;
padding-left: 0;
- margin-bottom:8px;
+ margin-bottom:7px;
display:block;
font-family:@main-font;
}
@@ -895,7 +903,7 @@ ul#searchTags {
}
- .userinfo .relativetime, span.anonymous
+ .userinfo .timeago, span.anonymous
{
font-size: 11px;
clear:both;
@@ -932,7 +940,7 @@ ul#searchTags {
}
.tags {
- margin-top: 0;
+ margin: 0 0 0 1px;
}
.votes, .answers, .favorites, .views {
@@ -1132,7 +1140,7 @@ ul#related-tags {
ul.tags li {
float:left;
display: block;
- margin: 0 5px 0 0;
+ margin: 0 8px 8px 0;
padding: 0;
height:20px;
}
@@ -1156,10 +1164,14 @@ ul.tags.marked-tags li,
ul#ab-user-tags li {
width: 160px;
margin:5px;
+ margin-left: 0;
+}
+.tags-page ul.tags {
+ margin-left: 5px;
}
ul#related-tags li {
- margin: 0 5px 5px 0;
+ margin: 0 5px 8px 0;
float: left;
clear: left;
}
@@ -1167,26 +1179,28 @@ ul#related-tags li {
/* .tag-left and .tag-right are for the sliding doors decoration of tags */
.tag-left {
- background: url(../images/tag-right.png) no-repeat right center;
- border: none;
cursor: pointer;
display: block;
float: left;
- height: 20px;
+ height: 17px;
margin: 0 5px 0 0;
padding: 0;
+ .box-shadow(0px,0px,5px,#d3d6d7);
}
.tag-right {
- background:url(../images/tag-left.png) no-repeat left center;
- border: none;
+ background: #f3f6f6;
+ border:#fff 1px solid ;
+ border-top:#fff 2px solid;
+ outline:#cfdbdb 1px solid;
+ /* .box-shadow(0px,1px,0px,#88a8a8);*/
display: block;
float: left;
- height: 20px;
- line-height: 20px;
+ height: 17px;
+ line-height: 17px;
font-weight: normal;
font-size: 11px;
- padding: 0px 10px 0px 15px;
+ padding: 0px 8px 0px 8px;
text-decoration: none;
text-align: center;
white-space: nowrap;
@@ -1197,14 +1211,7 @@ ul#related-tags li {
.deletable-tag {
margin-right: 3px;
white-space: nowrap;
-}
-
-.deletable-tag .tag-right {
- padding-right: 0px;
- float: left;
-}
-.deletable-tag.tag-left {
- padding-right: 0px;
+ .rounded-corners-right(4px);
}
.tags a.tag-right,
@@ -1217,7 +1224,9 @@ ul#related-tags li {
color: #1A1A1A;
}
-.users-page h1, .tags-page h1 {
+.users-page h1,
+.tags-page h1,
+.groups-page h1 {
float: left;
}
@@ -1225,23 +1234,28 @@ ul#related-tags li {
margin-right: 5px;
}
-span.delete-icon {
- padding-left: 13px;
- vertical-align: bottom;
- background: url(../images/close-small-dark.png) bottom no-repeat;
+.delete-icon {
+ margin-top:-1px;
+ float: left;
+ height: 21px;
+ width:18px;
+ display: block;
+ line-height:20px;
+ text-align:center;
+ background: #bbcdcd;
cursor: default;
+ color:#fff;
+ border-top:#cfdbdb 1px solid;
+ font-family:@body-font;
+ .rounded-corners-right(4px);
+ .text-shadow(0px,1px,0px,#7ea0a0)
+
}
-span.delete-icon:hover {
- background: url(../images/close-small-dark.png) top no-repeat;
+.delete-icon:hover {
+ background: #b32f2f;
}
-.tags span.delete-icon {
- float: left;
- height: 20px;
- width:8px;
- margin: 0px 0 0 10px;
- display: block;
-}
+
.tag-number {
font-weight: normal;
@@ -1272,7 +1286,7 @@ span.delete-icon:hover {
#askFormBar {
display:inline-block;
- padding: 4px 7px 5px 0px;
+ padding: 4px 7px 0px 0px;
margin-top:0px;
p{
@@ -1288,17 +1302,15 @@ span.delete-icon:hover {
margin: 0px;
padding: 0px 0 0 5px;
border:#cce6ec 3px solid;
- width:725px;
+ width:719px;
}
}
-.ask-page, .edit-question-page{
+.ask-page, .edit-question-page {
div#question-list {
- float: none;
border-bottom:#f0f0ec 1px solid;
- float:left;
- margin-bottom:10px;
+ float: none;
a{
line-height:30px;
}
@@ -1345,44 +1357,56 @@ span.delete-icon:hover {
.title-desc {
color: @info-text;
font-size: 13px;
+ margin-bottom: 5px;
}
#fmanswer input.submit,
.ask-page input.submit,
.edit-question-page input.submit {
float: left;
- background: url(../images/medium-button.png) top repeat-x;
- height:34px;
- border:0;
- font-family:@main-font;
- color:@button-label;
font-weight:normal;
- font-size:21px;
margin-top:3px;
- .rounded-corners(4px);
- .box-shadow(1px, 1px, 2px, #636363);
+ .button-style(34px,21px);
margin-right:7px;
}
#fmanswer input.submit:hover,
.ask-page input.submit:hover,
.edit-question-page input.submit:hover{
- text-decoration:none;
- background: url(../images/medium-button.png) bottom repeat-x;
+ .button-style-hover;
.text-shadow(0px, 1px, 0px, #c6d9dd)
}
-#editor { /*adjustment for editor preview*/
+
+.wmd-container {
+ border:#cce6ec 3px solid;
+}
+.users-page .wmd-container {
+ width: 200px;
+}
+.ask-page,
+.question-page,
+.edit-question-page,
+.edit-answer-page {
+ .wmd-container {
+ width: 723px;
+ }
+ #editor {
+ width: 710px;
+ padding: 6px;
+ }
+}
+
+#editor { /* adjustment for editor preview */
+ display: block;
font-size: 100%;
min-height: 200px;
line-height: 18px;
- margin:0;
- border-left:#cce6ec 3px solid;
- border-bottom:#cce6ec 3px solid;
- border-right:#cce6ec 3px solid;
- border-top:0;
- padding:10px;
- margin-bottom:10px;
- width:710px;
+ margin: 0;
+ border: 0;
+}
+
+.users-page #editor {
+ width: 192px;
}
#id_title {
@@ -1390,8 +1414,8 @@ span.delete-icon:hover {
}
.wmd-preview {
- margin: 3px 0 5px 0;
- padding: 6px;
+ margin: 0;
+ padding: 5px;
background-color: #F5F5F5;
min-height: 20px;
overflow: auto;
@@ -1399,9 +1423,13 @@ span.delete-icon:hover {
font-family:@body-font;
p{
- margin-bottom:14px;
- line-height:1.4;
- font-size:14px;
+ margin-bottom: 14px;
+ line-height: 1.4;
+ font-size: 14px;
+ }
+
+ p:last-child{
+ margin-bottom: 0;
}
}
@@ -1418,6 +1446,10 @@ span.delete-icon:hover {
max-width: 600px;
}
+.user-page .wmd-buttons {
+ width: 725px;
+}
+
.preview-toggle {
width: 100%;
color: #b6a475; /*letter-spacing:1px;*/
@@ -1470,7 +1502,7 @@ span.delete-icon:hover {
margin: 0px;
padding: 0px 0 0 5px;
border:#cce6ec 3px solid;
- width:725px;
+ width: 719px;
margin-bottom:10px;
}
#id_summary{
@@ -1491,14 +1523,14 @@ span.delete-icon:hover {
h1{
padding-top:0px;
- font-family:@main-font;
- }
-
- h1 a{
- color:@question-link;
- font-size:30px;
- font-weight:normal;
- line-height:1;
+ font-family:@main-font;
+
+ a {
+ color:@question-link;
+ font-size:26px;
+ font-weight:normal;
+ line-height:1;
+ }
}
p.rss {
@@ -1506,7 +1538,7 @@ span.delete-icon:hover {
clear:both;
padding: 3px 0 0 23px;
font-size: 15px;
- width:110px;
+ width:130px;
background-position:center left;
margin-left:0px !important;
}
@@ -1515,7 +1547,7 @@ span.delete-icon:hover {
font-family:@main-font;
vertical-align: top;
}
-
+
.question-content{
float:right;
width:682px;
@@ -1529,7 +1561,7 @@ span.delete-icon:hover {
#question-table,
.answer-table {
- margin: 6px 0 6px 0;
+ margin: 8px 0 6px 0;
border-spacing: 0px;
width: 670px;
padding-right:10px;
@@ -1622,8 +1654,8 @@ span.delete-icon:hover {
margin-bottom:8px;
a {
- color: #777;
- padding: 0px 3px 3px 22px;
+ color: #777;
+ padding: 0px 7px 3px 18px;
cursor: pointer;
border: none;
font-size:12px;
@@ -1652,7 +1684,7 @@ span.delete-icon:hover {
.post-controls, .answer-controls{
.question-delete{
background: url(../images/delete.png) no-repeat center left;
- padding-left:16px;
+ padding-left:11px;
}
.question-flag{
background: url(../images/flag.png) no-repeat center left;
@@ -1673,7 +1705,7 @@ span.delete-icon:hover {
.tabBar{
width:100%;
}
-
+
#questionCount{
float:left;
font-family:@main-font;
@@ -1706,7 +1738,7 @@ span.delete-icon:hover {
}
#fmanswer_button{
- margin:8px 0px ;
+ margin:8px 0px;
}
.question-img-favorite:hover {
background: url(../images/vote-favorite-on.png)
@@ -1777,10 +1809,10 @@ span.delete-icon:hover {
font-size: 12px;
line-height: 140%;
padding-left:2px;
- padding-top:4px;
+ padding-top:3px;
border:#cce6ec 3px solid;
}
-
+
input {
margin-left: 10px;
margin-top: 1px;
@@ -1788,24 +1820,14 @@ span.delete-icon:hover {
width: 100px;
}
button{
- background:url(../images/small-button-blue.png) repeat-x top;
- border:0;
- color:@button-label;
- font-family:@body-font;
- font-size:13px;
- width:100px;
- font-weight:bold;
- height:27px;
line-height:25px;
margin-bottom:5px;
- cursor:pointer;
- .rounded-corners(4px);
- .text-shadow(0px,1px,0px,#E6F6FA);
- .box-shadow(1px, 1px, 2px, #808080);
+ .button-style(27px, 12px);
+ font-family:@body-font;
+ font-weight:bold;
}
button:hover{
- background: url(../images/small-button-blue.png) bottom repeat-x;
- .text-shadow(0px, 1px, 0px, #c6d9dd);
+ .button-style-hover;
}
.counter {
display: inline-block;
@@ -1844,16 +1866,19 @@ span.delete-icon:hover {
}
span.delete-icon{
background:url(../images/close-small.png) no-repeat;
+ border:0;
+ width:14px;
+ height:14px;
}
span.delete-icon:hover{
border:#BC564B 2px solid;
.rounded-corners(10px);
-
+ margin: -3px 0px 0px -2px;
}
.content {
- margin-bottom: 7px;
+ margin-bottom: 7px;
}
-
+
.comment-votes {
float: left;
width: 37px;
@@ -1946,7 +1971,11 @@ span.delete-icon:hover {
float: left;
text-align: center;
padding-top: 2px;
- margin:10px 10px 0px 3px;
+ margin:0px 10px 0px 3px;
+ /* small IE fixes */
+ *margin:0;
+ *height:210px;
+ *width:30px;
}
.vote-buttons IMG {
@@ -1955,7 +1984,7 @@ span.delete-icon:hover {
.vote-number {
font-family: @main-font;
- padding: 0px 0 5px 0;
+ padding: 2px 0 5px 0;
font-size: 25px;
font-weight: bold;
color: #777;
@@ -1963,10 +1992,11 @@ span.delete-icon:hover {
.vote-buttons .notify-sidebar {
text-align: left;
- width:120px;
- }
- .vote-buttons .notify-sidebar label {
- vertical-align: top;
+ width:130px;
+ margin-top: 7px;
+ label {
+ vertical-align: top;
+ }
}
.tabBar-answer{
@@ -1983,7 +2013,7 @@ span.delete-icon:hover {
.accepted-answer {
background-color: #f7fecc;
border-bottom-color: #9BD59B;
-
+
.vote-buttons {
width:27px;
margin-right:10px;
@@ -2023,9 +2053,17 @@ span.delete-icon:hover {
}
}
+ .answer-img-accept {
+ background: url(../images/vote-accepted.png);
+ width: 23px;
+ height: 23px;
+ }
+
+ .accepted-answer .answer-img-accept,
.answer-img-accept:hover {
background: url(../images/vote-accepted-on.png)
}
+
.answer-body a {
color:@link;
}
@@ -2087,7 +2125,6 @@ span.delete-icon:hover {
.openid-signin,
.meta,
-.users-page,
.user-profile-edit-page,
{
font-size:13px;
@@ -2136,23 +2173,13 @@ span.delete-icon:hover {
font-size:14px;
}
input.submit{
- background:url(../images/small-button-blue.png) repeat-x top;
- border:0;
- color:@button-label;
- font-weight:bold;
- font-size:13px;
- font-family:@body-font;
- height:26px;
+ font-weight:normal;
margin:5px 0px;
- width:100px;
- cursor:pointer;
- .rounded-corners(4px);
- .text-shadow(0px,1px,0px,#E6F6FA);
- .box-shadow(1px, 1px, 2px, #808080);
+ .button-style(26px,15px);
+ font-family:@body-font;
}
input.submit:hover{
- background:url(../images/small-button-blue.png) repeat-x bottom;
- text-decoration:none;
+ .button-style-hover;
}
.cancel{
background:url(../images/small-button-cancel.png) repeat-x top !important;
@@ -2163,6 +2190,10 @@ span.delete-icon:hover {
}
}
+.openid-signin form {
+ margin-bottom: 5px;
+}
+
#email-input-fs,#local_login_buttons,#password-fs,#openid-fs{
margin-top:10px;
#id_email,#id_username,#id_password{
@@ -2175,25 +2206,19 @@ span.delete-icon:hover {
width:200px;
}
.submit-b{
- background:url(../images/small-button-blue.png) repeat-x top;
- border:0;
- color:@button-label;
- font-weight:bold;
- font-size:13px;
+ .button-style(24px,15px);
font-family:@body-font;
- height:24px;
- margin-top:-2px;
- padding-left:10px;
+ font-weight:bold;
padding-right:10px;
- cursor:pointer;
- .rounded-corners(4px);
- .text-shadow(0px,1px,0px,#E6F6FA);
- .box-shadow(1px, 1px, 2px, #808080)
+ border:0;
}
+
.submit-b:hover{
- background:url(../images/small-button-blue.png) repeat-x bottom;
+ .button-style-hover;
}
}
+
+
.openid-input {
background: url(../images/openid.gif) no-repeat;
padding-left: 15px;
@@ -2223,17 +2248,16 @@ span.delete-icon:hover {
/* People page */
-.tabBar-user{
+/*.users-page .tabBar{
width:375px;
-}
+}*/
.user {
- padding: 5px;
+ padding: 5px 10px 5px 0;
line-height: 140%;
width: 166px;
- border:#eee 1px solid;
+ height: 32px;
margin-bottom:5px;
- .rounded-corners(3px);
.user-micro-info{
color:@info-text-dark;
}
@@ -2338,23 +2362,14 @@ a:hover.medal {
.follow-toggle,.submit {
border:0 !important;
- color:@button-label;
font-weight:bold;
- font-size:12px;
- height:26px;
line-height:26px;
margin-top:-2px;
- font-size:15px;
- cursor:pointer;
- font-family:@main-font;
- background:url(../images/small-button-blue.png) repeat-x top;
- .rounded-corners(4px);
- .text-shadow(0px,1px,0px,#E6F6FA);
- .box-shadow(1px, 1px, 2px, #808080)
+ .button-style(26px,14px);
}
.follow-toggle:hover, .submit:hover {
- background:url(../images/small-button-blue.png) repeat-x bottom;
+ .button-style-hover;
text-decoration:none !important;
}
@@ -2656,6 +2671,10 @@ span.form-error {
margin-left: 5px;
}
+ul.errorlist {
+ margin-bottom: 0;
+}
+
p.form-item {
margin: 0px;
}
@@ -2778,7 +2797,7 @@ span.form-error {
margin: 0px;
}
-.relativetime {
+.timeago {
font-weight: bold;
text-decoration: none;
}
@@ -3046,8 +3065,11 @@ button::-moz-focus-inner {
-webkit-border-radius: 5px;
}
-.list-table td {
- vertical-align: top;
+.list-table {
+ td {
+ vertical-align: top;
+ }
+ border-spacing: 0;
}
/* these need to go */
@@ -3142,7 +3164,7 @@ ul.form-horizontal-rows li input {
ul.post-tags {
- margin-left: 7px;
+ margin-left: 3px;
}
ul.post-tags li {
margin-top: 4px;
@@ -3152,6 +3174,11 @@ ul.post-tags li {
ul.post-retag {
margin-bottom:0px;
margin-left:5px;
+ input {
+ width: 400px;
+ height: 1.5em;
+ margin: 3px 0 0 -3px;
+ }
}
#question-controls .tags {
@@ -3273,19 +3300,26 @@ p.signup_p {
.avatar-page li {
display: inline;
}
-.user-profile-page .avatar p {
- margin-bottom: 0px;
-}
-.user-profile-page .tabBar a#stats {
- margin-left: 0;
-}
-.user-profile-page img.gravatar {
- margin: 2px 0 3px 0;
-}
-.user-profile-page h3 {
- padding: 0;
- margin-top: -3px;
+
+.user-profile-page {
+ .avatar p {
+ margin-bottom: 0px;
+ }
+ .tabBar a#stats {
+ margin-left: 0;
+ }
+ img.gravatar {
+ margin: 2px 0 3px 0;
+ }
+ h3 {
+ padding: 0;
+ margin-top: -3px;
+ }
+ ul.tags {
+ margin-left: 5px;
+ }
}
+
.userList {
font-size: 13px;
}
@@ -3332,3 +3366,150 @@ pre.prettyprint { clear:both;padding: 3px; border: 0px solid #888; }
.atn { color: #404; }
.atv { color: #060; }
}
+
+#leading-sidebar {
+ float: left;
+}
+
+/* language-specific fixes */
+body.lang-es {
+ #searchBar {
+ width: 398px;
+ .searchInput {
+ width: 337px;
+ }
+ .searchInputCancelable {
+ width: 302px;
+ }
+ }
+}
+body.anon.lang-es {
+ #searchBar {
+ width: 485px;
+ .searchInput {
+ width: 425px;
+ }
+ .searchInputCancelable {
+ width: 390px;
+ }
+ }
+}
+
+/* user groups */
+#user-groups ul {
+ margin-bottom: 0px;
+}
+#user-groups .delete-icon {
+ float: none;
+ display: inline;
+ color: #525252;
+ padding: 0 3px 0 3px;
+ background: #ccc;
+ border-radius: 4px;
+ line-height:inherit;
+ -moz-border-radius: 4px;
+ -khtml-border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+#user-groups .delete-icon:hover {
+ color: white;
+ background: #b32f2f;
+}
+
+.users-page {
+ .wmd-prompt-dialog {
+ background: #ccc;
+ }
+}
+
+.group-wiki {
+ .content {
+ > p:last-child {
+ margin-bottom: 5px;
+ }
+ }
+ .group-logo {
+ float: left;
+ margin: 0 5px 3px 0;
+ }
+ .follow-toggle.group-join-btn {
+ margin: 4px auto 10px auto;
+ display: block;
+ }
+ .controls {
+ margin: 0 0 10px 0;
+ }
+}
+
+img.group-logo {
+ height: 60px;/* important to align with the line spacing */
+}
+
+#groups-list {
+ margin-left: 0px;
+ .group-name {
+ padding-right: 20px;
+ }
+ td {
+ padding-bottom: 5px;
+ }
+}
+
+#reject-edit-modal {
+ input, textarea {
+ width: 514px;
+ }
+}
+
+input.tipped-input,
+textarea.tipped-input {
+ padding-left: 5px;
+}
+
+.tipped-input.blank {
+ color: @info-text;
+}
+
+.select-box {
+
+ margin: 0;
+
+ li {
+ list-style-type: none;
+ list-style-position: inside;
+ padding-left: 7px;
+ font-size: 14px;
+ line-height: 25px;
+ }
+ li.selected,
+ li.selected:hover {
+ background-color: #fcf8e3;
+ color: #c09853;
+ }
+
+ li:hover {
+ background-color: #cecece;
+ color: white;
+ }
+}
+
+/* fixes for bootstrap */
+.caret {
+ margin-bottom: 7px;
+}
+.btn-group {
+ text-align: left;
+}
+.btn-toolbar {
+ margin: 0;
+}
+.modal-footer {
+ text-align: left;
+}
+.modal p {
+ font-size: 14px;
+}
+.modal-body > textarea {
+ width: 515px;
+ margin-bottom: 0px;
+}
diff --git a/askbot/skins/default/templates/about.html b/askbot/skins/default/templates/about.html
deleted file mode 100644
index d5d1b949..00000000
--- a/askbot/skins/default/templates/about.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "two_column_body.html" %}
-<!-- template about.html -->
-{% block title %}{% spaceless %}{% trans site_name=settings.APP_SHORT_NAME %}About {{site_name}}{% endtrans %}{% endspaceless %}{% endblock %}
-{% block content %}
-<h1 class="section-title">{% trans site_name=settings.APP_SHORT_NAME %}About {{site_name}}{% endtrans %}</h1>
-<div class="content">
- {{settings.FORUM_ABOUT}}
-</div>
-{% endblock %}
-<!-- end template about.html -->
diff --git a/askbot/skins/default/templates/answer_edit.html b/askbot/skins/default/templates/answer_edit.html
index bbf3edef..bbc00420 100644
--- a/askbot/skins/default/templates/answer_edit.html
+++ b/askbot/skins/default/templates/answer_edit.html
@@ -7,7 +7,7 @@
{% endblock %}
{% block content %}
<h1 class="section-title">
- {% trans %}Edit answer{% endtrans %} [<a href="{{ answer.question.get_absolute_url() }}#{{ answer.id }}">{% trans %}back{% endtrans %}</a>]
+ {% trans %}Edit answer{% endtrans %} [<a href="{{ answer.thread._question_post().get_absolute_url() }}#{{ answer.id }}">{% trans %}back{% endtrans %}</a>]
</h1>
<div id="main-body" class="ask-body">
<form id="fmedit" action="{% url edit_answer answer.id %}" method="post" >{% csrf_token %}
@@ -67,7 +67,11 @@
$('#pre-collapse').text(txt);
});
- setupFormValidation($("#fmedit"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+ setupFormValidation(
+ $("#fmedit"),
+ CPValidator.getAnswerFormRules(),
+ CPValidator.getAnswerFormMessages()
+ );
$('#id_revision').unbind().change(function(){
$("#select_revision").click();
diff --git a/askbot/skins/default/templates/ask.html b/askbot/skins/default/templates/ask.html
index 3849ef3b..8bec61b7 100644
--- a/askbot/skins/default/templates/ask.html
+++ b/askbot/skins/default/templates/ask.html
@@ -1,7 +1,7 @@
{% extends "two_column_body.html" %}
{% import "macros.html" as macros %}
<!-- template ask.html -->
-{% block title %}{% spaceless %}{% trans %}Ask a question{% endtrans %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans %}Ask Your Question{% endtrans %}{% endspaceless %}{% endblock %}
{% block forestyle %}
<link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
{% endblock %}
@@ -22,7 +22,7 @@
var sortMethod = undefined;//need for live_search
var minSearchWordLength = {{settings.MIN_SEARCH_WORD_LENGTH}};
</script>
- <script type='text/javascript' src='{{"/js/live_search.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/live_search_new_thread.js"|media}}'></script>
{% include "meta/editor_data.html" %}
{% if mandatory_tags %}
{% include "meta/mandatory_tags_js.html" %}
@@ -35,7 +35,7 @@
var codeFriendlyMarkdown = false;
{% endif %}
$().ready(function(){
- liveSearch().init('ask_page');
+ liveSearchNewThreadInit();
//set current module button style
$('#editor').TextAreaResizer();
diff --git a/askbot/skins/default/templates/badge.html b/askbot/skins/default/templates/badge.html
index d1f75617..b2c4ce8b 100644
--- a/askbot/skins/default/templates/badge.html
+++ b/askbot/skins/default/templates/badge.html
@@ -20,7 +20,7 @@
<div class="user">
<ul>
<li class="thumb">{{ gravatar(recipient, 32) }}</li>
- <li><a href="{{ recipient.get_absolute_url() }}">{{recipient.username}}</a></li>
+ <li><a href="{{ recipient.get_absolute_url() }}">{{recipient.username|escape}}</a></li>
<li>{{ macros.user_score_and_badge_summary(recipient) }}</li>
</ul>
</div>
diff --git a/askbot/skins/default/templates/badges.html b/askbot/skins/default/templates/badges.html
index 08827da3..ce76e76b 100644
--- a/askbot/skins/default/templates/badges.html
+++ b/askbot/skins/default/templates/badges.html
@@ -1,12 +1,13 @@
{% extends "two_column_body.html" %}
<!-- template badges.html -->
-{% block title %}{% spaceless %}{% trans %}Badges summary{% endtrans %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans %}Badges{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<h1 class="section-title">{% trans %}Badges{% endtrans %}</h1>
<p>
{% trans %}Community gives you awards for your questions, answers and votes.{% endtrans %}<br/>
{% trans %}Below is the list of available badges and number
-of times each type of badge has been awarded. Give us feedback at {{feedback_faq_url}}.
+ of times each type of badge has been awarded. Have ideas about fun
+badges? Please, give us your <a href='{{feedback_faq_url}}'>feedback</a>
{% endtrans %}
</p>
<div id="medalList">
@@ -37,7 +38,8 @@ of times each type of badge has been awarded. Give us feedback at {{feedback_faq
<a style="cursor:default;" title="{% trans %}gold badge: the highest honor and is very rare{% endtrans %}" class="medal"><span class="badge1">&#9679;</span>&nbsp;{% trans %}gold{% endtrans %}</a>
</p>
<p>
- {% trans %}gold badge description{% endtrans %}
+ {% trans %}Gold badge is the highest award in this community. To obtain it you have to show
+profound knowledge and ability in addition to your active participation.{% endtrans %}
</p>
<p>
<a
@@ -46,14 +48,14 @@ of times each type of badge has been awarded. Give us feedback at {{feedback_faq
class="medal"><span class="badge2">&#9679;</span>&nbsp;{% trans %}silver{% endtrans %}</a>
</p>
<p>
- {% trans %}silver badge description{% endtrans %}
+ {% trans %}silver badge: occasionally awarded for the very high quality contributions{% endtrans %}
</p>
<p>
<a style="cursor:default;" title="{% trans %}bronze badge: often given as a special honor{% endtrans %}" class="medal">
<span class="badge3">&#9679;</span>&nbsp;{% trans %}bronze{% endtrans %}</a>
</p>
<p>
- {% trans %}bronze badge description{% endtrans %}
+ {% trans %}bronze badge: often given as a special honor{% endtrans %}
</p>
</div>
{% endblock %}
diff --git a/askbot/skins/default/templates/base.html b/askbot/skins/default/templates/base.html
index 1102007b..da771a41 100644
--- a/askbot/skins/default/templates/base.html
+++ b/askbot/skins/default/templates/base.html
@@ -6,9 +6,11 @@
<title>{% block title %}{% endblock %} - {{ settings.APP_TITLE|escape }}</title>
{% include "meta/html_head_meta.html" %}
<link rel="shortcut icon" href="{{ settings.SITE_FAVICON|media }}" />
+ {% block before_css %}{% endblock %}
{% include "meta/html_head_stylesheets.html" %}
{% block forestyle %}{% endblock %}
{% include "meta/html_head_javascript.html" %}
+ {% block forejs %}{% endblock %}
{% if settings.USE_CUSTOM_HTML_HEAD %}
{{ settings.CUSTOM_HTML_HEAD }}
{% endif %}
@@ -16,9 +18,20 @@
{% endspaceless %}
<body class="{% block body_class %}{% endblock %}{% if user_messages %} user-messages{% endif %}{% if page_class %} {{page_class}}{% endif %}{% if request.user.is_anonymous() %} anon{% endif %} lang-{{settings.LANGUAGE_CODE}}">
{% include "widgets/system_messages.html" %}
+ {% include "debug_header.html" %}
{% include "custom_header.html" ignore missing %}
+ {% if settings.CUSTOM_HEADER|trim != '' %}
+ <div id="custom-header">
+ {{settings.CUSTOM_HEADER}}
+ </div>
+ {% endif %}
{% include "widgets/header.html" %} {# Logo, user tool navigation and meta navitation #}
{% include "widgets/secondary_header.html" %} {# Scope selector, search input and ask button #}
+ {% if settings.ENABLE_LEADING_SIDEBAR %}
+ <div id="leading-sidebar">
+ {{ settings.LEADING_SIDEBAR }}
+ </div>
+ {% endif %}
<div class="content-wrapper">
{% block body %}
{% endblock %}
diff --git a/askbot/skins/default/templates/close.html b/askbot/skins/default/templates/close.html
index d8160865..bac2b3ee 100644
--- a/askbot/skins/default/templates/close.html
+++ b/askbot/skins/default/templates/close.html
@@ -4,7 +4,7 @@
{% block content %}
<h1>{% trans %}Close question{% endtrans %}</h1>
<p>{% trans %}Close the question{% endtrans %}: <a href="{{ question.get_absolute_url() }}">
- <strong>{{ question.get_question_title() }}</strong></a>
+ <strong>{{ question.get_question_title()|escape }}</strong></a>
</p>
<form id="fmclose" action="{% url close question.id %}" method="post" >{% csrf_token %}
<p>
diff --git a/askbot/skins/default/templates/django_error.html b/askbot/skins/default/templates/django_error.html
new file mode 100644
index 00000000..c1bfcc20
--- /dev/null
+++ b/askbot/skins/default/templates/django_error.html
@@ -0,0 +1,31 @@
+<html>
+ <head>
+ <title>Internal Server Error</title>
+ </head>
+ <body>
+ <h1>Internal Server Error</h1>
+ <p>
+ Most likely this is caused by an import error
+ within Django due to an incomplete setup of your
+ django project.
+ </p>
+ <p>
+ Please look into your error logs for more details.
+ </p>
+ <p>
+ Have you installed the database binding module?
+ </p>
+ <p>
+ If you made your own customizations - have you forgotten to
+ install some dependency module? Please note
+ that dependency modules may have their own dependencies, etc,
+ and they should also be satisfied.
+ </p>
+ <p>
+ If you need further assistance, please email at
+ <a href="mailto:support@askbot.com">support@askbot.com</a>,
+ post your question at <a href="http://askbot.org/en/questions/">AskBot Support Forum</a>
+ or call at +1-301-747-1533 (US).
+ <p>
+ </body>
+</html>
diff --git a/askbot/skins/default/templates/email/ask_for_signature.html b/askbot/skins/default/templates/email/ask_for_signature.html
new file mode 100644
index 00000000..cafeee2b
--- /dev/null
+++ b/askbot/skins/default/templates/email/ask_for_signature.html
@@ -0,0 +1,11 @@
+{% import "email/macros.html" as macros %}
+<p style="{{ macros.heading_style() }}">
+ {% trans user=username|escape %}{{ user }}, please reply to this message.{% endtrans %}
+</p>
+<p>
+ {% trans %}Your post could not be published, because we could not detect signature in your email.{% endtrans %}<br/>
+ {% trans %}Please make a simple response, without editing this message.{% endtrans %}<br/>
+ {% trans %}We will then attempt to detect the signature in your response and you should be able to post.{% endtrans %}
+</p>
+{% include "email/footer.html" %}
+<p style="{{ macros.fine_print_style() }}">{{ footer_code }}</p>
diff --git a/askbot/skins/default/templates/feedback_email.txt b/askbot/skins/default/templates/email/feedback_email.txt
index a729066a..a729066a 100644
--- a/askbot/skins/default/templates/feedback_email.txt
+++ b/askbot/skins/default/templates/email/feedback_email.txt
diff --git a/askbot/skins/default/templates/email/footer.html b/askbot/skins/default/templates/email/footer.html
new file mode 100644
index 00000000..eda1269d
--- /dev/null
+++ b/askbot/skins/default/templates/email/footer.html
@@ -0,0 +1 @@
+<p>{% trans %}Sincerely,<br>{{ site_name }} Administrator{% endtrans %}</p>
diff --git a/askbot/skins/default/templates/email/insufficient_rep_to_post_by_email.html b/askbot/skins/default/templates/email/insufficient_rep_to_post_by_email.html
new file mode 100644
index 00000000..284cc1b0
--- /dev/null
+++ b/askbot/skins/default/templates/email/insufficient_rep_to_post_by_email.html
@@ -0,0 +1,15 @@
+{% import "email/macros.html" as macros %}
+{# parameters:
+ * min_upvotes
+ * username
+ * site_name - for the footer
+ * site_link - html for the link
+#}
+<p style="{{ macros.heading_style() }}">
+ {% trans user=username|escape %}{{ username }}, your question could not be posted by email just yet.{% endtrans %}
+</p>
+<p>
+ {% trans %}To make posts by email, you need to receive about {{min_upvotes}} upvotes.{% endtrans %}<br/>
+ {% trans link=site_link|safe %}At this time, please post your question at {{link}}{% endtrans %}
+</p>
+{% include "email/footer.html" %}
diff --git a/askbot/skins/default/templates/email/macros.html b/askbot/skins/default/templates/email/macros.html
new file mode 100644
index 00000000..d7817bf9
--- /dev/null
+++ b/askbot/skins/default/templates/email/macros.html
@@ -0,0 +1,96 @@
+{% macro quoted_post(
+ post = None,
+ quote_level = 0,
+ format = None,
+ is_leaf_post = False
+ )
+%}
+ {% spaceless %}
+ {{ start_quote(quote_level) }}
+ {% set author = post.author.username|escape %}
+ {% if post.post_type == 'question' %}
+ <p>
+ {% if format == 'parent_subthread' %}
+ {% if is_leaf_post %}
+ {% trans %}Question by {{ author }}:{% endtrans %}
+ {% else %}
+ {% trans -%}
+ In reply to {{ author }}'s question:
+ {%- endtrans %}
+ {% endif %}
+ {% else %}
+ {% trans %}Question :{% endtrans %}
+ {% endif %}
+ {{ post.thread.title }}
+ </p>
+ <p>
+ {% if format != 'parent_subthread' %}
+ {% trans %}Asked by {{ author }}:{% endtrans %}
+ {% endif %}
+ </p>
+ {% set tag_names = post.get_tag_names() %}
+ {% if tag_names %}
+ <p>
+ {% trans %}Tags:{% endtrans %}
+ {{ tag_names|join(', ') }}.
+ </p>
+ {% endif %}
+ {% elif post.post_type == 'answer' %}
+ <p>
+ {% if format == 'parent_subthread' %}
+ {% if is_leaf_post %}
+ {% trans -%}
+ {{ author }}'s answer:
+ {%- endtrans %}
+ {% else %}
+ {% trans -%}
+ In reply to {{ author }}'s answer:
+ {%- endtrans %}
+ {% endif %}
+ {% else %}
+ {% trans %}Answered by {{ author }}:{% endtrans %}
+ {% endif %}
+ </p>
+ {% else %}
+ <p>
+ {% if format == 'parent_subthread' %}
+ {% if is_leaf_post %}
+ {% trans -%}
+ {{ author }}'s comment:
+ {%- endtrans %}
+ {% else %}
+ {% trans -%}
+ In reply to {{ author }}'s comment:
+ {%- endtrans %}
+ {% endif %}
+ {% else %}
+ {% trans author -%}
+ Commented by {{ author }}:
+ {%- endtrans %}
+ {% endif %}
+ </p>
+ {% endif %}
+ {{ post.html }}
+ {{ end_quote(quote_level) }}
+ {% endspaceless %}
+{% endmacro %}
+
+{% macro start_quote(level = 0) %}
+ {% for number in range(level) %}
+ <div style="padding-left:5px; border-left: 2px solid #aaa;">
+ {% endfor %}
+{% endmacro %}
+
+{% macro end_quote(level = 0) %}
+ {% for number in range(level) %}
+ </div>
+ {% endfor %}
+{% endmacro %}
+
+{% macro heading_style() %}
+font-size:14px;font-weight:bold;margin-bottom:0px;
+{% endmacro %}
+
+{% macro fine_print_style() %}
+font-size:8px;color:#aaa;margin-bottom:0px;
+{% endmacro %}
diff --git a/askbot/skins/default/templates/email/notify_author_about_approved_post.html b/askbot/skins/default/templates/email/notify_author_about_approved_post.html
new file mode 100644
index 00000000..085141d9
--- /dev/null
+++ b/askbot/skins/default/templates/email/notify_author_about_approved_post.html
@@ -0,0 +1,21 @@
+{#
+ parameters:
+ * reply_separator_line
+ * replace_content_address
+ * mailto_link_subject
+ * post
+ * reply_code (comma-separated list of emails to respond to this message)
+#}
+{{ reply_separator_line }}
+<p>{% trans
+ post_text = post.text|safe_urlquote,
+ subject = mailto_link_subject|safe_urlquote,
+ author_email_signature = author_email_signature|safe_urlquote
+%}If you would like to edit by email, please
+<a href="mailto:{{ replace_content_address }}?body={{ post_text }}{{ author_email_signature}}&subject={{ subject }}">click here</a>{% endtrans %}</p>
+<p>{% trans %}Below is a copy of your post:{% endtrans %}</p>
+{% if post.post_type == 'question' %}
+ <p style="font-size:16px">{{ post.thread.title }}</p>
+{% endif %}
+{{ post.html }}
+<p style="font-size:8px;color:#aaa;">{{ reply_code }}</p>
diff --git a/askbot/skins/default/templates/email/post_as_subthread.html b/askbot/skins/default/templates/email/post_as_subthread.html
new file mode 100644
index 00000000..9b6eb728
--- /dev/null
+++ b/askbot/skins/default/templates/email/post_as_subthread.html
@@ -0,0 +1,17 @@
+{% from "email/macros.html" import quoted_post %}
+{% if post.post_type in ('question', 'answer') %}
+ {{ quoted_post(post) }}
+ {% set comments = post.get_cached_comments() %}
+ {% if comments %}
+ <p>
+ {% trans count=comments|length -%}
+ {{ comment }} comment:
+ {%- pluralize -%}
+ {{ count }} comments:
+ {%- endtrans -%}
+ </p>
+ {% for comment in comments %}
+ {{ quoted_post(comment, quote_level = 1) }}
+ {% endfor %}
+ {% endif %}
+{% endif %}
diff --git a/askbot/skins/default/templates/email/quoted_post.html b/askbot/skins/default/templates/email/quoted_post.html
new file mode 100644
index 00000000..ecc20ad9
--- /dev/null
+++ b/askbot/skins/default/templates/email/quoted_post.html
@@ -0,0 +1,5 @@
+{% from "email/macros.html" import quoted_post %}
+{{ quoted_post(
+ post, quote_level, is_leaf_post = is_leaf_post, format = format
+ )
+}}
diff --git a/askbot/skins/default/templates/email/re_welcome_lamson_on.html b/askbot/skins/default/templates/email/re_welcome_lamson_on.html
new file mode 100644
index 00000000..412fede8
--- /dev/null
+++ b/askbot/skins/default/templates/email/re_welcome_lamson_on.html
@@ -0,0 +1,7 @@
+<p style="font-size:16px;font-weight:bold;">
+ {% trans %}Great, you are ready to use {{ site_name }}!{% endtrans %}
+</p>
+<p>{% trans %}You can post questions by emailing them at {{ ask_address }}.{% endtrans %}</p>
+<p>{% trans %}When you receive update notifications, you will be able to respond to them, also by email.{% endtrans %}</p>
+<p>{% trans %}Of course, you can always visit the {{ site_name }} at <a href="{{ site_url }}">{{ site_url }}</a>{% endtrans %}</p>
+{% include "email/footer.html" %}
diff --git a/askbot/skins/default/templates/email/reply_by_email_error.html b/askbot/skins/default/templates/email/reply_by_email_error.html
new file mode 100644
index 00000000..53648184
--- /dev/null
+++ b/askbot/skins/default/templates/email/reply_by_email_error.html
@@ -0,0 +1,4 @@
+{% trans %}
+<p>The system was unable to process your message successfully, the reason being:<p>
+{% endtrans %}
+{{error}}
diff --git a/askbot/skins/default/templates/email/welcome_lamson_on.html b/askbot/skins/default/templates/email/welcome_lamson_on.html
new file mode 100644
index 00000000..0efa7096
--- /dev/null
+++ b/askbot/skins/default/templates/email/welcome_lamson_on.html
@@ -0,0 +1,15 @@
+{% import "email/macros.html" as macros %}
+{# site_name - is short name of the site, email_code - address portion
+of the reply email used for this message, we scan to the last appearance
+of the email code to detect the response signature that will appear under #}
+<p style="{{ macros.heading_style() }}">
+ {% trans %}Welcome to {{ site_name }}!{% endtrans %}
+</p>
+<p>
+ {% trans %}Important: <em>Please reply</em> to this message, without editing it. We need this to determine your email signature and that the email address is valid and was typed correctly.{% endtrans %}
+</p>
+<p>
+ {% trans %}Until we receive the response from you, you will not be able ask or answer questions on {{ site_name }} by email.{% endtrans %}
+</p>
+{% include "email/footer.html" %}
+<p style="{{ macros.fine_print_style() }}">{{ email_code }}</p>{# important #}
diff --git a/askbot/skins/default/templates/faq.html b/askbot/skins/default/templates/faq.html
deleted file mode 100644
index 51873a06..00000000
--- a/askbot/skins/default/templates/faq.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "two_column_body.html" %}
-<!-- template faq.html -->
-{% block title %}{% spaceless %}{% trans %}FAQ{% endtrans %}{% endspaceless %}{% endblock %}
-{% block content %}
-<div class="content">
-<h1 class="section-title">FAQ</h1>
- {{forum_faq}}
-</div>
-{% endblock %}
-<!-- end template faq.html -->
diff --git a/askbot/skins/default/templates/faq_static.html b/askbot/skins/default/templates/faq_static.html
index f1d34141..0bc05cc8 100644
--- a/askbot/skins/default/templates/faq_static.html
+++ b/askbot/skins/default/templates/faq_static.html
@@ -4,21 +4,21 @@
{% block content %}
<h1>{% trans %}Frequently Asked Questions {% endtrans %}({% trans %}FAQ{% endtrans %})</h1>
<h2 class="first">{% trans %}What kinds of questions can I ask here?{% endtrans %}</h2>
-<p>{% trans %}Most importanly - questions should be <strong>relevant</strong> to this community.{% endtrans %}
-{% trans %}Before asking the question - please make sure to use search to see whether your question has alredy been answered.{% endtrans %}
+<p>{% trans %}Most importantly - questions should be <strong>relevant</strong> to this community.{% endtrans %}
+{% trans %}Before you ask - please make sure to search for a similar question. You can search questions by their title or tags.{% endtrans %}
</p>
-<h2>{% trans %}What questions should I avoid asking?{% endtrans %}</h2>
+<h2>{% trans %}What kinds of questions should be avoided?{% endtrans %}</h2>
<p>{% trans %}Please avoid asking questions that are not relevant to this community, too subjective and argumentative.{% endtrans %}
</p>
<h2>{% trans %}What should I avoid in my answers?{% endtrans %}</h2>
-<p>{{ settings.APP_TITLE }} {% trans %}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.{% endtrans %}</p>
+<p>{{ settings.APP_TITLE }} {% trans %}is a <strong>question and answer</strong> site - <strong>it is not a discussion group</strong>. Please avoid holding debates in your answers as they tend to dilute the essense of questions and answers. For the brief discussions please use commenting facility.{% endtrans %}</p>
<h2>{% trans %}Who moderates this community?{% endtrans %}</h2>
<p>{% trans %}The short answer is: <strong>you</strong>.{% endtrans %}
{% trans %}This website is moderated by the users.{% endtrans %}
-{% trans %}The reputation system allows users earn the authorization to perform a variety of moderation tasks.{% endtrans %}
+{% trans %}Karma system allows users to earn rights to perform a variety of moderation tasks{% endtrans %}
</p>
-<h2>{% trans %}How does reputation system work?{% endtrans %}</h2>
-<p>{% trans %}Rep system summary{% endtrans %}</p>
+<h2>{% trans %}How does karma system work?{% endtrans %}</h2>
+<p>{% trans %}When a question or answer is upvoted, the user who posted them will gain some points, which are called \"karma points\". These points serve as a rough measure of the community trust to him/her. Various moderation tasks are gradually assigned to the users based on those points.{% endtrans %}</p>
<p>{% trans MAX_REP_GAIN_PER_USER_PER_DAY=settings.MAX_REP_GAIN_PER_USER_PER_DAY, REP_GAIN_FOR_RECEIVING_UPVOTE=settings.REP_GAIN_FOR_RECEIVING_UPVOTE, REP_LOSS_FOR_RECEIVING_DOWNVOTE=settings.REP_LOSS_FOR_RECEIVING_DOWNVOTE|absolute_value %}For example, if you ask an interesting question or give a helpful answer, your input will be upvoted. On the other hand if the answer is misleading - it will be downvoted. Each vote in favor will generate <strong>{{REP_GAIN_FOR_RECEIVING_UPVOTE}}</strong> points, each vote against will subtract <strong>{{REP_LOSS_FOR_RECEIVING_DOWNVOTE}}</strong> points. There is a limit of <strong>{{MAX_REP_GAIN_PER_USER_PER_DAY}}</strong> points that can be accumulated for a question or answer per day. The table below explains reputation point requirements for each type of moderation task.{% endtrans %}
</p>
@@ -31,12 +31,6 @@
<td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_VOTE_UP}}</strong></td>
<td>{% trans %}upvote{% endtrans %}</td>
</tr>
- <!--
- <tr>
- <td class="faq-rep-item"><strong>15</strong></td>
- <td>{% trans %}use tags{% endtrans %}</td>
- </tr>
- -->
<tr>
<td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_LEAVE_COMMENTS}}</strong></td>
<td>{% trans %}add comments{% endtrans %}</td>
@@ -64,17 +58,18 @@
{% endif %}
<tr>
<td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_EDIT_OTHERS_POSTS}}</strong></td>
- <td>{% trans %}"edit any answer{% endtrans %}</td>
+ <td>{% trans %}edit any answer{% endtrans %}</td>
</tr>
<tr>
<td class="faq-rep-item"><strong>{{settings.MIN_REP_TO_DELETE_OTHERS_COMMENTS}}</strong></td>
- <td>{% trans %}"delete any comment{% endtrans %}</td>
+ <td>{% trans %}delete any comment{% endtrans %}</td>
</tr>
</table>
-<a id='gravatar'></a><h2>{% trans %}what is gravatar{% endtrans %}</h2>
-{% trans %}gravatar faq info{% endtrans %}
+<a id='gravatar'></a>
+<h2>{% trans %}How to change my picture (gravatar) and what is gravatar?{% endtrans %}</h2>
+{% trans %}<p>The picture that appears on the users profiles is called <strong>gravatar</strong> (which means <strong>g</strong>lobally <strong>r</strong>ecognized <strong>avatar</strong>).</p><p>Here is how it works: a <strong>cryptographic key</strong> (unbreakable code) is calculated from your email address. You upload your picture (or your favorite alter ego image) the website <a href='http://gravatar.com'><strong>gravatar.com</strong></a> from where we later retreive your image using the key.</p><p>This way all the websites you trust can show your image next to your posts and your email address remains private.</p><p>Please <strong>personalize your account</strong> with an image - just register at <a href='http://gravatar.com'><strong>gravatar.com</strong></a> (just please be sure to use the same email address that you used to register with us). Default image that looks like a kitchen tile is generated automatically.</p>{% endtrans %}
<h2>{% trans %}To register, do I need to create new password?{% endtrans %}</h2>
-<p>{% trans %}No, you don't have to. You can login through any service that supports OpenID, e.g. Google, Yahoo, AOL, etc."{% endtrans %}
+<p>{% trans %}No, you don't have to. You can login through any service that supports OpenID, e.g. Google, Yahoo, AOL, etc.{% endtrans %}
<strong><a href="{{ settings.LOGIN_URL }}">{% trans %}"Login now!"{% endtrans %}</a> »</strong>
</p>
<h2>{% trans %}Why other people can edit my questions/answers?{% endtrans %}</h2>
@@ -82,7 +77,7 @@
{% trans %}If this approach is not for you, we respect your choice.{% endtrans %}
</p>
<h2>{% trans %}Still have questions?{% endtrans %}</h2>
-<p>{% trans %}Please ask your question at {{ask_question_url}}, help make our community better!{% endtrans %}
+<p>{% trans %}Please <a href='{{ask_question_url}}'>ask</a> your question, help make our community better!{% endtrans %}
</p>
</div>
<script type="text/javascript">
diff --git a/askbot/skins/default/templates/feedback.html b/askbot/skins/default/templates/feedback.html
index 85b5d00a..04b9a5b4 100644
--- a/askbot/skins/default/templates/feedback.html
+++ b/askbot/skins/default/templates/feedback.html
@@ -11,7 +11,7 @@
<form method="post" action="{% url feedback %}" accept-charset="utf-8">{% csrf_token %}
{% if user.is_authenticated() %}
<p class="message">
- {% trans user_name=user.username %}
+ {% trans user_name=user.username|escape %}
<span class='big strong'>Dear {{user_name}}</span>, we look forward to hearing your feedback.
Please type and send us your message below.
{% endtrans %}
diff --git a/askbot/skins/default/templates/groups.html b/askbot/skins/default/templates/groups.html
new file mode 100644
index 00000000..2499ac9f
--- /dev/null
+++ b/askbot/skins/default/templates/groups.html
@@ -0,0 +1,48 @@
+{% import "macros.html" as macros %}
+{% extends 'two_column_body.html' %}
+{% block title %}{% trans %}Groups{% endtrans %}{% endblock %}
+{% block content %}
+ <div id="content-header">
+ <h1 class="section-title">{% trans %}Groups{% endtrans %}</h1>
+ {% if request.user.is_authenticated() %}
+ <div class="tabBar">
+ <div class="tabsC">
+ <a id="all-groups" class="first{% if tab_name=="all-groups" %} on{% endif %}"
+ title="{% trans %}All groups{% endtrans %}"
+ href="{% url groups %}?sort=all-groups"
+ ><span>{% trans %}all groups{% endtrans %}</span></a>
+ <a id="my-groups" {% if tab_name=="my-groups" %}class="on"{% endif %}
+ title="{% trans %}My groups{% endtrans %}"
+ href="{% url groups %}?sort=my-groups"
+ ><span>{% trans %}my groups{% endtrans %}</span></a>
+ </div>
+ </div>
+ {% endif %}
+ <div class="clearfix"></div>
+ </div>
+ {% if user_can_add_groups %}
+ <p id="group-add-tip">
+ {% trans %}Tip: to create a new group - please go to some user profile and add the new group there. That user will be the first member of the group{% endtrans %}
+ </p>
+ {% endif %}
+ <table id="groups-list">
+ {% for group in groups %}
+ <tr>
+ {{ macros.user_group(group, groups_membership_info[group.id]) }}
+ </tr>
+ {% endfor %}
+ </table>
+{% endblock %}
+{% block endjs %}
+ <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
+ <script src='{{"/js/post.js"|media}}' type='text/javascript'></script>
+ {% if request.user.is_authenticated() %}
+ <script type="text/javascript">
+ askbot['urls']['join_or_leave_group'] = '{% url join_or_leave_group %}';
+ $.each($('.group-join-btn'), function(idx, elem){
+ var group_join_btn = new GroupJoinButton();
+ group_join_btn.decorate($(elem));
+ });
+ </script>
+ {% endif %}
+{% endblock %}
diff --git a/askbot/skins/default/templates/help.html b/askbot/skins/default/templates/help.html
new file mode 100644
index 00000000..204fc086
--- /dev/null
+++ b/askbot/skins/default/templates/help.html
@@ -0,0 +1,33 @@
+{% extends "two_column_body.html" %}
+{% block title %}{% trans %}Help{% endtrans %}{% endblock %}
+{% block content %}
+<h1 class='section-title'>{% trans %}Help{% endtrans %}</h1>
+<p>
+ {% if request.user.is_authenticated() %}
+ {% trans username = request.user.username|escape %}Welcome {{username}},{% endtrans %}
+ {% else %}
+ {% trans %}Welcome,{% endtrans %}
+ {% endif %}
+</p>
+<p>
+ {% trans %}Thank you for using {{app_name}}, here is how it works.{% endtrans %}
+</p>
+<p>
+ {% trans %}This site is for asking and answering questions, not for open-ended discussions.{% endtrans %}
+ {% trans %}We encourage everyone to use “question†space for asking and “answer†for answering.{% endtrans %}
+</p>
+<p>
+ {% trans %}Despite that, each question and answer can be commented –
+ the comments are good for the limited discussions.{% endtrans %}
+</p>
+<p>
+ {% trans %}Voting in {{app_name}} helps to select best answers and thank most helpful users.{% endtrans %}
+</p>
+ {% trans %}Please vote when you find helpful information,
+ it really helps the {{app_name}} community.{% endtrans %}
+
+ {% trans %}Besides, you can @mention users anywhere in the text to point their attention,
+ follow users and conversations and report inappropriate content by flagging it.{% endtrans %}
+</p>
+<p>{% trans %}Enjoy.{% endtrans %}</p>
+{% endblock %}
diff --git a/askbot/skins/default/templates/instant_notification.html b/askbot/skins/default/templates/instant_notification.html
index 92799a96..cd6e5427 100644
--- a/askbot/skins/default/templates/instant_notification.html
+++ b/askbot/skins/default/templates/instant_notification.html
@@ -1,41 +1,6 @@
-{% trans %}<p>Dear {{receiving_user_name}},</p>{% endtrans %}
- {% if update_type == 'question_comment' %}
+{{ reply_separator }}
+<div>{{ content_preview }}</div>
{% trans %}
-<p>{{update_author_name}} left a <a href="{{post_url}}">new comment</a>:</p>
-{% endtrans %}
- {% endif %}
- {% if update_type == 'answer_comment' %}
-{% trans %}
-<p>{{update_author_name}} left a <a href="{{post_url}}">new comment</a></p>
-{% endtrans %}
- {% endif %}
- {% if update_type == 'new_answer' %}
-{% trans %}
-<p>{{update_author_name}} answered a question
-<a href="{{post_url}}">{{origin_post_title}}</a></p>
-{% endtrans %}
- {% endif %}
- {% if update_type == 'new_question' %}
-{% trans %}
-<p>{{update_author_name}} posted a new question
-<a href="{{post_url}}">{{origin_post_title}}</a></p>
-{% endtrans %}
- {% endif %}
- {%if update_type == 'answer_update' %}
-{% trans %}
-<p>{{update_author_name}} updated an answer to the question
-<a href="{{post_url}}">{{origin_post_title}}</a></p>
-{% endtrans %}
- {% endif %}
- {% if update_type == 'question_update' %}
-{% trans %}
-<p>{{update_author_name}} updated a question
-<a href="{{post_url}}">{{origin_post_title}}</a></p>
-{% endtrans %}
- {% endif %}
-<p></p>
-{% trans %}
-<div>{{content_preview}}</div>
<p>Please note - you can easily <a href="{{user_subscriptions_url}}">change</a>
how often you receive these notifications or unsubscribe. Thank you for your interest in our forum!</p>
{% endtrans %}
diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html
index 582980f4..261c860f 100644
--- a/askbot/skins/default/templates/macros.html
+++ b/askbot/skins/default/templates/macros.html
@@ -1,36 +1,38 @@
+{% load extra_filters_jinja %}
+
{%- macro share(site = None, site_label = None, icon = False) -%}
<a class="{{ site }}-share{% if icon == True %} icon{% endif %}"
title="{% trans %}Share this question on {{site}}{% endtrans %}"
>{% if icon == False %}{% if site_label %}{{ site_label }}{% else %}{{ site }}{% endif %}{% endif %}</a>
{%- endmacro -%}
-{%- macro follow_toggle(follow, name, alias, id) -%}
- {# follow - boolean; name - object type name; alias - e.g. users name; id - object id #}
- <div
- class="follow-toggle"
- id="follow-{{ name }}-{{ id }}"
- >
- {% if follow %}
- <div class="follow">{% trans %}follow {{alias}}{% endtrans %}</div>
- {% else %}
- <div class="unfollow">
- <div class="unfollow-red">{% trans %}unfollow {{alias}}{% endtrans %}</div>
- <div class="unfollow-green">{% trans %}following {{alias}}{% endtrans %}</div>
- </div>
- {% endif %}
+{%- macro inbox_post_snippet(response, inbox_section) -%}
+<div id="re_{{response.id}}" class="re{% if response.is_new %} new highlight{% else %} seen{% endif %}">
+ <input type="checkbox" />
+ <div class="face">
+ {{ gravatar(response.user, 48) }}
</div>
+ <a style="font-size:12px" href="{{ response.user.get_absolute_url() }}">{{ response.user.username|escape }}</a>
+ <a style="text-decoration:none;" href="{{ response.response_url }}">
+ {{ response.response_type }}
+ ({{ timeago(response.timestamp) }}):<br/>
+ {% if inbox_section != 'flags' %}
+ {{ response.response_snippet|escape }}
+ {% endif %}
+ </a>
+ {% if inbox_section == 'flags' %}
+ <a class="re_expand" href="{{ response.response_url }}">
+ <!--div class="re_snippet">{{ response.response_snippet|escape }}</div-->
+ <div class="re_content">{{ response.response_content|escape }}</div>
+ </a>
+ {% endif %}
+</div>
{%- endmacro -%}
-{%- macro post_vote_buttons(post = None, visitor_vote = None) -%}
-<div
- id="{{post.post_type}}-img-upvote-{{ post.id }}"
- class="{{post.post_type}}-img-upvote post-vote{% if visitor_vote == 1 %} on{% endif %}"
- {% if post.post_type == 'question' %}
- title="{% trans %}i like this question (click again to cancel){% endtrans %}"
- {% else %}
- title="{% trans %}i like this answer (click again to cancel){% endtrans %}"
- {% endif %}
-/></div>
+{%- macro post_vote_buttons(post = None) -%}
+<div id="{{post.post_type}}-img-upvote-{{ post.id }}"
+ class="{{post.post_type}}-img-upvote post-vote">
+</div>
<div
id="{{post.post_type}}-vote-number-{{ post.id }}"
class="vote-number"
@@ -38,28 +40,44 @@
>{{ post.score }}</div>
<div
id="{{post.post_type}}-img-downvote-{{ post.id }}"
- class="{{post.post_type}}-img-downvote post-vote{% if visitor_vote == -1 %} on{% endif %}"
- {% if post.post_type == 'question' %}
- title="{% trans %}i dont like this question (click again to cancel){% endtrans %}"
- {% else %}
- title="{% trans %}i dont like this answer (click again to cancel){% endtrans %}"
- {% endif %}
-/></div>
+ class="{{post.post_type}}-img-downvote post-vote">
+</div>
+<script type="text/javascript">
+ askbot['functions']['renderPostVoteButtons']('{{post.post_type}}', '{{post.id}}');
+</script>
{%- endmacro -%}
-{%- macro post_contributor_avatar_and_credentials(post, user) -%}
+{%- macro post_contributor_avatar_and_credentials(post, user, karma_mode = None, badges_mode = None) -%}
{% if post.is_anonymous %}
<img alt="{% trans %}anonymous user{% endtrans %}" src="{{ '/images/anon.png'|media }} " class="gravatar" width="32" height="32" />
<p>{{ user.get_anonymous_name() }}</p>
{% else %}
{{ gravatar(user, 32) }}
{{ user.get_profile_link()}}{{ user_country_flag(user) }}<br/>
- {{ user_score_and_badge_summary(user) }}<br/>
+ {{ user_score_and_badge_summary(user, karma_mode = karma_mode, badges_mode = badges_mode) }}<br/>
{{ user_website_link(user) }}
{% endif %}
{%- endmacro -%}
-{%- macro post_contributor_info(post, contributor_type, is_wiki, wiki_min_rep) -%}
+{%- macro post_last_updater_and_creator_info(
+ post, min_rep_to_edit_wiki, karma_mode = None, badges_mode = None
+ ) -%}
+ {{ post_contributor_info(
+ post, "original_author", post.wiki, min_rep_to_edit_wiki,
+ karma_mode = karma_mode, badges_mode = badges_mode
+ )
+ }}
+ {{ post_contributor_info(
+ post, "last_updater", post.wiki, min_rep_to_edit_wiki,
+ karma_mode = karma_mode, badges_mode = badges_mode
+ )
+ }}
+{%- endmacro -%}
+
+{%- macro post_contributor_info(
+ post, contributor_type, is_wiki, wiki_min_rep,
+ karma_mode = None, badges_mode = None
+ ) -%}
{# there is a whole bunch of trickery here, probably indicative of
poor design of the data or methods on data objects #}
{% if contributor_type=="original_author" %}
@@ -73,7 +91,7 @@ poor design of the data or methods on data objects #}
{% else %}
{%- trans %}posted{% endtrans %}
{% endif %}
- <strong>{{post.added_at|diff_date}}</strong>
+ <strong>{{ timeago(post.added_at) }}</strong>
</p>
<img width="35" height="35"
src="{{'/images/wiki.png'|media}}"
@@ -93,12 +111,14 @@ poor design of the data or methods on data objects #}
{% trans %}posted{% endtrans %}
{% endif %}
{% if post.__class__.__name__ == 'PostRevision' %}
- <strong>{{post.revised_at|diff_date}}</strong>
+ <strong>{{ timeago(post.revised_at) }}</strong>
{% else %}
- <strong>{{post.added_at|diff_date}}</strong>
+ <strong>{{ timeago(post.added_at) }}</strong>
{% endif %}
</p>
- {{ post_contributor_avatar_and_credentials(post, post.author) }}
+ {{ post_contributor_avatar_and_credentials(
+ post, post.author, karma_mode = karma_mode, badges_mode = badges_mode
+ ) }}
{% endif %}
</div>
{% elif contributor_type=="last_updater" %}
@@ -120,35 +140,21 @@ poor design of the data or methods on data objects #}
{% else %}
href="{% url answer_revisions post.id %}"
{% endif %}
- >{% trans %}updated{% endtrans %} <strong>{{ last_edited_at|diff_date }}</strong></a>
+ >{% trans %}updated{% endtrans %} <strong>{{ timeago(last_edited_at) }}</strong></a>
</p>
{% if original_author != update_author or is_wiki %}
- {{ post_contributor_avatar_and_credentials(post, update_author) }}
+ {{
+ post_contributor_avatar_and_credentials(
+ post, update_author,
+ karma_mode = karma_mode, badges_mode = badges_mode
+ )
+ }}
{% endif %}
</div>
{% endif %}
{% endif %}
{%- endmacro -%}
-{%- macro post_last_updater_and_creator_info(post, min_rep_to_edit_wiki) -%}
- {{
- post_contributor_info(
- post,
- "original_author",
- post.wiki,
- min_rep_to_edit_wiki
- )
- }}
- {{
- post_contributor_info(
- post,
- "last_updater",
- post.wiki,
- min_rep_to_edit_wiki,
- )
- }}
-{%- endmacro -%}
-
{%- macro if_else(condition, if_true, if_false) -%}
{%- if condition == True -%}
{{if_true}}
@@ -157,10 +163,14 @@ poor design of the data or methods on data objects #}
{%- endif -%}
{%- endmacro -%}
-{%- macro tag_cloud(tags = None, font_sizes = None) -%}
+{%- macro tag_cloud(tags = None, font_sizes = None, search_state = None) -%}
{% for tag in tags %}
<span class="tag-size-{{ font_sizes[tag.name] }}">
- <a class="link-typeA" title="Number of entries: {{ tag.used_count }}" href="{% url questions %}?tags={{ tag.name }}">{{ tag.name }}</a>
+ <a
+ class="link-typeA"
+ title="Number of entries: {{ tag.used_count }}"
+ href="{{ search_state.add_tag(tag.name).full_url() }}"
+ >{{ tag.name }}</a>
</span>
{% endfor %}
{%- endmacro -%}
@@ -170,10 +180,11 @@ poor design of the data or methods on data objects #}
id = None,
deletable = False,
make_links = True,
- url_params = None,
+ search_state = None,
css_class = None,
tag_css_class = None,
- tag_html_tag = 'li'
+ tag_html_tag = 'li',
+ truncate_long_tags = False
)
-%}
<ul {% if id %}id="{{ id }}"{% endif %}
@@ -186,14 +197,61 @@ poor design of the data or methods on data objects #}
css_class = tag_css_class,
deletable = deletable,
is_link = make_links,
- url_params = url_params,
- html_tag = tag_html_tag
+ search_state = search_state,
+ html_tag = tag_html_tag,
+ truncate_long_tag = False
)}}
{% endfor %}
{% endif %}
</ul>
{%- endmacro -%}
+{%- macro user_group(group, membership_info) -%}
+ <td>
+ <a class="group-name"
+ href="{% url users_by_group group.id, group.name|replace('-', ' ')|slugify %}"
+ >{{ group.name|escape }}</a>
+ </td>
+ <td>
+ <span class="group-description">
+ {% if group.tag_wiki %}
+ {{ group.tag_wiki.summary }}
+ {% endif %}
+ </span>
+ </td>
+ <td>
+ {% if membership_info %}
+ {{ group_join_button(
+ group_id = group.id,
+ can_join = membership_info['can_join'],
+ is_member = membership_info['is_member']
+ )
+ }}
+ {% endif %}
+ </td>
+{%- endmacro -%}
+
+{%- macro group_join_button(group_id = None, can_join = False, is_member = False) -%}
+ {% if can_join or is_member %}
+ <button
+ class="group-join-btn follow-toggle {% if is_member %}on on-state{% endif %}"
+ data-group-id="{{group_id}}"
+ data-off-prompt-text="{% trans %}Leave this group{% endtrans %}"
+ data-on-prompt-text="{% trans %}Join this group{% endtrans %}"
+ data-on-state-text="{% trans %}You are a member{% endtrans %}"
+ data-off-state-text="{% trans %}Join this group{% endtrans %}"
+ >
+ {% if is_member %}
+ {% trans %}You are a member{% endtrans %}
+ {% else %}
+ {% if can_join %}
+ {% trans %}Join this group{% endtrans %}
+ {% endif %}
+ {% endif %}
+ </button>
+ {% endif %}
+{%- endmacro -%}
+
{# todo: remove the extra content argument to make its usage more explicit #}
{%- macro tag_widget(
tag,
@@ -201,37 +259,40 @@ poor design of the data or methods on data objects #}
is_link = True,
delete_link_title = None,
css_class = None,
- url_params = None,
+ search_state = None,
html_tag = 'div',
- extra_content = ''
+ extra_content = '',
+ truncate_long_tag = False
)
-%}
- {% spaceless %}
+ {% if not search_state %} {# get empty SearchState() if there's none; CAUTION: for some reason this doesn't work inside `spaceless` tag below! #}
+ {% set search_state=search_state|get_empty_search_state %}
+ {% endif %}
+ {% spaceless %}
<{{ html_tag }} class="tag-left{% if deletable %} deletable-tag{% endif %}">
<{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}
class="tag tag-right{% if css_class %} {{ css_class }}{% endif %}"
{% if is_link %}
- href="{% url questions %}?tags={{tag|urlencode}}{{
- if_else(
- url_params != None,
- '&' ~ url_params,
- ''
- )|escape
- }}"
- title="{% trans %}see questions tagged '{{ tag }}'{% endtrans %}"
+ href="{{ search_state.add_tag(tag).full_url() }}"
+ title="{% trans tag=tag|escape %}see questions tagged '{{ tag }}'{% endtrans %}"
{% endif %}
rel="tag"
- >{{ tag|replace('*', '&#10045;')|truncate(20,True)}}</{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}>
+ data-tag-name="{{ tag|replace('*', '&#10045;')|escape }}"
+ >{% if truncate_long_tag -%}
+ {{ tag|replace('*', '&#10045;')|truncate(17, True)|escape }}
+ {%- else -%}
+ {{ tag|replace('*', '&#10045;')|escape }}
+ {%- endif %}</{% if not is_link or tag[-1] == '*' %}span{% else %}a{% endif %}>
{% if deletable %}
- <span class="delete-icon"
+ <div class="delete-icon"
{% if delete_link_title %}
title="{{ delete_link_title }}"
{% endif %}
- ></span>
+ >x</div>
{% endif %}
</{{ html_tag }}>
{{ extra_content }}
- {% endspaceless %}
+ {% endspaceless %}
{%- endmacro -%}
{%- macro radio_select(name = None, value = None, choices = None) -%}
@@ -252,68 +313,29 @@ poor design of the data or methods on data objects #}
{% endfor %}
{%- endmacro -%}
-{%- macro question_summary(question, extra_class=None) -%}
+{%- macro question_summary(thread, question, extra_class=None, search_state=None) -%}
{%include "widgets/question_summary.html" %}
{%- endmacro -%}
-{%- macro comment_votes(comment = None) -%}
- <div class="comment-votes">
- {% if comment.score > 0 %}
- <div class="upvote{% if comment.upvoted_by_user %} upvoted{% endif %}">{{comment.score}}</div>
- {% else %}
- <div class="upvote"></div>
- {% endif %}
- </div>
-{%- endmacro -%}
-
{# Warning! Any changes to the comment markup here must be duplicated in post.js
for the purposes of the AJAX comment editor #}
-{%- macro comment_list(comments = None, user = None) -%}
- {% for comment in comments %}
- <div class="comment" id="comment-{{comment.id}}">
- {{ comment_votes(comment = comment) }}
- <div class="comment-delete">
- {% if user|can_delete_comment(comment) %}
- <span class="delete-icon" title="{% trans %}delete this comment{% endtrans %}"></span>
- {% endif %}
- </div>
- <div class="comment-body">
- {{comment.html}}
- <a
- class="author"
- href="{{comment.user.get_profile_url()}}"
- >{{comment.user.username}}</a>
- <span class="age">&nbsp;({{comment.added_at|diff_date}})</span>
- {% if user|can_edit_comment(comment) %}
- <a class="edit">{% trans %}edit{% endtrans %}</a>
- {% endif %}
- </div>
- </div>
- {% endfor %}
-{%- endmacro -%}
-
-{%- macro add_or_show_comments_button(post = None, can_post = None, max_comments = None, widget_id = None) -%}
+{%- macro add_or_show_comments_button(post = None, max_comments = None, widget_id = None) -%}
+ {% if post.comment_count > max_comments %}
+ {% set remaining_comment_count = post.comment_count - max_comments %}
+ {% else %}
+ {% set remaining_comment_count = 0 %}
+ {% endif %}
+ <a id="add-comment-to-post-{{post.id}}" class="button"></a>
<script type="text/javascript">
askbot['data']['{{widget_id}}'] = {
- can_post: {% if can_post %}true{% else %}false{% endif %},
truncated: {% if post.comment_count > max_comments %}true{% else %}false{% endif %}
};
+ askbot['functions']['renderAddCommentButton'](
+ '{{post.id}}',
+ {{remaining_comment_count}}
+ );
</script>
- {% if post.comment_count > max_comments %}
- {% set remaining_comments = post.comment_count - max_comments %}
- <a class="button">
- {% if can_post %}
- {% trans %}add comment{% endtrans %} /
- {% trans counter=remaining_comments %}see <strong>{{counter}}</strong> more{% pluralize %}see <strong>{{counter}}</strong> more{% endtrans %}
- {% else %}
- {% trans counter=remaining_comments %}see <strong>{{counter}}</strong> more comment{% pluralize %}see <strong>{{counter}}</strong> more comments
- {% endtrans %}
- {% endif %}
- </a>
- {% elif can_post %}
- <a class="button">{% trans %}add comment{% endtrans %}</a>
- {% endif %}
{%- endmacro -%}
{%- macro post_comments_widget(
@@ -328,31 +350,58 @@ for the purposes of the AJAX comment editor #}
{% spaceless %}
{% if post.comment_count > 0 %}
<h2 id="comment-title">Comments</h2>
+ <div class="clean"></div>
{% endif %}
{% set widget_id = 'comments-for-' + post.post_type + '-' + post.id|string %}
<div class="comments" id="{{widget_id}}">
<div class="content">
- {% if show_post == post and show_comment %}
- {% if show_comment_position > max_comments %}
- {% set comments = post.get_comments(visitor = user)[:show_comment_position] %}
- {{ comment_list(comments = comments, user = user) }}
- {% else %}
- {% set comments = post.get_comments(visitor = user)[:max_comments] %}
- {{ comment_list(comments = comments, user = user) }}
- {% endif %}
+ {% if show_post == post and show_comment and show_comment_position > max_comments %}
+ {% set comments = post.get_cached_comments()[:show_comment_position] %}
{% else %}
- {% set comments = post.get_comments(visitor = user)[:max_comments] %}
- {{ comment_list(comments = comments, user = user) }}
+ {% set comments = post.get_cached_comments()[:max_comments] %}
{% endif %}
+ {% for comment in comments %}
+ {# Warning! Any changes to the comment markup IN THIS `FOR` LOOP must be duplicated in post.js
+ for the purposes of the AJAX comment editor #}
+ <div class="comment" id="comment-{{comment.id}}">
+ <div class="comment-votes">
+ {% if comment.score > 0 %}
+ <div
+ id="comment-img-upvote-{{comment.id}}"
+ class="upvote"
+ >{{comment.score}}</div>
+ <script type="text/javascript">
+ askbot['functions']['renderPostVoteButtons']('comment', '{{comment.id}}');
+ </script>
+ {% else %}
+ <div class="upvote"></div>
+ {% endif %}
+ </div>
+ <div
+ id="post-{{comment.id}}-delete"
+ class="comment-delete"
+ >
+ <span class="delete-icon" title="{% trans %}delete this comment{% endtrans %}"></span>
+ </div>
+ <div class="comment-body">
+ {{comment.html}}
+ <a class="author" href="{{comment.author.get_profile_url()}}">{{comment.author.username|escape}}</a>
+ <span class="age">&nbsp;({{ timeago(comment.added_at) }})</span>
+ <a id="post-{{comment.id}}-edit"
+ class="edit">{% trans %}edit{% endtrans %}</a>
+ </div>
+ </div>
+ <script type="text/javascript">
+ askbot['functions']['renderPostControls']('{{comment.id}}');
+ </script>
+ {% endfor %}
</div>
<div class="controls">
- {% set can_post = user|can_post_comment(post) %}
{% if show_post == post and show_comment %}
{% if show_comment_position > max_comments %}
{{
add_or_show_comments_button(
post = post,
- can_post = can_post,
max_comments = show_comment_position,
widget_id = widget_id
)
@@ -361,7 +410,6 @@ for the purposes of the AJAX comment editor #}
{{
add_or_show_comments_button(
post = post,
- can_post = can_post,
max_comments = max_comments,
widget_id = widget_id
)
@@ -371,7 +419,6 @@ for the purposes of the AJAX comment editor #}
{{
add_or_show_comments_button(
post = post,
- can_post = can_post,
max_comments = max_comments,
widget_id = widget_id
)
@@ -383,7 +430,7 @@ for the purposes of the AJAX comment editor #}
{%- endmacro -%}
{%- macro reversible_sort_button(button_sort_criterium=None, asc_tooltip=None,
- desc_tooltip=None, label=None, current_sort_method=None) -%}
+ desc_tooltip=None, label=None, current_sort_method=None, search_state=None) -%}
{#
sort button where descending sort is default
and the search method is togglable between ascending and descending
@@ -393,22 +440,21 @@ for the purposes of the AJAX comment editor #}
button_sort_criterium + "asc" or "desc"
#}
{% set key_name = button_sort_criterium %}
- {% set sort = current_sort_method %}
- {% if sort == key_name + "-asc" %}{# "worst" first #}
- <a id="by_{{key_name}}"
- href="?sort={{key_name}}-desc"
- class="rev on"
- title="{{desc_tooltip}}"><span>{{label}} &#9650;</span></a>
- {% elif sort == key_name + "-desc" %}{# "best first" #}
- <a id="by_{{key_name}}"
- href="?sort={{key_name}}-asc"
- class="rev on"
- title="{{asc_tooltip}}"><span>{{label}} &#9660;</span></a>
+ {% if current_sort_method == key_name + "-asc" %}{# "worst" first #}
+ <a id="by_{{key_name}}"
+ href="{{ search_state.change_sort(key_name+"-desc").full_url() }}"
+ class="rev on"
+ title="{{desc_tooltip}}"><span>{{label}} &#9650;</span></a>
+ {% elif current_sort_method == key_name + "-desc" %}{# "best first" #}
+ <a id="by_{{key_name}}"
+ href="{{ search_state.change_sort(key_name+"-asc").full_url() }}"
+ class="rev on"
+ title="{{asc_tooltip}}"><span>{{label}} &#9660;</span></a>
{% else %}{# default, when other button is active #}
- <a id="by_{{key_name}}"
- href="?sort={{key_name}}-desc"
- class="off"
- title="{{desc_tooltip}}"><span>{{label}}</span></a>
+ <a id="by_{{key_name}}"
+ href="{{ search_state.change_sort(key_name+"-desc").full_url() }}"
+ class="off"
+ title="{{desc_tooltip}}"><span>{{label}}</span></a>
{% endif %}
<script type="text/javascript">{# need to pass on text translations to js #}
var sortButtonData = sortButtonData || {};
@@ -453,18 +499,22 @@ for the purposes of the AJAX comment editor #}
{%- endmacro -%}
{%- macro answer_classes(answer, question) -%}
-answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id==question.author_id %} answered-by-owner{% endif %} {% if answer.deleted %}deleted{% endif -%}
+answer {% if answer.accepted() %}accepted-answer{% endif %} {% if answer.author_id==question.author_id %} answered-by-owner{% endif %} {% if answer.deleted %}deleted{% endif -%}
{%- endmacro -%}
-{%- macro user_score_and_badge_summary(user) -%}
+{%- macro user_score_and_badge_summary(
+ user,
+ karma_mode = None,
+ badges_mode = None
+) -%}
{%include "widgets/user_score_and_badge_summary.html"%}
{%- endmacro -%}
{%- macro follow_toggle(follow, name, alias, id) -%}
{# follow - boolean; name - object type name; alias - e.g. users name; id - object id #}
<div
- class="follow-toggle"
- id="follow-{{ name }}-{{ id }}"
+ class="follow-toggle follow-user-toggle"
+ id="follow-{{ name|escape }}-{{ id }}"
>
{% if follow %}
<div class="follow">{% trans %}follow {{alias}}{% endtrans %}</div>
@@ -479,20 +529,20 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
{%- macro follow_user_toggle(visitor = None, subject = None) -%}
{% if visitor.is_anonymous() %}
- {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+ {{ follow_toggle(True, 'user', subject.username|escape, subject.id) }}
{% else %}
{% if visitor != subject %}
{% if visitor.is_following(subject) %}
- {{ follow_toggle(False, 'user', subject.username, subject.id) }}
+ {{ follow_toggle(False, 'user', subject.username|escape, subject.id) }}
{% else %}
- {{ follow_toggle(True, 'user', subject.username, subject.id) }}
+ {{ follow_toggle(True, 'user', subject.username|escape, subject.id) }}
{% endif %}
{% endif %}
{% endif %}
{%- endmacro -%}
-{%- macro user_long_score_and_badge_summary(user) -%}
- {% include "widgets/user_long_score_and_badge_summary.html" %}
+{%- macro user_long_score_and_badge_summary(user, badges_mode = None) -%}
+ {%- include "widgets/user_long_score_and_badge_summary.html" -%}
{%- endmacro -%}
{%- macro user_country_flag(user) -%}
@@ -505,7 +555,7 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
endtrans %}"
title="{% trans
country=user.country.name,
- person=user.username %}{{person}} is from {{country}}{%
+ person=user.username|escape %}{{person}} is from {{country}}{%
endtrans %}"
/>
{% endif %}
@@ -525,7 +575,10 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
{{ user_country_name_and_flag(user) }}
{%- endmacro -%}
-{%- macro user_list(users, profile_section = None) -%}
+{%- macro user_list(
+ users, profile_section = None, karma_mode = None, badges_mode = None
+ )
+-%}
{% include "widgets/user_list.html"%}
{%- endmacro -%}
@@ -537,14 +590,14 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
><img class="gravatar"
width="{{size}}" height="{{size}}"
src="{{ user.get_avatar_url(size) }}"
- title="{{user.username}}"
- alt="{% trans username=user.username %}{{username}} gravatar image{% endtrans %}"
+ title="{{user.username|escape}}"
+ alt="{% trans username=user.username|escape %}{{username}} gravatar image{% endtrans %}"
/></a>
{% endspaceless %}
{%- endmacro -%}
{%- macro user_website_link(user, max_display_length=25) -%}
- {% if user.website %}
+ {% if user.website and (not user.is_blocked()) %}
<a
href="{{user.website}}"
title="{% trans username=user.username|escape, url=user.website %}{{username}}'s website is {{url}}{% endtrans %}"
@@ -557,17 +610,17 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
{% endif %}
{%- endmacro -%}
-{%- macro paginator(p, position='left') -%}{# p is paginator context dictionary #}
+{%- macro paginator(p, position='left', anchor='') -%}{# p is paginator context dictionary #}
{% spaceless %}
{% if p.is_paginated %}
<div class="paginator" style="float:{{position}}">
{% if p.has_previous %}
- <span class="prev"><a href="{{p.base_url}}page={{ p.previous }}{{ p.extend_url }}" title="{% trans %}previous{% endtrans %}">
+ <span class="prev"><a href="{{p.base_url}}page={{ p.previous }}{{ anchor }}" title="{% trans %}previous{% endtrans %}">
&laquo; {% trans %}previous{% endtrans %}</a></span>
{% endif %}
{% if not p.in_leading_range %}
{% for num in p.pages_outside_trailing_range %}
- <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" >{{ num }}</a></span>
+ <span class="page"><a href="{{p.base_url}}page={{ num }}{{ anchor }}" >{{ num }}</a></span>
{% endfor %}
...
{% endif %}
@@ -576,59 +629,72 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
{% if num == p.page and p.pages != 1%}
<span class="curr" title="{% trans %}current page{% endtrans %}">{{ num }}</span>
{% else %}
- <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" title="{% trans %}page number {{num}}{% endtrans %}">{{ num }}</a></span>
+ <span class="page"><a href="{{p.base_url}}page={{ num }}{{ anchor }}" title="{% trans %}page {{num}}{% endtrans %}">{{ num }}</a></span>
{% endif %}
{% endfor %}
{% if not p.in_trailing_range %}
...
{% for num in p.pages_outside_leading_range|reverse %}
- <span class="page"><a href="{{p.base_url}}page={{ num }}{{ p.extend_url }}" title="{% trans %}page number {{ num }}{% endtrans %}">{{ num }}</a></span>
+ <span class="page"><a href="{{p.base_url}}page={{ num }}{{ anchor }}" title="{% trans %}page {{ num }}{% endtrans %}">{{ num }}</a></span>
{% endfor %}
{% endif %}
{% if p.has_next %}
- <span class="next"><a href="{{p.base_url}}page={{ p.next }}{{ p.extend_url }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} &raquo;</a></span>
+ <span class="next"><a href="{{p.base_url}}page={{ p.next }}{{ anchor }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} &raquo;</a></span>
{% endif %}
</div>
{% endif %}
{% endspaceless %}
{%- endmacro -%}
-{%- macro pagesize_switch(p, position='left') -%}{# p is paginator context #}
-{% spaceless %}
-{% if p.is_paginated %}
- <div class="paginator" style="float:{{position}}">
- <span class="text">{% trans %}posts per page{% endtrans %}</span>
- {% if p.page_size == 10 %}
- <span class="curr">10</span>
- {% else %}
- <span class="page"><a href="{{p.base_url}}page_size=10">10</a></span>
- {% endif %}
-
- {% if p.page_size == 30 %}
- <span class="curr">30</span>
- {% else %}
- <span class="page"><a href="{{p.base_url}}page_size=30">30</a></span>
- {% endif %}
-
- {% if p.page_size == 50 %}
- <span class="curr">50</span>
- {% else %}
- <span class="page"><a href="{{p.base_url}}page_size=50">50</a></span>
+
+
+{%- macro paginator_main_page(p, position, search_state) -%} {# p is paginator context dictionary #}
+ {% spaceless %}
+ {% if p.is_paginated %}
+ <div class="paginator" style="float:{{position}}">
+ {% if p.has_previous %}
+ <span class="prev"><a href="{{ search_state.change_page(p.previous).full_url() }}" title="{% trans %}previous{% endtrans %}">
+ &laquo; {% trans %}previous{% endtrans %}</a></span>
+ {% endif %}
+ {% if not p.in_leading_range %}
+ {% for num in p.pages_outside_trailing_range %}
+ <span class="page"><a href="{{ search_state.change_page(num).full_url() }}" >{{ num }}</a></span>
+ {% endfor %}
+ ...
+ {% endif %}
+
+ {% for num in p.page_numbers %}
+ {% if num == p.page and p.pages != 1%}
+ <span class="curr" title="{% trans %}current page{% endtrans %}">{{ num }}</span>
+ {% else %}
+ <span class="page"><a href="{{ search_state.change_page(num).full_url() }}" title="{% trans %}page {{num}}{% endtrans %}">{{ num }}</a></span>
+ {% endif %}
+ {% endfor %}
+
+ {% if not p.in_trailing_range %}
+ ...
+ {% for num in p.pages_outside_leading_range|reverse %}
+ <span class="page"><a href="{{ search_state.change_page(num).full_url() }}" title="{% trans %}page {{ num }}{% endtrans %}">{{ num }}</a></span>
+ {% endfor %}
+ {% endif %}
+ {% if p.has_next %}
+ <span class="next"><a href="{{ search_state.change_page(p.next).full_url() }}" title="{% trans %}next page{% endtrans %}">{% trans %}next page{% endtrans %} &raquo;</a></span>
+ {% endif %}
+ </div>
{% endif %}
- </div>
-{% endif %}
-{% endspaceless %}
+ {% endspaceless %}
{%- endmacro -%}
+
{%- macro inbox_link(user) -%}
{% if user.new_response_count > 0 or user.seen_response_count > 0 %}
<a id='ab-responses' href="{{user.get_absolute_url()}}?sort=inbox&section=forum">
<img
- alt="{% trans username=user.username %}responses for {{username}}{% endtrans %}"
+ alt="{% trans username=user.username|escape %}responses for {{username}}{% endtrans %}"
{% if user.new_response_count > 0 %}
src="{{ "/images/mail-envelope-full.png"|media }}"
- title="{% trans response_count=user.new_response_count %}you have a new response{% pluralize %}you have {{response_count}} new responses{% endtrans %}"
+ title="{% trans response_count=user.new_response_count %}you have {{response_count}} new response{% pluralize %}you have {{response_count}} new responses{% endtrans %}"
{% elif user.seen_response_count > 0 %}
src="{{ "/images/mail-envelope-empty.png"|media }}"
title="{% trans %}no new responses yet{% endtrans %}"
@@ -662,3 +728,9 @@ answer {% if answer.accepted %}accepted-answer{% endif %} {% if answer.author_id
</a>
{% endif %}
{%- endmacro -%}
+
+{%- macro timeago(datetime_object) -%}
+ <abbr class="timeago" title="{{datetime_object.replace(microsecond=0)|add_tz_offset}}">
+ {{datetime_object.replace(microsecond=0)|add_tz_offset}}
+ </abbr>
+{%- endmacro -%}
diff --git a/askbot/skins/default/templates/main_page.html b/askbot/skins/default/templates/main_page.html
index d0cddc68..a0635a7a 100644
--- a/askbot/skins/default/templates/main_page.html
+++ b/askbot/skins/default/templates/main_page.html
@@ -12,7 +12,11 @@
{% block content %}
{% include "main_page/tab_bar.html" %}
{% include "main_page/headline.html" %}
- {% include "main_page/content.html" %}
+ {# ==== BEGIN: main_page/content.html === #}
+ <div id="question-list">
+ {% include "main_page/questions_loop.html" %}
+ </div>
+ {# ==== END: main_page/content.html === #}
{% include "main_page/paginator.html" %}
{% endblock %}
{% block sidebar %}
diff --git a/askbot/skins/default/templates/main_page/headline.html b/askbot/skins/default/templates/main_page/headline.html
index 1d0ade19..cc6f47a5 100644
--- a/askbot/skins/default/templates/main_page/headline.html
+++ b/askbot/skins/default/templates/main_page/headline.html
@@ -14,29 +14,30 @@
search_tags,
id = 'searchTags',
deletable = True,
- make_links = False
+ make_links = False,
+ search_state = search_state
)
}}
</div>
{% endif %}
- {% if author_name or search_tags or query %}
+ {#% if author_name or search_tags or query %}
<p class="search-tips"><b>{% trans %}Search tips:{% endtrans %}</b>
{% if reset_method_count > 1 %}
{% if author_name %}
- <a href="{% url questions %}?reset_author=true">{% trans %}reset author{% endtrans %}</a>
+ <a href="{{ search_state.remove_author().full_url() }}">{% trans %}reset author{% endtrans %}</a>
{% endif %}
{% if search_tags %}{% if author_name and query %}, {% elif author_name %}{% trans %} or {% endtrans %}{% endif %}
- <a href="{% url questions %}?reset_tags=true">{% trans %}reset tags{% endtrans %}</a>
+ <a href="{{ search_state.remove_tags().full_url() }}">{% trans %}reset tags{% endtrans %}</a>
{% endif %}
{% if query %}{% trans %} or {% endtrans %}
- <a href="{% url questions %}?start_over=true">{% trans %}start over{% endtrans %}</a>
+ <a href="{% url questions %}">{% trans %}start over{% endtrans %}</a>
{% endif %}
{% else %}
- <a href="{% url questions %}?start_over=true">{% trans %}start over{% endtrans %}</a>
+ <a href="{% url questions %}">{% trans %}start over{% endtrans %}</a>
{% endif %}
{% trans %} - to expand, or dig in by adding more tags and revising the query.{% endtrans %}
</p>
{% else %}
<p class="search-tips"><b>{% trans %}Search tip:{% endtrans %}</b> {% trans %}add tags and a query to focus your search{% endtrans %}</p>
- {% endif %}
+ {% endif %#}
{% endif %}
diff --git a/askbot/skins/default/templates/main_page/javascript.html b/askbot/skins/default/templates/main_page/javascript.html
index e35113dd..10f8ede2 100644
--- a/askbot/skins/default/templates/main_page/javascript.html
+++ b/askbot/skins/default/templates/main_page/javascript.html
@@ -5,7 +5,7 @@
$(document).ready(function(){
/*var on_tab = '#nav_questions';
$(on_tab).attr('className','on');*/
- liveSearch().init('main_page');
+ liveSearch('{{ search_state.query_string()|escapejs }}');
Hilite.exact = false;
Hilite.elementid = "question-list";
Hilite.debug_referrer = location.href;
@@ -15,36 +15,16 @@
{% endif %}
});
- askbot['data']['questions-titles'] = {};
- function load_question_body(element, question_id){
- var key = 'question-' + question_id;
- if ( askbot['data']['questions-titles'][key] == null){
- $.getJSON('{% url get_question_body %}', function(data){
- askbot['data']['questions-titles'] = data['questions-titles'];
- console.debug(data);
- element.title = askbot['data']['questions-titles'][key];//repeated due to async
- });
- } else {
- element.title = askbot['data']['questions-titles'][key];
- }
- }
-
- askbot['urls']['mark_interesting_tag'] = scriptUrl + '{% url mark_interesting_tag %}';
- askbot['urls']['mark_ignored_tag'] = scriptUrl + '{% url mark_ignored_tag %}';
- askbot['urls']['unmark_tag'] = scriptUrl + '{% url unmark_tag %}';
+ askbot['urls']['mark_interesting_tag'] = '{% url mark_interesting_tag %}';
+ askbot['urls']['mark_ignored_tag'] = '{% url mark_ignored_tag %}';
+ askbot['urls']['mark_subscribed_tag'] = '{% url mark_subscribed_tag %}';
+ askbot['urls']['unmark_tag'] = '{% url unmark_tag %}';
askbot['urls']['set_tag_filter_strategy'] = '{% url "set_tag_filter_strategy" %}';
askbot['urls']['questions'] = '{% url "questions" %}';
- {% if settings.ASKBOT_TRANSLATE_URL %}
- askbot['urls']['question_url_template'] = scriptUrl + '{% trans %}question/{% endtrans %}{{ "{{QuestionID}}/" }}';
- askbot['urls']['user_url_template'] = scriptUrl + '{% trans %}users/{% endtrans %}{{ "{{user_id}}" }}/{{ "{{slug}}" }}/';
- {% else %}
- askbot['urls']['question_url_template'] = scriptUrl + 'question/{{ "{{QuestionID}}/" }}';
- askbot['urls']['user_url_template'] = scriptUrl + 'users/{{ "{{user_id}}" }}/{{ "{{slug}}" }}/';
- {% endif %}
- askbot['messages']['name_of_anonymous_user'] = '{{ name_of_anonymous_user }}';
+ askbot['urls']['question_url_template'] = scriptUrl + '{{'question/'|transurl}}{{ "{{QuestionID}}/" }}';
</script>
<script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
{% if request.user.is_authenticated() %}
<script type='text/javascript' src='{{"/js/tag_selector.js"|media}}'></script>
{% endif %}
-<script type="text/javascript" src="{{"/js/live_search.js"|media}}"></script>
+<script type="text/javascript" src='{{"/js/live_search.js"|media}}'></script>
diff --git a/askbot/skins/default/templates/main_page/nothing_found.html b/askbot/skins/default/templates/main_page/nothing_found.html
index e6d65ea5..1e2c5445 100644
--- a/askbot/skins/default/templates/main_page/nothing_found.html
+++ b/askbot/skins/default/templates/main_page/nothing_found.html
@@ -1,28 +1,28 @@
{# todo: add tips to widen selection #}
<p class="evenMore" style="padding-top:30px;text-align:center;">
-{% if scope == "unanswered" %}
+{% if search_state.scope == "unanswered" %}
{% trans %}There are no unanswered questions here{% endtrans %}
{% endif %}
-{% if scope == "favorite" %}
+{% if search_state.scope == "favorite" %}
{% trans %}No questions here. {% endtrans %}
{% trans %}Please follow some questions or follow some users.{% endtrans %}
{% endif %}
</p>
-{% if query or search_tags or author_name %}
+{% if search_state.query or search_state.tags or search_state.author %}
<p class="evenMore" style="text-align:center">
{% trans %}You can expand your search by {% endtrans %}
{% if reset_method_count > 1 %}
- {% if author_name %}
- <a href="{% url questions %}?reset_author=true">{% trans %}resetting author{% endtrans %}</a>
+ {% if search_state.author %}
+ <a href="{{ search_state.remove_author().full_url() }}">{% trans %}resetting author{% endtrans %}</a>
{% endif %}
- {% if search_tags %}{% if author_name and query %}, {% elif author_name %}{% trans %} or {% endtrans %}{% endif %}
- <a href="{% url questions %}?reset_tags=true">{% trans %}resetting tags{% endtrans %}</a>
+ {% if search_state.tags %}{% if search_state.author and search_state.query %}, {% elif search_state.author %}{% trans %} or {% endtrans %}{% endif %}
+ <a href="{{ search_state.remove_tags().full_url() }}">{% trans %}resetting tags{% endtrans %}</a>
{% endif %}
- {% if query %}{% trans %} or {% endtrans %}
- <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a>
+ {% if search_state.query %}{% trans %} or {% endtrans %}
+ <a href="{% url questions %}">{% trans %}starting over{% endtrans %}</a>
{% endif %}
{% else %}
- <a href="{% url questions %}?start_over=true">{% trans %}starting over{% endtrans %}</a>
+ <a href="{% url questions %}">{% trans %}starting over{% endtrans %}</a>
{% endif %}
</p>
{% endif %}
diff --git a/askbot/skins/default/templates/main_page/paginator.html b/askbot/skins/default/templates/main_page/paginator.html
index b7fd9501..e7dc246a 100644
--- a/askbot/skins/default/templates/main_page/paginator.html
+++ b/askbot/skins/default/templates/main_page/paginator.html
@@ -1,8 +1,7 @@
{% import "macros.html" as macros %}
-{% if questions_count > 10 %}{# todo: remove magic number #}
+{% if questions_count > page_size %}
<div id="pager" class="pager">
- {{ macros.paginator(context|setup_paginator, position='left') }}
- {{ macros.pagesize_switch(context, position='right') }}
+ {{ macros.paginator_main_page(context|setup_paginator, position='left', search_state=search_state) }}
<div class="clean"></div>
</div>
{% endif %}
diff --git a/askbot/skins/default/templates/main_page/questions_loop.html b/askbot/skins/default/templates/main_page/questions_loop.html
index 1a920516..6a5e5e3d 100644
--- a/askbot/skins/default/templates/main_page/questions_loop.html
+++ b/askbot/skins/default/templates/main_page/questions_loop.html
@@ -1,11 +1,10 @@
{% import "macros.html" as macros %}
-{% cache 0 "questions" questions search_tags scope sort query context.page context.page_size language_code %}
- {% for question in questions.object_list %}
- {{macros.question_summary(question)}}
- {% endfor %}
-{% endcache %}
-{# comment todo: fix css here #}
-{% if questions_count == 0 %}
+{# cache 0 "questions" questions search_tags scope sort query context.page language_code #}
+{% for thread in threads.object_list %}
+ {# {{macros.question_summary(thread, thread._question_post(), search_state=search_state)}} #}
+ {{ thread.get_summary_html(search_state=search_state) }}
+{% endfor %}
+{% if threads.object_list|length == 0 %}
{% include "main_page/nothing_found.html" %}
{% else %}
<div class="evenMore">
diff --git a/askbot/skins/default/templates/main_page/sidebar.html b/askbot/skins/default/templates/main_page/sidebar.html
index c89d62f4..7acbe091 100644
--- a/askbot/skins/default/templates/main_page/sidebar.html
+++ b/askbot/skins/default/templates/main_page/sidebar.html
@@ -1,17 +1,29 @@
{% import "macros.html" as macros %}
-{{ settings.SIDEBAR_MAIN_HEADER }}
+{% if settings.SIDEBAR_MAIN_HEADER %}
+<div class="box">
+ {{ settings.SIDEBAR_MAIN_HEADER }}
+</div>
+{% endif %}
{% if contributors and settings.SIDEBAR_MAIN_SHOW_AVATARS %}
- {% include "widgets/contributors.html" %}
+ {% include "widgets/contributors.html" %}
+{% endif %}
+
+{% if settings.TAG_SEARCH_INPUT_ENABLED %}
+ {% include "main_page/tag_search.html" %}
{% endif %}
{% if request.user.is_authenticated() and settings.SIDEBAR_MAIN_SHOW_TAG_SELECTOR %}
- {% include "widgets/tag_selector.html" %}
+ {% include "widgets/tag_selector.html" %}
{% endif %}
{% if tags and settings.SIDEBAR_MAIN_SHOW_TAGS %}
- {% include "widgets/related_tags.html" %}
+ {% include "widgets/related_tags.html" %}
{% endif %}
-{{ settings.SIDEBAR_MAIN_FOOTER }}
+{% if settings.SIDEBARE_MAIN_FOOTER %}
+<div class="box">
+ {{ settings.SIDEBAR_MAIN_FOOTER }}
+</div>
+{% endif %}
diff --git a/askbot/skins/default/templates/main_page/tab_bar.html b/askbot/skins/default/templates/main_page/tab_bar.html
index 5ed6e5b5..17ab810e 100644
--- a/askbot/skins/default/templates/main_page/tab_bar.html
+++ b/askbot/skins/default/templates/main_page/tab_bar.html
@@ -1,10 +1,11 @@
{% import "macros.html" as macros %}
-{% cache 0 "scope_sort_tabs" search_tags request.user scope sort query context.page context.page_size language_code %}
+{% load extra_filters_jinja %}
+{% cache 0 "scope_sort_tabs" search_tags request.user author_name scope sort query context.page language_code %}
<a class="rss"
{% if feed_url %}
- href="{{settings.APP_URL}}{{feed_url}}"
+ href="{{feed_url}}"
{% else %}
- href="{{settings.APP_URL}}/feeds/rss/"
+ href="/feeds/rss/"
{% endif %}
title="{% trans %}subscribe to the questions feed{% endtrans %}"
>{% trans %}RSS{% endtrans %}
@@ -19,11 +20,11 @@
{% if query %}
<a id="by_relevance"
{% if sort == "relevance-desc" %}
- href="?sort=relevance-desc"
+ href="{{ search_state.change_sort('relevance-desc').full_url() }}"
class="on"
title="{{asc_relevance_tooltip}}"><span>{{relevance_label}} &#9660;</span>
{% else %}
- href="?sort=relevance-desc"
+ href="{{ search_state.change_sort('relevance-desc').full_url() }}"
class="off"
title="{{desc_relevance_tooltip}}"><span>{{relevance_label}}</span>
{% endif %}
@@ -43,7 +44,8 @@
label = gettext('by date'),
asc_tooltip = gettext('click to see the oldest questions'),
desc_tooltip = gettext('click to see the newest questions'),
- current_sort_method = sort
+ current_sort_method = sort,
+ search_state = search_state,
)
}}
{{macros.reversible_sort_button(
@@ -51,7 +53,8 @@
label = gettext('by activity'),
asc_tooltip = gettext('click to see the least recently updated questions'),
desc_tooltip = gettext('click to see the most recently updated questions'),
- current_sort_method = sort
+ current_sort_method = sort,
+ search_state = search_state,
)
}}
{{macros.reversible_sort_button(
@@ -59,7 +62,8 @@
label = gettext('by answers'),
asc_tooltip = gettext('click to see the least answered questions'),
desc_tooltip = gettext('click to see the most answered questions'),
- current_sort_method = sort
+ current_sort_method = sort,
+ search_state = search_state,
)
}}
{{macros.reversible_sort_button(
@@ -67,10 +71,10 @@
label = gettext('by votes'),
asc_tooltip = gettext('click to see least voted questions'),
desc_tooltip = gettext('click to see most voted questions'),
- current_sort_method = sort
+ current_sort_method = sort,
+ search_state = search_state,
)
}}
-
</div>
</div>
diff --git a/askbot/skins/default/templates/main_page/tag_search.html b/askbot/skins/default/templates/main_page/tag_search.html
new file mode 100644
index 00000000..45f12b2f
--- /dev/null
+++ b/askbot/skins/default/templates/main_page/tag_search.html
@@ -0,0 +1,7 @@
+<div id="tagSearch" class="box">
+ <h2>{% trans %}Tag search{% endtrans %}</h2>
+ <div class="inputs">
+ <input id="ab-tag-search" autocomplete="off" type="text"/>
+ <input id="ab-tag-search-add" type="submit" value="{% trans %}search{% endtrans %}"/>
+ </div>
+</div>
diff --git a/askbot/skins/default/templates/meta/bottom_scripts.html b/askbot/skins/default/templates/meta/bottom_scripts.html
index 0df25e7c..6c132203 100644
--- a/askbot/skins/default/templates/meta/bottom_scripts.html
+++ b/askbot/skins/default/templates/meta/bottom_scripts.html
@@ -12,33 +12,26 @@
var scriptUrl = '/{{settings.ASKBOT_URL}}'
var askbotSkin = '{{settings.ASKBOT_DEFAULT_SKIN}}';
var enableMathJax = {% if settings.ENABLE_MATHJAX %}true{% else %}false{% endif %};
- {% if request.user.is_authenticated() %}
- askbot['data']['userIsAuthenticated'] = true;
- askbot['data']['userId'] = {{request.user.id}};
- askbot['data']['userIsAdminOrMod'] = {% if
- request.user.is_administrator()
- or request.user.is_moderator()
- %}true{% else %}false{% endif %};
- {% else %}
- askbot['data']['userIsAuthenticated'] = false;
- {% endif %}
askbot['urls']['mark_read_message'] = '{% url "read_message" %}';
askbot['urls']['get_tags_by_wildcard'] = '{% url "get_tags_by_wildcard" %}';
askbot['urls']['get_tag_list'] = '{% url "get_tag_list" %}';
- askbot['urls']['follow_user'] = scriptUrl + 'followit/follow/user/{{'{{'}}userId{{'}}'}}/';
- askbot['urls']['unfollow_user'] = scriptUrl + 'followit/unfollow/user/{{'{{'}}userId{{'}}'}}/';
+ askbot['urls']['follow_user'] = '/followit/follow/user/{{'{{'}}userId{{'}}'}}/';
+ askbot['urls']['unfollow_user'] = '/followit/unfollow/user/{{'{{'}}userId{{'}}'}}/';
askbot['urls']['user_signin'] = '{{ settings.LOGIN_URL }}';
+ askbot['settings']['static_url'] = '{{ settings.STATIC_URL }}';
</script>
<script
type="text/javascript"
{% if settings.DEBUG %}
- src="{{"/js/jquery-1.4.3.js"|media}}"
+ src="{{"/js/jquery-1.7.2.min.js"|media}}"
{% else %}
- src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"
+ src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"
{% endif %}
></script>
-<script type='text/javascript' src="{{"/js/utils.js"|media }}"></script>
+<!-- History.js -->
+<script type='text/javascript' src="{{"/js/jquery.history.js"|media }}"></script>
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
+<script type='text/javascript' src="{{"/js/utils.js"|media }}"></script>
{% if settings.ENABLE_MATHJAX %}
<script type='text/javascript' src="{{settings.MATHJAX_BASE_URL}}/MathJax.js">
MathJax.Hub.Config({
@@ -49,34 +42,45 @@
</script>
{% endif %}
<script type="text/javascript">
-{% if active_tab != "tags" and active_tab != "users" %}
-{# start asking question with title from search query #}
$(document).ready(function(){
- $('#nav_ask').click(
- function(){
- var starting_title = $('#keywords').attr('value');
- var new_url = $(this).attr('href') + '?title=' + encodeURIComponent(starting_title);
- window.location.href = new_url;
- return false;
+ {% if active_tab == 'questions' %}
+ if (Modernizr.history) {
+ // history management works!
+ } else {
+ // no history support :(
+ //hash = unescape(window.location.hash).replace('#','').split("?")[0]
+ {# todo: fix this evil code!!! #}
+ var hash = History.unescapeHash(window.location.hash).replace('#','').split("?")[0];
+ var questions_url = askbot['urls']['questions'];
+ if (hash.substring(0, questions_url.length) === questions_url) {
+ var url = hash;
+ } else {
+ var url = questions_url + hash;
+ }
+ if (hash !== '' && hash !== undefined && url !== undefined){
+ {# was this causing strange redirects in IE??? #}
+ window.location = 'http://' + window.location.host + url;
+ }
}
- );
- //{# focus input on the search bar endcomment #}
- {% if active_tab != "ask" %}
+ {% endif %}
+ // focus input on the search bar endcomment
+ {% if active_tab in ('users', 'questions', 'tags') %}
$('#keywords').focus();
- {% else %}
+ {% elif active_tab == 'ask' %}
$('#id_title').focus();
+ {% else %}
+ animateHashes();
{% endif %}
- animateHashes();
});
-{% endif %}
{% if user_messages %}
$('#validate_email_alert').click(function(){notify.close(true)})
notify.show();
{% endif %}
+ $('abbr.timeago').timeago();
</script>
{% if settings.USE_CUSTOM_JS %}
<script
- src="{% url "custom_js"%}?{{ settings.MEDIA_RESOURCE_REVISION }}"
+ src="{% url "custom_js"%}?v={{ settings.MEDIA_RESOURCE_REVISION }}"
type="text/javascript"
></script>
{% endif %}
diff --git a/askbot/skins/default/templates/meta/editor_data.html b/askbot/skins/default/templates/meta/editor_data.html
index 79ed96fb..9e243baa 100644
--- a/askbot/skins/default/templates/meta/editor_data.html
+++ b/askbot/skins/default/templates/meta/editor_data.html
@@ -1,10 +1,15 @@
<script type="text/javascript">
{# data necessary for the post editor, goes into endjs block #}
+ askbot['settings']['tagsAreRequired'] =
+ {% if settings.TAGS_ARE_REQUIRED %}true{% else %}false{% endif %};
askbot['settings']['maxTagLength'] = {{settings.MAX_TAG_LENGTH}};
- 'each tag must be shorter than %(max_chars)d characters',
- askbot['messages']['maxTagLength'] = '{% trans max_chars = settings.MAX_TAG_LENGTH %}each tag must be shorter that {{max_chars}} character{% pluralize %}each tag must be shorter than {{max_chars}} characters{% endtrans %}';
+ "each tag must be shorter than %(max_chars)d characters",
+ askbot['messages']['maxTagLength'] = "{% trans max_chars = settings.MAX_TAG_LENGTH %}each tag must be shorter that {{max_chars}} character{% pluralize %}each tag must be shorter than {{max_chars}} characters{% endtrans %}";
askbot['settings']['maxTagsPerPost'] = {{settings.MAX_TAGS_PER_POST}};
- askbot['messages']['maxTagsPerPost'] = '{% trans tag_count = settings.MAX_TAGS_PER_POST %}please use {{tag_count}} tag{% pluralize %}please use {{tag_count}} tags or less{% endtrans %}';
- askbot['messages']['tagLimits'] = '{% trans tag_count=settings.MAX_TAGS_PER_POST, max_chars=settings.MAX_TAG_LENGTH %}please use up to {{tag_count}} tags, less than {{max_chars}} characters each{% endtrans %}';
+ askbot['messages']['maxTagsPerPost'] = "{% trans tag_count = settings.MAX_TAGS_PER_POST %}please use {{tag_count}} tag{% pluralize %}please use {{tag_count}} tags or less{% endtrans %}";
+ askbot['messages']['tagLimits'] = "{% trans tag_count=settings.MAX_TAGS_PER_POST, max_chars=settings.MAX_TAG_LENGTH %}please use up to {{tag_count}} tags, less than {{max_chars}} characters each{% endtrans %}";
askbot['urls']['upload'] = '{% url "upload" %}';
+ askbot['settings']['minTitleLength'] = {{settings.MIN_TITLE_LENGTH}}
+ askbot['settings']['minQuestionBodyLength'] = {{settings.MIN_QUESTION_BODY_LENGTH}}
+ askbot['settings']['minAnswerBodyLength'] = {{settings.MIN_ANSWER_BODY_LENGTH}}
</script>
diff --git a/askbot/skins/default/templates/meta/fonts.html b/askbot/skins/default/templates/meta/fonts.html
new file mode 100644
index 00000000..e8e54a8f
--- /dev/null
+++ b/askbot/skins/default/templates/meta/fonts.html
@@ -0,0 +1,8 @@
+<style type="text/css">
+@font-face {
+ font-family: 'Open Sans Condensed';
+ font-style: normal;
+ font-weight: 700;
+ src: url('{{"/images/OpenSans-CondBold.ttf"|media}}');
+}
+</style>
diff --git a/askbot/skins/default/templates/meta/html_head_javascript.html b/askbot/skins/default/templates/meta/html_head_javascript.html
index f960d11d..65d0bdce 100644
--- a/askbot/skins/default/templates/meta/html_head_javascript.html
+++ b/askbot/skins/default/templates/meta/html_head_javascript.html
@@ -1,10 +1,21 @@
+<script src="{{"/js/modernizr.custom.js"|media }}"></script>
<script type="text/javascript">
var askbot = {};
askbot['data'] = {};
+ {% if request.user.is_authenticated() %}
+ askbot['data']['userIsAuthenticated'] = true;
+ askbot['data']['userId'] = {{request.user.id}};
+ askbot['data']['userIsAdminOrMod'] = {% if
+ request.user.is_administrator()
+ or request.user.is_moderator()
+ %}true{% else %}false{% endif %};
+ askbot['data']['userReputation'] = {{request.user.reputation}};
+ {% else %}
+ askbot['data']['userIsAuthenticated'] = false;
+ askbot['data']['userReputation'] = 0;
+ {% endif %}
askbot['urls'] = {};
askbot['settings'] = {};
askbot['messages'] = {};
</script>
-{% block forejs %}
-{% endblock %}
{# avoid adding javascript here so that pages load faster #}
diff --git a/askbot/skins/default/templates/meta/html_head_stylesheets.html b/askbot/skins/default/templates/meta/html_head_stylesheets.html
index 14f3c106..8977f152 100644
--- a/askbot/skins/default/templates/meta/html_head_stylesheets.html
+++ b/askbot/skins/default/templates/meta/html_head_stylesheets.html
@@ -1,10 +1,15 @@
{% if settings.ASKBOT_CSS_DEVEL == False %}
+
<link href="{{"/style/style.css"|media }}" rel="stylesheet" type="text/css" />
{% else %}
<link href="{{"/style/style.less"|media }}" rel="stylesheet/less" type="text/css" />
<script type="text/javascript" src="{{"/js/less.min.js"|media}}"></script>
{% endif %}
-<link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:300,400,700' rel='stylesheet' type='text/css'>
+{% if settings.USE_LOCAL_FONTS %}
+ {% include "meta/fonts.html" %}
+{% else %}
+ <link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:400,700&subset=latin,cyrillic-ext,latin-ext' rel='stylesheet' type='text/css'>
+{% endif %}
{{ skin.get_extra_css_link() }}
{% if settings.USE_CUSTOM_CSS %}
<link
diff --git a/askbot/skins/default/templates/privacy.html b/askbot/skins/default/templates/privacy.html
deleted file mode 100644
index e9b6f58b..00000000
--- a/askbot/skins/default/templates/privacy.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "two_column_body.html" %}
-<!-- privacy.html -->
-{% block title %}{% spaceless %}{% trans %}Privacy policy{% endtrans %}{% endspaceless %}{% endblock %}
-{% block content %}
-<h1 class="section-title">{% trans %}Privacy policy{% endtrans %}</h1>
-{{settings.FORUM_PRIVACY}}
-{% endblock %}
-<!-- end privacy.html -->
diff --git a/askbot/skins/default/templates/question.html b/askbot/skins/default/templates/question.html
index 7dc85d84..bb74db33 100644
--- a/askbot/skins/default/templates/question.html
+++ b/askbot/skins/default/templates/question.html
@@ -1,21 +1,194 @@
{% extends "two_column_body.html" %}
<!-- question.html -->
-{% block title %}{% spaceless %}{{ question.get_question_title() }}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{{ question.get_question_title()|escape }}{% endspaceless %}{% endblock %}
{% block meta_description %}
<meta name="description" content="{{question.summary|striptags|escape}}" />
{% endblock %}
-{% block keywords %}{{question.tagname_meta_generator()}}{% endblock %}
+{% block keywords %}{{thread.tagname_meta_generator()}}{% endblock %}
{% block forestyle %}
- <link rel="canonical" href="{{settings.APP_URL}}{{question.get_absolute_url()}}" />
+ <link rel="canonical" href="{{settings.APP_URL|strip_path}}{{question.get_absolute_url()}}" />
<link rel="stylesheet" type="text/css" href="{{'/js/wmd/wmd.css'|media}}" />
{% endblock %}
+{% block forejs %}
+ <script type="text/javascript">
+ //below is pure cross-browser javascript, no jQuery
+ (function(){
+ var data = askbot['data'];
+ if (data['userIsAuthenticated']){
+ var votes = {};
+ {% for post_id in user_votes %}
+ votes['{{post_id}}'] = {{user_votes[post_id]}};
+ {% endfor %}
+ data['user_votes'] = votes;
+ var posts = {};
+ {% for post_id in user_post_id_list %}
+ posts['{{post_id}}'] = 1;
+ {% endfor %}
+ data['user_posts'] = posts;
+ }
+
+ function render_vote_buttons(post_type, post_id){
+ var upvote_btn = document.getElementById(
+ post_type + '-img-upvote-' + post_id
+ );
+ var downvote_btn = document.getElementById(
+ post_type + '-img-downvote-' + post_id
+ );
+ if (data['userIsAuthenticated']){
+ if (post_id in data['user_votes']){
+ var vote = data['user_votes'][post_id];
+ if (vote == -1){
+ var btn = downvote_btn;
+ } else if (vote == 1){
+ var btn = upvote_btn;
+ } else {
+ return;
+ }
+ if (post_type == 'comment'){
+ btn.className = btn.className + ' upvoted';
+ } else {
+ btn.className = btn.className + ' on';
+ }
+ }
+ }
+ }
+ function render_post_controls(post_id){
+ if (data['userIsAdminOrMod']){
+ return;//all functions on
+ }
+ if (post_id in data['user_posts']){
+ //todo: remove edit button from older comments
+ return;//same here
+ }
+ if (//maybe remove "delete" button
+ data['userReputation'] <
+ {{settings.MIN_REP_TO_DELETE_OTHERS_COMMENTS}}
+ ) {
+ var delete_btn = document.getElementById(
+ 'post-' + post_id + '-delete'
+ );
+ delete_btn.parentNode.removeChild(delete_btn);
+ }
+ if (//maybe remove "edit" button
+ data['userReputation'] <
+ {{settings.MIN_REP_TO_EDIT_OTHERS_POSTS}}
+ ){
+ var edit_btn = document.getElementById(
+ 'post-' + post_id + '-edit'
+ )
+ edit_btn.parentNode.removeChild(edit_btn);
+ }
+ if (//maybe remove retag button
+ data['userReputation'] <
+ {{settings.MIN_REP_TO_RETAG_OTHERS_QUESTIONS}}
+ ){
+ var retag_btn = document.getElementById('retag');
+ retag_btn.parentNode.removeChild(retag_btn);
+ }
+ }
+ function render_add_comment_button(post_id, extra_comment_count){
+ var can_add = false;
+ {% if user_can_post_comment %}
+ can_add = true;
+ {% else %}
+ if (post_id in data['user_posts']){
+ can_add = true;
+ }
+ {% endif %}
+ var add_comment_btn = document.getElementById(
+ 'add-comment-to-post-' + post_id
+ );
+ if (can_add === false){
+ add_comment_btn.parentNode.removeChild(add_comment_btn);
+ return;
+ }
+
+ var text = '';
+ if (extra_comment_count > 0){
+ if (can_add){
+ text =
+ "{% trans %}post a comment / <strong>some</strong> more{% endtrans %}";
+ } else {
+ text =
+ "{% trans %}see <strong>some</strong> more{% endtrans%}";
+ }
+ } else {
+ if (can_add){
+ text = "{% trans %}post a comment{% endtrans %}";
+ }
+ }
+ add_comment_btn.innerHTML = text;
+ //add the count
+ for (node in add_comment_btn.childNodes){
+ if (node.nodeName === 'strong'){
+ node.innerHTML = extra_comment_count;
+ break;
+ }
+ }
+ }
+ function render_add_answer_button(){
+ var add_answer_btn = document.getElementById('add-answer-btn');
+ if (askbot['data']['userIsAuthenticated']){
+ if (askbot['data']['userId'] == {{question.author_id}}){
+ add_answer_btn.className += ' answer-own-question';
+ add_answer_btn.setAttribute(
+ 'value',
+ '{% trans %}Answer Your Own Question{% endtrans %}'
+ )
+ } else {
+ add_answer_btn.setAttribute(
+ 'value',
+ '{% trans %}Post Your Answer{% endtrans %}'
+ )
+ }
+ } else {
+ add_answer_btn.setAttribute(
+ 'value',
+ '{% trans %}Login/Signup to Post{% endtrans %}'
+ );
+ }
+ }
+ askbot['functions'] = askbot['functions'] || {};
+ askbot['functions']['renderPostVoteButtons'] = render_vote_buttons;
+ askbot['functions']['renderPostControls'] = render_post_controls;
+ askbot['functions']['renderAddCommentButton'] = render_add_comment_button;
+ askbot['functions']['renderAddAnswerButton'] = render_add_answer_button;
+ })();
+ </script>
+{% endblock %}
{% block content %}
- {%include "question/content.html" %}
+ <div>
+ {{ settings.QUESTION_PAGE_TOP_BANNER }}
+ </div>
+ {% if is_cacheable %}
+ {% cache long_time "thread-content-html" thread.id %}
+ {% include "question/content.html" %}
+ {% endcache %}
+ {% else %}
+ {% include "question/content.html" %}
+ {% endif %}
{% endblock %}
{% block sidebar %}
- {%include "question/sidebar.html" %}
+ {% include "question/sidebar.html" %}
{% endblock %}
{% block endjs %}
- {%include "question/javascript.html" %}
+ {% include "question/javascript.html" %}
+ {#
+ <script type="text/javascript">
+ var messages = askbot['messages'];
+ messages['upvote_question'] = gettext(
+ 'I like this question (click again to cancel)'
+ );
+ messages['upvote_answer'] = gettext(
+ 'I like this answer (click again to cancel)'
+ );
+ messages['downvote_question'] = gettext(
+ "I don't like this question (click again to cancel)"
+ );
+ messages['downvote_answer'] = gettext(
+ "I don't like this answer (click again to cancel)"
+ );
+ </script>
+ #}
{% endblock %}
diff --git a/askbot/skins/default/templates/question/answer_card.html b/askbot/skins/default/templates/question/answer_card.html
index 1d7380c5..7161c186 100644
--- a/askbot/skins/default/templates/question/answer_card.html
+++ b/askbot/skins/default/templates/question/answer_card.html
@@ -1,7 +1,11 @@
<a name="{{ answer.id }}"></a>
-<div
- id="answer-container-{{ answer.id }}"
- class="{{ macros.answer_classes(answer, question) }}">
+{% if answer.old_answer_id %}
+ {# Make old URL anchors/hashes work #}
+ <a class="old_answer_id_anchor" name="{{ answer.old_answer_id }}"></a>
+{% endif %}
+<div
+ id="post-id-{{ answer.id }}"
+ class="{{ macros.answer_classes(answer, question) }}">
<div class="vote-buttons">
{% include "question/answer_vote_buttons.html" %}
</div>
@@ -15,7 +19,7 @@
{{ answer.html }}
</div>
<div class="answer-controls post-controls">
- {% include "question/answer_controls.html" %}
+ {% include "question/answer_controls.html" %}
</div>
{% include "question/answer_comments.html" %}
</div>
diff --git a/askbot/skins/default/templates/question/answer_tab_bar.html b/askbot/skins/default/templates/question/answer_tab_bar.html
index 3e39f795..bebf68b8 100644
--- a/askbot/skins/default/templates/question/answer_tab_bar.html
+++ b/askbot/skins/default/templates/question/answer_tab_bar.html
@@ -1,24 +1,23 @@
<div class="tabBar tabBar-answer">
<h2 id="questionCount">
- {% trans counter=answers|length %}
- {{counter}} Answer
- {% pluralize %}
- {{counter}} Answers
+ {% trans counter=answer_count %}
+ {{counter}} Answer
+ {% pluralize %}
+ {{counter}} Answers
{% endtrans %}
</h2>
<div class="tabsA">
- <span class="label">
- Sort by »
- </span>
- <a id="oldest" href="{{ question.get_absolute_url() }}?sort=oldest#sort-top"
- title="{% trans %}oldest answers will be shown first{% endtrans %}"
- ><span>{% trans %}oldest answers{% endtrans %}</span></a>
- <a id="latest" href="{{ question.get_absolute_url() }}?sort=latest#sort-top"
- title="{% trans %}newest answers will be shown first{% endtrans %}"
- ><span>{% trans %}newest answers{% endtrans %}</span></a>
- <a id="votes" href="{{ question.get_absolute_url() }}?sort=votes#sort-top"
- title="{% trans %}most voted answers will be shown first{% endtrans %}"
- ><span>{% trans %}popular answers{% endtrans %}</span></a>
+ <span class="label">
+ {% trans %}Sort by »{% endtrans %}
+ </span>
+ <a id="oldest" href="{{ question.get_absolute_url() }}?sort=oldest#sort-top"
+ title="{% trans %}oldest answers will be shown first{% endtrans %}"
+ ><span>{% trans %}oldest{% endtrans %}</span></a>
+ <a id="latest" href="{{ question.get_absolute_url() }}?sort=latest#sort-top"
+ title="{% trans %}newest answers will be shown first{% endtrans %}"
+ ><span>{% trans %}newest{% endtrans %}</span></a>
+ <a id="votes" href="{{ question.get_absolute_url() }}?sort=votes#sort-top"
+ title="{% trans %}most voted answers will be shown first{% endtrans %}"
+ ><span>{% trans %}most voted{% endtrans %}</span></a>
</div>
</div>
-<div class="clean"></div>
diff --git a/askbot/skins/default/templates/question/content.html b/askbot/skins/default/templates/question/content.html
index 272026bf..66b3014b 100644
--- a/askbot/skins/default/templates/question/content.html
+++ b/askbot/skins/default/templates/question/content.html
@@ -1,21 +1,49 @@
{% import "macros.html" as macros %}
+
+{# ==== BEGIN: question/question_card.html ==== #}
{% include "question/question_card.html" %}
-{% if question.closed %}
- {% include "question/closed_question_info.html" %}
-{% endif %}
+{# ==== END: question/question_card.html ==== #}
+
{% if answers %}
+ <div class="clean"></div>
+
+ {# ==== START: question/answer_tab_bar.html ==== #}
{% include "question/answer_tab_bar.html" %}
- {{ macros.paginator(paginator_context) }}
+ {# ==== END: question/answer_tab_bar.html ==== #}
+
+ <div class="clean"></div>
+ {{ macros.paginator(paginator_context, anchor='#sort-top') }}
<div class="clean"></div>
+
{% for answer in answers %}
+ {# ==== START: question/answer_card.html ==== #}
{% include "question/answer_card.html" %}
+ {# ==== END: question/answer_card.html ==== #}
{% endfor %}
- {{ macros.paginator(paginator_context) }}
+ {{ macros.paginator(paginator_context, anchor='#sort-top') }}
<div class="clean"></div>
{% else %}
+ {# ==== START: question/sharing_prompt_phrase.html ==== #}
{% include "question/sharing_prompt_phrase.html" %}
+ {# ==== END: question/sharing_prompt_phrase.html ==== #}
{% endif %}
+
+{# ==== START: question/new_answer_form.html ==== #}
+{# buttons below cannot be cached yet #}
+{% if user_already_gave_answer %}
+ <a
+ class="submit"
+ href="{% url "edit_answer" previous_answer.id %}"
+ >{% trans %}Edit Your Previous Answer{% endtrans %}</a>
+ <span>{% trans %}(only one answer per question is allowed){% endtrans %}</span>
+{% else %}
{% include "question/new_answer_form.html" %}
- {% if request.user == question.author %}{# this is outside the form on purpose #}
- <input type="button" class="submit after-editor" id="fmanswer_button" value="{% trans %}Answer Your Own Question{% endtrans %}"/>
- {%endif%}
+{% endif %}
+{% if question.closed == False and request.user == question.author %}{# this is outside the form on purpose #}
+<input
+ type="button"
+ class="submit after-editor answer-own-question"
+ id="fmanswer_button"
+ value="{% trans %}Answer Your Own Question{% endtrans %}"
+/>
+{% endif %}
diff --git a/askbot/skins/default/templates/question/javascript.html b/askbot/skins/default/templates/question/javascript.html
index c5dd9f37..73e209bb 100644
--- a/askbot/skins/default/templates/question/javascript.html
+++ b/askbot/skins/default/templates/question/javascript.html
@@ -1,36 +1,30 @@
-{% if not question.closed %}
- <script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
- <script type='text/javascript'>
- {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
- var codeFriendlyMarkdown = true;
- {% else %}
- var codeFriendlyMarkdown = false;
- {% endif %}
- var maxCommentLength = {{settings.MAX_COMMENT_LENGTH}};
- askbot['urls']['postComments'] = '{% url post_comments %}';
- askbot['urls']['editComment'] = '{% url edit_comment %}';
- askbot['urls']['deleteComment'] = '{% url delete_comment %}';
- askbot['urls']['getComment'] = '{% url get_comment %}';
- {%if settings.ASKBOT_TRANSLATE_URL %}
- askbot['urls']['question_url_template'] = scriptUrl + '{% trans %}question/{% endtrans %}{{ "{{QuestionID}}/{{questionSlug}}" }}';{# yes it needs to be that whacky #}
- askbot['urls']['vote_url_template'] = scriptUrl + '{% trans %}questions/{% endtrans %}{{ "{{QuestionID}}/" }}{% trans %}vote/{% endtrans %}';
- {%else%}
- askbot['urls']['question_url_template'] = scriptUrl + 'question/{{ "{{QuestionID}}/{{questionSlug}}" }}';{# yes it needs to be that whacky #}
- askbot['urls']['vote_url_template'] = scriptUrl + 'questions/{{ "{{QuestionID}}/" }}vote/';
- {%endif%}
- askbot['urls']['user_signin'] = '{{ settings.LOGIN_URL }}';
- askbot['urls']['swap_question_with_answer'] = '{% url swap_question_with_answer %}';
- askbot['urls']['upvote_comment'] = '{% url upvote_comment %}';
- askbot['messages']['addComment'] = '{% trans %}add comment{% endtrans %}';
- {% if settings.SAVE_COMMENT_ON_ENTER %}
- askbot['settings']['saveCommentOnEnter'] = true;
- {% else %}
- askbot['settings']['saveCommentOnEnter'] = false;
- {% endif %}
- </script>
- <script type='text/javascript' src='{{"/js/wmd/showdown.js"|media}}'></script>
- <script type='text/javascript' src='{{"/js/wmd/wmd.js"|media}}'></script>
-{% endif %}
+<script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
+<script type='text/javascript'>
+ {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
+ var codeFriendlyMarkdown = true;
+ {% else %}
+ var codeFriendlyMarkdown = false;
+ {% endif %}
+ var maxCommentLength = {{settings.MAX_COMMENT_LENGTH}};
+ askbot['urls']['postComments'] = '{% url post_comments %}';
+ askbot['urls']['editComment'] = '{% url edit_comment %}';
+ askbot['urls']['deleteComment'] = '{% url delete_comment %}';
+ askbot['urls']['getComment'] = '{% url get_comment %}';
+ askbot['urls']['question_url_template'] = scriptUrl + '{{ 'question/'|transurl }}{{ "{{QuestionID}}/{{questionSlug}}" }}';{# yes it needs to be that whacky #}
+ askbot['urls']['vote_url_template'] = scriptUrl + '{{ 'questions/'|transurl }}{{ "{{QuestionID}}/" }}{{ 'vote/'|transurl }}';
+ askbot['urls']['user_signin'] = '{{ settings.LOGIN_URL }}';
+ askbot['urls']['swap_question_with_answer'] = '{% url swap_question_with_answer %}';
+ askbot['urls']['upvote_comment'] = '{% url upvote_comment %}';
+ askbot['urls']['delete_post'] = '{% url delete_post %}';
+ askbot['messages']['addComment'] = '{% trans %}post a comment{% endtrans %}';
+ {% if settings.SAVE_COMMENT_ON_ENTER %}
+ askbot['settings']['saveCommentOnEnter'] = true;
+ {% else %}
+ askbot['settings']['saveCommentOnEnter'] = false;
+ {% endif %}
+</script>
+<script type='text/javascript' src='{{"/js/wmd/showdown.js"|media}}'></script>
+<script type='text/javascript' src='{{"/js/wmd/wmd.js"|media}}'></script>
<script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
<script type='text/javascript' src='{{"/js/post.js"|media}}'></script>
<script type="text/javascript">
@@ -46,9 +40,9 @@
var answer_sort_tab = "{{ tab_id }}";
$("#" + answer_sort_tab).attr('className',"on");
- Vote.init({{ question.id }}, '{{ question.title|slugify }}', '{{ question.author.id }}','{{ request.user.id }}');
+ Vote.init({{ question.id }}, '{{ thread.title|slugify }}', '{{ question.author_id }}','{{ request.user.id }}');
- {% if not question.closed and request.user.is_authenticated %}initEditor();{% endif %}
+ {% if not thread.closed and request.user.is_authenticated %}initEditor();{% endif %}
lanai.highlightSyntax();
$('#btLogin').bind('click', function(){window.location.href='{{ settings.LOGIN_URL }}'; } )
@@ -57,7 +51,7 @@
}
{% if settings.ENABLE_SHARING_GOOGLE %}$.getScript("http://apis.google.com/js/plusone.js"){% endif %}
- {% if request.user == question.author %}
+ {% if request.user.id == question.author_id %}
$("#fmanswer_button").click(function() {
$("#fmanswer").show();
$("#fmanswer_button").hide();
@@ -94,7 +88,11 @@
$('#previewer').toggle();
$('#pre-collapse').text(txt);
});
- setupFormValidation($("#fmanswer"), CPValidator.getQuestionFormRules(), CPValidator.getQuestionFormMessages());
+ setupFormValidation(
+ $("#fmanswer"),
+ CPValidator.getAnswerFormRules(),
+ CPValidator.getAnswerFormMessages()
+ );
}
</script>
{% include "meta/editor_data.html" %}
diff --git a/askbot/skins/default/templates/question/new_answer_form.html b/askbot/skins/default/templates/question/new_answer_form.html
index 49474baa..68af8afb 100644
--- a/askbot/skins/default/templates/question/new_answer_form.html
+++ b/askbot/skins/default/templates/question/new_answer_form.html
@@ -1,54 +1,49 @@
-<form
- id="fmanswer"
- {% if user == question.author %}style="display:none"{% endif %}
- action="{% url answer question.id %}"
- method="post"
->{% csrf_token %}
+<form
+ id="fmanswer"
+ {% if user == question.author %}style="display:none"{% endif %}
+ action="{% url answer question.id %}"
+ method="post"
+ >{% csrf_token %}
+ {# ==== START: question/subscribe_by_email_prompt.html ==== #}
{% include "question/subscribe_by_email_prompt.html" %}
+ {# ==== END: question/subscribe_by_email_prompt.html ==== #}
<div style="clear:both"></div>
{% if request.user.is_anonymous() and settings.ALLOW_POSTING_BEFORE_LOGGING_IN == False %}
- {% if not question.closed %}
- <a
- class="submit"
- href="{{settings.LOGIN_URL}}?next={% url question question.id %}"
- >{% trans %}Login/Signup to Answer{% endtrans %}</a>
+ {% if not thread.closed %}
+ <a
+ class="submit"
+ href="{{settings.LOGIN_URL}}?next={% url question question.id %}"
+ >{% trans %}Login/Signup to Answer{% endtrans %}</a>
{% endif %}
{% else %}
- {% if not question.closed %}
+ {% if not thread.closed %}
<div>
{% spaceless %}
- <h2>
- {% if answers %}
- {% trans %}Your answer{% endtrans %}
- {% else %}
- {% trans %}Be the first one to answer this question!{% endtrans %}
- {% endif %}
- </h2>
+ <h2>
+ {% if answers %}
+ {% trans %}Your answer{% endtrans %}
+ {% else %}
+ {% trans %}Be the first one to answer this question!{% endtrans %}
+ {% endif %}
+ </h2>
{% endspaceless %}
</div>
{% if request.user.is_anonymous() %}
- <div class="message">{% trans %}you can answer anonymously and then login{% endtrans %}</div>
+ <div class="message">{% trans %}<span class='strong big'>Please start posting your answer anonymously</span> - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a <strong>substantial answer</strong>, for discussions, <strong>please use comments</strong> and <strong>please do remember to vote</strong> (after you log in)!{% endtrans %}</div>
{% else %}
<p class="message">
{% if request.user==question.author %}
- {% trans %}answer your own question only to give an answer{% endtrans %}
+ {% trans %}<span class='big strong'>You are welcome to answer your own question</span>, but please make sure to give an <strong>answer</strong>. Remember that you can always <strong>revise your original question</strong>. Please <strong>use comments for discussions</strong> and <strong>please don't forget to vote :)</strong> for the answers that you liked (or perhaps did not like)!{% endtrans %}
{% else %}
- {% trans %}please only give an answer, no discussions{% endtrans %}
+ {% trans %}<span class='big strong'>Please try to give a substantial answer</span>. If you wanted to comment on the question or answer, just <strong>use the commenting tool</strong>. Please remember that you can always <strong>revise your answers</strong> - no need to answer the same question twice. Also, please <strong>don't forget to vote</strong> - it really helps to select the best questions and answers!{% endtrans %}
{% endif %}
</p>
{% endif %}
{{ macros.edit_post(answer) }}
- <input type="submit"
- {% if user.is_anonymous() %}
- value="{% trans %}Login/Signup to Post Your Answer{% endtrans %}"
- {% else %}
- {% if user == question.author %}
- value="{% trans %}Answer Your Own Question{% endtrans %}"
- {% else %}
- value="{% trans %}Answer the question{% endtrans %}"
- {% endif %}
- {% endif %}
- class="submit after-editor" style="float:left"/>
+ <input id="add-answer-btn" type="submit" class="submit after-editor" style="float:left"/>
+ <script type="text/javascript">
+ askbot['functions']['renderAddAnswerButton']();
+ </script>
{% if settings.WIKI_ON %}
{{ macros.checkbox_in_div(answer.wiki) }}
{% endif %}
diff --git a/askbot/skins/default/templates/question/question_card.html b/askbot/skins/default/templates/question/question_card.html
index b1fa1743..c787bf34 100644
--- a/askbot/skins/default/templates/question/question_card.html
+++ b/askbot/skins/default/templates/question/question_card.html
@@ -1,22 +1,38 @@
<div class="vote-buttons">
- {% include "question/question_vote_buttons.html"%}
- {% include "question/share_buttons.html"%}
+ {% include "question/question_vote_buttons.html" %}
+ {% include "question/share_buttons.html" %}
</div>
-<div class="question-content">
+<div id="post-id-{{question.id}}" class="question-content{% if question.deleted %} deleted{% endif %}">
- <h1><a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a></h1>
+ <h1><a href="{{ question.get_absolute_url() }}">{{ thread.get_title(question)|escape }}</a></h1>
{% include "question/question_tags.html" %}
- <div id="question-table" {% if question.deleted %}class="deleted"{%endif%}>
+
+ <div id="question-table">
<div class="question-body">
<div class="post-update-info-container">
{% include "question/question_author_info.html" %}
</div>
- {{question.html}}
+ {{ question.html }}
</div>
<div id="question-controls" class="post-controls">
- {% include "question/question_controls.html" %}
+ {% include "question/question_controls.html" %}
</div>
+ <script type="text/javascript">
+ (function(){
+ if (askbot['data']['userIsAuthenticated'] === false){
+ var ctrl = document.getElementById('question-controls')
+ ctrl.parentNode.removeChild(ctrl);
+ }
+ })();
+ </script>
+ {% if thread.closed %}
+ <div class="clearfix"></div>
+ {# ==== START: question/closed_question_info.html ==== #}
+ {% include "question/closed_question_info.html" %}
+ {# ==== END: question/closed_question_info.html ==== #}
+ {% endif %}
{% include "question/question_comments.html" %}
</div>
+
</div>
-<div class="clean"></div>
+
diff --git a/askbot/skins/default/templates/question/sharing_prompt_phrase.html b/askbot/skins/default/templates/question/sharing_prompt_phrase.html
index f7bd20af..2e68d1f3 100644
--- a/askbot/skins/default/templates/question/sharing_prompt_phrase.html
+++ b/askbot/skins/default/templates/question/sharing_prompt_phrase.html
@@ -1,4 +1,4 @@
-{% set question_url=settings.APP_URL+question.get_absolute_url()|urlencode %}
+{% set question_url=(settings.APP_URL|strip_path + question.get_absolute_url())|urlencode %}
<h2 class="share-question">{% trans %}Know someone who can answer? Share a <a href="{{ question_url }}">link</a> to this question via{% endtrans %}
{% if settings.ENABLE_SHARING_TWITTER %}{{ macros.share(site = 'twitter', site_label = 'Twitter') }},{% endif %}
{% if settings.ENABLE_SHARING_FACEBOOK %}{{ macros.share(site = 'facebook', site_label = 'Facebook') }},{% endif %}
diff --git a/askbot/skins/default/templates/question/sidebar.html b/askbot/skins/default/templates/question/sidebar.html
index 918c7662..2450a384 100644
--- a/askbot/skins/default/templates/question/sidebar.html
+++ b/askbot/skins/default/templates/question/sidebar.html
@@ -1,5 +1,9 @@
-{% import "macros.html" as macros %}
-{{ settings.SIDEBAR_QUESTION_HEADER }}
+{% from "macros.html" import timeago %}
+{% if settings.SIDEBAR_QUESTION_HEADER %}
+<div class="box">
+ {{ settings.SIDEBAR_QUESTION_HEADER }}
+</div>
+{% endif %}
<div class="box vote-buttons">
<h2 >{% trans %}Question tools{% endtrans %}</h2>
{% if favorited %}
@@ -16,7 +20,7 @@
{% endif %}
<div class="clearfix"></div>
<div id="favorite-number" class="favorite-number{% if favorited %} my-favorite-number{% endif %}">
- {% set follower_count = question.favourite_count %}
+ {% set follower_count = thread.favourite_count %}
{% if follower_count > 0 %}
{% trans count=follower_count %}{{count}} follower{% pluralize %}{{count}} followers{% endtrans %}
{% endif %}
@@ -37,34 +41,31 @@
</p>
</div>
</div>
-{% cache 0 "questions_tags" questions_tags question.id language_code %}
-
{% if settings.SIDEBAR_QUESTION_SHOW_META %}
<div class="box statsWidget">
<div class="clearfix"></div>
<h2>{% trans %}Stats{% endtrans %}</h2>
<p>
- {% trans %}question asked{% endtrans %}: <strong title="{{ question.added_at }}">{{question.added_at|diff_date}}</strong>
+ {% trans %}Asked{% endtrans %}: <strong>{{ timeago(question.added_at) }}</strong>
</p>
<p>
- {% trans %}question was seen{% endtrans %}: <strong>{{ question.view_count|intcomma }} {% trans %}times{% endtrans %}</strong>
+ {% trans %}Seen{% endtrans %}: <strong>{{ thread.view_count|intcomma }} {% trans %}times{% endtrans %}</strong>
</p>
<p>
- {% trans %}last updated{% endtrans %}: <strong title="{{ question.last_activity_at }}">{{question.last_activity_at|diff_date}}</strong>
+ {% trans %}Last updated{% endtrans %}: <strong title="{{ thread.last_activity_at }}">{{thread.last_activity_at|diff_date}}</strong>
</p>
</div>
{% endif %}
-{% endcache %}
-{% if similar_questions.data and settings.SIDEBAR_QUESTION_SHOW_RELATED %}
+{% if similar_threads.data and settings.SIDEBAR_QUESTION_SHOW_RELATED %}
{#% cache 1800 "related_questions" related_questions question.id language_code %#}
<div class="box">
<h2>{% trans %}Related questions{% endtrans %}</h2>
<div class="questions-related">
- {% for question in similar_questions.data() %}
+ {% for thread_dict in similar_threads.data() %}
<p>
- <a href="{{ question.get_absolute_url() }}">{{ question.get_question_title() }}</a>
+ <a href="{{ thread_dict.url }}">{{ thread_dict.title|escape }}</a>
</p>
{% endfor %}
</div>
@@ -72,4 +73,6 @@
{#% endcache %#}
{% endif %}
-{{ settings.SIDEBAR_QUESTION_FOOTER }}
+<div class="box">
+ {{ settings.SIDEBAR_QUESTION_FOOTER }}
+</div>
diff --git a/askbot/skins/default/templates/question/subscribe_by_email_prompt.html b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html
index 8b0b6853..6a77601c 100644
--- a/askbot/skins/default/templates/question/subscribe_by_email_prompt.html
+++ b/askbot/skins/default/templates/question/subscribe_by_email_prompt.html
@@ -1,23 +1,13 @@
{% if request.user.is_authenticated() %}
<p>
- {{ answer.email_notify }}
+ {{ answer.email_notify }}
<label for="question-subscribe-updates">
- {% set email_feed_frequency = request.user.get_followed_question_alert_frequency() %}
- {% if email_feed_frequency =='n' %}
- {% trans %}Notify me once a day when there are any new answers{% endtrans %}
- {% elif email_feed_frequency =='d' %}
- {% trans %}Notify me once a day when there are any new answers{% endtrans %}
- {% elif email_feed_frequency =='w' %}
- {% trans %}Notify me weekly when there are any new answers{% endtrans %}
- {% elif email_feed_frequency =='i' %}
- {% trans %}Notify me immediately when there are any new answers{% endtrans %}
- {% endif %}
+ {% trans %}Email me when there are any new answers{% endtrans %}
</label>
- {% trans profile_url=request.user.get_profile_url() %}You can always adjust frequency of email updates from your {{profile_url}}{% endtrans %}
</p>
{% else %}
<p>
- {{ answer.email_notify }}
- <label>{% trans %}once you sign in you will be able to subscribe for any updates here{% endtrans %}</label>
+ {{ answer.email_notify }}
+ <label>{% trans %}<span class='strong'>Here</span> (once you log in) you will be able to sign up for the periodic email updates about this question.{% endtrans %}</label>
</p>
{% endif %}
diff --git a/askbot/skins/default/templates/question_retag.html b/askbot/skins/default/templates/question_retag.html
index 883dc3aa..c42b42f8 100644
--- a/askbot/skins/default/templates/question_retag.html
+++ b/askbot/skins/default/templates/question_retag.html
@@ -1,11 +1,11 @@
{% extends "two_column_body.html" %}
<!-- question_retag.html -->
-{% block title %}{% spaceless %}{% trans %}Change tags{% endtrans %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans %}Retag question{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
-<h1>{% trans %}Change tags{% endtrans %} [<a href="{{ question.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]</h1>
+<h1>{% trans %}Retag question{% endtrans %} [<a href="{{ question.get_absolute_url() }}">{% trans %}back{% endtrans %}</a>]</h1>
<form id="fmretag" action="{% url retag_question question.id %}" method="post" >{% csrf_token %}
<h2>
- {{ question.get_question_title() }}
+ {{ question.thread.get_title()|escape }}
</h2>
<div id="description" class="edit-content-html">
{{ question.html }}
diff --git a/askbot/skins/default/templates/question_widget.html b/askbot/skins/default/templates/question_widget.html
index bb883c71..9d32294b 100644
--- a/askbot/skins/default/templates/question_widget.html
+++ b/askbot/skins/default/templates/question_widget.html
@@ -10,9 +10,9 @@
{{settings.QUESTIONS_WIDGET_HEADER|safe}}
<div id="container">
<ul>
- {% for question in questions %}
- <li><a href="{{settings.APP_URL}}{{ question.get_absolute_url() }}">
- {{ question.title }}</a></li>
+ {% for thread in threads %}
+ <li><a href="{{settings.APP_URL|strip_path}}{{ thread.get_absolute_url() }}">
+ {{ thread.title|escape }}</a></li>
{% endfor %}
</ul>
</div>
diff --git a/askbot/skins/default/templates/reopen.html b/askbot/skins/default/templates/reopen.html
index d68e8bdc..4ddd6f31 100644
--- a/askbot/skins/default/templates/reopen.html
+++ b/askbot/skins/default/templates/reopen.html
@@ -1,22 +1,23 @@
{% extends "two_column_body.html" %}
+{% from "macros.html" import timeago %}
<!-- reopen.html -->
{% block title %}{% spaceless %}{% trans %}Reopen question{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<h1>{% trans %}Reopen question{% endtrans %}</h1>
<p>{% trans %}Title{% endtrans %}:
<a href="{{ question.get_absolute_url() }}">
- <span class="big">{{ question.get_question_title() }}</span>
+ <span class="big">{{ question.get_question_title()|escape }}</span>
</a>
</p>
-<p>{% trans %}This question has been closed by
- <a href="{{closed_by_profile_url}}">{{closed_by_username}}</a>
+<p>{% trans username = closed_by_username|escape %}This question has been closed by
+ <a href="{{closed_by_profile_url}}">{{username}}</a>
{% endtrans %}
</p>
<p>
- {% trans %}Close reason:{% endtrans %} "<strong>{{question.get_close_reason_display()}}</strong>".
+ {% trans %}Close reason:{% endtrans %} "<strong>{{question.thread.get_close_reason_display()}}</strong>".
</p>
<p>
- {% trans %}When:{% endtrans %} {{question.closed_at|diff_date}}
+ {% trans %}When:{% endtrans %} {{ timeago(question.thread.closed_at) }}
</p>
<p>
{% trans %}Reopen this question?{% endtrans %}
diff --git a/askbot/skins/default/templates/revisions.html b/askbot/skins/default/templates/revisions.html
index 7fb985e2..a0531b80 100644
--- a/askbot/skins/default/templates/revisions.html
+++ b/askbot/skins/default/templates/revisions.html
@@ -19,7 +19,7 @@
<td width="20" style="vertical-align:middle">
<img
id="rev-arrow-{{ revision.revision }}"
- src="{{"/images/expander-arrow-show.gif"|media}}"
+ src="{{"/images/expander-arrow-hide.gif"|media}}"
alt="{% trans %}click to hide/show revision{% endtrans %}"
/>
</td>
@@ -30,11 +30,16 @@
<td width="200px" style="vertical-align:middle">
{% if revision.summary %}
<div class="summary">
- <span>{{ revision.summary }}</span>
+ <span>{{ revision.summary|escape }}</span>
</div>
{% endif %}
{% if request.user|can_edit_post(post) %}
- <a href="{% url edit_answer post.id %}?revision={{ revision.revision }}">{% trans %}edit{% endtrans %}</a>
+ {% if post.post_type == 'answer' %}
+ <a href="{% url edit_answer post.id %}?revision={{ revision.revision }}">{% trans %}edit{% endtrans %}</a>
+ {% endif %}
+ {% if post.post_type == 'question' %}
+ <a href="{% url edit_question post.id %}?revision={{ revision.revision }}">{% trans %}edit{% endtrans %}</a>
+ {% endif %}
{% endif %}
</td>
<td align="right">
@@ -45,7 +50,7 @@
{% set contributor_type = "last_updater" %}
{% endif %}
{{ macros.post_contributor_info(
- revision,
+ revision.post,
contributor_type,
False,
0
@@ -74,8 +79,7 @@
$("#nav_questions").attr('className',"on");
$('div.revision div[id^=rev-header-]').bind('click', function(){
var revId = this.id.substr(11);
- toggleRev(revId);
-
+ toggleRev(revId);
});
lanai.highlightSyntax();
});
@@ -83,13 +87,13 @@
function toggleRev(id) {
var arrow = $("#rev-arrow-" + id);
var visible = arrow.attr("src").indexOf("hide") > -1;
- var path = mediaUrl(
- "media/images/expander-arrow-" +
- (visible ? "show" : "hide") +
- ".gif" +
- "?v={{settings.MEDIA_RESOURCE_REVISION}}"
- );
- arrow.attr("src", path);
+ if (visible) {
+ var image_path = '{{ "/images/expander-arrow-show.gif"|media }}';
+ } else {
+ var image_path = '{{ "/images/expander-arrow-hide.gif"|media }}';
+ }
+ image_path = image_path + "?v={{settings.MEDIA_RESOURCE_REVISION}}";
+ arrow.attr("src", image_path);
$("#rev-body-" + id).slideToggle("fast");
}
</script>
diff --git a/askbot/skins/default/templates/static_page.html b/askbot/skins/default/templates/static_page.html
new file mode 100644
index 00000000..c537e199
--- /dev/null
+++ b/askbot/skins/default/templates/static_page.html
@@ -0,0 +1,10 @@
+{% extends "two_column_body.html" %}
+<!-- template static_page.html -->
+{% block title %}{% spaceless %}{{title}}{% endspaceless %}{% endblock %}
+{% block content %}
+<div class="content">
+ <h1 class="section-title">{{title}}</h1>
+ {{content}}
+</div>
+{% endblock %}
+<!-- end template static_page.html -->
diff --git a/askbot/skins/default/templates/tags.html b/askbot/skins/default/templates/tags.html
index 1cd4c4b9..007388af 100644
--- a/askbot/skins/default/templates/tags.html
+++ b/askbot/skins/default/templates/tags.html
@@ -1,29 +1,31 @@
{% extends "two_column_body.html" %}
{% import "macros.html" as macros %}
<!-- tags.html -->
-{% block title %}{% spaceless %}{% trans %}Tag list{% endtrans %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans %}Tags{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<!-- Tabs -->
-{% if stag %}
- <h1 class="section-title">{% trans %}Tags, matching "{{ stag }}"{% endtrans %}</h1>
-{% else %}
- <h1 class="section-title">{% trans %}Tag list{% endtrans %}</h1>
-{% endif %}
-<div class="tabBar tabBar-tags">
- <div class="tabsA">
- <span class="label">{% trans %}Sort by &raquo;{% endtrans %}</span>
- <a
- id="sort_name"
- href="{% url tags %}?sort=name"
- {% if tab_id == 'name' %}class="on"{% endif %}
- title="{% trans %}sorted alphabetically{% endtrans %}"
- ><span>{% trans %}by name{% endtrans %}</span></a>
- <a
- id="sort_used"
- href="{% url tags %}?sort=used"
- {% if tab_id == 'used' %}class="on"{% endif %}
- title="{% trans %}sorted by frequency of tag use{% endtrans %}"
- ><span>{% trans %}by popularity{% endtrans %}</span></a>
+<div id="content-header">
+ {% if stag %}
+ <h1 class="section-title">{% trans %}Tags, matching "{{ stag }}"{% endtrans %}</h1>
+ {% else %}
+ <h1 class="section-title">{% trans %}Tag list{% endtrans %}</h1>
+ {% endif %}
+ <div class="tabBar tabBar-tags">
+ <div class="tabsA">
+ <span class="label">{% trans %}Sort by &raquo;{% endtrans %}</span>
+ <a
+ id="sort_name"
+ href="{% url tags %}?sort=name"
+ {% if tab_id == 'name' %}class="on"{% endif %}
+ title="{% trans %}sorted alphabetically{% endtrans %}"
+ ><span>{% trans %}by name{% endtrans %}</span></a>
+ <a
+ id="sort_used"
+ href="{% url tags %}?sort=used"
+ {% if tab_id == 'used' %}class="on"{% endif %}
+ title="{% trans %}sorted by frequency of tag use{% endtrans %}"
+ ><span>{% trans %}by popularity{% endtrans %}</span></a>
+ </div>
</div>
</div>
{% if tag_list_type == 'list' %}
@@ -37,8 +39,8 @@
<li>
{{ macros.tag_widget(
tag = tag.name,
- url_params = 'start_over=true',
html_tag = 'div',
+ truncate_long_tag = True,
extra_content = '<span class="tag-number">&#215; ' ~
tag.used_count|intcomma ~ '</span>'
)
@@ -56,7 +58,7 @@
{% if not tags %}
<span>{% trans %}Nothing found{% endtrans %}</span>
{% endif %}
- {{ macros.tag_cloud(tags = tags, font_sizes = font_size) }}
+ {{ macros.tag_cloud(tags = tags, font_sizes = font_size, search_state = search_state) }}
{% endif %}
{% endblock %}
diff --git a/askbot/skins/default/templates/user_profile/custom_tab.html b/askbot/skins/default/templates/user_profile/custom_tab.html
new file mode 100644
index 00000000..bc5647f7
--- /dev/null
+++ b/askbot/skins/default/templates/user_profile/custom_tab.html
@@ -0,0 +1,3 @@
+{% extends "user_profile/user.html" %}
+{% block profilesection %}{{ custom_tab_name }}{% endblock %}
+{% block usercontent %}{{ custom_tab_content|safe }}{% endblock %}
diff --git a/askbot/skins/default/templates/user_profile/macros.html b/askbot/skins/default/templates/user_profile/macros.html
new file mode 100644
index 00000000..ac573553
--- /dev/null
+++ b/askbot/skins/default/templates/user_profile/macros.html
@@ -0,0 +1,24 @@
+{% import "macros.html" as macros %}
+
+{% macro tag_selection(tag_names, selection_type) %}
+ <a name="{{selection_type}}-tags"></a>
+ {% spaceless %}
+ <h2>{%
+ trans counter=tag_names|length, type=gettext(selection_type)|capitalize
+ %}<span class="count">{{counter}}</span> {{type}} Tag{%
+ pluralize
+ %}<span class="count">{{counter}}</span> {{type}} Tags{%
+ endtrans
+ %}
+ </h2>
+ {% endspaceless %}
+ <div class="user-stats-table">
+ <table class="tags">
+ <tr>
+ <td valign="top">
+ {{ macros.tag_list_widget(tag_names, deletable = False) }}
+ </td>
+ </tr>
+ </table>
+ </div>
+{% endmacro %}
diff --git a/askbot/skins/default/templates/user_profile/reject_post_dialog.html b/askbot/skins/default/templates/user_profile/reject_post_dialog.html
new file mode 100644
index 00000000..987c511a
--- /dev/null
+++ b/askbot/skins/default/templates/user_profile/reject_post_dialog.html
@@ -0,0 +1,108 @@
+<div class="modal" style="display:none" id="reject-edit-modal">
+ <div class="modal-header">
+ <a class="close" data-dismiss="modal">x</a>
+ <h3>{% trans %}Reject the post(s)?{% endtrans %}</h3>
+ </div>
+ <div id="reject-edit-modal-add-new">{# create new reject reason #}
+ <div class="modal-body">
+ <input
+ class="reject-reason-title tipped-input blank"
+ type="text"
+ value="{% trans %}1) Enter a brief description of why you are rejecting the post.{% endtrans %}"
+ />
+ <textarea class="reject-reason-details tipped-input blank"
+ >{% trans %}2) Please enter details here. This text will be sent to the user.{% endtrans %}</textarea>
+ </div>
+ <div class="modal-footer">
+ <div class="btn-toolbar">
+ <div class="btn-group dropup">
+ <button class="btn btn-danger save-reason-and-reject"
+ >{% trans %}Use this reason &amp; reject{% endtrans %}</button>
+ <button class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ <li>
+ <a class="select-other-reason" href="#"
+ >{% trans %}Use other reason{% endtrans %}</a>
+ </li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <a class="btn save-reason"
+ >{% trans %}Save reason, but do not reject{% endtrans %}</a>
+ </div>
+ <div class="btn-group">
+ <a class="btn cancel">{% trans %}Cancel{% endtrans %}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="reject-edit-modal-select">{# select one of existing reasons #}
+ <div class="modal-body">
+ <p>{% trans %}Please, choose a reason for the rejection.{% endtrans %}</p>
+ <ul class="select-box">
+ {% for reason in post_reject_reasons %}
+ <li
+ data-original-title="{{reason.details.text|escape}}"
+ data-item-id="{{reason.id}}"
+ >{{reason.title|escape}}</li>
+ {% endfor %}
+ </ul>
+ </div>
+ <div class="modal-footer">
+ <div class="btn-toolbar">
+ <div class="btn-group dropup">
+ <a class="btn select-this-reason"
+ >{% trans %}Select this reason{% endtrans %}</a>
+ <a class="btn dropdown-toggle" data-toggle="dropdown">
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a class="delete-this-reason"
+ >{% trans %}Delete this reason{% endtrans %}</a>
+ </li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <a class="btn add-new-reason"
+ >{% trans %}Add a new reason{% endtrans %}</a>
+ </div>
+ <div class="btn-group">
+ <a class="btn cancel">{% trans %}Cancel{% endtrans %}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="reject-edit-modal-preview">{# preview reject reason #}
+ <div class="modal-body">
+ <p>{% trans %}You have selected reason for the rejection <strong>"<span class="selected-reason-title"></span>"</strong>. The text below will be sent to the user and the post(s) will be deleted:{% endtrans %}</p>
+ <textarea disabled="disabled" class="selected-reason-details"></textarea>
+ </div>
+ <div class="modal-footer">
+ <div class="btn-toolbar">
+ <div class="btn-group dropup">
+ <a class="btn btn-danger reject"
+ >{% trans %}Use this reason &amp; reject{% endtrans %}</a>
+ <a class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ <li>
+ <a class="select-other-reason"
+ >{% trans %}Use other reason{% endtrans %}</a>
+ </li>
+ </ul>
+ </div>
+ <div class="btn-group">
+ <a class="btn edit-reason"
+ >{% trans %}Edit this reason{% endtrans %}</a>
+ </div>
+ <div class="btn-group">
+ <a class="btn cancel">{% trans %}Cancel{% endtrans %}</a>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/askbot/skins/default/templates/user_profile/user.html b/askbot/skins/default/templates/user_profile/user.html
index 1693303e..2f06a3c9 100644
--- a/askbot/skins/default/templates/user_profile/user.html
+++ b/askbot/skins/default/templates/user_profile/user.html
@@ -1,7 +1,7 @@
{% extends "one_column_body.html" %}
<!-- user.html -->
{% block title %}{% spaceless %}{{ page_title }}{% endspaceless %}{% endblock %}
-{% block forestyle%}
+{% block forestyle %}
<style type="text/css">
.history-table td { padding: 5px; }
</style>
@@ -9,7 +9,7 @@
{% block content %}
<h1 class="section-title">
{% spaceless %}
- {% trans username=view_user.username %}{{username}}'s profile{% endtrans %} - {% block profilesection %}{% endblock %}
+ {% trans username=view_user.username|escape %}{{username}}'s profile{% endtrans %} - {% block profilesection %}{% endblock %}
{% endspaceless %}
</h1>
{% include "user_profile/user_tabs.html" %}
@@ -21,20 +21,26 @@
{% block endjs %}
<script type="text/javascript">
var viewUserID = {{view_user.id}};
- askbot['data']['viewUserName'] = '{{ view_user.username }}';
+ askbot['data']['viewUserName'] = '{{ view_user.username|escape }}';
+ askbot['data']['viewUserId'] = {{view_user.id}};
+ askbot['urls']['edit_group_membership'] = '{% url edit_group_membership %}';
+ askbot['urls']['get_groups_list'] = '{% url get_groups_list %}';
</script>
{% if request.user|can_moderate_user(view_user) %}
<script type='text/javascript' src='{{"/js/jquery.form.js"|media}}'></script>
{% endif %}
<script type="text/javascript" src='{{"/js/user.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
+ <script type="text/javascript" src='{{"/js/post.js"|media}}'></script>
{% block userjs %}
{% endblock %}
{% endblock %}
{% block sidebar %}
-
-{{ settings.SIDEBAR_PROFILE_HEADER }}
-
-{{ settings.SIDEBAR_PROFILE_FOOTER }}
-
+<div class="box">
+ {{ settings.SIDEBAR_PROFILE_HEADER }}
+</div>
+<div class="box">
+ {{ settings.SIDEBAR_PROFILE_FOOTER }}
+</div>
{% endblock %}
<!-- end of user.html -->
diff --git a/askbot/skins/default/templates/user_profile/user_edit.html b/askbot/skins/default/templates/user_profile/user_edit.html
index daaa3663..c95bf815 100644
--- a/askbot/skins/default/templates/user_profile/user_edit.html
+++ b/askbot/skins/default/templates/user_profile/user_edit.html
@@ -4,7 +4,7 @@
{% block title %}{% spaceless %}{% trans %}Edit user profile{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
<h1 class="section-title">
- {{ request.user.username }} - {% trans %}edit profile{% endtrans %}
+ {{ request.user.username|escape }} - {% trans %}edit profile{% endtrans %}
</h1>
<div id="main-body" style="width:100%;padding-top:10px">
<form name="" action="{% url edit_user request.user.id %}" method="post">{% csrf_token %}
@@ -40,43 +40,49 @@
<td>
{% if settings.EDITABLE_SCREEN_NAME %}
{{ form.username }}
- <span class="form-error"></span> {{ form.username.errors }} </td>
+ <span class="form-error"> {{ form.username.errors }} </span></td>
{% else %}
- {{ request.user.username }}
+ {{ view_user.username|escape }}
{% endif %}
</td>
</tr>
<tr>
- <td>{{ form.email.label_tag() }}:</td>
- <td>{{ form.email }} <span class="form-error"></span> {{ form.email.errors }} </td>
- </tr>
- <tr>
- <td></td>
- <td class="title-desc">{{ form.email.help_text }}</td>
+ <td>
+ {{ form.email.label_tag() }}:
+ </td>
+ <td>
+ {% if settings.EDITABLE_EMAIL %}
+ {{ form.email }}
+ <span class="form-error">{{ form.email.errors }}</span>
+ {% else %}
+ {{ view_user.email }}
+ {% trans %}(cannot be changed){% endtrans %}
+ {% endif %}
+ </td>
</tr>
<tr>
<td>{{ form.realname.label_tag() }}:</td>
- <td>{{ form.realname }} <span class="form-error"></span> {{ form.realname.errors }} </td>
+ <td>{{ form.realname }} <span class="form-error"> {{ form.realname.errors }} </span></td>
</tr>
<tr>
<td>{{ form.website.label_tag() }}:</td>
- <td>{{ form.website }} <span class="form-error"></span> {{ form.website.errors }} </td>
+ <td>{{ form.website }} <span class="form-error"> {{ form.website.errors }} </span></td>
</tr>
<tr>
<td>{{ form.city.label_tag() }}:</td>
- <td>{{ form.city }} <span class="form-error"></span> {{ form.city.errors }} </td>
+ <td>{{ form.city }} <span class="form-error"> {{ form.city.errors }} </span></td>
</tr>
<tr>
<td>{{ form.country.label_tag() }}:</td>
- <td>{{ form.country }} <span class="form-error"></span> {{ form.country.errors }} </td>
+ <td>{{ form.country }} <span class="form-error"> {{ form.country.errors }} </span></td>
</tr>
<tr>
<td>{{ form.show_country.label_tag() }}:</td>
- <td>{{ form.show_country }} <span class="form-error"></span> {{ form.show_country.errors }} </td>
+ <td>{{ form.show_country }} <span class="form-error"> {{ form.show_country.errors }} </span></td>
</tr>
<tr>
<td>{{ form.birthday.label_tag() }}:</td>
- <td>{{ form.birthday }} <span class="form-error"></span> {{ form.birthday.errors }} </td>
+ <td>{{ form.birthday }} <span class="form-error"> {{ form.birthday.errors }} </span></td>
</tr>
<tr>
<td></td>
@@ -88,8 +94,16 @@
</tr>
<tr>
<td style="vertical-align:top">{{ form.about.label_tag() }}:</td>
- <td>{{ form.about }} <span class="form-error"></span> {{ form.about.errors }} </td>
+ <td>{{ form.about }} <span class="form-error"> {{ form.about.errors }} </span></td>
</tr>
+ {% if marked_tags_setting == 'when-user-wants' %}
+ <tr>
+ <td>{{ form.show_marked_tags.label_tag() }}:</td>
+ <td>{{ form.show_marked_tags }}
+ <span class="form-error">{{ form.show_marked_tags.errors }}</span>
+ </td>
+ </tr>
+ {% endif %}
</table>
<div style="margin:30px 0 60px 0">
<input type="submit" value="{% trans %}Update{% endtrans %}" class="submit" >&nbsp;
diff --git a/askbot/skins/default/templates/user_profile/user_email_subscriptions.html b/askbot/skins/default/templates/user_profile/user_email_subscriptions.html
index e6a18dd3..f44e8a1e 100644
--- a/askbot/skins/default/templates/user_profile/user_email_subscriptions.html
+++ b/askbot/skins/default/templates/user_profile/user_email_subscriptions.html
@@ -5,7 +5,8 @@
{% endblock %}
{% block usercontent %}
<h2>{% trans %}Email subscription settings{% endtrans %}</h2>
- <p class="message">{% trans %}email subscription settings info{% endtrans %}</p>
+ <p class="message">
+{% trans %}<span class='big strong'>Adjust frequency of email updates.</span> Receive updates on interesting questions by email, <strong><br/>help the community</strong> by answering questions of your colleagues. If you do not wish to receive emails - select 'no email' on all items below.<br/>Updates are only sent when there is any new activity on selected items.{% endtrans %}</p>
<div>
{% if action_status %}
<p class="action-status"><span>{{action_status}}</span></p>
@@ -19,7 +20,7 @@
</table>
<div class="submit-row text-align-right">
<input type="submit" class="submit" name="save" value="{% trans %}Update{% endtrans %}"/>&nbsp;
- <input type="submit" class="submit" name="stop_email" value="{% trans %}Stop sending email{% endtrans %}"/>
+ <input type="submit" class="submit" name="stop_email" value="{% trans %}Stop Email{% endtrans %}"/>
</div>
</form>
</div>
diff --git a/askbot/skins/default/templates/user_profile/user_inbox.html b/askbot/skins/default/templates/user_profile/user_inbox.html
index e7e3dbfe..cda45027 100644
--- a/askbot/skins/default/templates/user_profile/user_inbox.html
+++ b/askbot/skins/default/templates/user_profile/user_inbox.html
@@ -1,5 +1,8 @@
{% extends "user_profile/user.html" %}
{% import "macros.html" as macros %}
+{% block before_css %}
+ <link href="{{'/bootstrap/css/bootstrap.css'|media}}" rel="stylesheet" type="text/css" />
+{% endblock %}
<!-- user_responses.html -->
{#
This template accepts a list of response list
@@ -44,63 +47,53 @@ inbox_section - forum|flags
</a>
</div>
{% endif %}
- {% if inbox_section == 'forum' %}
<div id="re_tools">
<strong>{% trans %}select:{% endtrans %}</strong>
<a id="sel_all">{% trans %}all{% endtrans %}</a> |
<a id="sel_seen">{% trans %}seen{% endtrans %}</a> |
<a id="sel_new">{% trans %}new{% endtrans %}</a> |
<a id="sel_none">{% trans %}none{% endtrans %}</a><br />
- <button id="re_mark_seen">{% trans %}mark as seen{% endtrans %}</button>
- <button id="re_mark_new">{% trans %}mark as new{% endtrans %}</button>
- <button id="re_dismiss">{% trans %}dismiss{% endtrans %}</button>
+ <div class="btn-group">
+ {% if inbox_section == 'forum' %}
+ <a class="btn" id="re_mark_seen">{% trans %}mark as seen{% endtrans %}</a>
+ <a class="btn" id="re_mark_new">{% trans %}mark as new{% endtrans %}</a>
+ <a class="btn" id="re_dismiss">{% trans %}dismiss{% endtrans %}</a>
+ {% else %}
+ <a class="btn" id="re_remove_flag">{% trans %}remove flags/approve{% endtrans %}</a>
+ <a
+ class="btn"
+ id="re_delete_post"
+ >{% trans %}delete post{% endtrans %}</a>
+ {% endif %}
+ </div>
</div>
- {% endif %}
+ {% include "user_profile/reject_post_dialog.html" %}
<div id="responses">
{% for response in responses %}
- <div class="response-parent">
- <p class="headline">
+ <div class="response-parent">
+ <p class="headline">
<strong>"{{ response.response_title.strip()|escape}}"</strong>
- </p>
- <div id="re_{{response.id}}" class="re{% if response.is_new %} new highlight{% else %} seen{% endif %}">
- {% if inbox_section == 'forum' %}<input type="checkbox" />{% endif %}
- <div class="face">
- {{ macros.gravatar(response.user, 48) }}
- </div>
- <a style="font-size:12px" href="{{ response.user.get_absolute_url() }}">{{ response.user.username }}</a>
- <a style="text-decoration:none;" href="{{ response.response_url }}">
- {{ response.response_type }}
- ({{ response.timestamp|diff_date(True) }}):<br/>
- {{ response.response_snippet}}
- </a>
- </div>
- {% if response.nested_responses %}
- {%for nested_response in response.nested_responses %}
- <div id="re_{{nested_response.id}}" class="re{% if nested_response.is_new %} new highlight{% else %} seen{% endif %}">
- {% if inbox_section == 'forum' %}<input type="checkbox" />{% endif %}
- <div class="face">
- {{ macros.gravatar(nested_response.user, 48) }}
- </div>
- <a style="font-size:12px" href="{{ nested_response.user.get_absolute_url() }}">{{ nested_response.user.username }}</a>
- <a style="text-decoration:none;" href="{{ nested_response.response_url }}">
- {{ nested_response.response_type }}
- ({{ nested_response.timestamp|diff_date(True) }}):<br/>
- {{ nested_response.response_snippet}}
- </a>
- </div>
- {%endfor%}
- {%endif%}
- </div>
+ </p>
+ {{ macros.inbox_post_snippet(response, inbox_section) }}
+ {% for nested_response in response.nested_responses %}
+ {{ macros.inbox_post_snippet(nested_response, inbox_section) }}
+ {%endfor%}
+ </div>
{% endfor %}
</div>
</div>
{% endblock %}
{% block userjs %}
- <script type="text/javascript" src="{{'/js/user.js'|media}}"></script>
<script type="text/javascript">
var askbot = askbot || {};
askbot['urls'] = askbot['urls'] || {};
askbot['urls']['manageInbox'] = '{% url manage_inbox %}';
+ askbot['urls']['save_post_reject_reason'] = '{% url save_post_reject_reason %}';
+ askbot['urls']['delete_post_reject_reason'] = '{% url delete_post_reject_reason %}';
+ $(document).ready(function(){
+ setup_inbox();
+ });
</script>
+ <script type="text/javascript" src="{{'/bootstrap/js/bootstrap.js'|media}}" />
<!-- end user_responses.html -->
{% endblock %}
diff --git a/askbot/skins/default/templates/user_profile/user_info.html b/askbot/skins/default/templates/user_profile/user_info.html
index d6d5db17..ad460dbc 100644
--- a/askbot/skins/default/templates/user_profile/user_info.html
+++ b/askbot/skins/default/templates/user_profile/user_info.html
@@ -21,8 +21,10 @@
{% endif %}
{% endif %}
</div>
- <div class="scoreNumber">{{view_user.reputation|intcomma}}</div>
- <p><b style="color:#777;">{% trans %}reputation{% endtrans %}</b></p>
+ {% if can_show_karma %}
+ <div class="scoreNumber">{{view_user.reputation|intcomma}}</div>
+ <p><b style="color:#777;">{% trans %}karma{% endtrans %}</b></p>
+ {% endif %}
{% if user_follow_feature_on %}
{{ macros.follow_user_toggle(visitor = request.user, subject = view_user) }}
{% endif %}
@@ -35,7 +37,7 @@
<a href="{% url edit_user view_user.id %}">
{% trans %}update profile{% endtrans %}
</a>
- {% if request.user == view_user and settings.ALLOW_ADD_REMOVE_LOGIN_METHODS %}
+ {% if settings.USE_ASKBOT_LOGIN_SYSTEM and request.user == view_user and settings.ALLOW_ADD_REMOVE_LOGIN_METHODS %}
| <a href="{{ settings.LOGIN_URL }}?next={{ settings.LOGIN_URL }}">
{% trans %}manage login methods{% endtrans %}
</a>
@@ -55,18 +57,18 @@
</tr>
{% endif %}
<tr>
- <td>{% trans %}member for{% endtrans %}</td>
- <td><strong>{{ view_user.date_joined|diff_date }}</strong></td>
+ <td>{% trans %}member since{% endtrans %}</td>
+ <td><strong>{{ macros.timeago(view_user.date_joined) }}</strong></td>
</tr>
{% if view_user.last_seen %}
<tr>
<td>{% trans %}last seen{% endtrans %}</td>
- <td><strong title="{{ view_user.last_seen }}">{{view_user.last_seen|diff_date}}</strong></td>
+ <td><strong title="{{ view_user.last_seen }}">{{ macros.timeago(view_user.last_seen) }}</strong></td>
</tr>
{% endif %}
- {% if view_user.website %}
+ {% if view_user.website and (not view_user.is_blocked()) %}
<tr>
- <td>{% trans %}user website{% endtrans %}</td>
+ <td>{% trans %}website{% endtrans %}</td>
<td>{{ macros.user_website_link(view_user, max_display_length = 30) }}</td>
</tr>
{% endif %}
@@ -93,7 +95,7 @@
</td>
<td width="380">
<div class="user-about">
- {% if view_user.about %}
+ {% if view_user.about and (not view_user.is_blocked()) %}
{{view_user.about|linebreaks}}
{% endif %}
</div>
diff --git a/askbot/skins/default/templates/user_profile/user_moderate.html b/askbot/skins/default/templates/user_profile/user_moderate.html
index 048f35b4..a7f05b1c 100644
--- a/askbot/skins/default/templates/user_profile/user_moderate.html
+++ b/askbot/skins/default/templates/user_profile/user_moderate.html
@@ -5,7 +5,7 @@
{% endblock %}
{% block usercontent %}
{% if request.user != view_user %}
- <h3>{% trans username=view_user.username, status=view_user.get_status_display() %}{{username}}'s current status is "{{status}}"{% endtrans %}
+ <h3>{% trans username=view_user.username|escape, status=view_user.get_status_display() %}{{username}}'s current status is "{{status}}"{% endtrans %}
</h3>
{% if user_status_changed %}
<p class="action-status"><span>{% trans %}User status changed{% endtrans %}</span></p>
@@ -40,7 +40,7 @@
</form>
{% if request.user != view_user %}
<hr/>
-<h3>{% trans username=view_user.username %}Send message to {{username}}{% endtrans %}</h3>
+<h3>{% trans username=view_user.username|escape %}Send message to {{username}}{% endtrans %}</h3>
<p>{% trans %}An email will be sent to the user with 'reply-to' field set to your email address. Please make sure that your address is entered correctly.{% endtrans %}</p>
{% if message_sent %}
<p class="action-status"><span>{% trans %}Message sent{% endtrans %}</span></p>
@@ -83,7 +83,7 @@
$('#id_user_status_info').html("{% trans %}Suspended users can only edit or delete their own posts.{% endtrans %}");
$('#id_user_status_info').show('slow');
} else if (optionValue == "b"){
- $('#id_user_status_info').html("{% trans %}Blocked users can only login and send feedback to the site administrators.{% endtrans %}");
+ $('#id_user_status_info').html("{% trans %}Blocked users can only login and send feedback to the site administrators, their url and profile will also be hidden.{% endtrans %}");
$('#id_user_status_info').show('slow');
} else {
$('#id_user_status_info').hide('slow');
diff --git a/askbot/skins/default/templates/user_profile/user_network.html b/askbot/skins/default/templates/user_profile/user_network.html
index 1fd2e06a..f64d95b0 100644
--- a/askbot/skins/default/templates/user_profile/user_network.html
+++ b/askbot/skins/default/templates/user_profile/user_network.html
@@ -8,17 +8,31 @@
{% if followed_users or followers %}
{% if followers %}
<h2>{% trans count=followers|length %}Followed by {{count}} person{% pluralize count %}Followed by {{count}} people{% endtrans %}</h2>
- {{ macros.user_list(followers, profile_section = 'network') }}
+ {{
+ macros.user_list(
+ followers,
+ profile_section = 'network',
+ karma_mode = settings.KARMA_MODE,
+ badges_mode = settings.BADGES_MODE
+ )
+ }}
{% endif %}
{% if followed_users %}
<h2>{% trans count=followed_users|length %}Following {{count}} person{% pluralize count %}Following {{count}} people{% endtrans %}</h2>
- {{ macros.user_list(followed_users, profile_section = 'network') }}
+ {{
+ macros.user_list(
+ followed_users,
+ profile_section = 'network',
+ karma_mode = settings.KARMA_MODE,
+ badges_mode = settings.BADGES_MODE
+ )
+ }}
{% endif %}
{% else %}
{% if request.user == view_user %}
<p>{% trans %}Your network is empty. Would you like to follow someone? - Just visit their profiles and click "follow"{% endtrans %}</p>
{% else %}
- <p>{% trans username = view_user.username %}{{username}}'s network is empty{% endtrans %}</p>
+ <p>{% trans username = view_user.username|escape %}{{username}}'s network is empty{% endtrans %}</p>
{% endif %}
{% endif %}
{% endblock %}
diff --git a/askbot/skins/default/templates/user_profile/user_recent.html b/askbot/skins/default/templates/user_profile/user_recent.html
index cbd59202..8eae673d 100644
--- a/askbot/skins/default/templates/user_profile/user_recent.html
+++ b/askbot/skins/default/templates/user_profile/user_recent.html
@@ -1,4 +1,5 @@
{% extends "user_profile/user.html" %}
+{% from "macros.html" import timeago %}
<!-- user_recent.html -->
{% block profilesection %}
{% trans %}activity{% endtrans %}
@@ -7,31 +8,29 @@
<div style="padding-top:5px;font-size:13px;">
{% for act in activities %}
<div style="clear:both;line-height:20px" >
- <div style="width:180px;float:left">{{ act.time|diff_date(True) }}</div>
+ <div style="width:180px;float:left">{{ timeago(act.time) }}</div>
<div style="width:150px;float:left">
<span class="user-action-{{ act.type_id }}">{{ act.type }}</span>
</div>
<div style="float:left;overflow:hidden;">
{% if act.is_badge %}
- <a href="{{act.badge.get_absolute_url()}}" title="{{ act.badge.get_type_display() }} : {% trans description=act.badge.description %}{{description}}{% endtrans %}" class="medal"><span class="{{ act.badge.css_class }}">&#9679;</span>&nbsp;{% trans name=act.badge.name %}{{name}}{% endtrans %}</a>
- {% if act.related_object_type == 'question' %}{# question #}
- {% for question in questions %}{# could also create a new dict #}
- {% if question.question_id == act.obj %}
- (<a title="{{question.summary|collapse}}"
- href="{% url question question.question_id %}{{question.title|slugify}}">{% trans %}source{% endtrans %}</a>)
- {% endif %}
- {% endfor %}
- {% elif act.related_object_type == 'answer' %}{# answer #}
- {% for answer in answers %}{# could also create a new dict #}
- {% if answer.answer_id == act.obj %}
- (<a title="{{answer.text|collapse}}"
- href="{% url question answer.question_id %}{{answer.question_title|slugify}}#{{answer.answer_id}}">{% trans %}source{% endtrans %}</a>)
- {% endif %}
- {% endfor %}
- {% endif %}
+ <a href="{{act.badge.get_absolute_url()}}"
+ title="{{ act.badge.get_type_display() }} : {% trans description=act.badge.description %}{{description}}{% endtrans %}"
+ class="medal">
+ <span class="{{ act.badge.css_class }}">&#9679;</span>&nbsp;{% trans name=act.badge.name %}{{name}}{% endtrans %}
+ </a>
+ {% if act.content_object.post_type == 'question' %}
+ {% set question=act.content_object %}
+ (<a title="{{question.summary|collapse|escape}}"
+ href="{% url question question.id %}{{question.thread.title|slugify}}">{% trans %}source{% endtrans %}</a>)
+ {% elif act.content_object.post_type == 'answer' %}
+ {% set answer=act.content_object %}
+ (<a title="{{answer.text|collapse|escape}}"
+ href="{% url question answer.thread._question_post().id %}{{answer.thread.title|slugify}}#{{answer.id}}">{% trans %}source{% endtrans %}</a>)
+ {% endif %}
{% else %}
- <span class="post-type-{{ act.type_id }}"><a href="{{ act.title_link }}">{{ act.title|escape }}</a></span>
- {% if act.summary %}<span class="revision-summary">{{ act.summary|escape }}</span>{% endif %}
+ <span class="post-type-{{ act.type_id }}"><a href="{{ act.title_link }}">{{ act.title|escape }}</a></span>
+ {% if act.summary %}<span class="revision-summary">{{ act.summary|escape }}</span>{% endif %}
{% endif %}
<div style="height:5px"></div>
</div>
diff --git a/askbot/skins/default/templates/user_profile/user_reputation.html b/askbot/skins/default/templates/user_profile/user_reputation.html
index 0deb2b97..1cdf014a 100644
--- a/askbot/skins/default/templates/user_profile/user_reputation.html
+++ b/askbot/skins/default/templates/user_profile/user_reputation.html
@@ -1,4 +1,5 @@
{% extends "user_profile/user.html" %}
+{% from "macros.html" import timeago %}
<!-- user_reputation.html -->
{% block profilesection %}
{% trans %}karma{% endtrans %}
@@ -10,14 +11,14 @@
{% if view_user.id == user.id %}
<h2>{% trans %}Your karma change log.{% endtrans %}</h2>
{% else %}
- <h2>{% trans user_name=view_user.username %}{{user_name}}'s karma change log{% endtrans %}</h2>
+ <h2>{% trans user_name=view_user.username|escape %}{{user_name}}'s karma change log{% endtrans %}</h2>
{% endif %}
{% for rep in reputation %}
<p>
<span class="karma-gained">{{ rep.positive }}</span>
<span class="karma-lost">{{ rep.negative }}</span>
{{ rep.get_explanation_snippet() }}
- <span class="small">({{rep.reputed_at|diff_date}})</span>
+ <span class="small">({{ timeago(rep.reputed_at) }})</span>
<div class="clean"></div>
</p>
{% endfor %}
diff --git a/askbot/skins/default/templates/user_profile/user_stats.html b/askbot/skins/default/templates/user_profile/user_stats.html
index 2551015c..2ccc277f 100644
--- a/askbot/skins/default/templates/user_profile/user_stats.html
+++ b/askbot/skins/default/templates/user_profile/user_stats.html
@@ -1,159 +1,182 @@
{% extends "user_profile/user.html" %}
{% import "macros.html" as macros %}
+{% import "user_profile/macros.html" as user_profile_macros %}
<!-- user_stats.html -->
{% block profilesection %}
{% trans %}overview{% endtrans %}
{% endblock %}
- {% block usercontent %}
- {% include "user_profile/user_info.html" %}
- <a name="questions"></a>
- {% spaceless %}
- <h2>{% trans counter=question_count %}<span class="count">{{counter}}</span> Question{% pluralize %}<span class="count">{{counter}}</span> Questions{% endtrans %}</h2>
- {% endspaceless %}
+{% block usercontent %}
+ {% include "user_profile/user_info.html" %}
+ {% if settings.GROUPS_ENABLED %}
+ <div id="user-groups">
+ <h2>{% trans
+ username = view_user.username|escape
+ %}{{username}}'s groups{% endtrans %}
+ </h2>
+ <table id="groups-list">
+ {% for group in user_groups %}
+ <tr>
+ {{ macros.user_group(group, groups_membership_info[group.id]) }}
+ </tr>
+ {% endfor %}
+ </table>
+ <div class="clearfix"></div>
+ <a id="add-group">{% trans %}add group{% endtrans %}</a>
+ </div>
+ {% endif %}
+ <a name="questions"></a>
+ {% spaceless %}
+ <h2>{% trans counter=question_count %}<span class="count">{{counter}}</span> Question{% pluralize %}<span class="count">{{counter}}</span> Questions{% endtrans %}</h2>
+ {% endspaceless %}
{% include "user_profile/users_questions.html" %}
- <a name="answers"></a>
- {% spaceless %}
- <h2 style="clear:both;">{% trans counter=answered_questions|length %}<span class="count">{{counter}}</span> Answer{% pluralize %}<span class="count">{{counter}}</span> Answers{% endtrans %}</h2>
- {% endspaceless %}
- <div class="user-stats-table">
- {% for answered_question in answered_questions %}
- <div class="answer-summary">
- <a title="{{answered_question.summary|collapse}}"
- href="{% url question answered_question.id %}{{answered_question.title|slugify}}#{{answered_question.answer_id}}">
- <span class="answer-votes {% if answered_question.accepted %}answered-accepted{% endif %}"
- title="{% trans answer_score=answered_question.answer_score %}the answer has been voted for {{ answer_score }} times{% endtrans %} {% if answered_question.accepted %}{% trans %}this answer has been selected as correct{% endtrans %}{%endif%}">
- {{ answered_question.answer_score }}
- </span>
- </a>
- <div class="answer-link">
- {% spaceless %}
- <a href="{% url question answered_question.id %}{{answered_question.title|slugify}}#{{answered_question.answer_id}}">{{answered_question.title}}</a>
- {% endspaceless %}
- {% if answered_question.comment_count %}
- <span>
- {% trans comment_count=answered_question.comment_count %}({{comment_count}} comment){% pluralize %}the answer has been commented {{comment_count}} times{% endtrans %}
- </span>
- {% endif %}
- </div>
+ <a name="answers"></a>
+ {% spaceless %}
+ <h2 style="clear:both;"><span class="count">{{ top_answer_count }}</span> {% trans counter=top_answer_count %}Answer{% pluralize %}Answers{% endtrans %}</h2>
+ {% endspaceless %}
+ <div class="user-stats-table">
+ {% for top_answer in top_answers %}
+ <div class="answer-summary">
+ <a title="{{ top_answer.summary|collapse|escape }}"
+ href="{% url question top_answer.thread._question_post().id %}{{ top_answer.thread.title|slugify }}#{{ top_answer.id }}">
+ <span class="answer-votes {% if top_answer.accepted() %}answered-accepted{% endif %}"
+ title="{% trans answer_score=top_answer.score %}the answer has been voted for {{ answer_score }} times{% endtrans %} {% if top_answer.accepted() %}{% trans %}this answer has been selected as correct{% endtrans %}{%endif%}">
+ {{ top_answer.score }}
+ </span>
+ </a>
+ <div class="answer-link">
+ {% spaceless %}
+ <a href="{% url question top_answer.thread._question_post().id %}{{ top_answer.thread.title|slugify }}#{{top_answer.id}}">{{ top_answer.thread.title|escape }}</a>
+ {% endspaceless %}
+ {% if top_answer.comment_count > 0 %}
+ <span>
+ {% trans comment_count=top_answer.comment_count %}({{ comment_count }} comment){% pluralize %}the answer has been commented {{ comment_count }} times{% endtrans %}
+ </span>
+ {% endif %}
</div>
- {% endfor %}
</div>
- <br/>
- <a name="votes"></a>
- {% spaceless %}
- <h2>{% trans cnt=total_votes %}<span class="count">{{cnt}}</span> Vote{% pluralize %}<span class="count">{{cnt}}</span> Votes {% endtrans %}</h2>
- {% endspaceless %}
- <div class="user-stats-table">
- <table>
- <tr>
- <td width="60">
- <img style="cursor: default;" src="{{"/images/vote-arrow-up-on.png"|media}}" alt="{% trans %}thumb up{% endtrans %}" />
- <span title="{% trans %}user has voted up this many times{% endtrans %}" class="vote-count">{{up_votes}}</span>
- </td>
- <td width="60">
- <img style="cursor: default;" src="{{"/images/vote-arrow-down-on.png"|media}}" alt="{% trans %}thumb down{% endtrans %}" />
- <span title="{% trans %}user voted down this many times{% endtrans %}" class="vote-count">{{down_votes}}</span>
+ {% endfor %}
+ </div>
+ <br/>
+ <a name="votes"></a>
+ {% spaceless %}
+ <h2>{% trans cnt=total_votes %}<span class="count">{{cnt}}</span> Vote{% pluralize %}<span class="count">{{cnt}}</span> Votes {% endtrans %}</h2>
+ {% endspaceless %}
+ <div class="user-stats-table">
+ <table>
+ <tr>
+ <td width="60">
+ <img style="cursor: default;" src="{{"/images/vote-arrow-up-on.png"|media}}" alt="{% trans %}thumb up{% endtrans %}" />
+ <span title="{% trans %}user has voted up this many times{% endtrans %}" class="vote-count">{{up_votes}}</span>
+ </td>
+ <td width="60">
+ <img style="cursor: default;" src="{{"/images/vote-arrow-down-on.png"|media}}" alt="{% trans %}thumb down{% endtrans %}" />
+ <span title="{% trans %}user voted down this many times{% endtrans %}" class="vote-count">{{down_votes}}</span>
- </td>
- </tr>
- </table>
- </div>
- <a name="tags"></a>
- {% spaceless %}
- <h2>{% trans counter=user_tags|length %}<span class="count">{{counter}}</span> Tag{% pluralize %}<span class="count">{{counter}}</span> Tags{% endtrans %}</h2>
- {% endspaceless %}
- <div class="user-stats-table">
- <table class="tags">
- <tr>
- <td valign="top">
- <ul id="ab-user-tags" class="tags">
- {% for tag in user_tags %}
- <li>
- {{ macros.tag_widget(
- tag.name,
- html_tag = 'div',
- url_params =
- "author=" ~ view_user.id ~
- "&start_over=true",
- extra_content =
- '<span class="tag-number">&#215; ' ~
- tag.user_tag_usage_count|intcomma ~
- '</span>'
- )
- }}
- </li>
- {#
- {% if loop.index is divisibleby 10 %}
- </td>
- <td width="180" valign="top">
- {% endif %}
- #}
- {% endfor %}
+ </td>
+ </tr>
+ </table>
+ </div>
+ <a name="tags"></a>
+ {% spaceless %}
+ <h2>{% trans counter=user_tags|length %}<span class="count">{{counter}}</span> Tag{% pluralize %}<span class="count">{{counter}}</span> Tags{% endtrans %}</h2>
+ {% endspaceless %}
+ <div class="user-stats-table">
+ <table class="tags">
+ <tr>
+ <td valign="top">
+ <ul id="ab-user-tags" class="tags">
+ {% for tag in user_tags %}
+ <li>
+ {{ macros.tag_widget(
+ tag.name,
+ html_tag = 'div',
+ search_state = search_state,
+ truncate_long_tag = True,
+ extra_content =
+ '<span class="tag-number">&#215; ' ~
+ tag.user_tag_usage_count|intcomma ~
+ '</span>'
+ )
+ }}
+ </li>
+ {#
+ {% if loop.index is divisibleby 10 %}
+ </td>
+ <td width="180" valign="top">
+ {% endif %}
+ #}
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ {% if interesting_tag_names %}
+ {{ user_profile_macros.tag_selection(interesting_tag_names, 'interesting') }}
+ {% endif %}
+ {% if ignored_tag_names %}
+ {{ user_profile_macros.tag_selection(ignored_tag_names, 'ignored') }}
+ {% endif %}
+ {% if subscribed_tag_names %}
+ {{ user_profile_macros.tag_selection(subscribed_tag_names, 'subscribed') }}
+ {% endif %}
+ {% if settings.BADGES_MODE == 'public' %}
+ <a name="badges"></a>
+ {% spaceless %}
+ <h2>{% trans counter=total_badges %}<span class="count">{{counter}}</span> Badge{% pluralize %}<span class="count">{{counter}}</span> Badges{% endtrans %}</h2>
+ {% endspaceless %}
+ <div class="user-stats-table badges">
+ <table>
+ <tr>
+ <td style="line-height:35px">
+ {% for badge, badge_user_awards in badges %}
+ <a
+ href="{{badge.get_absolute_url()}}"
+ title="{% trans description=badge.description %}{{description}}{% endtrans %}"
+ class="medal"
+ ><span class="{{ badge.css_class }}">&#9679;</span>&nbsp;{% trans name=badge.name %}{{name}}{% endtrans %}
+ </a>&nbsp;
+ <span class="tag-number">&#215;
+ <span class="badge-context-toggle">{{ badge_user_awards|length|intcomma }}</span>
+ </span>
+ <ul id="badge-context-{{ badge.id }}" class="badge-context-list" style="display:none">
+ {% for award in badge_user_awards %}
+ {% if award.content_object_is_post %}
+ <li>
+ <a
+ title="{{ award.content_object.get_snippet()|collapse }}"
+ href="{{ award.content_object.get_absolute_url() }}"
+ >{% if award.content_type.post_type == 'answer' %}{% trans %}Answer to:{% endtrans %}{% endif %} {{ award.content_object.thread.title|escape }}</a>
+ </li>
+ {% endif %}
+ {% endfor %}
</ul>
- </td>
- </tr>
- </table>
- </div>
- <a name="badges"></a>
- {% spaceless %}
- <h2>{% trans counter=total_awards %}<span class="count">{{counter}}</span> Badge{% pluralize %}<span class="count">{{counter}}</span> Badges{% endtrans %}</h2>
- {% endspaceless %}
- <div class="user-stats-table badges">
- <table>
- <tr>
- <td style="line-height:35px">
- {% for badge in badges %}{# todo: translate badge name properly #}
- <a
- href="{{badge.get_absolute_url()}}"
- title="{% trans description=badge.description %}{{description}}{% endtrans %}"
- class="medal"
- ><span class="{{ badge.css_class }}">&#9679;</span>&nbsp;{% trans name=badge.name %}{{name}}{% endtrans %}
- </a>&nbsp;
- <span class="tag-number">&#215;
- <span class="badge-context-toggle">{{ badge.award_badge.count()|intcomma }}</span>
- </span>
- <ul id="badge-context-{{ badge.id }}" class="badge-context-list" style="display:none">
- {% for award in badge.award_badge.filter(user = view_user) %}
- {% if award.content_type in (question_type, answer_type) %}
- <li>
- <a
- title="{{ award.content_object.get_snippet()|collapse }}"
- href="{{ award.content_object.get_absolute_url() }}"
- >{% if award.content_type == answer_type %}{% trans %}Answer to:{% endtrans %}{% endif %} {{ award.content_object.get_origin_post().title }}</a>
- </li>
- {% endif %}
- {% endfor %}
- </ul>
- {% if loop.index is divisibleby 3 %}
- </td></tr>
- <tr><td style="line-height:35px">
- {% endif %}
- {% endfor %}
- </td>
- </tr>
- </table>
- </div>
+ {% if loop.index is divisibleby 3 %}
+ </td></tr>
+ <tr><td style="line-height:35px">
+ {% endif %}
+ {% endfor %}
+ </td>
+ </tr>
+ </table>
+ </div>
+ {% endif %}
{% endblock %}
{% block endjs %}
{{ super() }}
<script type="text/javascript">
+ askbot['urls']['join_or_leave_group'] = '{% url join_or_leave_group %}';
$(document).ready(function(){
- $('.badge-context-toggle').each(function(idx, elem){
- var context_list = $(elem).parent().next('ul');
- if (context_list.children().length > 0){
- $(elem).addClass('active');
- var toggle_display = function(){
- if (context_list.css('display') == 'none'){
- $('.badge-context-list').hide();{# hide all context lists #}
- context_list.show();
- } else {
- context_list.hide();
- }
- };
- $(elem).click(toggle_display);
- }
+ setup_badge_details_toggle();
+ $.each($('.group-join-btn'), function(idx, elem){
+ var group_join_btn = new GroupJoinButton();
+ group_join_btn.decorate($(elem));
});
});
</script>
+ <script type='text/javascript' src='{{"/js/tag_selector.js"|media}}'></script>
+ <script type="text/javascript">
+ askbot['urls']['questions'] = '{% url "questions" %}';
+ </script>
{% endblock %}
<!-- end user_stats.html -->
diff --git a/askbot/skins/default/templates/user_profile/user_tabs.html b/askbot/skins/default/templates/user_profile/user_tabs.html
index 1468a19a..c7df4187 100644
--- a/askbot/skins/default/templates/user_profile/user_tabs.html
+++ b/askbot/skins/default/templates/user_profile/user_tabs.html
@@ -17,23 +17,25 @@
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=network"
><span>{% trans %}network{% endtrans %}</span></a>
{% endif %}
+ {% if can_show_karma %}
<a id="reputation" {% if tab_name=="reputation" %}class="on"{% endif %}
- title="{% trans %}graph of user reputation{% endtrans %}"
+ title="{% trans %}Graph of user karma{% endtrans %}"
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=reputation"
- ><span>{% trans %}reputation history{% endtrans %}</span></a>
+ ><span>{% trans %}karma{% endtrans %}</span></a>
+ {% endif %}
<a id="favorites" {% if tab_name=="favorites" %}class="on"{% endif %}
title="{% trans %}questions that user is following{% endtrans %}"
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=favorites"
><span>{% trans %}followed questions{% endtrans %}</span></a>
<a id="recent" {% if tab_name=="recent" %}class="on"{% endif %}
- title="{% trans %}recent activity{% endtrans %}"
+ title="{% trans %}activity{% endtrans %}"
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=recent"
><span>{% trans %}activity{% endtrans %}</span></a>
{% if request.user == view_user or request.user|can_moderate_user(view_user) %}
<a id="votes" {% if tab_name=="votes" %}class="on"{% endif %}
title="{% trans %}user vote record{% endtrans %}"
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=votes"
- ><span>{% trans %}casted votes{% endtrans %}</span></a>
+ ><span>{% trans %}votes{% endtrans %}</span></a>
{% endif %}
{% if request.user == view_user or request.user|can_moderate_user(view_user) %}
<a id="email_subscriptions" {% if tab_name=="email_subscriptions" %}class="on"{% endif %}
@@ -47,6 +49,11 @@
href="{% url user_profile view_user.id, view_user.username|slugify %}?sort=moderation"
><span>{% trans %}moderation{% endtrans %}</span></a>
{% endif %}
+ {% if custom_tab_slug %}
+ <a id="{{ custom_tab_slug }}" {% if tab_name == custom_tab_slug %}class="on"{% endif %}
+ href="{% url user_profile view_user.id, view_user.username|slugify %}?sort={{ custom_tab_slug }}"
+ ><span>{{ custom_tab_name }}</span></a>
+ {% endif %}
</div>
</div>
<div class="clean"></div>
diff --git a/askbot/skins/default/templates/user_profile/user_votes.html b/askbot/skins/default/templates/user_profile/user_votes.html
index 5111a580..b5fc4560 100644
--- a/askbot/skins/default/templates/user_profile/user_votes.html
+++ b/askbot/skins/default/templates/user_profile/user_votes.html
@@ -1,4 +1,5 @@
{% extends "user_profile/user.html" %}
+{% from "macros.html" import timeago %}
<!-- user_votes.html -->
{% block profilesection %}
{% trans %}votes{% endtrans %}
@@ -7,7 +8,7 @@
<div style="padding-top:5px;font-size:13px;">
{% for vote in votes %}
<div style="clear:both;line-height:20px" >
- <div style="width:150px;float:left">{{vote.voted_at|diff_date(True)}}</div>
+ <div style="width:150px;float:left">{{ timeago(vote.voted_at) }}</div>
<div style="width:30px;float:left">
{% if vote.vote==1 %}
<img src="{{"/images/vote-arrow-up-on-new.png"|media}}" title="{% trans %}upvote{% endtrans %}">
diff --git a/askbot/skins/default/templates/user_profile/users_questions.html b/askbot/skins/default/templates/user_profile/users_questions.html
index 41809a62..128c6612 100644
--- a/askbot/skins/default/templates/user_profile/users_questions.html
+++ b/askbot/skins/default/templates/user_profile/users_questions.html
@@ -2,7 +2,7 @@
{% import "macros.html" as macros %}
<div class="user-stats-table">
{% for question in questions %}
- {{macros.question_summary(question, extra_class='narrow')}}
+ {{macros.question_summary(question.thread, question, extra_class='narrow', search_state=search_state)}}
{% endfor %}
</div>
<!-- end users_questions.html -->
diff --git a/askbot/skins/default/templates/users.html b/askbot/skins/default/templates/users.html
index 0502a6e5..5b963399 100644
--- a/askbot/skins/default/templates/users.html
+++ b/askbot/skins/default/templates/users.html
@@ -2,59 +2,141 @@
{% import "macros.html" as macros %}
<!-- users.html -->
{% block title %}{% spaceless %}{% trans %}Users{% endtrans %}{% endspaceless %}{% endblock %}
+{% block before_css %}
+ {% if group and request.user.is_authenticated() and request.user.is_administrator() %}
+ <link href="{{'/bootstrap/css/bootstrap.css'|media}}" rel="stylesheet" type="text/css" />
+ {% endif %}
+{% endblock %}
+{% block forestyle %}
+ <link rel="stylesheet" type="text/css" href="{{"/js/wmd/wmd.css"|media}}" />
+{% endblock %}
{% block content %}
-<h1 class="section-title">{% trans %}Users{% endtrans %}</h1>
-<div class="tabBar tabBar-user">
- <div class="tabsA">
- <span class="label">{% trans %}Sort by &raquo;{% endtrans %}</span>
- <a
- id="sort_reputation"
- href="{% url users %}?sort=reputation"
- {% if tab_id == 'reputation' %}class="on"{% endif %}
- title="{% trans %}see people with the highest reputation{% endtrans %}"
- ><span>{% trans %}reputation{% endtrans %}</span></a>
- <a
- id="sort_newest"
- href="{% url users %}?sort=newest"
- {% if tab_id == 'newest' %}class="on"{% endif %}
- class="off" title="{% trans %}see people who joined most recently{% endtrans %}"
- ><span>{% trans %}recent{% endtrans %}</span></a>
- <a
- id="sort_last"
- href="{% url users %}?sort=last"
- {% if tab_id == 'last' %}class="on"{% endif %}
- class="off" title="{% trans %}see people who joined the site first{% endtrans %}"
- ><span>{% trans %}oldest{% endtrans %}<span></a>
- <a
- id="sort_user"
- href="{% url users %}?sort=user"
- {% if tab_id == 'user' %}class="on"{% endif %}
- title="{% trans %}see people sorted by name{% endtrans %}"
- ><span>{% trans %}by username{% endtrans %}</span></a>
+<div id="content-header">
+ <h1 class="section-title">
+ {% if group %}
+ {% trans name = group.name|replace('-', ' ')|escape %}Users in group {{name}}{% endtrans %}
+ {% else %}
+ {% trans %}Users{% endtrans %}
+ {% endif %}
+ </h1>
+ <div class="tabBar">
+ <div class="tabsA">
+ <span class="label">{% trans %}Sort by &raquo;{% endtrans %}</span>
+ {% if settings.KARMA_MODE == 'public' %}
+ <a
+ id="sort_reputation"
+ href="{{ request.path }}?sort=reputation"
+ {% if tab_id == 'reputation' %}class="on"{% endif %}
+ title="{% trans %}see people with the highest reputation{% endtrans %}"
+ ><span>{% trans %}karma{% endtrans %}</span></a>
+ {% endif %}
+ <a
+ id="sort_newest"
+ href="{{ request.path }}?sort=newest"
+ {% if tab_id == 'newest' %}class="on"{% endif %}
+ class="off" title="{% trans %}see people who joined most recently{% endtrans %}"
+ ><span>{% trans %}recent{% endtrans %}</span></a>
+ <a
+ id="sort_last"
+ href="{{ request.path }}?sort=last"
+ {% if tab_id == 'last' %}class="on"{% endif %}
+ class="off" title="{% trans %}see people who joined the site first{% endtrans %}"
+ ><span>{% trans %}oldest{% endtrans %}<span></a>
+ <a
+ id="sort_user"
+ href="{{ request.path }}?sort=user"
+ {% if tab_id == 'user' %}class="on"{% endif %}
+ title="{% trans %}see people sorted by name{% endtrans %}"
+ ><span>{% trans %}by username{% endtrans %}</span></a>
+ </div>
</div>
+ <div class="clearfix"></div>
</div>
<div class="clean"></div>
-<p>
- {% if suser %}
- {% trans %}users matching query {{suser}}:{% endtrans %}
- {% endif %}
- {% if not users.object_list %}
- <span>{% trans %}Nothing found.{% endtrans %}</span>
- {% endif %}
-</p>
-{{ macros.user_list(users.object_list) }}
+{% if search_query %}
+ <p>{% trans %}users matching query {{search_query}}:{% endtrans %}</p>
+{% endif %}
+{% if not users.object_list %}
+ <p><span>{% trans %}Nothing found.{% endtrans %}</span></p>
+{% endif %}
+{{ macros.user_list(
+ users.object_list,
+ karma_mode = settings.KARMA_MODE, badges_mode = settings.BADGES_MODE
+ )
+}}
<div class="pager">
{{ macros.paginator(paginator_context) }}
</div>
{% endblock %}
+{% block sidebar %}
+ {% if group %}
+ {# this widget takes variables: group, user_can_join_group, user_is_group_member #}
+ {% include "widgets/group_info.html" %}
+ {% endif %}
+{% endblock %}
{% block endjs %}
+ <script type='text/javascript'>
+ var Attacklab = Attacklab || {};
+ Attacklab.wmd = 1;{# a trick to launch wmd manually #}
+ askbot['urls']['upload'] = '{% url upload %}';
+ askbot['urls']['load_tag_wiki_text'] = '{% url load_tag_wiki_text %}';
+ askbot['urls']['save_tag_wiki_text'] = '{% url save_tag_wiki_text %}';
+ askbot['urls']['save_group_logo_url'] = '{% url save_group_logo_url %}';
+ askbot['urls']['delete_group_logo_url'] = '{% url delete_group_logo %}';
+ askbot['urls']['join_or_leave_group'] = '{% url join_or_leave_group %}';
+ </script>
+ <script type="text/javascript" src='{{"/bootstrap/js/bootstrap.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/editor.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/wmd/showdown.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/wmd/wmd.js"|media}}'></script>
+ <script type='text/javascript' src='{{"/js/jquery.validate.min.js"|media}}'></script>
+ <script src='{{"/js/post.js"|media}}' type='text/javascript'></script>
<script type="text/javascript">
//todo move javascript out
- $().ready(function(){
- Hilite.exact = false;
- Hilite.elementid = "main-body";
- Hilite.debug_referrer = location.href;
- });
+ {% if settings.ENABLE_MATHJAX or settings.MARKUP_CODE_FRIENDLY %}
+ var codeFriendlyMarkdown = true;
+ {% else %}
+ var codeFriendlyMarkdown = false;
+ {% endif %}
+ {% if group and request.user.is_authenticated() %}
+ $().ready(function(){
+ var group_join_btn = new GroupJoinButton();
+ group_join_btn.decorate($('.group-join-btn'));
+ //setup WMD editor
+ if (askbot['data']['userIsAdminOrMod'] === true){
+ //todo: this is kind of Attacklab.init ... should not be here
+ Attacklab.wmd = function(){
+ Attacklab.loadEnv = function(){
+ var mergeEnv = function(env){
+ if(!env){
+ return;
+ }
+
+ for(var key in env){
+ Attacklab.wmd_env[key] = env[key];
+ }
+ };
+
+ mergeEnv(Attacklab.wmd_defaults);
+ mergeEnv(Attacklab.account_options);
+ mergeEnv(top["wmd_options"]);
+ Attacklab.full = true;
+
+ var defaultButtons = "bold italic link blockquote code image ol ul heading hr";
+ Attacklab.wmd_env.buttons = Attacklab.wmd_env.buttons || defaultButtons;
+ };
+ Attacklab.loadEnv();
+ };
+ Attacklab.wmd();
+ Attacklab.wmdBase();
+ var group_editor = new UserGroupProfileEditor();
+ group_editor.decorate($('#group-wiki-{{group.id}}'));
+ }
+ Hilite.exact = false;
+ Hilite.elementid = "main-body";
+ Hilite.debug_referrer = location.href;
+ });
+ {% endif %}
</script>
{% endblock %}
<!-- end users.html -->
diff --git a/askbot/skins/default/templates/widgets/answer_edit_tips.html b/askbot/skins/default/templates/widgets/answer_edit_tips.html
index 9cf0606e..1c2cdc60 100644
--- a/askbot/skins/default/templates/widgets/answer_edit_tips.html
+++ b/askbot/skins/default/templates/widgets/answer_edit_tips.html
@@ -1,15 +1,15 @@
<!-- template answer_edit_tips.html -->
<div class="box">
- <h2>{% trans %}answer tips{% endtrans %}</h2>
+ <h2>{% trans %}Tips{% endtrans %}</h2>
<div id="tips">
<ul >
- <li> <b>{% trans %}please make your answer relevant to this community{% endtrans %}</b>
+ <li> <b>{% trans %}give an answer interesting to this community{% endtrans %}</b>
</li>
<li>
{% trans %}try to give an answer, rather than engage into a discussion{% endtrans %}
</li>
<li>
- {% trans %}please try to provide details{% endtrans %}
+ {% trans %}provide enough details{% endtrans %}
</li>
<li>
{% trans %}be clear and concise{% endtrans %}
@@ -24,7 +24,7 @@
</div>
<div class="box">
- <h2>{% trans %}Markdown tips{% endtrans %}</h2>
+ <h2>{% trans %}Markdown basics{% endtrans %}</h2>
<ul>
{% if settings.MARKUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %}
<li>
diff --git a/askbot/skins/default/templates/widgets/ask_button.html b/askbot/skins/default/templates/widgets/ask_button.html
index 8240f0f4..31448b73 100644
--- a/askbot/skins/default/templates/widgets/ask_button.html
+++ b/askbot/skins/default/templates/widgets/ask_button.html
@@ -1,3 +1,6 @@
{% if active_tab != "ask" %}
- <a id="askButton" href="{% url ask %}">{% trans %}ask a question{% endtrans %}</a>
+ {% if not search_state %} {# get empty SearchState() if there's none #}
+ {% set search_state=search_state|get_empty_search_state %}
+ {% endif %}
+ <a id="askButton" href="{{ search_state.full_ask_url() }}">{% trans %}Ask Your Question{% endtrans %}</a>
{% endif %}
diff --git a/askbot/skins/default/templates/widgets/ask_form.html b/askbot/skins/default/templates/widgets/ask_form.html
index 18196d93..b8a5ce2c 100644
--- a/askbot/skins/default/templates/widgets/ask_form.html
+++ b/askbot/skins/default/templates/widgets/ask_form.html
@@ -4,17 +4,16 @@
<div id="askFormBar">
{% if not request.user.is_authenticated() %}
<p>{% trans %}login to post question info{% endtrans %}</p>
+<p>{% trans %}<span class=\"strong big\">You are welcome to start submitting your question anonymously</span>. When you submit the post, you will be redirected to the login/signup page. Your question will be saved in the current session and will be published after you log in. Login/signup process is very simple. Login takes about 30 seconds, initial signup takes a minute or less.{% endtrans %}</p>
{% else %}
{% if settings.EMAIL_VALIDATION %}
{% if not request.user.email_isvalid %}
- {% trans email=request.user.email %}must have valid {{email}} to post,
- see {{email_validation_faq_url}}
- {% endtrans %}
+ {% trans email=request.user.email %}<span class='strong big'>Looks like your email address, %(email)s has not yet been validated.</span> To post messages you must verify your email, please see <a href='%(email_validation_faq_url)s'>more details here</a>.<br>You can submit your question now and validate email after that. Your question will saved as pending meanwhile.{% endtrans %}
{% endif %}
{% endif %}
{% endif %}
<input id="id_title" class="questionTitleInput" name="title" autocomplete="off"
- value="{% if form.initial.title %}{{form.initial.title}}{% endif %}"/>
+ value="{% if form.initial.title %}{{form.initial.title|escape}}{% endif %}"/>
<span class="form-error">{{ form.title.errors }}</span>
</div>
<div class="title-desc">
@@ -39,9 +38,9 @@
{% endif %}
</div>
{% if not request.user.is_authenticated() %}
- <input type="submit" name="post_anon" value="{% trans %}Login/signup to post your question{% endtrans %}" class="submit" />
+ <input type="submit" name="post_anon" value="{% trans %}Login/Signup to Post{% endtrans %}" class="submit" />
{% else %}
- <input type="submit" name="post" value="{% trans %}Ask your question{% endtrans %}" class="submit" />
+ <input type="submit" name="post" value="{% trans %}Ask Your Question{% endtrans %}" class="submit" />
{% endif %}
<div class="clean"></div>
</form>
diff --git a/askbot/skins/default/templates/widgets/contributors.html b/askbot/skins/default/templates/widgets/contributors.html
index 14651f80..9aa357dd 100644
--- a/askbot/skins/default/templates/widgets/contributors.html
+++ b/askbot/skins/default/templates/widgets/contributors.html
@@ -1,4 +1,4 @@
-{% cache 600 "contributors" contributors search_tags scope sort query context.page context.page_size language_code %}
+{% cache 600 "contributors" contributors search_tags scope sort query context.page language_code %}
<div id="contrib-users" class="box">
<h2 class="contributorback">{% trans %}Contributors{% endtrans %}</h2>
{% spaceless %}
diff --git a/askbot/skins/default/templates/widgets/footer.html b/askbot/skins/default/templates/widgets/footer.html
index 14f18786..6eb3afc2 100644
--- a/askbot/skins/default/templates/widgets/footer.html
+++ b/askbot/skins/default/templates/widgets/footer.html
@@ -37,6 +37,8 @@
<div class="footer-links" >
<a href="{% url about %}">{% trans %}about{% endtrans %}</a><span class="link-separator"> |</span>
<a href="{% url faq %}">{% trans %}faq{% endtrans %}</a><span class="link-separator"> |</span>
+ <a href="{% url help %}" title="{% trans %}help{% endtrans %}">{% trans %}help{% endtrans %}</a>
+ <span class="link-separator"> |</span>
<a href="{% url privacy %}">{% trans %}privacy policy{% endtrans %}</a><span class="link-separator"> |</span>
{% spaceless %}
<a href=
diff --git a/askbot/skins/default/templates/widgets/group_info.html b/askbot/skins/default/templates/widgets/group_info.html
new file mode 100644
index 00000000..5d3a4c7f
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/group_info.html
@@ -0,0 +1,82 @@
+{% import "macros.html" as macros %}
+<div id="group-wiki-{{group.id}}" class="box group-wiki">
+ <h2>{% trans %}Group info{% endtrans %}</h2>
+ <img class="group-logo"
+ {% if group.group_profile.logo_url %}
+ src="{{ group.group_profile.logo_url }}"
+ {% else %}
+ style="display:none"
+ {% endif %}
+ />
+ <div class="content">
+ {% if group.tag_wiki %}
+ {{ group.tag_wiki.html }}
+ {% endif %}
+ </div>
+ <div class="clearfix"></div>
+ {{ macros.group_join_button(
+ group_id = group.id,
+ can_join = user_can_join_group,
+ is_member = user_is_group_member
+ )
+ }}
+ {% if request.user.is_authenticated() and request.user.is_administrator() %}
+ <div class="controls">
+ <a class="edit-description"
+ >{% trans %}edit description{% endtrans %}</a>
+ {% if group.group_profile.logo_url %}
+ <span>|</span>
+ <a class="change-logo"
+ >{% trans %}change logo{% endtrans %}</a>
+ <span>|</span>
+ <a class="delete-logo">{% trans %}delete logo{% endtrans %}</a>
+ {% else %}
+ <span>|</span>
+ <a class="change-logo"
+ >{% trans %}add logo{% endtrans %}</a>
+ {% endif %}
+ <br/>
+ {% if group_email_moderation_enabled %}
+ <input type="checkbox"
+ id="moderate-email"
+ {% if group.group_profile.moderate_email %}checked="checked"{% endif %}
+ data-toggle-url="{% url toggle_group_profile_property %}"
+ />
+ <label for="moderate-email">
+ {% trans %}moderate emailed questions{% endtrans %}
+ </label>
+ <br/>
+ {% endif %}
+ <input type="checkbox"
+ id="open-or-close-group"
+ {% if group.group_profile.is_open %}checked="checked"{% endif %}
+ data-toggle-url="{% url toggle_group_profile_property %}"
+ />
+ <label for="open-or-close-group">
+ {% trans %}anyone can join{% endtrans %}
+ </label>
+ <br/>
+ <a
+ id="preapproved-emails"
+ title="{% trans %}list of email addresses of pre-approved users{% endtrans %}"
+ data-object-id="{{group.group_profile.id}}"
+ data-model-name="GroupProfile"
+ data-property-name="preapproved_emails"
+ data-url="{% url edit_object_property_text %}"
+ data-editor-heading="{% trans %}List of preapproved email addresses{% endtrans %}"
+ data-help-text="{% trans %}Users with these email adderesses will be added to the group automatically.{% endtrans %}"
+ >{% trans %}edit preapproved emails{% endtrans %}</a>
+ <br/>
+ <a
+ id="preapproved-email-domains"
+ title="{% trans %}list of preapproved email address domain names{% endtrans %}"
+ data-object-id="{{group.group_profile.id}}"
+ data-model-name="GroupProfile"
+ data-property-name="preapproved_email_domains"
+ data-url="{% url edit_object_property_text %}"
+ data-editor-heading="{% trans %}List of preapproved email domain names{% endtrans %}"
+ data-help-text="{% trans %}Users whose email adderesses belong to these domains will be added to the group automatically.{% endtrans %}"
+ >{% trans %}edit preapproved email domains{% endtrans %}</a>
+ </div>
+ {% endif %}
+</div>
diff --git a/askbot/skins/default/templates/widgets/group_snippet.html b/askbot/skins/default/templates/widgets/group_snippet.html
new file mode 100644
index 00000000..e9364a7e
--- /dev/null
+++ b/askbot/skins/default/templates/widgets/group_snippet.html
@@ -0,0 +1,2 @@
+{% import "macros.html" as macros %}
+{{ macros.user_group(group) }}
diff --git a/askbot/skins/default/templates/widgets/header.html b/askbot/skins/default/templates/widgets/header.html
index d4e7d66a..52e528bc 100644
--- a/askbot/skins/default/templates/widgets/header.html
+++ b/askbot/skins/default/templates/widgets/header.html
@@ -7,7 +7,6 @@
<div class="content-wrapper">
<div id="userToolsNav">
{% include "widgets/user_navigation.html" %}
- {{settings.CUSTOM_HEADER}}
</div>
{% if settings.SHOW_LOGO %}
{% include "widgets/logo.html" %}
diff --git a/askbot/skins/default/templates/widgets/logo.html b/askbot/skins/default/templates/widgets/logo.html
index 6d4d86d2..1b251432 100644
--- a/askbot/skins/default/templates/widgets/logo.html
+++ b/askbot/skins/default/templates/widgets/logo.html
@@ -1,4 +1,5 @@
-<a id="logo" href="{% url questions %}?start_over=true"><img
+<a id="logo" href="{% url questions %}"><img
src="{{ settings.SITE_LOGO_URL|media }}"
title="{% trans %}back to home page{% endtrans %}"
- alt="{% trans site=settings.APP_SHORT_NAME %}{{site}} logo{% endtrans %}"/></a>
+ alt="{% trans site=settings.APP_SHORT_NAME %}{{site}} logo{% endtrans %}"/>
+</a>
diff --git a/askbot/skins/default/templates/widgets/meta_nav.html b/askbot/skins/default/templates/widgets/meta_nav.html
index b459b025..1b28c787 100644
--- a/askbot/skins/default/templates/widgets/meta_nav.html
+++ b/askbot/skins/default/templates/widgets/meta_nav.html
@@ -8,8 +8,18 @@
href="{% url users %}"
{% if active_tab == 'users' %}class="on"{% endif %}
>{% trans %}users{% endtrans %}</a>
+{% if settings.GROUPS_ENABLED %}
+<a
+ id="navGroups"
+ href="{% url groups %}"
+ {% if active_tab == 'groups' %}class="on"{% endif %}
+>{% trans %}groups{% endtrans %}
+</a>
+{% endif %}
+{% if settings.BADGES_MODE == 'public' %}
<a
id="navBadges"
href="{% url badges %}"
{% if active_tab == 'badges' %}class="on"{% endif %}
>{% trans %}badges{% endtrans %}</a>
+{% endif %}
diff --git a/askbot/skins/default/templates/widgets/question_edit_tips.html b/askbot/skins/default/templates/widgets/question_edit_tips.html
index 1270687f..842aa491 100644
--- a/askbot/skins/default/templates/widgets/question_edit_tips.html
+++ b/askbot/skins/default/templates/widgets/question_edit_tips.html
@@ -1,11 +1,11 @@
<!-- question_edit_tips.html -->
<div id ="tips" class="box">
- <h2>{% trans %}question tips{% endtrans %}</h2>
+ <h2>{% trans %}Tips{% endtrans %}</h2>
<ul>
- <li> <b>{% trans %}please ask a relevant question{% endtrans %}</b>
+ <li> <b>{% trans %}ask a question interesting to this community{% endtrans %}</b>
</li>
<li>
- {% trans %}please try provide enough details{% endtrans %}
+ {% trans %}provide enough details{% endtrans %}
</li>
<li>
{% trans %}be clear and concise{% endtrans %}
@@ -19,7 +19,7 @@
</div>
<div id="markdownHelp"class="box">
- <h2>{% trans %}Markdown tips{% endtrans %}</h2>
+ <h2>{% trans %}Markdown basics{% endtrans %}</h2>
<ul>
{% if settings.MARKDUP_CODE_FRIENDLY or settings.ENABLE_MATHJAX %}
<li>
diff --git a/askbot/skins/default/templates/widgets/question_summary.html b/askbot/skins/default/templates/widgets/question_summary.html
index 9c527140..5fd51e08 100644
--- a/askbot/skins/default/templates/widgets/question_summary.html
+++ b/askbot/skins/default/templates/widgets/question_summary.html
@@ -1,22 +1,22 @@
-{% from "macros.html" import user_country_flag, tag_list_widget %}
+{% from "macros.html" import user_country_flag, tag_list_widget, timeago %}
<div class="short-summary{% if extra_class %} {{extra_class}}{% endif %}" id="question-{{question.id}}">
<div class="counts">
<div class="views
- {% if question.view_count == 0 -%}
+ {% if thread.view_count == 0 -%}
no-views
{% else -%}
some-views
{%- endif -%}">
- <span class="item-count">{{question.view_count|humanize_counter}}</span>
+ <span class="item-count">{{thread.view_count|humanize_counter}}</span>
<div>
- {% trans cnt=question.view_count %}view{% pluralize %}views{% endtrans %}
+ {% trans cnt=thread.view_count %}view{% pluralize %}views{% endtrans %}
</div>
</div>
<div class="answers
- {% if question.answer_count == 0 -%}
+ {% if thread.answer_count == 0 -%}
no-answers
{% else -%}
- {%- if question.answer_accepted -%}
+ {%- if thread.accepted_answer_id -%} {# INFO: Use _id to not fetch the whole answer post #}
accepted
{%- else -%}
some-answers
@@ -24,9 +24,9 @@
{%- endif -%}">
<span
class="item-count"
- >{{question.answer_count|humanize_counter}}{% if question.answer_accepted%}{% endif %}</span>
+ >{{thread.answer_count|humanize_counter}}{% if thread.accepted_answer_id %}{% endif %}</span>
<div>
- {% trans cnt=question.answer_count %}answer{% pluralize %}answers{% endtrans %}
+ {% trans cnt=thread.answer_count %}answer{% pluralize %}answers{% endtrans %}
</div>
</div>
<div class="votes
@@ -40,19 +40,18 @@
{% trans cnt=question.score %}vote{% pluralize %}votes{% endtrans %}
</div>
</div>
-
<div style="clear:both"></div>
<div class="userinfo">
- <span class="relativetime" title="{{question.last_activity_at}}">{{ question.last_activity_at|diff_date }}</span>
+ {{ timeago(thread.last_activity_at) }}
{% if question.is_anonymous %}
- <span class="anonymous">{{ question.last_activity_by.get_anonymous_name() }}</span>
+ <span class="anonymous">{{ thread.last_activity_by.get_anonymous_name() }}</span>
{% else %}
- <a href="{% url user_profile question.last_activity_by.id, question.last_activity_by.username|slugify %}">{{question.last_activity_by.username}}</a>{{ user_country_flag(question.last_activity_by) }}
- {#{user_score_and_badge_summary(question.last_activity_by)}#}
+ <a href="{% url user_profile thread.last_activity_by.id, thread.last_activity_by.username|slugify %}">{{thread.last_activity_by.username|escape}}</a> {{ user_country_flag(thread.last_activity_by) }}
+ {#{user_score_and_badge_summary(thread.last_activity_by)}#}
{% endif %}
</div>
</div>
- <h2><a title="{{question.summary|escape}}" href="{{ question.get_absolute_url() }}">{{question.get_question_title()|escape}}</a></h2>
- {{ tag_list_widget(question.get_tag_names()) }}
+ <h2><a title="{{question.summary|escape}}" href="{{ question.get_absolute_url(thread=thread) }}">{{thread.get_title(question)|escape}}</a></h2>
+ {{ tag_list_widget(thread.get_tag_names(), search_state=search_state) }}
</div>
diff --git a/askbot/skins/default/templates/widgets/scope_nav.html b/askbot/skins/default/templates/widgets/scope_nav.html
index 5f7cc158..a6bda630 100644
--- a/askbot/skins/default/templates/widgets/scope_nav.html
+++ b/askbot/skins/default/templates/widgets/scope_nav.html
@@ -1,11 +1,14 @@
{% if active_tab != "ask" %}
+ {% if not search_state %} {# get empty SearchState() if there's none #}
+ {% set search_state=search_state|get_empty_search_state %}
+ {% endif %}
<a class="scope-selector {% if scope == 'all' %}on{% endif %}"
- href="{% url questions %}?scope=all" title="{% trans %}see all questions{% endtrans %}">{% trans %}ALL{% endtrans %}</a>
+ href="{{ search_state.change_scope('all').full_url() }}" title="{% trans %}see all questions{% endtrans %}">{% trans %}ALL{% endtrans %}</a>
<a class="scope-selector {% if scope == 'unanswered' %}on{% endif %}"
- href="{% url questions %}?scope=unanswered&amp;sort=answers-asc" title="{% trans %}see unanswered questions{% endtrans %}">{% trans %}UNANSWERED{% endtrans %}</a>
+ href="{{ search_state.change_scope('unanswered').change_sort('answers-asc').full_url() }}" title="{% trans %}see unanswered questions{% endtrans %}">{% trans %}UNANSWERED{% endtrans %}</a>
{% if request.user.is_authenticated() %}
- <a class="scope-selector {% if scope == 'favorite' %}on{% endif %}"
- href="{% url questions %}?scope=favorite" title="{% trans %}see your followed questions{% endtrans %}">{% trans %}FOLLOWED{% endtrans %}</a>
+ <a class="scope-selector {% if scope == 'favorite' %}on{% endif %}"
+ href="{{ search_state.change_scope('favorite').full_url() }}" title="{% trans %}see your followed questions{% endtrans %}">{% trans %}FOLLOWED{% endtrans %}</a>
{% endif %}
{% else %}
<div class="scope-selector ask-message">{% trans %}Please ask your question here{% endtrans %}</div>
diff --git a/askbot/skins/default/templates/widgets/user_list.html b/askbot/skins/default/templates/widgets/user_list.html
index 7874946b..e51abc5b 100644
--- a/askbot/skins/default/templates/widgets/user_list.html
+++ b/askbot/skins/default/templates/widgets/user_list.html
@@ -7,8 +7,14 @@
<div class="user">
<ul>
<li class="thumb">{{ gravatar(user, 32) }}</li>
- <li><a href="{% url user_profile user.id, user.username|slugify %}{% if profile_section %}?sort={{profile_section}}{% endif %}">{{user.username}}</a>{{ user_country_flag(user) }}</li>
- <li>{{ user_score_and_badge_summary(user) }}</li>
+ <li><a href="{% url user_profile user.id, user.username|slugify %}{% if profile_section %}?sort={{profile_section}}{% endif %}">{{user.username|escape}}</a>{{ user_country_flag(user) }}</li>
+ <li>{{
+ user_score_and_badge_summary(
+ user,
+ karma_mode = karma_mode,
+ badges_mode = badges_mode
+ )
+ }}</li>
</ul>
</div>
{% if loop.index is divisibleby 7 %}
diff --git a/askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html b/askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html
index 121ae48f..efc59c55 100644
--- a/askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html
+++ b/askbot/skins/default/templates/widgets/user_long_score_and_badge_summary.html
@@ -1,21 +1,25 @@
+{%- if karma_mode != 'hidden' -%}
<a class="user-micro-info"
href="{{user.get_absolute_url()}}?sort=reputation"
>{% trans %}karma:{% endtrans %} {{user.reputation}}</a>
-{%- if user.gold or user.silver or user.bronze %}
-<a class="user-micro-info"
- href="{{user.get_absolute_url()}}#badges"
-><span title="{{user.get_badge_summary}}">{% trans %}badges:{% endtrans %}
- {% if user.gold %}
- <span class='badge1'>&#9679;</span>
- <span class="badgecount">{{user.gold}}</span>
- {% endif %}
- {% if user.silver %}
- <span class='badge2'>&#9679;</span>
- <span class="badgecount">{{user.silver}}</span>
- {% endif %}
- {% if user.bronze %}
- <span class='badge3'>&#9679;</span>
- <span class="badgecount">{{user.bronze}}</span>
+{%- endif -%}
+{% if badges_mode == 'public' %}
+ {%- if user.gold or user.silver or user.bronze %}
+ <a class="user-micro-info"
+ href="{{user.get_absolute_url()}}#badges"
+ ><span title="{{user.get_badge_summary}}">{% trans %}badges:{% endtrans %}
+ {% if user.gold %}
+ <span class='badge1'>&#9679;</span>
+ <span class="badgecount">{{user.gold}}</span>
+ {% endif %}
+ {% if user.silver %}
+ <span class='badge2'>&#9679;</span>
+ <span class="badgecount">{{user.silver}}</span>
+ {% endif %}
+ {% if user.bronze %}
+ <span class='badge3'>&#9679;</span>
+ <span class="badgecount">{{user.bronze}}</span>
+ {%- endif -%}
+ </span></a>
{%- endif -%}
-</span></a>
{%- endif -%}
diff --git a/askbot/skins/default/templates/widgets/user_navigation.html b/askbot/skins/default/templates/widgets/user_navigation.html
index ae892c39..717cd7ee 100644
--- a/askbot/skins/default/templates/widgets/user_navigation.html
+++ b/askbot/skins/default/templates/widgets/user_navigation.html
@@ -1,15 +1,25 @@
-{% if request.user.is_authenticated() %}
- <a href="{{ request.user.get_absolute_url() }}">{{ request.user.username }}</a>
+{%- if request.user.is_authenticated() -%}
+ <a href="{{ request.user.get_absolute_url() }}">{{ request.user.username|escape }}</a>
<span class="user-info">
{{ macros.inbox_link(request.user) }}
{{ macros.moderation_items_link(request.user, moderation_items) }}
- ({{ macros.user_long_score_and_badge_summary(user) }})
+ {%-
+ if settings.KARMA_MODE != 'hidden' and settings.BADGES_MODE != 'hidden'
+ -%}
+ ({{ macros.user_long_score_and_badge_summary(
+ user,
+ badges_mode = settings.BADGES_MODE
+ )
+ }})
+ {%- endif -%}
</span>
- <a href="{{ settings.LOGOUT_URL }}?next={{ settings.LOGOUT_REDIRECT_URL }}">{% trans %}logout{% endtrans %}</a>
-{% else %}
- <a href="{{ settings.LOGIN_URL }}?next={{request.path|clean_login_url}}">{% trans %}login{% endtrans %}</a>
+ {% if settings.USE_ASKBOT_LOGIN_SYSTEM %}
+ <a href="{{ settings.LOGOUT_URL }}?next={{ settings.LOGOUT_REDIRECT_URL }}">{% trans %}sign out{% endtrans %}</a>
+ {% endif %}
+{% elif settings.USE_ASKBOT_LOGIN_SYSTEM %}
+ <a href="{{ settings.LOGIN_URL }}?next={{request.path|clean_login_url}}">{% trans %}Hi, there! Please sign in{% endtrans %}</a>
{% endif %}
-
{% if request.user.is_authenticated() and request.user.is_administrator() %}
<a href="{% url site_settings %}">{% trans %}settings{% endtrans %}</a>
{% endif %}
+ <a href="{% url "help" %}" title="{% trans %}help{% endtrans %}">{% trans %}help{% endtrans %}</a>
diff --git a/askbot/skins/default/templates/widgets/user_score_and_badge_summary.html b/askbot/skins/default/templates/widgets/user_score_and_badge_summary.html
index 2f55b202..80d140db 100644
--- a/askbot/skins/default/templates/widgets/user_score_and_badge_summary.html
+++ b/askbot/skins/default/templates/widgets/user_score_and_badge_summary.html
@@ -1,19 +1,23 @@
+{% if karma_mode == 'public' %}
<span class="reputation-score"
title="{{user.get_karma_summary}}"
>{{user.reputation}}</span>
-{% if user.gold or user.silver or user.bronze %}
-<span title="{{user.get_badge_summary}}">
- {% if user.gold %}
- <span class='badge1'>&#9679;</span>
- <span class="badgecount">{{user.gold}}</span>
- {% endif %}
- {% if user.silver %}
- <span class='badge2'>&#9679;</span>
- <span class="badgecount">{{user.silver}}</span>
- {% endif %}
- {% if user.bronze %}
- <span class='badge3'>&#9679;</span>
- <span class="badgecount">{{user.bronze}}</span>
+{% endif %}
+{% if badges_mode == 'public' %}
+ {% if user.gold or user.silver or user.bronze %}
+ <span title="{{user.get_badge_summary}}">
+ {% if user.gold %}
+ <span class='badge1'>&#9679;</span>
+ <span class="badgecount">{{user.gold}}</span>
+ {% endif %}
+ {% if user.silver %}
+ <span class='badge2'>&#9679;</span>
+ <span class="badgecount">{{user.silver}}</span>
+ {% endif %}
+ {% if user.bronze %}
+ <span class='badge3'>&#9679;</span>
+ <span class="badgecount">{{user.bronze}}</span>
+ {% endif %}
+ </span>
{% endif %}
-</span>
{% endif %}
diff --git a/askbot/skins/loaders.py b/askbot/skins/loaders.py
index 24559512..aa3188e9 100644
--- a/askbot/skins/loaders.py
+++ b/askbot/skins/loaders.py
@@ -129,4 +129,3 @@ def render_text_into_skin(text, data, request):
skin = get_skin(request)
template = skin.from_string(text)
return template.render(context)
-
diff --git a/askbot/skins/utils.py b/askbot/skins/utils.py
index da3a8a06..0c0dba9c 100644
--- a/askbot/skins/utils.py
+++ b/askbot/skins/utils.py
@@ -3,7 +3,7 @@
the lookup resolution process for templates and media works as follows:
* look up item in selected skin
* if not found look in 'default'
-* raise an exception
+* raise an exception
"""
import os
import logging
@@ -56,7 +56,7 @@ def get_available_skins(selected=None):
#re-insert default as a last item
skins['default'] = default_dir
- skins['common'] = common_dir
+ skins['common'] = common_dir
return skins
@@ -71,9 +71,11 @@ def get_path_to_skin(skin):
return skin_dirs.get(skin, None)
def get_skin_choices():
- """returns a tuple for use as a set of
+ """returns a tuple for use as a set of
choices in the form"""
- skin_names = list(reversed(get_available_skins().keys()))
+ available_skins = get_available_skins().keys()
+ available_skins.remove('common')
+ skin_names = list(reversed(available_skins))
return zip(skin_names, skin_names)
def resolve_skin_for_media(media=None, preferred_skin = None):
@@ -86,7 +88,7 @@ def resolve_skin_for_media(media=None, preferred_skin = None):
def get_media_url(url, ignore_missing = False):
"""returns url prefixed with the skin name
- of the first skin that contains the file
+ of the first skin that contains the file
directories are searched in this order:
askbot_settings.ASKBOT_DEFAULT_SKIN, then 'default', then 'commmon'
if file is not found - returns None
@@ -98,18 +100,23 @@ def get_media_url(url, ignore_missing = False):
#before = datetime.datetime.now()
url = urllib.unquote(unicode(url))
while url[0] == '/': url = url[1:]
+
+ #a hack allowing urls media stored on external locations to
+ #just pass through unchanged
+ if url.startswith('http://') or url.startswith('https://'):
+ return url
#todo: handles case of multiple skin directories
#if file is in upfiles directory, then give that
url_copy = url
- if url_copy.startswith(django_settings.ASKBOT_UPLOADED_FILES_URL):
+ if url_copy.startswith(django_settings.MEDIA_URL[1:]):
file_path = url_copy.replace(
- django_settings.ASKBOT_UPLOADED_FILES_URL,
+ django_settings.MEDIA_URL[1:],
'',
1
)
file_path = os.path.join(
- django_settings.ASKBOT_FILE_UPLOAD_DIR,
+ django_settings.MEDIA_ROOT,
file_path
)
if os.path.isfile(file_path):
@@ -149,14 +156,9 @@ def get_media_url(url, ignore_missing = False):
logging.critical(log_message)
return None
- url = use_skin + '/media/' + url
- url = '///' + django_settings.ASKBOT_URL + 'm/' + url
- url = os.path.normpath(url).replace(
- '\\', '/'
- ).replace(
- '///', '/'
- )
-
+ url = django_settings.STATIC_URL + use_skin + '/media/' + url
+ url = os.path.normpath(url).replace('\\', '/')
+
if resource_revision:
url += '?v=%d' % resource_revision
@@ -174,12 +176,15 @@ def update_media_revision(skin = None):
if skin in get_skin_choices():
skin_path = get_path_to_skin(skin)
else:
- raise MediaNotFound('Skin %s not found' % skin)
+ raise MediaNotFound('Skin %s not found' % skin)
else:
skin = 'default'
skin_path = get_path_to_skin(askbot_settings.ASKBOT_DEFAULT_SKIN)
- media_dirs = [os.path.join(skin_path, 'media'),]
+ media_dirs = [
+ os.path.join(skin_path, 'media'),
+ os.path.join(get_path_to_skin('common'), 'media')#we always use common
+ ]
if skin != 'default':
#we have default skin as parent of the custom skin
@@ -190,6 +195,5 @@ def update_media_revision(skin = None):
if current_hash != askbot_settings.MEDIA_RESOURCE_REVISION_HASH:
askbot_settings.update('MEDIA_RESOURCE_REVISION', resource_revision + 1)
- askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash)
+ askbot_settings.update('MEDIA_RESOURCE_REVISION_HASH', current_hash)
logging.debug('MEDIA_RESOURCE_REVISION changed')
- askbot_settings.MEDIA_RESOURCE_REVISION
diff --git a/askbot/startup_procedures.py b/askbot/startup_procedures.py
index 9c962f2a..0fec6d5f 100644
--- a/askbot/startup_procedures.py
+++ b/askbot/startup_procedures.py
@@ -9,22 +9,62 @@ the main function is run_startup_tests
"""
import sys
import os
-from django.db import transaction
+import re
+import urllib
+import askbot
+import south
+from django.db import transaction, connection
from django.conf import settings as django_settings
from django.core.exceptions import ImproperlyConfigured
from askbot.utils.loading import load_module
+from askbot.utils.functions import enumerate_string_list
+from urlparse import urlparse
PREAMBLE = """\n
************************
* *
* Askbot self-test *
* *
-************************"""
+************************\n
+"""
+
+FOOTER = """\n
+If necessary, type ^C (Ctrl-C) to stop the program.
+"""
+
+class AskbotConfigError(ImproperlyConfigured):
+ """Prints an error with a preamble and possibly a footer"""
+ def __init__(self, error_message):
+ msg = PREAMBLE + error_message
+ if sys.__stdin__.isatty():
+ #print footer only when askbot is run from the shell
+ msg += FOOTER
+ super(AskbotConfigError, self).__init__(msg)
def askbot_warning(line):
"""prints a warning with the nice header, but does not quit"""
print >> sys.stderr, PREAMBLE + '\n' + line
+def print_errors(error_messages, header = None, footer = None):
+ """if there is one or more error messages,
+ raise ``class:AskbotConfigError`` with the human readable
+ contents of the message
+ * ``header`` - text to show above messages
+ * ``footer`` - text to show below messages
+ """
+ if len(error_messages) == 0:
+ return
+ if len(error_messages) > 1:
+ error_messages = enumerate_string_list(error_messages)
+
+ message = ''
+ if header: message += header + '\n'
+ message += 'Please attend to the following:\n\n'
+ message += '\n\n'.join(error_messages)
+ if footer:
+ message += '\n\n' + footer
+ raise AskbotConfigError(message)
+
def format_as_text_tuple_entries(items):
"""prints out as entries or tuple containing strings
ready for copy-pasting into say django settings file"""
@@ -35,7 +75,7 @@ def format_as_text_tuple_entries(items):
# *validate emails in settings.py
def test_askbot_url():
"""Tests the ASKBOT_URL setting for the
- well-formedness and raises the ImproperlyConfigured
+ well-formedness and raises the :class:`AskbotConfigError`
exception, if the setting is not good.
"""
url = django_settings.ASKBOT_URL
@@ -45,21 +85,21 @@ def test_askbot_url():
pass
else:
msg = 'setting ASKBOT_URL must be of string or unicode type'
- raise ImproperlyConfigured(msg)
+ raise AskbotConfigError(msg)
if url == '/':
msg = 'value "/" for ASKBOT_URL is invalid. '+ \
'Please, either make ASKBOT_URL an empty string ' + \
'or a non-empty path, ending with "/" but not ' + \
'starting with "/", for example: "forum/"'
- raise ImproperlyConfigured(msg)
+ raise AskbotConfigError(msg)
else:
try:
assert(url.endswith('/'))
except AssertionError:
msg = 'if ASKBOT_URL setting is not empty, ' + \
'it must end with /'
- raise ImproperlyConfigured(msg)
+ raise AskbotConfigError(msg)
try:
assert(not url.startswith('/'))
except AssertionError:
@@ -69,62 +109,72 @@ def test_askbot_url():
def test_middleware():
"""Checks that all required middleware classes are
installed in the django settings.py file. If that is not the
- case - raises an ImproperlyConfigured exception.
+ case - raises an AskbotConfigError exception.
"""
- required_middleware = (
+ required_middleware = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware',
'askbot.middleware.forum_mode.ForumModeMiddleware',
- 'askbot.middleware.pagesize.QuestionsPageSizeMiddleware',
'askbot.middleware.cancel.CancelActionMiddleware',
'django.middleware.transaction.TransactionMiddleware',
- 'askbot.middleware.view_log.ViewLogMiddleware',
- )
+ ]
if 'debug_toolbar' in django_settings.INSTALLED_APPS:
- required_middleware += (
+ required_middleware.append(
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
-
- installed_middleware_set = set(django_settings.MIDDLEWARE_CLASSES)
- missing_middleware_set = set(required_middleware) - installed_middleware_set
-
- if missing_middleware_set:
- error_message = """\n\nPlease add the following middleware (listed after this message)
+ required_middleware.extend([
+ 'askbot.middleware.view_log.ViewLogMiddleware',
+ 'askbot.middleware.spaceless.SpacelessMiddleware',
+ ])
+ found_middleware = [x for x in django_settings.MIDDLEWARE_CLASSES
+ if x in required_middleware]
+ if found_middleware != required_middleware:
+ # either middleware is out of order or it's missing an item
+ missing_middleware_set = set(required_middleware) - set(found_middleware)
+ middleware_text = ''
+ if missing_middleware_set:
+ error_message = """\n\nPlease add the following middleware (listed after this message)
to the MIDDLEWARE_CLASSES variable in your site settings.py file.
-The order the middleware records may be important, please take a look at the example in
+The order the middleware records is important, please take a look at the example in
https://github.com/ASKBOT/askbot-devel/blob/master/askbot/setup_templates/settings.py:\n\n"""
- middleware_text = format_as_text_tuple_entries(missing_middleware_set)
- raise ImproperlyConfigured(PREAMBLE + error_message + middleware_text)
+ middleware_text = format_as_text_tuple_entries(missing_middleware_set)
+ else:
+ # middleware is out of order
+ error_message = """\n\nPlease check the order of middleware closely.
+The order the middleware records is important, please take a look at the example in
+https://github.com/ASKBOT/askbot-devel/blob/master/askbot/setup_templates/settings.py
+for the correct order.\n\n"""
+ raise AskbotConfigError(error_message + middleware_text)
#middleware that was used in the past an now removed
- canceled_middleware = (
- 'askbot.deps.recaptcha_django.middleware.ReCaptchaMiddleware',
- )
- #'debug_toolbar.middleware.DebugToolbarMiddleware',
-
- remove_middleware_set = set(canceled_middleware) \
- & installed_middleware_set
- if remove_middleware_set:
+ canceled_middleware = [
+ 'askbot.deps.recaptcha_django.middleware.ReCaptchaMiddleware'
+ ]
+
+ invalid_middleware = [x for x in canceled_middleware
+ if x in django_settings.MIDDLEWARE_CLASSES]
+ if invalid_middleware:
error_message = """\n\nPlease remove the following middleware entries from
the list of MIDDLEWARE_CLASSES in your settings.py - these are not used any more:\n\n"""
- middleware_text = format_as_text_tuple_entries(remove_middleware_set)
- raise ImproperlyConfigured(PREAMBLE + error_message + middleware_text)
+ middleware_text = format_as_text_tuple_entries(invalid_middleware)
+ raise AskbotConfigError(error_message + middleware_text)
-def try_import(module_name, pypi_package_name):
+def try_import(module_name, pypi_package_name, short_message = False):
"""tries importing a module and advises to install
A corresponding Python package in the case import fails"""
try:
load_module(module_name)
except ImportError, error:
- message = 'Error: ' + unicode(error)
+ message = 'Error: ' + unicode(error)
message += '\n\nPlease run: >pip install %s' % pypi_package_name
- message += '\n\nTo install all the dependencies at once, type:'
- message += '\npip install -r askbot_requirements.txt\n'
- message += '\nType ^C to quit.'
- raise ImproperlyConfigured(message)
+ if short_message == False:
+ message += '\n\nTo install all the dependencies at once, type:'
+ message += '\npip install -r askbot_requirements.txt'
+ message += '\n\nType ^C to quit.'
+ raise AskbotConfigError(message)
def test_modules():
"""tests presence of required modules"""
@@ -134,26 +184,17 @@ def test_modules():
def test_postgres():
"""Checks for the postgres buggy driver, version 2.4.2"""
- if hasattr(django_settings, 'DATABASE_ENGINE'):
- if django_settings.DATABASE_ENGINE in ('postgresql_psycopg2',):
- try:
- import psycopg2
- version = psycopg2.__version__.split(' ')[0].split('.')
- if version == ['2', '4', '2']:
- raise ImproperlyConfigured(
- 'Please install psycopg2 version 2.4.1,\n version 2.4.2 has a bug'
- )
- elif version > ['2', '4', '2']:
- pass #don't know what to do
- else:
- pass #everythin is ok
- except ImportError:
- #Using mysql not a problem
- pass
+ if 'postgresql_psycopg2' in askbot.get_database_engine_name():
+ import psycopg2
+ version = psycopg2.__version__.split(' ')[0].split('.')
+ if version == ['2', '4', '2']:
+ raise AskbotConfigError(
+ 'Please install psycopg2 version 2.4.1,\n version 2.4.2 has a bug'
+ )
+ elif version > ['2', '4', '2']:
+ pass #don't know what to do
else:
- pass #using other thing than postgres
- else:
- pass #TODO: test new django dictionary databases
+ pass #everythin is ok
def test_encoding():
"""prints warning if encoding error is not UTF-8"""
@@ -170,7 +211,7 @@ def test_template_loader():
loader that used to send a warning"""
old_template_loader = 'askbot.skins.loaders.load_template_source'
if old_template_loader in django_settings.TEMPLATE_LOADERS:
- raise ImproperlyConfigured(PREAMBLE + \
+ raise AskbotConfigError(
"\nPlease change: \n"
"'askbot.skins.loaders.load_template_source', to\n"
"'askbot.skins.loaders.filesystem_load_template_source',\n"
@@ -188,7 +229,7 @@ def test_celery():
if broker_backend is None:
if broker_transport is None:
- raise ImproperlyConfigured(PREAMBLE + \
+ raise AskbotConfigError(
"\nPlease add\n"
'BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"\n'
"or other valid value to your settings.py file"
@@ -198,7 +239,7 @@ def test_celery():
return
if broker_backend != broker_transport:
- raise ImproperlyConfigured(PREAMBLE + \
+ raise AskbotConfigError(
"\nPlease rename setting BROKER_BACKEND to BROKER_TRANSPORT\n"
"in your settings.py file\n"
"If you have both in your settings.py - then\n"
@@ -206,11 +247,22 @@ def test_celery():
)
if hasattr(django_settings, 'BROKER_BACKEND') and not hasattr(django_settings, 'BROKER_TRANSPORT'):
- raise ImproperlyConfigured(PREAMBLE + \
+ raise AskbotConfigError(
"\nPlease rename setting BROKER_BACKEND to BROKER_TRANSPORT\n"
"in your settings.py file"
)
+def test_media_url():
+ """makes sure that setting `MEDIA_URL`
+ has leading slash"""
+ media_url = django_settings.MEDIA_URL
+ #todo: add proper url validation to MEDIA_URL setting
+ if not (media_url.startswith('/') or media_url.startswith('http')):
+ raise AskbotConfigError(
+ "\nMEDIA_URL parameter must be a unique url on the site\n"
+ "and must start with a slash - e.g. /media/ or http(s)://"
+ )
+
class SettingsTester(object):
"""class to test contents of the settings.py file"""
@@ -228,14 +280,25 @@ class SettingsTester(object):
self.requirements = requirements
- def test_setting(self, name, value = None, message = None):
+ def test_setting(self, name,
+ value = None, message = None,
+ test_for_absence = False,
+ replace_hint = None
+ ):
"""if setting does is not present or if the value != required_value,
adds an error message
"""
- if not hasattr(self.settings, name):
- self.messages.append(message)
- elif value and getattr(self.settings, name) != value:
- self.messages.append(message)
+ if test_for_absence:
+ if hasattr(self.settings, name):
+ if replace_hint:
+ value = getattr(self.settings, name)
+ message += replace_hint % value
+ self.messages.append(message)
+ else:
+ if not hasattr(self.settings, name):
+ self.messages.append(message)
+ elif value and getattr(self.settings, name) != value:
+ self.messages.append(message)
def run(self):
for setting_name in self.requirements:
@@ -244,12 +307,211 @@ class SettingsTester(object):
**self.requirements[setting_name]
)
if len(self.messages) != 0:
- raise ImproperlyConfigured(
- PREAMBLE +
- '\n\nTime to do some maintenance of your settings.py:\n\n* ' +
+ raise AskbotConfigError(
+ '\n\nTime to do some maintenance of your settings.py:\n\n* ' +
'\n\n* '.join(self.messages)
)
+def test_staticfiles():
+ """tests configuration of the staticfiles app"""
+ errors = list()
+ import django
+ django_version = django.VERSION
+ if django_version[0] == 1 and django_version[1] < 3:
+ staticfiles_app_name = 'staticfiles'
+ wrong_staticfiles_app_name = 'django.contrib.staticfiles'
+ try_import('staticfiles', 'django-staticfiles')
+ import staticfiles
+ if staticfiles.__version__[0] != 1:
+ raise AskbotConfigError(
+ 'Please use the newest available version of '
+ 'django-staticfiles app, type\n'
+ 'pip install --upgrade django-staticfiles'
+ )
+ if not hasattr(django_settings, 'STATICFILES_STORAGE'):
+ raise AskbotConfigError(
+ 'Configure STATICFILES_STORAGE setting as desired, '
+ 'a reasonable default is\n'
+ "STATICFILES_STORAGE = 'staticfiles.storage.StaticFilesStorage'"
+ )
+ else:
+ staticfiles_app_name = 'django.contrib.staticfiles'
+ wrong_staticfiles_app_name = 'staticfiles'
+
+ if staticfiles_app_name not in django_settings.INSTALLED_APPS:
+ errors.append(
+ 'Add to the INSTALLED_APPS section of your settings.py:\n'
+ " '%s'," % staticfiles_app_name
+ )
+ if wrong_staticfiles_app_name in django_settings.INSTALLED_APPS:
+ errors.append(
+ 'Remove from the INSTALLED_APPS section of your settings.py:\n'
+ " '%s'," % wrong_staticfiles_app_name
+ )
+ static_url = django_settings.STATIC_URL or ''
+ if static_url is None or str(static_url).strip() == '':
+ errors.append(
+ 'Add STATIC_URL setting to your settings.py file. '
+ 'The setting must be a url at which static files '
+ 'are accessible.'
+ )
+ url = urlparse(static_url).path
+ if not (url.startswith('/') and url.endswith('/')):
+ #a simple check for the url
+ errors.append(
+ 'Path in the STATIC_URL must start and end with the /.'
+ )
+ if django_settings.ADMIN_MEDIA_PREFIX != static_url + 'admin/':
+ errors.append(
+ 'Set ADMIN_MEDIA_PREFIX as: \n'
+ " ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'"
+ )
+
+ askbot_root = os.path.dirname(askbot.__file__)
+ skin_dir = os.path.abspath(os.path.join(askbot_root, 'skins'))
+
+ # django_settings.STATICFILES_DIRS can have strings or tuples
+ staticfiles_dirs = [d[1] if isinstance(d, tuple) else d
+ for d in django_settings.STATICFILES_DIRS]
+ if skin_dir not in map(os.path.abspath, staticfiles_dirs):
+ errors.append(
+ 'Add to STATICFILES_DIRS list of your settings.py file:\n'
+ " '%s'," % skin_dir
+ )
+ extra_skins_dir = getattr(django_settings, 'ASKBOT_EXTRA_SKINS_DIR', None)
+ if extra_skins_dir is not None:
+ if not os.path.isdir(extra_skins_dir):
+ errors.append(
+ 'Directory specified with settning ASKBOT_EXTRA_SKINS_DIR '
+ 'must exist and contain your custom skins for askbot.'
+ )
+ if extra_skins_dir not in staticfiles_dirs:
+ errors.append(
+ 'Add ASKBOT_EXTRA_SKINS_DIR to STATICFILES_DIRS entry in '
+ 'your settings.py file.\n'
+ 'NOTE: it might be necessary to move the line with '
+ 'ASKBOT_EXTRA_SKINS_DIR just above STATICFILES_DIRS.'
+ )
+
+ if django_settings.STATICFILES_STORAGE == \
+ 'django.contrib.staticfiles.storage.StaticFilesStorage':
+ if os.path.dirname(django_settings.STATIC_ROOT) == '':
+ #static root is needed only for local storoge of
+ #the static files
+ raise AskbotConfigError(
+ 'Specify the static files directory '
+ 'with setting STATIC_ROOT'
+ )
+
+ if errors:
+ errors.append(
+ 'Run command (after fixing the above errors)\n'
+ ' python manage.py collectstatic\n'
+ )
+
+
+ print_errors(errors)
+ if django_settings.STATICFILES_STORAGE == \
+ 'django.contrib.staticfiles.storage.StaticFilesStorage':
+
+ if not os.path.isdir(django_settings.STATIC_ROOT):
+ askbot_warning(
+ 'Please run command\n\n'
+ ' python manage.py collectstatic'
+
+ )
+
+def test_csrf_cookie_domain():
+ """makes sure that csrf cookie domain setting is acceptable"""
+ #todo: maybe use the same steps to clean domain name
+ csrf_cookie_domain = django_settings.CSRF_COOKIE_DOMAIN
+ if csrf_cookie_domain is None or str(csrf_cookie_domain.strip()) == '':
+ raise AskbotConfigError(
+ 'Please add settings CSRF_COOKIE_DOMAN and CSRF_COOKIE_NAME '
+ 'settings - both are required. '
+ 'CSRF_COOKIE_DOMAIN must match the domain name of yor site, '
+ 'without the http(s):// prefix and without the port number.\n'
+ 'Examples: \n'
+ " CSRF_COOKIE_DOMAIN = '127.0.0.1'\n"
+ " CSRF_COOKIE_DOMAIN = 'example.com'\n"
+ )
+ if csrf_cookie_domain == 'localhost':
+ raise AskbotConfigError(
+ 'Please do not use value "localhost" for the setting '
+ 'CSRF_COOKIE_DOMAIN\n'
+ 'instead use 127.0.0.1, a real IP '
+ 'address or domain name.'
+ '\nThe value must match the network location you type in the '
+ 'web browser to reach your site.'
+ )
+ if re.match(r'https?://', csrf_cookie_domain):
+ raise AskbotConfigError(
+ 'please remove http(s):// prefix in the CSRF_COOKIE_DOMAIN '
+ 'setting'
+ )
+ if ':' in csrf_cookie_domain:
+ raise AskbotConfigError(
+ 'Please do not use port number in the CSRF_COOKIE_DOMAIN '
+ 'setting'
+ )
+
+def test_settings_for_test_runner():
+ """makes sure that debug toolbar is disabled when running tests"""
+ errors = list()
+ if 'debug_toolbar' in django_settings.INSTALLED_APPS:
+ errors.append(
+ 'When testing - remove debug_toolbar from INSTALLED_APPS'
+ )
+ if 'debug_toolbar.middleware.DebugToolbarMiddleware' in \
+ django_settings.MIDDLEWARE_CLASSES:
+ errors.append(
+ 'When testing - remove debug_toolbar.middleware.DebugToolbarMiddleware '
+ 'from MIDDLEWARE_CLASSES'
+ )
+ print_errors(errors)
+
+
+def test_avatar():
+ """if "avatar" is in the installed apps,
+ checks that the module is actually installed"""
+ if 'avatar' in django_settings.INSTALLED_APPS:
+ try_import('Image', 'PIL', short_message = True)
+ try_import(
+ 'avatar',
+ '-e git+git://github.com/ericflo/django-avatar.git#egg=avatar',
+ short_message = True
+ )
+
+def test_custom_user_profile_tab():
+ setting_name = 'ASKBOT_CUSTOM_USER_PROFILE_TAB'
+ tab_settings = getattr(django_settings, setting_name, None)
+ if tab_settings:
+ if not isinstance(tab_settings, dict):
+ print "Setting %s must be a dictionary!!!" % setting_name
+
+ name = tab_settings.get('NAME', None)
+ slug = tab_settings.get('SLUG', None)
+ func_name = tab_settings.get('CONTENT_GENERATOR', None)
+
+ errors = list()
+ if (name is None) or (not(isinstance(name, basestring))):
+ errors.append("%s['NAME'] must be a string" % setting_name)
+ if (slug is None) or (not(isinstance(slug, str))):
+ errors.append("%s['SLUG'] must be an ASCII string" % setting_name)
+
+ if urllib.quote_plus(slug) != slug:
+ errors.append(
+ "%s['SLUG'] must be url safe, make it simple" % setting_name
+ )
+
+ try:
+ func = load_module(func_name)
+ except ImportError:
+ errors.append("%s['CONTENT_GENERATOR'] must be a dotted path to a function" % setting_name)
+ header = 'Custom user profile tab is configured incorrectly in your settings.py file'
+ footer = 'Please carefully read about adding a custom user profile tab.'
+ print_errors(errors, header = header, footer = footer)
+
def run_startup_tests():
"""function that runs
all startup tests, mainly checking settings config so far
@@ -263,6 +525,9 @@ def run_startup_tests():
#test_postgres()
test_middleware()
test_celery()
+ #test_csrf_cookie_domain()
+ test_staticfiles()
+ test_avatar()
settings_tester = SettingsTester({
'CACHE_MIDDLEWARE_ANONYMOUS_ONLY': {
'value': True,
@@ -278,16 +543,34 @@ def run_startup_tests():
'where you want to send users after they log in\n'
'a reasonable default is\n'
'LOGIN_REDIRECT_URL = ASKBOT_URL'
+ },
+ 'ASKBOT_FILE_UPLOAD_DIR': {
+ 'test_for_absence': True,
+ 'message': 'Please replace setting ASKBOT_FILE_UPLOAD_DIR ',
+ 'replace_hint': "with MEDIA_ROOT = '%s'"
+ },
+ 'ASKBOT_UPLOADED_FILES_URL': {
+ 'test_for_absence': True,
+ 'message': 'Please replace setting ASKBOT_UPLOADED_FILES_URL ',
+ 'replace_hint': "with MEDIA_URL = '/%s'"
+ },
+ 'RECAPTCHA_USE_SSL': {
+ 'value': True,
+ 'message': 'Please add: RECAPTCHA_USE_SSL = True'
}
})
settings_tester.run()
+ test_media_url()
+ if 'manage.py test' in ' '.join(sys.argv):
+ test_settings_for_test_runner()
+ test_custom_user_profile_tab()
@transaction.commit_manually
def run():
"""runs all the startup procedures"""
try:
run_startup_tests()
- except ImproperlyConfigured, error:
+ except AskbotConfigError, error:
transaction.rollback()
print error
sys.exit(1)
diff --git a/askbot/tasks.py b/askbot/tasks.py
index 465465ef..da07477b 100644
--- a/askbot/tasks.py
+++ b/askbot/tasks.py
@@ -17,13 +17,81 @@ That is the reason for having two types of methods here:
* celery tasks - shells that reconstitute the necessary ORM
objects and call the base methods
"""
+import sys
+import traceback
+
from django.contrib.contenttypes.models import ContentType
+from django.template import Context
+from django.utils.translation import ugettext as _
from celery.decorators import task
-from askbot.models import Activity
-from askbot.models import User
+from askbot.conf import settings as askbot_settings
+from askbot import const
+from askbot import mail
+from askbot.models import Activity, Post, Thread, User, ReplyAddress
from askbot.models import send_instant_notifications_about_activity_in_post
-
-@task(ignore_results = True)
+from askbot.models.badges import award_badges_signal
+
+# TODO: Make exceptions raised inside record_post_update_celery_task() ...
+# ... propagate upwards to test runner, if only CELERY_ALWAYS_EAGER = True
+# (i.e. if Celery tasks are not deferred but executed straight away)
+
+@task(ignore_result = True)
+def notify_author_of_published_revision_celery_task(revision):
+ #todo: move this to ``askbot.mail`` module
+ #for answerable email only for now, because
+ #we don't yet have the template for the read-only notification
+ if askbot_settings.REPLY_BY_EMAIL:
+ #generate two reply codes (one for edit and one for addition)
+ #to format an answerable email or not answerable email
+ reply_options = {
+ 'user': revision.author,
+ 'post': revision.post,
+ 'reply_action': 'append_content'
+ }
+ append_content_address = ReplyAddress.objects.create_new(
+ **reply_options
+ ).as_email_address()
+ reply_options['reply_action'] = 'replace_content'
+ replace_content_address = ReplyAddress.objects.create_new(
+ **reply_options
+ ).as_email_address()
+
+ #populate template context variables
+ reply_code = append_content_address + ',' + replace_content_address
+ if revision.post.post_type == 'question':
+ mailto_link_subject = revision.post.thread.title
+ else:
+ mailto_link_subject = _('An edit for my answer')
+ #todo: possibly add more mailto thread headers to organize messages
+
+ prompt = _('To add to your post EDIT ABOVE THIS LINE')
+ reply_separator_line = const.SIMPLE_REPLY_SEPARATOR_TEMPLATE % prompt
+ data = {
+ 'site_name': askbot_settings.APP_SHORT_NAME,
+ 'post': revision.post,
+ 'author_email_signature': revision.author.email_signature,
+ 'replace_content_address': replace_content_address,
+ 'reply_separator_line': reply_separator_line,
+ 'mailto_link_subject': mailto_link_subject,
+ 'reply_code': reply_code
+ }
+
+ #load the template
+ from askbot.skins.loaders import get_template
+ template = get_template('email/notify_author_about_approved_post.html')
+ #todo: possibly add headers to organize messages in threads
+ headers = {'Reply-To': append_content_address}
+ #send the message
+ mail.send_mail(
+ subject_line = _('Your post at %(site_name)s is now published') % data,
+ body_text = template.render(Context(data)),
+ recipient_list = [revision.author.email,],
+ related_object = revision,
+ activity_type = const.TYPE_ACTIVITY_EMAIL_UPDATE_SENT,
+ headers = headers
+ )
+
+@task(ignore_result = True)
def record_post_update_celery_task(
post_id,
post_content_type_id,
@@ -40,15 +108,20 @@ def record_post_update_celery_task(
newly_mentioned_users = User.objects.filter(
id__in = newly_mentioned_user_id_list
)
-
- record_post_update(
- post = post,
- updated_by = updated_by,
- newly_mentioned_users = newly_mentioned_users,
- timestamp = timestamp,
- created = created,
- diff = diff
- )
+ try:
+ record_post_update(
+ post = post,
+ updated_by = updated_by,
+ newly_mentioned_users = newly_mentioned_users,
+ timestamp = timestamp,
+ created = created,
+ diff = diff
+ )
+ except Exception:
+ # HACK: exceptions from Celery job don;t propagate upwards to Django test runner
+ # so at least le't sprint tracebacks
+ print >>sys.stderr, traceback.format_exc()
+ raise
def record_post_update(
post = None,
@@ -73,12 +146,12 @@ def record_post_update(
#todo: take into account created == True case
(activity_type, update_object) = post.get_updated_activity_data(created)
- if post.post_type != 'comment':
+ if post.is_comment():
+ #it's just a comment!
+ summary = post.text
+ else:
#summary = post.get_latest_revision().summary
summary = diff
- else:
- #it's just a comment!
- summary = post.comment
update_activity = Activity(
user = updated_by,
@@ -97,6 +170,7 @@ def record_post_update(
recipients = post.get_response_receivers(
exclude_list = [updated_by, ]
)
+
update_activity.add_recipients(recipients)
#create new mentions
@@ -119,6 +193,10 @@ def record_post_update(
for user in (set(recipients) | set(newly_mentioned_users)):
user.update_response_counts()
+ #shortcircuit if the email alerts are disabled
+ if askbot_settings.ENABLE_EMAIL_ALERTS == False:
+ return
+
#todo: weird thing is that only comments need the recipients
#todo: debug these calls and then uncomment in the repo
#argument to this call
@@ -138,3 +216,38 @@ def record_post_update(
post = post,
recipients = notification_subscribers,
)
+
+
+@task(ignore_result = True)
+def record_question_visit(
+ question_post = None,
+ user = None,
+ update_view_count = False):
+ """celery task which records question visit by a person
+ updates view counter, if necessary,
+ and awards the badges associated with the
+ question visit
+ """
+ #1) maybe update the view count
+ #question_post = Post.objects.filter(
+ # id = question_post_id
+ #).select_related('thread')[0]
+ if update_view_count:
+ question_post.thread.increase_view_count()
+
+ if user.is_anonymous():
+ return
+
+ #2) question view count per user and clear response displays
+ #user = User.objects.get(id = user_id)
+ if user.is_authenticated():
+ #get response notifications
+ user.visit_question(question_post)
+
+ #3) send award badges signal for any badges
+ #that are awarded for question views
+ award_badges_signal.send(None,
+ event = 'view_question',
+ actor = user,
+ context_object = question_post,
+ )
diff --git a/askbot/templatetags/extra_filters.py b/askbot/templatetags/extra_filters.py
deleted file mode 100644
index ffdfd9d8..00000000
--- a/askbot/templatetags/extra_filters.py
+++ /dev/null
@@ -1,158 +0,0 @@
-from django import template
-from django.core import exceptions as django_exceptions
-from django.utils.translation import ugettext as _
-from askbot import exceptions as askbot_exceptions
-from askbot import auth
-from askbot.conf import settings as askbot_settings
-from askbot.utils.slug import slugify
-
-register = template.Library()
-
-@register.filter
-def collapse(input):
- input = unicode(input)
- return ' '.join(input.split())
-
-slugify = register.filter(slugify)
-
-def make_template_filter_from_permission_assertion(
- assertion_name = None,
- filter_name = None,
- allowed_exception = None
- ):
- """a decorator-like function that will create a True/False test from
- permission assertion
- """
- def filter_function(user, post):
-
- if askbot_settings.ALWAYS_SHOW_ALL_UI_FUNCTIONS:
- return True
-
- if user.is_anonymous():
- return False
-
- assertion = getattr(user, assertion_name)
- if allowed_exception:
- try:
- assertion(post)
- return True
- except allowed_exception:
- return True
- except django_exceptions.PermissionDenied:
- return False
- else:
- try:
- assertion(post)
- return True
- except django_exceptions.PermissionDenied:
- return False
-
- register.filter(filter_name, filter_function)
- return filter_function
-
-
-@register.filter
-def can_moderate_user(user, other_user):
- if user.is_authenticated() and user.can_moderate_user(other_user):
- return True
- return False
-
-can_flag_offensive = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_flag_offensive',
- filter_name = 'can_flag_offensive',
- allowed_exception = askbot_exceptions.DuplicateCommand
- )
-
-can_post_comment = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_post_comment',
- filter_name = 'can_post_comment'
- )
-
-can_close_question = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_close_question',
- filter_name = 'can_close_question'
- )
-
-can_delete_comment = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_delete_comment',
- filter_name = 'can_delete_comment'
- )
-
-#this works for questions, answers and comments
-can_delete_post = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_delete_post',
- filter_name = 'can_delete_post'
- )
-
-can_reopen_question = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_reopen_question',
- filter_name = 'can_reopen_question'
- )
-
-can_edit_post = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_edit_post',
- filter_name = 'can_edit_post'
- )
-
-can_retag_question = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_retag_question',
- filter_name = 'can_retag_question'
- )
-
-can_accept_best_answer = make_template_filter_from_permission_assertion(
- assertion_name = 'assert_can_accept_best_answer',
- filter_name = 'can_accept_best_answer'
- )
-
-@register.filter
-def can_see_offensive_flags(user, post):
- """Determines if a User can view offensive flag counts.
- there is no assertion like this User.assert_can...
- so all of the code is here
-
- user can see flags on own posts
- otherwise enough rep is required
- or being a moderator or administrator
-
- suspended or blocked users cannot see flags
- """
- if user.is_authenticated():
- if user == post.get_owner():
- return True
- if user.reputation >= askbot_settings.MIN_REP_TO_VIEW_OFFENSIVE_FLAGS:
- return True
- elif user.is_administrator() or user.is_moderator():
- return True
- else:
- return False
- else:
- return False
-
-@register.filter
-def cnprog_intword(number):
- try:
- if 1000 <= number < 10000:
- string = str(number)[0:1]
- return '<span class="thousand">%sk</span>' % string
- else:
- return number
- except:
- return number
-
-@register.filter
-def humanize_counter(number):
- if number == 0:
- return _('no items in counter')
- elif number >= 1000:
- number = number/1000
- s = '%.1f' % number
- if s.endswith('.0'):
- return s[:-2] + 'k'
- else:
- return s + 'k'
- else:
- return str(number)
-
-@register.filter
-def absolute_value(number):
- return abs(number)
diff --git a/askbot/templatetags/extra_filters_jinja.py b/askbot/templatetags/extra_filters_jinja.py
index f4e0a5ee..3643e3c9 100644
--- a/askbot/templatetags/extra_filters_jinja.py
+++ b/askbot/templatetags/extra_filters_jinja.py
@@ -1,6 +1,8 @@
import datetime
+import pytz
import re
import time
+import urllib
from coffin import template as coffin_template
from django.core import exceptions as django_exceptions
from django.utils.translation import ugettext as _
@@ -9,10 +11,11 @@ from django.template import defaultfilters
from django.core.urlresolvers import reverse, resolve
from django.http import Http404
from askbot import exceptions as askbot_exceptions
-from askbot import auth
from askbot.conf import settings as askbot_settings
+from django.conf import settings as django_settings
from askbot.skins import utils as skin_utils
from askbot.utils import functions
+from askbot.utils import url_utils
from askbot.utils.slug import slugify
from askbot.shims.django_shims import ResolverMatch
@@ -33,6 +36,28 @@ def absolutize_urls_func(text):
return url_re4.sub(replacement, text)
absolutize_urls = register.filter(absolutize_urls_func)
+TIMEZONE_STR = pytz.timezone(
+ django_settings.TIME_ZONE
+ ).localize(
+ datetime.datetime.now()
+ ).strftime('%z')
+
+@register.filter
+def add_tz_offset(datetime_object):
+ return str(datetime_object) + ' ' + TIMEZONE_STR
+
+@register.filter
+def safe_urlquote(text, quote_plus = False):
+ if quote_plus:
+ return urllib.quote_plus(text.encode('utf8'))
+ else:
+ return urllib.quote(text.encode('utf8'))
+
+@register.filter
+def strip_path(url):
+ """removes path part of the url"""
+ return url_utils.strip_path(url)
+
@register.filter
def clean_login_url(url):
"""pass through, unless user was originally on the logout page"""
@@ -46,6 +71,21 @@ def clean_login_url(url):
return reverse('index')
@register.filter
+def transurl(url):
+ """translate url, when appropriate and percent-
+ escape it, that's important, othervise it won't match
+ the urlconf"""
+ try:
+ url.decode('ascii')
+ except UnicodeError:
+ raise ValueError(
+ u'string %s is not good for url - must be ascii' % url
+ )
+ if getattr(django_settings, 'ASKBOT_TRANSLATE_URL', False):
+ return urllib.quote(_(url).encode('utf-8'))
+ return url
+
+@register.filter
def country_display_name(country_code):
country_dict = dict(countries.COUNTRIES)
return country_dict[country_code]
@@ -59,6 +99,7 @@ def collapse(input):
input = unicode(input)
return ' '.join(input.split())
+
@register.filter
def split(string, separator):
return string.split(separator)
@@ -165,6 +206,7 @@ def can_moderate_user(user, other_user):
can_flag_offensive = make_template_filter_from_permission_assertion(
assertion_name = 'assert_can_flag_offensive',
filter_name = 'can_flag_offensive',
+ allowed_exception = askbot_exceptions.DuplicateCommand
)
can_remove_flag_offensive = make_template_filter_from_permission_assertion(
@@ -223,7 +265,6 @@ can_accept_best_answer = make_template_filter_from_permission_assertion(
filter_name = 'can_accept_best_answer'
)
-@register.filter
def can_see_offensive_flags(user, post):
"""Determines if a User can view offensive flag counts.
there is no assertion like this User.assert_can...
@@ -246,22 +287,14 @@ def can_see_offensive_flags(user, post):
return False
else:
return False
-
-@register.filter
-def cnprog_intword(number):
- try:
- if 1000 <= number < 10000:
- string = str(number)[0:1]
- return '<span class="thousand">%sk</span>' % string
- else:
- return number
- except:
- return number
+# Manual Jinja filter registration this leaves can_see_offensive_flags() untouched (unwrapped by decorator),
+# which is needed by some tests
+register.filter('can_see_offensive_flags', can_see_offensive_flags)
@register.filter
def humanize_counter(number):
if number == 0:
- return _('no items in counter')
+ return _('no')
elif number >= 1000:
number = number/1000
s = '%.1f' % number
@@ -272,6 +305,12 @@ def humanize_counter(number):
else:
return str(number)
+
@register.filter
def absolute_value(number):
return abs(number)
+
+@register.filter
+def get_empty_search_state(unused):
+ from askbot.search.state_manager import SearchState
+ return SearchState.get_empty()
diff --git a/askbot/templatetags/extra_tags.py b/askbot/templatetags/extra_tags.py
index c7491901..dc9da5fc 100644
--- a/askbot/templatetags/extra_tags.py
+++ b/askbot/templatetags/extra_tags.py
@@ -82,56 +82,6 @@ def tag_font_size(max_size, min_size, current_size):
return int(MIN_FONTSIZE + round((MAX_FONTSIZE - MIN_FONTSIZE) * weight))
-#todo: this function may need to be removed to simplify the paginator functionality
-LEADING_PAGE_RANGE_DISPLAYED = TRAILING_PAGE_RANGE_DISPLAYED = 5
-LEADING_PAGE_RANGE = TRAILING_PAGE_RANGE = 4
-NUM_PAGES_OUTSIDE_RANGE = 1
-ADJACENT_PAGES = 2
-@register.inclusion_tag("paginator.html")
-def cnprog_paginator(context):
- """
- custom paginator tag
- Inspired from http://blog.localkinegrinds.com/2007/09/06/digg-style-pagination-in-django/
- """
- if (context["is_paginated"]):
- " Initialize variables "
- in_leading_range = in_trailing_range = False
- pages_outside_leading_range = pages_outside_trailing_range = range(0)
-
- if (context["pages"] <= LEADING_PAGE_RANGE_DISPLAYED):
- in_leading_range = in_trailing_range = True
- page_numbers = [n for n in range(1, context["pages"] + 1) if n > 0 and n <= context["pages"]]
- elif (context["page"] <= LEADING_PAGE_RANGE):
- in_leading_range = True
- page_numbers = [n for n in range(1, LEADING_PAGE_RANGE_DISPLAYED + 1) if n > 0 and n <= context["pages"]]
- pages_outside_leading_range = [n + context["pages"] for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)]
- elif (context["page"] > context["pages"] - TRAILING_PAGE_RANGE):
- in_trailing_range = True
- page_numbers = [n for n in range(context["pages"] - TRAILING_PAGE_RANGE_DISPLAYED + 1, context["pages"] + 1) if n > 0 and n <= context["pages"]]
- pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)]
- else:
- page_numbers = [n for n in range(context["page"] - ADJACENT_PAGES, context["page"] + ADJACENT_PAGES + 1) if n > 0 and n <= context["pages"]]
- pages_outside_leading_range = [n + context["pages"] for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)]
- pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)]
-
- extend_url = context.get('extend_url', '')
- return {
- "base_url": context["base_url"],
- "is_paginated": context["is_paginated"],
- "previous": context["previous"],
- "has_previous": context["has_previous"],
- "next": context["next"],
- "has_next": context["has_next"],
- "page": context["page"],
- "pages": context["pages"],
- "page_numbers": page_numbers,
- "in_leading_range" : in_leading_range,
- "in_trailing_range" : in_trailing_range,
- "pages_outside_leading_range": pages_outside_leading_range,
- "pages_outside_trailing_range": pages_outside_trailing_range,
- "extend_url" : extend_url
- }
-
class IncludeJinja(template.Node):
"""http://www.mellowmorning.com/2010/08/24/"""
@@ -162,3 +112,4 @@ def include_jinja(parser, token):
raise template.TemplateSyntaxError('file name must be quoted')
return IncludeJinja(filename, request_var)
+
diff --git a/askbot/tests/__init__.py b/askbot/tests/__init__.py
index 49546e8e..1b25e064 100644
--- a/askbot/tests/__init__.py
+++ b/askbot/tests/__init__.py
@@ -14,3 +14,4 @@ from askbot.tests.templatefilter_tests import *
from askbot.tests.markup_test import *
from askbot.tests.misc_tests import *
from askbot.tests.post_model_tests import *
+from askbot.tests.reply_by_email_tests import *
diff --git a/askbot/tests/badge_tests.py b/askbot/tests/badge_tests.py
index fdb9d626..b66eadcc 100644
--- a/askbot/tests/badge_tests.py
+++ b/askbot/tests/badge_tests.py
@@ -1,4 +1,5 @@
import datetime
+from django.conf import settings as django_settings
from django.test.client import Client
from askbot.tests.utils import AskbotTestCase
from askbot.conf import settings
@@ -67,7 +68,8 @@ class BadgeTests(AskbotTestCase):
self.assert_have_badge(badge_key, recipient = self.u2, expected_count = 1)
#post another question and check that there are no new badges
- answer2 = self.post_answer(user = self.u2, question = question)
+ question2 = self.post_question(user = self.u1)
+ answer2 = self.post_answer(user = self.u2, question = question2)
answer2.score = min_score - 1
answer2.save()
self.u1.upvote(answer2)
@@ -164,8 +166,8 @@ class BadgeTests(AskbotTestCase):
def test_popular_question_badge(self):
question = self.post_question(user = self.u1)
min_views = settings.POPULAR_QUESTION_BADGE_MIN_VIEWS
- question.view_count = min_views - 1
- question.save()
+ question.thread.view_count = min_views - 1
+ question.thread.save()
#patch not_a_robot_request to return True
from askbot.utils import functions
@@ -182,8 +184,8 @@ class BadgeTests(AskbotTestCase):
self.assert_have_badge('popular-question', recipient = self.u1, expected_count = 1)
question2 = self.post_question(user = self.u1)
- question2.view_count = min_views - 1
- question2.save()
+ question2.thread.view_count = min_views - 1
+ question2.thread.save()
self.client.login(method='force', user_id = self.u2.id)
self.client.get(question2.get_absolute_url())
self.assert_have_badge('popular-question', recipient = self.u1, expected_count = 2)
@@ -268,7 +270,8 @@ class BadgeTests(AskbotTestCase):
answer = self.post_answer(user = self.u2, question = question)
self.u1.accept_best_answer(answer)
self.assert_have_badge('scholar', recipient = self.u1)
- answer2 = self.post_answer(user = self.u2, question = question)
+ question2 = self.post_question(user = self.u1)
+ answer2 = self.post_answer(user = self.u2, question = question2)
self.u1.accept_best_answer(answer2)
self.assert_have_badge(
'scholar',
@@ -499,6 +502,6 @@ class BadgeTests(AskbotTestCase):
self.u1.save()
self.assert_have_badge('enthusiast', self.u1, 0)
self.client.login(method = 'force', user_id = self.u1.id)
- self.client.get('/')
+ self.client.get('/' + django_settings.ASKBOT_URL)
self.assert_have_badge('enthusiast', self.u1, 1)
diff --git a/askbot/tests/cache_tests.py b/askbot/tests/cache_tests.py
index 5eda8c74..a8416e99 100644
--- a/askbot/tests/cache_tests.py
+++ b/askbot/tests/cache_tests.py
@@ -3,12 +3,12 @@ from django.core.urlresolvers import reverse
from django.conf import settings
from askbot.tests.utils import AskbotTestCase
+
class CacheTests(AskbotTestCase):
def setUp(self):
- self.create_user()
- self.create_user('other_user')
- self.question = self.post_question()
- self.post_answer(question = self.question)
+ user = self.create_user('other_user')
+ self.question = self.post_question(user=user)
+ self.post_answer(user=user, question=self.question)
settings.DEBUG = True # because it's forsed to False
def visit_question(self):
diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py
index b54bb2e9..55cf0ef9 100644
--- a/askbot/tests/db_api_tests.py
+++ b/askbot/tests/db_api_tests.py
@@ -7,6 +7,7 @@ from django.core import exceptions
from django.core.urlresolvers import reverse
from django.test.client import Client
from django.conf import settings
+from django import forms
from askbot.tests.utils import AskbotTestCase
from askbot import models
from askbot import const
@@ -14,6 +15,9 @@ from askbot.conf import settings as askbot_settings
import datetime
class DBApiTests(AskbotTestCase):
+ """tests methods on User object,
+ that were added for askbot
+ """
def setUp(self):
self.create_user()
@@ -42,6 +46,13 @@ class DBApiTests(AskbotTestCase):
self.assertTrue(post.deleted_by == None)
self.assertTrue(post.deleted_at == None)
+ def test_blank_tags_impossible(self):
+ self.post_question(tags='')
+ self.assertEqual(
+ models.Tag.objects.filter(name='').count(),
+ 0
+ )
+
def test_flag_question(self):
self.user.set_status('m')
self.user.flag_post(self.question)
@@ -74,6 +85,14 @@ class DBApiTests(AskbotTestCase):
rev = q.revisions.all()[0]
self.assertTrue(rev.is_anonymous)
+ def test_post_bodyless_question(self):
+ q = self.user.post_question(
+ body_text = '',
+ title = 'aeuaouaousaotuhao',
+ tags = 'test'
+ )
+ self.assertEquals(q.text.strip(), '')
+
def test_reveal_asker_identity(self):
q = self.ask_anonymous_question()
self.other_user.set_status('m')
@@ -85,7 +104,7 @@ class DBApiTests(AskbotTestCase):
tags = 'aoeuaoeu',
revision_comment = 'hahahah'
)
- q.remove_author_anonymity()
+ q.thread.remove_author_anonymity()
q = self.reload_object(q)
self.assertFalse(q.is_anonymous)
for rev in q.revisions.all():
@@ -111,11 +130,8 @@ class DBApiTests(AskbotTestCase):
self.post_answer(question = self.question)
self.user.delete_answer(self.answer)
self.assert_post_is_deleted(self.answer)
- saved_question = models.Question.objects.get(id = self.question.id)
- self.assertEquals(
- saved_question.answer_count,
- 0
- )
+ saved_question = models.Post.objects.get_questions().get(id = self.question.id)
+ self.assertEquals(0, saved_question.thread.answer_count)
def test_restore_answer(self):
self.post_answer()
@@ -130,12 +146,12 @@ class DBApiTests(AskbotTestCase):
self.post_answer(user = self.other_user)
self.user.delete_question(self.question)
self.assert_post_is_deleted(self.question)
- answer_count = self.question.get_answers(user = self.user).count()
- answer = self.question.answers.all()[0]
+ answer_count = self.question.thread.get_answers(user = self.user).count()
+ answer = self.question.thread.posts.get_answers()[0]
self.assert_post_is_not_deleted(answer)
self.assertTrue(answer_count == 1)
- saved_question = models.Question.objects.get(id = self.question.id)
- self.assertTrue(saved_question.answer_count == 1)
+ saved_question = models.Post.objects.get_questions().get(id = self.question.id)
+ self.assertTrue(saved_question.thread.answer_count == 1)
def test_unused_tag_is_auto_deleted(self):
self.user.retag_question(self.question, tags = 'one-tag')
@@ -152,10 +168,11 @@ class DBApiTests(AskbotTestCase):
user = self.user,
body_text = "ahahahahahahah database'"
)
- matches = models.Question.objects.get_by_text_query("database'")
+ matches = models.Post.objects.get_questions().get_by_text_query("database'")
self.assertTrue(len(matches) == 1)
-class UserLikeTests(AskbotTestCase):
+class UserLikeTagTests(AskbotTestCase):
+ """tests for user liking and disliking tags"""
def setUp(self):
self.create_user()
self.question = self.post_question(tags = 'one two three')
@@ -368,15 +385,27 @@ class CommentTests(AskbotTestCase):
def test_other_user_can_upvote_comment(self):
self.other_user.upvote(self.comment)
- comments = self.question.get_comments(visitor = self.other_user)
+ models.Post.objects.precache_comments(for_posts=[self.question], visitor = self.other_user)
+ comments = self.question._cached_comments
self.assertEquals(len(comments), 1)
self.assertEquals(comments[0].upvoted_by_user, True)
self.assertEquals(comments[0].is_upvoted_by(self.other_user), True)
def test_other_user_can_cancel_upvote(self):
self.test_other_user_can_upvote_comment()
- comment = models.Comment.objects.get(id = self.comment.id)
+ comment = models.Post.objects.get_comments().get(id = self.comment.id)
self.assertEquals(comment.score, 1)
self.other_user.upvote(comment, cancel = True)
- comment = models.Comment.objects.get(id = self.comment.id)
+ comment = models.Post.objects.get_comments().get(id = self.comment.id)
self.assertEquals(comment.score, 0)
+
+class TagAndGroupTests(AskbotTestCase):
+ def setUp(self):
+ self.u1 = self.create_user('u1')
+
+ def test_group_cannot_create_case_variant_tag(self):
+ self.post_question(user = self.u1, tags = 'one two three')
+ models.Tag.group_tags.get_or_create(user = self.u1, group_name = 'One')
+ tag_one = models.Tag.objects.filter(name__iexact = 'one')
+ self.assertEqual(tag_one.count(), 1)
+ self.assertEqual(tag_one[0].name, 'one')
diff --git a/askbot/tests/email_alert_tests.py b/askbot/tests/email_alert_tests.py
index 5ff45d6b..9ec1a412 100644
--- a/askbot/tests/email_alert_tests.py
+++ b/askbot/tests/email_alert_tests.py
@@ -11,10 +11,10 @@ from django.test import TestCase
from django.test.client import Client
from askbot.tests import utils
from askbot import models
-from askbot.utils import mail
+from askbot import mail
from askbot.conf import settings as askbot_settings
from askbot import const
-from askbot.models.question import get_tag_summary_from_questions
+from askbot.models.question import Thread
TO_JSON = functools.partial(serializers.serialize, 'json')
@@ -670,6 +670,7 @@ class InstantMentionsAndCommentsEmailAlertTests(EmailAlertTests):
body_text = 'yoyo @target do look here'
)
+
class InstantQAnsEmailAlertTests(EmailAlertTests):
@setup_email_alert_tests
def setUp(self):
@@ -680,39 +681,26 @@ class InstantQAnsEmailAlertTests(EmailAlertTests):
class DelayedAlertSubjectLineTests(TestCase):
def test_topics_in_subject_line(self):
- q1 = models.Question(id=1, tagnames='one two three four five')
- q2 = models.Question(id=2, tagnames='two three four five')
- q3 = models.Question(id=3, tagnames='three four five')
- q4 = models.Question(id=4, tagnames='four five')
- q5 = models.Question(id=5, tagnames='five')
- q6 = models.Question(id=6, tagnames='six')
- q7 = models.Question(id=7, tagnames='six')
- q8 = models.Question(id=8, tagnames='six')
- q9 = models.Question(id=9, tagnames='six')
- q10 = models.Question(id=10, tagnames='six')
- q11 = models.Question(id=11, tagnames='six')
- q_dict = {
- q1:'', q2:'', q3:'', q4:'', q5:'', q6:'', q7:'',
- q8:'', q9:'', q10:'', q11:'',
- }
- subject = get_tag_summary_from_questions(q_dict.keys())
-
- self.assertTrue('one' not in subject)
- self.assertTrue('two' in subject)
- self.assertTrue('three' in subject)
- self.assertTrue('four' in subject)
- self.assertTrue('five' in subject)
- self.assertTrue('six' in subject)
- i2 = subject.index('two')
- i3 = subject.index('three')
- i4 = subject.index('four')
- i5 = subject.index('five')
- i6 = subject.index('six')
- order = [i6, i5, i4, i3, i2]
- self.assertEquals(
- order,
- sorted(order)
- )
+ threads = [
+ models.Thread(tagnames='one two three four five'),
+ models.Thread(tagnames='two three four five'),
+ models.Thread(tagnames='three four five'),
+ models.Thread(tagnames='four five'),
+ models.Thread(tagnames='five'),
+ ]
+ subject = Thread.objects.get_tag_summary_from_threads(threads)
+ self.assertEqual('"five", "four", "three", "two" and "one"', subject)
+
+ threads += [
+ models.Thread(tagnames='six'),
+ models.Thread(tagnames='six'),
+ models.Thread(tagnames='six'),
+ models.Thread(tagnames='six'),
+ models.Thread(tagnames='six'),
+ models.Thread(tagnames='six'),
+ ]
+ subject = Thread.objects.get_tag_summary_from_threads(threads)
+ self.assertEqual('"six", "five", "four", "three", "two" and more', subject)
class FeedbackTests(utils.AskbotTestCase):
def setUp(self):
@@ -961,3 +949,67 @@ class EmailFeedSettingTests(utils.AskbotTestCase):
new_user.add_missing_askbot_subscriptions()
data_after = TO_JSON(self.get_user_feeds())
self.assertEquals(data_before, data_after)
+
+class PostApprovalTests(utils.AskbotTestCase):
+ """test notifications sent to authors when their posts
+ are approved or published"""
+ def setUp(self):
+ self.reply_by_email = askbot_settings.REPLY_BY_EMAIL
+ askbot_settings.update('REPLY_BY_EMAIL', True)
+ self.enable_content_moderation = \
+ askbot_settings.ENABLE_CONTENT_MODERATION
+ askbot_settings.update('ENABLE_CONTENT_MODERATION', True)
+ self.self_notify_when = \
+ askbot_settings.SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN
+ when = const.FOR_FIRST_REVISION
+ askbot_settings.update('SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN', when)
+ assert(
+ django_settings.EMAIL_BACKEND == 'django.core.mail.backends.locmem.EmailBackend'
+ )
+
+ def tearDown(self):
+ askbot_settings.update(
+ 'REPLY_BY_EMAIL', self.reply_by_email
+ )
+ askbot_settings.update(
+ 'ENABLE_CONTENT_MODERATION',
+ self.enable_content_moderation
+ )
+ askbot_settings.update(
+ 'SELF_NOTIFY_EMAILED_POST_AUTHOR_WHEN',
+ self.self_notify_when
+ )
+
+ def test_emailed_question_answerable_approval_notification(self):
+ self.u1 = self.create_user('user1', status = 'a')#regular user
+ question = self.post_question(user = self.u1, by_email = True)
+ outbox = django.core.mail.outbox
+ #here we should get just the notification of the post
+ #being placed on the moderation queue
+ self.assertEquals(len(outbox), 1)
+ self.assertEquals(outbox[0].recipients(), [self.u1.email])
+
+ def test_moderated_question_answerable_approval_notification(self):
+ u1 = self.create_user('user1', status = 'a')
+ question = self.post_question(user = u1, by_email = True)
+
+ self.assertEquals(question.approved, False)
+
+ u2 = self.create_user('admin', status = 'd')
+
+ self.assertEquals(question.revisions.count(), 1)
+ u2.approve_post_revision(question.get_latest_revision())
+
+ outbox = django.core.mail.outbox
+ self.assertEquals(len(outbox), 2)
+ #moderation notification
+ self.assertEquals(outbox[0].recipients(), [u1.email,])
+ self.assertEquals(outbox[1].recipients(), [u1.email,])#approval
+
+
+class MailMessagesTests(utils.AskbotTestCase):
+ def test_ask_for_signature(self):
+ from askbot.mail import messages
+ user = self.create_user('user')
+ message = messages.ask_for_signature(user, footer_code = 'nothing')
+ self.assertTrue(user.username in message)
diff --git a/askbot/tests/form_tests.py b/askbot/tests/form_tests.py
index 2fa572e5..654272b3 100644
--- a/askbot/tests/form_tests.py
+++ b/askbot/tests/form_tests.py
@@ -47,9 +47,12 @@ class AskByEmailFormTests(AskbotTestCase):
'subject': '[tag-one] where is titanic?',
'body_text': 'where is titanic?'
}
+
def test_subject_line(self):
"""loops through various forms of the subject line
and makes sure that tags and title are parsed out"""
+ setting_backup = askbot_settings.TAGS_ARE_REQUIRED
+ askbot_settings.update('TAGS_ARE_REQUIRED', True)
for test_case in SUBJECT_LINE_CASES:
self.data['subject'] = test_case[0]
form = forms.AskByEmailForm(self.data)
@@ -66,6 +69,7 @@ class AskByEmailFormTests(AskbotTestCase):
form.cleaned_data['title'],
output[1]
)
+ askbot_settings.update('TAGS_ARE_REQUIRED', setting_backup)
def test_email(self):
"""loops through variants of the from field
@@ -303,5 +307,30 @@ class UserNameFieldTest(AskbotTestCase):
#invalid username and username in reserved words
self.assertRaises(django_forms.ValidationError, self.username_field.clean, ' ')
self.assertRaises(django_forms.ValidationError, self.username_field.clean, 'fuck')
+ self.assertRaises(django_forms.ValidationError, self.username_field.clean, '......')
#TODO: test more things
+
+class AnswerEditorFieldTests(AskbotTestCase):
+ """don't need to test the QuestionEditorFieldTests, b/c the
+ class is identical"""
+ def setUp(self):
+ self.old_min_length = askbot_settings.MIN_ANSWER_BODY_LENGTH
+ askbot_settings.update('MIN_ANSWER_BODY_LENGTH', 10)
+ self.field = forms.AnswerEditorField()
+
+ def tearDown(self):
+ askbot_settings.update('MIN_ANSWER_BODY_LENGTH', self.old_min_length)
+
+ def test_fail_short_body(self):
+ self.assertRaises(
+ django_forms.ValidationError,
+ self.field.clean,
+ 'a'
+ )
+
+ def test_pass_long_body(self):
+ self.assertEquals(
+ self.field.clean(10*'a'),
+ 10*'a'
+ )
diff --git a/askbot/tests/images/logo.gif b/askbot/tests/images/logo.gif
index 8540e12b..8540e12b 100755..100644
--- a/askbot/tests/images/logo.gif
+++ b/askbot/tests/images/logo.gif
Binary files differ
diff --git a/askbot/tests/management_command_tests.py b/askbot/tests/management_command_tests.py
index 001689c1..d6be1a16 100644
--- a/askbot/tests/management_command_tests.py
+++ b/askbot/tests/management_command_tests.py
@@ -44,8 +44,8 @@ class ManagementCommandTests(AskbotTestCase):
# Check that the first user was deleted
self.assertEqual(models.User.objects.filter(pk=user_one.id).count(), 0)
# Explicitly check that the values assigned to user_one are now user_two's
- self.assertEqual(user_two.questions.filter(pk=question.id).count(), 1)
- self.assertEqual(user_two.comments.filter(pk=comment.id).count(), 1)
+ self.assertEqual(user_two.posts.get_questions().filter(pk=question.id).count(), 1)
+ self.assertEqual(user_two.posts.get_comments().filter(pk=comment.id).count(), 1)
user_two = models.User.objects.get(pk=2)
self.assertEqual(user_two.gold, number_of_gold)
self.assertEqual(user_two.reputation, reputation)
diff --git a/askbot/tests/misc_tests.py b/askbot/tests/misc_tests.py
index 306d62ce..3150c377 100644
--- a/askbot/tests/misc_tests.py
+++ b/askbot/tests/misc_tests.py
@@ -1,12 +1,4 @@
-import datetime
-from django.contrib.contenttypes.models import ContentType
-from django.test.client import Client
from askbot.tests.utils import AskbotTestCase
-from askbot.conf import settings
-from askbot import models
-from askbot.models.badges import award_badges_signal
-
-from askbot.views.users import get_related_object_type_name
from askbot.models.post import PostRevision
class MiscTests(AskbotTestCase):
@@ -16,45 +8,6 @@ class MiscTests(AskbotTestCase):
self.u2 = self.create_user(username='user2')
self.u3 = self.create_user(username='user3')
- def test_get_related_object_type_name_for_question(self):
- question = self.post_question(user=self.u1)
- #import ipdb; ipdb.set_trace()
- ct = ContentType.objects.get_for_model(question)
- self.assertEqual('question', get_related_object_type_name(ct.id, question.id))
-
- def test_get_related_object_type_name_for_question_revision(self):
- question = self.post_question(user=self.u1)
- revision = question.revisions.all()[0]
- ct = ContentType.objects.get_for_model(revision)
- self.assertEqual('question', get_related_object_type_name(ct.id, revision.id))
-
- def test_get_related_object_type_name_for_answer(self):
- question = self.post_question(user=self.u1)
- answer = self.post_answer(user=self.u1, question=question)
- ct = ContentType.objects.get_for_model(answer)
- self.assertEqual('answer', get_related_object_type_name(ct.id, answer.id))
-
- def test_get_related_object_type_name_for_answer_revision(self):
- question = self.post_question(user=self.u1)
- answer = self.post_answer(user=self.u1, question=question)
- revision = answer.revisions.all()[0]
- ct = ContentType.objects.get_for_model(revision)
- self.assertEqual('answer', get_related_object_type_name(ct.id, revision.id))
-
- def test_get_related_object_type_name_for_anything_else_1(self):
- ct = ContentType.objects.get_for_model(self.u2)
- self.assertTrue(
- get_related_object_type_name(ct.id, self.u2.id) is None
- )
-
- def test_get_related_object_type_name_for_anything_else_2(self):
- question = self.post_question(user=self.u1)
- comment = self.post_comment(user=self.u1, parent_post=question)
- ct = ContentType.objects.get_for_model(comment)
- self.assertTrue(
- get_related_object_type_name(ct.id, comment.id) is None
- )
-
def test_proper_PostRevision_manager_is_used(self):
"Makes sure that both normal and related managers for PostRevision don't implement .create() method"
question = self.post_question(user=self.u1)
diff --git a/askbot/tests/on_screen_notification_tests.py b/askbot/tests/on_screen_notification_tests.py
index 0d668542..e9b53194 100644
--- a/askbot/tests/on_screen_notification_tests.py
+++ b/askbot/tests/on_screen_notification_tests.py
@@ -98,7 +98,7 @@ class OnScreenUpdateNotificationTests(TestCase):
#users 1x work on question, 2x and 3x on the answers
#users x4 do not do anyting in the setup code
- self.question = models.Question.objects.create_new(
+ self.thread = models.Thread.objects.create_new(
title = 'test question',
author = self.u11,
added_at = datetime.datetime.now(),
@@ -106,6 +106,7 @@ class OnScreenUpdateNotificationTests(TestCase):
tagnames = 'test',
text = 'hey listen up',
)
+ self.question = self.thread._question_post()
self.comment12 = self.question.add_comment(
user = self.u12,
comment = 'comment12'
@@ -114,8 +115,8 @@ class OnScreenUpdateNotificationTests(TestCase):
user = self.u13,
comment = 'comment13'
)
- self.answer1 = models.Answer.objects.create_new(
- question = self.question,
+ self.answer1 = models.Post.objects.create_new_answer(
+ thread = self.thread,
author = self.u21,
added_at = datetime.datetime.now(),
text = 'answer1'
@@ -128,8 +129,8 @@ class OnScreenUpdateNotificationTests(TestCase):
user = self.u23,
comment = 'comment23'
)
- self.answer2 = models.Answer.objects.create_new(
- question = self.question,
+ self.answer2 = models.Post.objects.create_new_answer(
+ thread = self.thread,
author = self.u31,
added_at = datetime.datetime.now(),
text = 'answer2'
@@ -567,8 +568,8 @@ class OnScreenUpdateNotificationTests(TestCase):
self.reset_response_counts()
time.sleep(1)
timestamp = datetime.datetime.now()
- self.answer3 = models.Answer.objects.create_new(
- question = self.question,
+ self.answer3 = models.Post.objects.create_new_answer(
+ thread = self.thread,
author = self.u11,
added_at = timestamp,
text = 'answer3'
@@ -595,8 +596,8 @@ class OnScreenUpdateNotificationTests(TestCase):
self.reset_response_counts()
time.sleep(1)
timestamp = datetime.datetime.now()
- self.answer3 = models.Answer.objects.create_new(
- question = self.question,
+ self.answer3 = models.Post.objects.create_new_answer(
+ thread = self.thread,
author = self.u31,
added_at = timestamp,
text = 'answer4'
diff --git a/askbot/tests/page_load_tests.py b/askbot/tests/page_load_tests.py
index 3ecc126f..e3e699a7 100644
--- a/askbot/tests/page_load_tests.py
+++ b/askbot/tests/page_load_tests.py
@@ -1,18 +1,21 @@
-from django.test import TestCase
+from askbot.search.state_manager import SearchState
from django.test import signals
-from django.template import defaultfilters
from django.conf import settings
from django.core.urlresolvers import reverse
+from django.core import management
+from django.core.cache.backends.dummy import DummyCache
+from django.core import cache
+
import coffin
import coffin.template
+
from askbot import models
from askbot.utils.slug import slugify
from askbot.deployment import package_utils
from askbot.tests.utils import AskbotTestCase
from askbot.conf import settings as askbot_settings
from askbot.tests.utils import skipIf
-import sys
-import os
+
def patch_jinja2():
@@ -31,19 +34,55 @@ def patch_jinja2():
(CMAJOR, CMINOR, CMICRO) = package_utils.get_coffin_version()
if CMAJOR == 0 and CMINOR == 3 and CMICRO < 4:
- import ipdb; ipdb.set_trace()
patch_jinja2()
class PageLoadTestCase(AskbotTestCase):
- fixtures = [ os.path.join(os.path.dirname(__file__), 'test_data.json'),]
+
+ #############################################
+ #
+ # INFO: We load test data once for all tests in this class (setUpClass + cleanup in tearDownClass)
+ #
+ # We also disable (by overriding _fixture_setup/teardown) per-test fixture setup,
+ # which by default flushes the database for non-transactional db engines like MySQL+MyISAM.
+ # For transactional engines it only messes with transactions, but to keep things uniform
+ # for both types of databases we disable it all.
+ #
+ @classmethod
+ def setUpClass(cls):
+ management.call_command('flush', verbosity=0, interactive=False)
+ management.call_command('askbot_add_test_content', verbosity=0, interactive=False)
+
+ @classmethod
+ def tearDownClass(self):
+ management.call_command('flush', verbosity=0, interactive=False)
+
+ def _fixture_setup(self):
+ pass
+
+ def _fixture_teardown(self):
+ pass
+
+ #############################################
+
+ def setUp(self):
+ self.old_cache = cache.cache
+ #Disable caching (to not interfere with production cache,
+ #not sure if that's possible but let's not risk it)
+ cache.cache = DummyCache('', {})
+
+ def tearDown(self):
+ cache.cache = self.old_cache # Restore caching
def try_url(
self,
url_name, status_code=200, template=None,
kwargs={}, redirect_url=None, follow=False,
- data={}):
- url = reverse(url_name, kwargs=kwargs)
+ data={}, plain_url_passed=False):
+ if plain_url_passed:
+ url = url_name
+ else:
+ url = reverse(url_name, kwargs=kwargs)
if status_code == 302:
url_info = 'redirecting to LOGIN_URL in closed_mode: %s' % url
else:
@@ -71,16 +110,19 @@ class PageLoadTestCase(AskbotTestCase):
#asuming that there is more than one template
template_names = ','.join([t.name for t in r.template])
print 'templates are %s' % template_names
- if follow == False:
- self.fail(
- ('Have issue accessing %s. '
- 'This should not have happened, '
- 'since you are not expecting a redirect '
- 'i.e. follow == False, there should be only '
- 'one template') % url
- )
-
- self.assertEqual(r.template[0].name, template)
+ # The following code is no longer relevant because we're using
+ # additional templates for cached fragments [e.g. thread.get_summary_html()]
+# if follow == False:
+# self.fail(
+# ('Have issue accessing %s. '
+# 'This should not have happened, '
+# 'since you are not expecting a redirect '
+# 'i.e. follow == False, there should be only '
+# 'one template') % url
+# )
+#
+# self.assertEqual(r.template[0].name, template)
+ self.assertIn(template, [t.name for t in r.template])
else:
raise Exception('unexpected error while runnig test')
@@ -91,7 +133,8 @@ class PageLoadTestCase(AskbotTestCase):
self.assertEqual(response.status_code, 200)
self.failUnless(len(response.redirect_chain) == 1)
self.failUnless(response.redirect_chain[0][0].endswith('/questions/'))
- self.assertEquals(response.template.name, 'main_page.html')
+ self.assertTrue(isinstance(response.template, list))
+ self.assertIn('main_page.html', [t.name for t in response.template])
def proto_test_ask_page(self, allow_anonymous, status_code):
prev_setting = askbot_settings.ALLOW_POSTING_BEFORE_LOGGING_IN
@@ -120,13 +163,22 @@ class PageLoadTestCase(AskbotTestCase):
status_code=status_code,
kwargs={'url':'rss'})
self.try_url(
+ 'feeds',
+ kwargs={'url':'rss'},
+ data={'tags':'one-tag'},
+ status_code=status_code)
+ #self.try_url(
+ # 'feeds',
+ # kwargs={'url':'question'},
+ # status_code=status_code)
+ self.try_url(
'about',
status_code=status_code,
- template='about.html')
+ template='static_page.html')
self.try_url(
'privacy',
status_code=status_code,
- template='privacy.html')
+ template='static_page.html')
self.try_url('logout', template='authopenid/logout.html')
#todo: test different tabs
self.try_url(
@@ -149,105 +201,110 @@ class PageLoadTestCase(AskbotTestCase):
'answer_revisions',
status_code=status_code,
template='revisions.html',
- kwargs={'id': 20}
+ kwargs={'id': models.Post.objects.get_answers().order_by('id')[0].id}
)
#todo: test different sort methods and scopes
self.try_url(
- 'questions',
- status_code=status_code,
- template='main_page.html'
- )
- self.try_url(
- 'questions',
- status_code=status_code,
- data={'start_over':'true'},
- template='main_page.html'
- )
+ 'questions',
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'unanswered'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('unanswered').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html',
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'favorite'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('favorite').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'unanswered', 'sort':'age-desc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('unanswered').change_sort('age-desc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'unanswered', 'sort':'age-asc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('unanswered').change_sort('age-asc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'unanswered', 'sort':'activity-desc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('unanswered').change_sort('activity-desc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'scope':'unanswered', 'sort':'activity-asc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_scope('unanswered').change_sort('activity-asc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'sort':'answers-desc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_sort('answers-desc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'sort':'answers-asc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_sort('answers-asc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'sort':'votes-desc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_sort('votes-desc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
self.try_url(
- 'questions',
- status_code=status_code,
- data={'sort':'votes-asc'},
- template='main_page.html'
- )
+ url_name=reverse('questions') + SearchState.get_empty().change_sort('votes-asc').query_string(),
+ plain_url_passed=True,
+
+ status_code=status_code,
+ template='main_page.html'
+ )
+
self.try_url(
'question',
status_code=status_code,
- kwargs={'id':1},
+ kwargs={'id':1}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
follow=True,
template='question.html'
)
self.try_url(
'question',
status_code=status_code,
- kwargs={'id':2},
+ kwargs={'id':2}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
follow=True,
template='question.html'
)
self.try_url(
'question',
status_code=status_code,
- kwargs={'id':3},
+ kwargs={'id':3}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
follow=True,
template='question.html'
)
self.try_url(
'question_revisions',
status_code=status_code,
- kwargs={'id':40},
+ kwargs={'id':40}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
template='revisions.html'
)
self.try_url('users',
@@ -336,7 +393,7 @@ class PageLoadTestCase(AskbotTestCase):
self.try_url(
'edit_user',
template='authopenid/signin.html',
- kwargs={'id':4},
+ kwargs={'id':4}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
follow=True,
)
@@ -363,25 +420,25 @@ class PageLoadTestCase(AskbotTestCase):
#self.proto_test_non_user_urls()
def proto_test_user_urls(self, status_code):
- user = models.User.objects.get(id=2)
+ user = models.User.objects.get(id=2) # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
name_slug = slugify(user.username)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'stats'},
template='user_profile/user_stats.html'
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'recent'},
template='user_profile/user_recent.html'
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'inbox'},
template='authopenid/signin.html',
@@ -389,14 +446,14 @@ class PageLoadTestCase(AskbotTestCase):
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'reputation'},
template='user_profile/user_reputation.html'
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'votes'},
template='authopenid/signin.html',
@@ -404,14 +461,14 @@ class PageLoadTestCase(AskbotTestCase):
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'favorites'},
template='user_profile/user_favorites.html'
)
self.try_url(
'user_profile',
- kwargs={'id': 2, 'slug': name_slug},
+ kwargs={'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
status_code=status_code,
data={'sort':'email_subscriptions'},
template='authopenid/signin.html',
@@ -431,25 +488,25 @@ class PageLoadTestCase(AskbotTestCase):
def test_user_urls_logged_in(self):
- user = models.User.objects.get(id=2)
+ user = models.User.objects.get(id=2) # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
name_slug = slugify(user.username)
#works only with builtin django_authopenid
- self.client.login(method = 'force', user_id = 2)
+ self.client.login(method = 'force', user_id = 2) # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
self.try_url(
'user_subscriptions',
- kwargs = {'id': 2, 'slug': name_slug},
+ kwargs = {'id': 2, 'slug': name_slug}, # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
template = 'user_profile/user_email_subscriptions.html'
)
self.client.logout()
def test_inbox_page(self):
- asker = models.User.objects.get(id = 2)
+ asker = models.User.objects.get(id = 2) # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
question = asker.post_question(
title = 'How can this happen?',
body_text = 'This is the body of my question',
tags = 'question answer test',
)
- responder = models.User.objects.get(id = 3)
+ responder = models.User.objects.get(id = 3) # INFO: Hardcoded ID, might fail if DB allocates IDs in some non-continuous way
responder.post_answer(
question = question,
body_text = 'this is the answer text'
@@ -466,8 +523,107 @@ class PageLoadTestCase(AskbotTestCase):
class AvatarTests(AskbotTestCase):
def test_avatar_for_two_word_user_works(self):
- self.user = self.create_user('john doe')
+ if 'avatar' in settings.INSTALLED_APPS:
+ self.user = self.create_user('john doe')
+ response = self.client.get(
+ 'avatar_render_primary',
+ kwargs = {'user': 'john doe', 'size': 48}
+ )
+
+
+class QuestionPageRedirectTests(AskbotTestCase):
+
+ def setUp(self):
+ self.create_user()
+
+ self.q = self.post_question()
+ self.q.old_question_id = 101
+ self.q.save()
+
+ self.a = self.post_answer(question=self.q)
+ self.a.old_answer_id = 201
+ self.a.save()
+
+ self.c = self.post_comment(parent_post=self.a)
+ self.c.old_comment_id = 301
+ self.c.save()
+
+ def test_show_bare_question(self):
+ resp = self.client.get(self.q.get_absolute_url())
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+
+ url = reverse('question', kwargs={'id': self.q.id})
+ resp = self.client.get(url)
+ self.assertRedirects(
+ resp,
+ expected_url=self.q.get_absolute_url()
+ )
+
+ url = reverse('question', kwargs={'id': 101})
+ resp = self.client.get(url)
+ url = reverse('question', kwargs={'id': self.q.id}) + self.q.slug + '/'# redirect uses the new question.id !
+ self.assertRedirects(resp, expected_url=url)
+
+ url = reverse('question', kwargs={'id': 101}) + self.q.slug + '/'
+ resp = self.client.get(url)
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+
+ def test_show_answer(self):
+ resp = self.client.get(self.a.get_absolute_url())
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+ self.assertEqual(self.a, resp.context['show_post'])
+
+ url = reverse('question', kwargs={'id': self.q.id})
+ resp = self.client.get(url, data={'answer': self.a.id})
+ url = self.q.get_absolute_url()
+ self.assertRedirects(resp, expected_url=url + '?answer=%d' % self.a.id)
+
+ resp = self.client.get(url, data={'answer': self.a.id})
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+ self.assertEqual(self.a, resp.context['show_post'])
+
+ #test redirect from old question
+ url = reverse('question', kwargs={'id': 101}) + self.q.slug + '/'
+ resp = self.client.get(url, data={'answer': 201})
+ self.assertRedirects(resp, expected_url=self.a.get_absolute_url())
+
+ def test_show_comment(self):
+ resp = self.client.get(self.c.get_absolute_url())
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+ self.assertEqual(self.a, resp.context['show_post'])
+ self.assertEqual(self.c, resp.context['show_comment'])
+
+ url = self.q.get_absolute_url()
+ resp = self.client.get(url, data={'comment': self.c.id})
+ self.assertEqual(200, resp.status_code)
+
+ resp = self.client.get(url, data={'comment': self.c.id})
+ self.assertEqual(200, resp.status_code)
+ self.assertEqual(self.q, resp.context['question'])
+ self.assertEqual(self.a, resp.context['show_post'])
+ self.assertEqual(self.c, resp.context['show_comment'])
+
+ url = self.q.get_absolute_url()
+ #point to a non-existing comment
+ resp = self.client.get(url, data={'comment': 100301})
+ self.assertRedirects(resp, expected_url = self.q.get_absolute_url())
+
+class CommandViewTests(AskbotTestCase):
+ def test_get_tag_wiki_text_succeeds(self):
+ tag1 = self.create_tag('tag1')
response = self.client.get(
- 'avatar_render_primary',
- kwargs = {'user': 'john doe', 'size': 48}
- )
+ reverse('load_tag_wiki_text'),
+ data = {'tag_id': tag1.id}
+ )
+ self.assertEqual(response.status_code, 200)
+
+ def test_get_tag_wiki_text_fails(self):
+ tag1 = self.create_tag('tag1')
+ response = self.client.get(reverse('load_tag_wiki_text'))
+ self.assertEqual(response.status_code, 400)#bad request
+
diff --git a/askbot/tests/permission_assertion_tests.py b/askbot/tests/permission_assertion_tests.py
index b83d7827..8061bdb8 100644
--- a/askbot/tests/permission_assertion_tests.py
+++ b/askbot/tests/permission_assertion_tests.py
@@ -7,11 +7,11 @@ from django.core import exceptions
from askbot.tests import utils
from askbot.conf import settings as askbot_settings
from askbot import models
-from askbot.templatetags import extra_filters as template_filters
-from askbot.tests.utils import skipIf
+from askbot.templatetags import extra_filters_jinja as template_filters
+from askbot.tests.utils import skipIf, AskbotTestCase
-class PermissionAssertionTestCase(TestCase):
+class PermissionAssertionTestCase(AskbotTestCase):
"""base TestCase class for permission
assertion tests
@@ -447,9 +447,9 @@ class ReopenQuestionPermissionAssertionTests(utils.AskbotTestCase):
)
- def test_high_rep_nonowner_cannot_reopen(self):
+ def test_high_rep_nonowner_can_reopen(self):
self.other_user.reputation = 1000000
- self.assert_cannot_reopen(user = self.other_user)
+ self.assert_can_reopen(user = self.other_user)
def test_low_rep_admin_can_reopen(self):
self.other_user.set_admin_status()
@@ -482,7 +482,7 @@ class ReopenQuestionPermissionAssertionTests(utils.AskbotTestCase):
self.assert_cannot_reopen(user = self.other_user)
class EditQuestionPermissionAssertionTests(utils.AskbotTestCase):
-
+
def setUp(self):
self.create_user()
self.create_user(username = 'other_user')
@@ -1107,7 +1107,7 @@ class CommentPermissionAssertionTests(PermissionAssertionTestCase):
parent_post = answer,
body_text = 'test comment'
)
- self.assertTrue(isinstance(comment, models.Comment))
+ self.assertTrue(isinstance(comment, models.Post) and comment.is_comment())
self.assertTrue(
template_filters.can_post_comment(
self.user,
@@ -1124,7 +1124,7 @@ class CommentPermissionAssertionTests(PermissionAssertionTestCase):
parent_post = question,
body_text = 'test comment'
)
- self.assertTrue(isinstance(comment, models.Comment))
+ self.assertTrue(isinstance(comment, models.Post) and comment.is_comment())
self.assertTrue(
template_filters.can_post_comment(
self.user,
@@ -1155,7 +1155,7 @@ class CommentPermissionAssertionTests(PermissionAssertionTestCase):
parent_post = question,
body_text = 'test comment'
)
- self.assertTrue(isinstance(comment, models.Comment))
+ self.assertTrue(isinstance(comment, models.Post) and comment.is_comment())
self.assertTrue(
template_filters.can_post_comment(
self.user,
@@ -1173,7 +1173,7 @@ class CommentPermissionAssertionTests(PermissionAssertionTestCase):
parent_post = question,
body_text = 'test comment'
)
- self.assertTrue(isinstance(comment, models.Comment))
+ self.assertTrue(isinstance(comment, models.Post) and comment.is_comment())
self.assertTrue(
template_filters.can_post_comment(
self.other_user,
@@ -1190,7 +1190,7 @@ class CommentPermissionAssertionTests(PermissionAssertionTestCase):
parent_post = question,
body_text = 'test comment'
)
- self.assertTrue(isinstance(comment, models.Comment))
+ self.assertTrue(isinstance(comment, models.Post) and comment.is_comment())
self.assertTrue(
template_filters.can_post_comment(
self.other_user,
diff --git a/askbot/tests/post_model_tests.py b/askbot/tests/post_model_tests.py
index 48e0d667..9a4d47c8 100644
--- a/askbot/tests/post_model_tests.py
+++ b/askbot/tests/post_model_tests.py
@@ -1,8 +1,19 @@
+import copy
import datetime
+from operator import attrgetter
+import time
+from askbot.search.state_manager import SearchState
+from askbot.skins.loaders import get_template
+from django.contrib.auth.models import User
+from django.core import cache, urlresolvers
+from django.core.cache.backends.dummy import DummyCache
+from django.core.cache.backends.locmem import LocMemCache
from django.core.exceptions import ValidationError
from askbot.tests.utils import AskbotTestCase
-from askbot.models import PostRevision
+from askbot.models import Post, PostRevision, Thread, Tag
+from askbot.search.state_manager import DummySearchState
+from django.utils import simplejson
class PostModelTests(AskbotTestCase):
@@ -48,7 +59,7 @@ class PostModelTests(AskbotTestCase):
self.assertRaisesRegexp(
ValidationError,
- r"{'__all__': \[u'One \(and only one\) of question/answer fields has to be set.'\], 'revision_type': \[u'Value 4 is not a valid choice.'\]}",
+ r"{'__all__': \[u'Post field has to be set.'\], 'revision_type': \[u'Value 4 is not a valid choice.'\]}",
post_revision.save
)
@@ -56,12 +67,12 @@ class PostModelTests(AskbotTestCase):
question = self.post_question(user=self.u1)
- rev2 = PostRevision(question=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision=2, revision_type=PostRevision.QUESTION_REVISION)
+ rev2 = PostRevision(post=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision=2, revision_type=PostRevision.QUESTION_REVISION)
rev2.save()
self.assertFalse(rev2.id is None)
post_revision = PostRevision(
- question=question,
+ post=question,
text='blah',
author=self.u1,
revised_at=datetime.datetime.now(),
@@ -70,13 +81,13 @@ class PostModelTests(AskbotTestCase):
)
self.assertRaisesRegexp(
ValidationError,
- r"{'__all__': \[u'Revision_type doesn`t match values in question/answer fields.', u'Post revision with this Question and Revision already exists.'\]}",
+ r"{'__all__': \[u'Revision_type doesn`t match values in question/answer fields.', u'Post revision with this Post and Revision already exists.'\]}",
post_revision.save
)
post_revision = PostRevision(
- question=question,
+ post=question,
text='blah',
author=self.u1,
revised_at=datetime.datetime.now(),
@@ -89,7 +100,7 @@ class PostModelTests(AskbotTestCase):
post_revision.save
)
- rev3 = PostRevision.objects.create_question_revision(question=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision_type=123) # revision_type
+ rev3 = PostRevision.objects.create_question_revision(post=question, text='blah', author=self.u1, revised_at=datetime.datetime.now(), revision_type=123) # revision_type
self.assertFalse(rev3.id is None)
self.assertEqual(3, rev3.revision) # By the way: let's test the auto-increase of revision number
self.assertEqual(PostRevision.QUESTION_REVISION, rev3.revision_type)
@@ -106,3 +117,560 @@ class PostModelTests(AskbotTestCase):
question.apply_edit(edited_by=self.u1, text="blah3", comment="blahc3")
self.assertEqual(3, question.revisions.all()[0].revision)
self.assertEqual(3, question.revisions.count())
+
+ def test_comment_ordering_by_date(self):
+ self.user = self.u1
+ q = self.post_question()
+
+ c1 = self.post_comment(parent_post=q, timestamp=datetime.datetime(2010, 10, 2, 14, 33, 20))
+ c2 = q.add_comment(user=self.user, comment='blah blah', added_at=datetime.datetime(2010, 10, 2, 14, 33, 21))
+ c3 = self.post_comment(parent_post=q, body_text='blah blah 2', timestamp=datetime.datetime(2010, 10, 2, 14, 33, 22))
+
+ Post.objects.precache_comments(for_posts=[q], visitor=self.user)
+ self.assertListEqual([c1, c2, c3], q._cached_comments)
+ Post.objects.precache_comments(for_posts=[q], visitor=self.u2)
+ self.assertListEqual([c1, c2, c3], q._cached_comments)
+
+ c1.added_at, c3.added_at = c3.added_at, c1.added_at
+ c1.save()
+ c3.save()
+
+ Post.objects.precache_comments(for_posts=[q], visitor=self.user)
+ self.assertListEqual([c3, c2, c1], q._cached_comments)
+ Post.objects.precache_comments(for_posts=[q], visitor=self.u2)
+ self.assertListEqual([c3, c2, c1], q._cached_comments)
+
+ del self.user
+
+ def test_comment_precaching(self):
+ self.user = self.u1
+ q = self.post_question()
+
+ c1 = self.post_comment(parent_post=q, timestamp=datetime.datetime(2010, 10, 2, 14, 33, 20))
+ c2 = q.add_comment(user=self.user, comment='blah blah', added_at=datetime.datetime(2010, 10, 2, 14, 33, 21))
+ c3 = self.post_comment(parent_post=q, timestamp=datetime.datetime(2010, 10, 2, 14, 33, 22))
+
+ Post.objects.precache_comments(for_posts=[q], visitor=self.user)
+ self.assertListEqual([c1, c2, c3], q._cached_comments)
+
+ c1.added_at, c3.added_at = c3.added_at, c1.added_at
+ c1.save()
+ c3.save()
+
+ Post.objects.precache_comments(for_posts=[q], visitor=self.user)
+ self.assertListEqual([c3, c2, c1], q._cached_comments)
+
+ del self.user
+
+ def test_cached_get_absolute_url_1(self):
+ th = lambda:1
+ th.title = 'lala-x-lala'
+ p = Post(id=3, post_type='question')
+ p._thread_cache = th # cannot assign non-Thread instance directly
+ self.assertEqual('/question/3/lala-x-lala/', p.get_absolute_url(thread=th))
+ self.assertTrue(p._thread_cache is th)
+ self.assertEqual('/question/3/lala-x-lala/', p.get_absolute_url(thread=th))
+
+ def test_cached_get_absolute_url_2(self):
+ p = Post(id=3, post_type='question')
+ th = lambda:1
+ th.title = 'lala-x-lala'
+ self.assertEqual('/question/3/lala-x-lala/', p.get_absolute_url(thread=th))
+ self.assertTrue(p._thread_cache is th)
+ self.assertEqual('/question/3/lala-x-lala/', p.get_absolute_url(thread=th))
+
+
+class ThreadTagModelsTests(AskbotTestCase):
+
+ # TODO: Use rich test data like page load test cases ?
+
+ def setUp(self):
+ self.create_user()
+ user2 = self.create_user(username='user2')
+ user3 = self.create_user(username='user3')
+ self.q1 = self.post_question(tags='tag1 tag2 tag3')
+ self.q2 = self.post_question(tags='tag3 tag4 tag5')
+ self.q3 = self.post_question(tags='tag6', user=user2)
+ self.q4 = self.post_question(tags='tag1 tag2 tag3 tag4 tag5 tag6', user=user3)
+
+ def test_related_tags(self):
+ tags = Tag.objects.get_related_to_search(threads=[self.q1.thread, self.q2.thread], ignored_tag_names=[])
+ self.assertListEqual(['tag3', 'tag1', 'tag2', 'tag4', 'tag5'], [t.name for t in tags])
+ self.assertListEqual([2, 1, 1, 1, 1], [t.local_used_count for t in tags])
+ self.assertListEqual([3, 2, 2, 2, 2], [t.used_count for t in tags])
+
+ tags = Tag.objects.get_related_to_search(threads=[self.q1.thread, self.q2.thread], ignored_tag_names=['tag3', 'tag5'])
+ self.assertListEqual(['tag1', 'tag2', 'tag4'], [t.name for t in tags])
+ self.assertListEqual([1, 1, 1], [t.local_used_count for t in tags])
+ self.assertListEqual([2, 2, 2], [t.used_count for t in tags])
+
+ tags = Tag.objects.get_related_to_search(threads=[self.q3.thread], ignored_tag_names=[])
+ self.assertListEqual(['tag6'], [t.name for t in tags])
+ self.assertListEqual([1], [t.local_used_count for t in tags])
+ self.assertListEqual([2], [t.used_count for t in tags])
+
+ tags = Tag.objects.get_related_to_search(threads=[self.q3.thread], ignored_tag_names=['tag1'])
+ self.assertListEqual(['tag6'], [t.name for t in tags])
+ self.assertListEqual([1], [t.local_used_count for t in tags])
+ self.assertListEqual([2], [t.used_count for t in tags])
+
+ tags = Tag.objects.get_related_to_search(threads=[self.q3.thread], ignored_tag_names=['tag6'])
+ self.assertListEqual([], [t.name for t in tags])
+
+ tags = Tag.objects.get_related_to_search(threads=[self.q1.thread, self.q2.thread, self.q4.thread], ignored_tag_names=['tag2'])
+ self.assertListEqual(['tag3', 'tag1', 'tag4', 'tag5', 'tag6'], [t.name for t in tags])
+ self.assertListEqual([3, 2, 2, 2, 1], [t.local_used_count for t in tags])
+ self.assertListEqual([3, 2, 2, 2, 2], [t.used_count for t in tags])
+
+ def test_run_adv_search_1(self):
+ ss = SearchState.get_empty()
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(4, qs.count())
+
+ def test_run_adv_search_ANDing_tags(self):
+ ss = SearchState.get_empty()
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss.add_tag('tag1'))
+ self.assertEqual(2, qs.count())
+
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss.add_tag('tag1').add_tag('tag3'))
+ self.assertEqual(2, qs.count())
+
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss.add_tag('tag1').add_tag('tag3').add_tag('tag6'))
+ self.assertEqual(1, qs.count())
+
+ ss = SearchState(scope=None, sort=None, query="#tag3", tags='tag1, tag6', author=None, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(1, qs.count())
+
+ def test_run_adv_search_query_author(self):
+ ss = SearchState(scope=None, sort=None, query="@user", tags=None, author=None, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(2, len(qs))
+ self.assertEqual(self.q1.thread_id, min(qs[0].id, qs[1].id))
+ self.assertEqual(self.q2.thread_id, max(qs[0].id, qs[1].id))
+
+ ss = SearchState(scope=None, sort=None, query="@user2", tags=None, author=None, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(1, len(qs))
+ self.assertEqual(self.q3.thread_id, qs[0].id)
+
+ ss = SearchState(scope=None, sort=None, query="@user3", tags=None, author=None, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(1, len(qs))
+ self.assertEqual(self.q4.thread_id, qs[0].id)
+
+ def test_run_adv_search_url_author(self):
+ ss = SearchState(scope=None, sort=None, query=None, tags=None, author=self.user.id, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(2, len(qs))
+ self.assertEqual(self.q1.thread_id, min(qs[0].id, qs[1].id))
+ self.assertEqual(self.q2.thread_id, max(qs[0].id, qs[1].id))
+
+ ss = SearchState(scope=None, sort=None, query=None, tags=None, author=self.user2.id, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(1, len(qs))
+ self.assertEqual(self.q3.thread_id, qs[0].id)
+
+ ss = SearchState(scope=None, sort=None, query=None, tags=None, author=self.user3.id, page=None, user_logged_in=None)
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ self.assertEqual(1, len(qs))
+ self.assertEqual(self.q4.thread_id, qs[0].id)
+
+ def test_thread_caching_1(self):
+ ss = SearchState.get_empty()
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ qs = list(qs)
+
+ for thread in qs:
+ self.assertIsNone(getattr(thread, '_question_cache', None))
+ self.assertIsNone(getattr(thread, '_last_activity_by_cache', None))
+
+ post = Post.objects.get(post_type='question', thread=thread.id)
+ self.assertEqual(post, thread._question_post())
+ self.assertEqual(post, thread._question_cache)
+ self.assertTrue(thread._question_post() is thread._question_cache)
+
+ def test_thread_caching_2_precache_view_data_hack(self):
+ ss = SearchState.get_empty()
+ qs, meta_data = Thread.objects.run_advanced_search(request_user=self.user, search_state=ss)
+ qs = list(qs)
+
+ Thread.objects.precache_view_data_hack(threads=qs)
+
+ for thread in qs:
+ post = Post.objects.get(post_type='question', thread=thread.id)
+ self.assertEqual(post.id, thread._question_cache.id) # Cannot compare models instances with deferred model instances
+ self.assertEqual(post.id, thread._question_post().id)
+ self.assertTrue(thread._question_post() is thread._question_cache)
+
+ user = User.objects.get(id=thread.last_activity_by_id)
+ self.assertEqual(user.id, thread._last_activity_by_cache.id)
+ self.assertTrue(thread.last_activity_by is thread._last_activity_by_cache)
+
+
+class ThreadRenderLowLevelCachingTests(AskbotTestCase):
+ def setUp(self):
+ self.create_user()
+ # INFO: title and body_text should contain tag placeholders so that we can check if they stay untouched
+ # - only real tag placeholders in tag widget should be replaced with search URLs
+ self.q = self.post_question(title="<<<tag1>>> fake title", body_text="<<<tag2>>> <<<tag3>>> cheating", tags='tag1 tag2 tag3')
+
+ self.old_cache = cache.cache
+
+ def tearDown(self):
+ cache.cache = self.old_cache # Restore caching
+
+ def test_thread_summary_rendering_dummy_cache(self):
+ cache.cache = DummyCache('', {}) # Disable caching
+
+ ss = SearchState.get_empty()
+ thread = self.q.thread
+ test_html = thread.get_summary_html(search_state=ss)
+
+ context = {
+ 'thread': thread,
+ 'question': thread._question_post(),
+ 'search_state': ss,
+ }
+ proper_html = get_template('widgets/question_summary.html').render(context)
+ self.assertEqual(test_html, proper_html)
+
+ # Make double-check that all tags are included
+ self.assertTrue(ss.add_tag('tag1').full_url() in test_html)
+ self.assertTrue(ss.add_tag('tag2').full_url() in test_html)
+ self.assertTrue(ss.add_tag('tag3').full_url() in test_html)
+ self.assertFalse(ss.add_tag('mini-mini').full_url() in test_html)
+
+ # Make sure that title and body text are escaped properly.
+ # This should be obvious at this point, if the above test passes, but why not be explicit
+ # UPDATE: And voila, these tests catched double-escaping bug in template, where `&lt;` was `&amp;lt;`
+ # And indeed, post.summary is escaped before saving, in parse_and_save()
+ # UPDATE 2:Weird things happen with question summary (it's double escaped etc., really weird) so
+ # let's just make sure that there are no tag placeholders left
+ self.assertTrue('&lt;&lt;&lt;tag1&gt;&gt;&gt; fake title' in proper_html)
+ #self.assertTrue('&lt;&lt;&lt;tag2&gt;&gt;&gt; &lt;&lt;&lt;tag3&gt;&gt;&gt; cheating' in proper_html)
+ self.assertFalse('<<<tag1>>>' in proper_html)
+ self.assertFalse('<<<tag2>>>' in proper_html)
+ self.assertFalse('<<<tag3>>>' in proper_html)
+
+ ###
+
+ ss = ss.add_tag('mini-mini')
+ context['search_state'] = ss
+ test_html = thread.get_summary_html(search_state=ss)
+ proper_html = get_template('widgets/question_summary.html').render(context)
+
+ self.assertEqual(test_html, proper_html)
+
+ # Make double-check that all tags are included (along with `mini-mini` tag)
+ self.assertTrue(ss.add_tag('tag1').full_url() in test_html)
+ self.assertTrue(ss.add_tag('tag2').full_url() in test_html)
+ self.assertTrue(ss.add_tag('tag3').full_url() in test_html)
+
+ def test_thread_summary_locmem_cache(self):
+ cache.cache = LocMemCache('', {}) # Enable local caching
+
+ thread = self.q.thread
+ key = Thread.SUMMARY_CACHE_KEY_TPL % thread.id
+
+ self.assertTrue(thread.summary_html_cached())
+ self.assertIsNotNone(thread.get_cached_summary_html())
+
+ ###
+ cache.cache.delete(key) # let's start over
+
+ self.assertFalse(thread.summary_html_cached())
+ self.assertIsNone(thread.get_cached_summary_html())
+
+ context = {
+ 'thread': thread,
+ 'question': self.q,
+ 'search_state': DummySearchState(),
+ }
+ html = get_template('widgets/question_summary.html').render(context)
+ filled_html = html.replace('<<<tag1>>>', SearchState.get_empty().add_tag('tag1').full_url())\
+ .replace('<<<tag2>>>', SearchState.get_empty().add_tag('tag2').full_url())\
+ .replace('<<<tag3>>>', SearchState.get_empty().add_tag('tag3').full_url())
+
+ self.assertEqual(filled_html, thread.get_summary_html(search_state=SearchState.get_empty()))
+ self.assertTrue(thread.summary_html_cached())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ ###
+ cache.cache.set(key, 'Test <<<tag1>>>', timeout=100)
+
+ self.assertTrue(thread.summary_html_cached())
+ self.assertEqual('Test <<<tag1>>>', thread.get_cached_summary_html())
+ self.assertEqual(
+ 'Test %s' % SearchState.get_empty().add_tag('tag1').full_url(),
+ thread.get_summary_html(search_state=SearchState.get_empty())
+ )
+
+ ###
+ cache.cache.set(key, 'TestBBB <<<tag1>>>', timeout=100)
+
+ self.assertTrue(thread.summary_html_cached())
+ self.assertEqual('TestBBB <<<tag1>>>', thread.get_cached_summary_html())
+ self.assertEqual(
+ 'TestBBB %s' % SearchState.get_empty().add_tag('tag1').full_url(),
+ thread.get_summary_html(search_state=SearchState.get_empty())
+ )
+
+ ###
+ cache.cache.delete(key)
+ thread.update_summary_html = lambda: "Monkey-patched <<<tag2>>>"
+
+ self.assertFalse(thread.summary_html_cached())
+ self.assertIsNone(thread.get_cached_summary_html())
+ self.assertEqual(
+ 'Monkey-patched %s' % SearchState.get_empty().add_tag('tag2').full_url(),
+ thread.get_summary_html(search_state=SearchState.get_empty())
+ )
+
+
+
+class ThreadRenderCacheUpdateTests(AskbotTestCase):
+ def setUp(self):
+ self.create_user()
+ self.user.set_password('pswd')
+ self.user.save()
+ assert self.client.login(username=self.user.username, password='pswd')
+
+ self.create_user(username='user2')
+ self.user2.set_password('pswd')
+ self.user2.reputation = 10000
+ self.user2.save()
+
+ self.old_cache = cache.cache
+ cache.cache = LocMemCache('', {}) # Enable local caching
+
+ def tearDown(self):
+ cache.cache = self.old_cache # Restore caching
+
+ def _html_for_question(self, q):
+ context = {
+ 'thread': q.thread,
+ 'question': q,
+ 'search_state': DummySearchState(),
+ }
+ html = get_template('widgets/question_summary.html').render(context)
+ return html
+
+ def test_post_question(self):
+ self.assertEqual(0, Post.objects.count())
+ response = self.client.post(urlresolvers.reverse('ask'), data={
+ 'title': 'test title',
+ 'text': 'test body text',
+ 'tags': 'tag1 tag2',
+ })
+ self.assertEqual(1, Post.objects.count())
+ question = Post.objects.all()[0]
+ self.assertRedirects(response=response, expected_url=question.get_absolute_url())
+
+ self.assertEqual('test title', question.thread.title)
+ self.assertEqual('test body text', question.text)
+ self.assertItemsEqual(['tag1', 'tag2'], list(question.thread.tags.values_list('name', flat=True)))
+ self.assertEqual(0, question.thread.answer_count)
+
+ self.assertTrue(question.thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(question)
+ self.assertEqual(html, question.thread.get_cached_summary_html())
+
+ def test_edit_question(self):
+ self.assertEqual(0, Post.objects.count())
+ question = self.post_question()
+
+ thread = Thread.objects.all()[0]
+ self.assertEqual(0, thread.answer_count)
+ self.assertEqual(thread.last_activity_at, question.added_at)
+ self.assertEqual(thread.last_activity_by, question.author)
+
+ time.sleep(1.5) # compensate for 1-sec time resolution in some databases
+
+ response = self.client.post(urlresolvers.reverse('edit_question', kwargs={'id': question.id}), data={
+ 'title': 'edited title',
+ 'text': 'edited body text',
+ 'tags': 'tag1 tag2',
+ 'summary': 'just some edit',
+ })
+ self.assertEqual(1, Post.objects.count())
+ question = Post.objects.all()[0]
+ self.assertRedirects(response=response, expected_url=question.get_absolute_url())
+
+ thread = question.thread
+ self.assertEqual(0, thread.answer_count)
+ self.assertTrue(thread.last_activity_at > question.added_at)
+ self.assertEqual(thread.last_activity_at, question.last_edited_at)
+ self.assertEqual(thread.last_activity_by, question.author)
+
+ self.assertTrue(question.thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(question)
+ self.assertEqual(html, question.thread.get_cached_summary_html())
+
+ def test_retag_question(self):
+ self.assertEqual(0, Post.objects.count())
+ question = self.post_question()
+ response = self.client.post(urlresolvers.reverse('retag_question', kwargs={'id': question.id}), data={
+ 'tags': 'tag1 tag2',
+ })
+ self.assertEqual(1, Post.objects.count())
+ question = Post.objects.all()[0]
+ self.assertRedirects(response=response, expected_url=question.get_absolute_url())
+
+ self.assertItemsEqual(['tag1', 'tag2'], list(question.thread.tags.values_list('name', flat=True)))
+
+ self.assertTrue(question.thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(question)
+ self.assertEqual(html, question.thread.get_cached_summary_html())
+
+ def test_answer_question(self):
+ self.assertEqual(0, Post.objects.count())
+ question = self.post_question()
+ self.assertEqual(1, Post.objects.count())
+
+ #thread = question.thread
+ # get fresh Thread instance so that on MySQL it has timestamps without microseconds
+ thread = Thread.objects.get(id=question.thread.id)
+
+ self.assertEqual(0, thread.answer_count)
+ self.assertEqual(thread.last_activity_at, question.added_at)
+ self.assertEqual(thread.last_activity_by, question.author)
+
+ self.client.logout()
+ self.client.login(username='user2', password='pswd')
+ time.sleep(1.5) # compensate for 1-sec time resolution in some databases
+ response = self.client.post(urlresolvers.reverse('answer', kwargs={'id': question.id}), data={
+ 'text': 'answer longer than 10 chars',
+ })
+ self.assertEqual(2, Post.objects.count())
+ answer = Post.objects.get_answers()[0]
+ self.assertRedirects(response=response, expected_url=answer.get_absolute_url())
+
+ thread = answer.thread
+ self.assertEqual(1, thread.answer_count)
+ self.assertEqual(thread.last_activity_at, answer.added_at)
+ self.assertEqual(thread.last_activity_by, answer.author)
+
+ self.assertTrue(question.added_at < answer.added_at)
+ self.assertNotEqual(question.author, answer.author)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ def test_edit_answer(self):
+ self.assertEqual(0, Post.objects.count())
+ question = self.post_question()
+ # get fresh question Post instance so that on MySQL it has timestamps without microseconds
+ question = Post.objects.get(id=question.id)
+ self.assertEqual(question.thread.last_activity_at, question.added_at)
+ self.assertEqual(question.thread.last_activity_by, question.author)
+
+ time.sleep(1.5) # compensate for 1-sec time resolution in some databases
+ question_thread = copy.deepcopy(question.thread) # INFO: in the line below question.thread is touched and it reloads its `last_activity_by` field so we preserve it here
+ answer = self.post_answer(user=self.user2, question=question)
+ self.assertEqual(2, Post.objects.count())
+
+ time.sleep(1.5) # compensate for 1-sec time resolution in some databases
+ self.client.logout()
+ self.client.login(username='user2', password='pswd')
+ response = self.client.post(urlresolvers.reverse('edit_answer', kwargs={'id': answer.id}), data={
+ 'text': 'edited body text',
+ 'summary': 'just some edit',
+ })
+ self.assertRedirects(response=response, expected_url=answer.get_absolute_url())
+
+ answer = Post.objects.get(id=answer.id)
+ thread = answer.thread
+ self.assertEqual(thread.last_activity_at, answer.last_edited_at)
+ self.assertEqual(thread.last_activity_by, answer.last_edited_by)
+ self.assertTrue(thread.last_activity_at > question_thread.last_activity_at)
+ self.assertNotEqual(thread.last_activity_by, question_thread.last_activity_by)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ def test_view_count(self):
+ question = self.post_question()
+ self.assertEqual(0, question.thread.view_count)
+ self.assertEqual(0, Thread.objects.all()[0].view_count)
+ self.client.logout()
+ # INFO: We need to pass some headers to make question() view believe we're not a robot
+ self.client.get(
+ urlresolvers.reverse('question', kwargs={'id': question.id}),
+ {},
+ follow=True, # the first view redirects to the full question url (with slug in it), so we have to follow that redirect
+ HTTP_ACCEPT_LANGUAGE='en',
+ HTTP_USER_AGENT='Mozilla Gecko'
+ )
+ thread = Thread.objects.all()[0]
+ self.assertEqual(1, thread.view_count)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ def test_question_upvote_downvote(self):
+ question = self.post_question()
+ question.score = 5
+ question.vote_up_count = 7
+ question.vote_down_count = 2
+ question.save()
+
+ self.client.logout()
+ self.client.login(username='user2', password='pswd')
+ response = self.client.post(urlresolvers.reverse('vote', kwargs={'id': question.id}), data={'type': '1'},
+ HTTP_X_REQUESTED_WITH='XMLHttpRequest') # use AJAX request
+ self.assertEqual(200, response.status_code)
+ data = simplejson.loads(response.content)
+
+ self.assertEqual(1, data['success'])
+ self.assertEqual(6, data['count']) # 6 == question.score(5) + 1
+
+ thread = Thread.objects.get(id=question.thread.id)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ ###
+
+ response = self.client.post(urlresolvers.reverse('vote', kwargs={'id': question.id}), data={'type': '2'},
+ HTTP_X_REQUESTED_WITH='XMLHttpRequest') # use AJAX request
+ self.assertEqual(200, response.status_code)
+ data = simplejson.loads(response.content)
+
+ self.assertEqual(1, data['success'])
+ self.assertEqual(5, data['count']) # 6 == question.score(6) - 1
+
+ thread = Thread.objects.get(id=question.thread.id)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+ def test_question_accept_answer(self):
+ question = self.post_question(user=self.user2)
+ answer = self.post_answer(question=question)
+
+ self.client.logout()
+ self.client.login(username='user2', password='pswd')
+ response = self.client.post(urlresolvers.reverse('vote', kwargs={'id': question.id}), data={'type': '0', 'postId': answer.id},
+ HTTP_X_REQUESTED_WITH='XMLHttpRequest') # use AJAX request
+ self.assertEqual(200, response.status_code)
+ data = simplejson.loads(response.content)
+
+ self.assertEqual(1, data['success'])
+
+ thread = Thread.objects.get(id=question.thread.id)
+
+ self.assertTrue(thread.summary_html_cached()) # <<< make sure that caching backend is set up properly (i.e. it's not dummy)
+ html = self._html_for_question(thread._question_post())
+ self.assertEqual(html, thread.get_cached_summary_html())
+
+
+# TODO: (in spare time - those cases should pass without changing anything in code but we should have them eventually for completness)
+# - Publishing anonymous questions / answers
+# - Re-posting question as answer and vice versa
+# - Management commands (like post_emailed_questions)
diff --git a/askbot/tests/reply_by_email_tests.py b/askbot/tests/reply_by_email_tests.py
new file mode 100644
index 00000000..698662fc
--- /dev/null
+++ b/askbot/tests/reply_by_email_tests.py
@@ -0,0 +1,188 @@
+from django.utils.translation import ugettext as _
+from askbot.models import ReplyAddress
+from askbot.mail.lamson_handlers import PROCESS, VALIDATE_EMAIL, get_parts
+from askbot import const
+
+
+from askbot.tests.utils import AskbotTestCase
+from askbot.models import Post, PostRevision
+
+TEST_CONTENT = 'Test content'
+TEST_LONG_CONTENT = 'Test content' * 10
+
+class MockPart(object):
+ def __init__(self, body):
+ self.body = body
+ self.content_encoding = {'Content-Type':('text/plain',)}
+
+class MockMessage(dict):
+
+ def __init__(
+ self, content, from_email, signature = '', response_code = False
+ ):
+ self.From= from_email
+ self['Subject'] = 'test subject'
+
+ if response_code != False:
+ #in this case we modify the content
+ re_separator = const.REPLY_SEPARATOR_TEMPLATE % {
+ 'user_action': 'john did something',
+ 'instruction': 'reply above this line'
+ }
+ content += '\n\n\nToday someone wrote:\n' + re_separator + \
+ '\nblah blah\n' + response_code + '\n' + signature
+
+ self._body = content
+ self._part = MockPart(content)
+
+ def body(self):
+ return self._body
+
+ def walk(self):
+ """todo: add real file attachment"""
+ return [self._part]
+
+class ReplyAddressModelTests(AskbotTestCase):
+
+ def setUp(self):
+ self.u1 = self.create_user(username='user1')
+ self.u1.set_status('a')
+ self.u1.email = "user1@domain.com"
+ self.u1.save()
+
+ self.u1.moderate_user_reputation(self.u1, reputation_change = 100, comment= "no comment")
+ self.u2 = self.create_user(username='user2')
+ self.u1.moderate_user_reputation(self.u2, reputation_change = 100, comment= "no comment")
+ self.u3 = self.create_user(username='user3')
+ self.u1.moderate_user_reputation(self.u3, reputation_change = 100, comment= "no comment")
+
+ self.question = self.post_question(
+ user = self.u1,
+ follow = True,
+ )
+ self.answer = self.post_answer(
+ user = self.u2,
+ question = self.question
+ )
+
+ self.comment = self.post_comment(user = self.u2, parent_post = self.answer)
+
+ def test_process_correct_answer_comment(self):
+ addr = ReplyAddress.objects.create_new(
+ post = self.answer,
+ user = self.u1
+ ).address
+ reply_separator = const.REPLY_SEPARATOR_TEMPLATE % {
+ 'user_action': 'john did something',
+ 'instruction': 'reply above this line'
+ }
+ msg = MockMessage(
+ "This is a test reply \n\nOn such and such someone"
+ "wrote something \n\n%s\nlorem ipsum " % (reply_separator),
+ "user1@domain.com"
+ )
+ msg['Subject'] = 'test subject'
+ PROCESS(msg, address = addr)
+ self.assertEquals(self.answer.comments.count(), 2)
+ self.assertEquals(self.answer.comments.all().order_by('-pk')[0].text.strip(), "This is a test reply")
+
+ def test_address_creation(self):
+ self.assertEquals(ReplyAddress.objects.all().count(), 0)
+ result = ReplyAddress.objects.create_new(
+ post = self.answer,
+ user = self.u1
+ )
+ self.assertTrue(len(result.address) >= 12 and len(result.address) <= 25)
+ self.assertEquals(ReplyAddress.objects.all().count(), 1)
+
+
+ def test_create_answer_reply(self):
+ result = ReplyAddress.objects.create_new(
+ post = self.answer,
+ user = self.u1
+ )
+ post = result.create_reply(TEST_CONTENT)
+ self.assertEquals(post.post_type, "comment")
+ self.assertEquals(post.text, TEST_CONTENT)
+ self.assertEquals(self.answer.comments.count(), 2)
+
+ def test_create_comment_reply(self):
+ result = ReplyAddress.objects.create_new(
+ post = self.comment,
+ user = self.u1
+ )
+ post = result.create_reply(TEST_CONTENT)
+ self.assertEquals(post.post_type, "comment")
+ self.assertEquals(post.text, TEST_CONTENT)
+ self.assertEquals(self.answer.comments.count(), 2)
+
+
+ def test_create_question_comment_reply(self):
+ result = ReplyAddress.objects.create_new(
+ post = self.question,
+ user = self.u3
+ )
+ post = result.create_reply(TEST_CONTENT)
+ self.assertEquals(post.post_type, "comment")
+ self.assertEquals(post.text, TEST_CONTENT)
+
+ def test_create_question_answer_reply(self):
+ result = ReplyAddress.objects.create_new(
+ post = self.question,
+ user = self.u3
+ )
+ post = result.create_reply(TEST_LONG_CONTENT)
+ self.assertEquals(post.post_type, "answer")
+ self.assertEquals(post.text, TEST_LONG_CONTENT)
+
+class EmailSignatureDetectionTests(AskbotTestCase):
+
+ def setUp(self):
+ self.u1 = self.create_user('user1', status = 'a')
+ self.u2 = self.create_user('user2', status = 'a')
+
+ def test_detect_signature_in_response(self):
+ question = self.post_question(user = self.u1)
+
+ #create a response address record
+ reply_token = ReplyAddress.objects.create_new(
+ post = question,
+ user = self.u2,
+ reply_action = 'post_answer'
+ )
+
+ self.u2.email_signature = ''
+ self.u2.save()
+
+ msg = MockMessage(
+ 'some text',
+ self.u2.email,
+ signature = 'Yours Truly',
+ response_code = reply_token.address
+ )
+ PROCESS(msg, address = reply_token.address)
+
+ signature = self.reload_object(self.u2).email_signature
+ self.assertEqual(signature, 'Yours Truly')
+
+ def test_detect_signature_in_welcome_response(self):
+ reply_token = ReplyAddress.objects.create_new(
+ user = self.u2,
+ reply_action = 'validate_email'
+ )
+ self.u2.email_signature = ''
+ self.u2.save()
+
+ msg = MockMessage(
+ 'some text',
+ self.u2.email,
+ signature = 'Yours Truly',
+ response_code = reply_token.address
+ )
+ VALIDATE_EMAIL(
+ msg,
+ address = reply_token.address
+ )
+
+ signature = self.reload_object(self.u2).email_signature
+ self.assertEqual(signature, 'Yours Truly')
diff --git a/askbot/tests/search_state_tests.py b/askbot/tests/search_state_tests.py
index b944a2e4..18f5eb36 100644
--- a/askbot/tests/search_state_tests.py
+++ b/askbot/tests/search_state_tests.py
@@ -1,107 +1,293 @@
-import re
-import unittest
-from django.test import TestCase
-from django.contrib.auth.models import AnonymousUser
-from askbot.search.state_manager import SearchState, ViewLog, parse_query
-from askbot import const
-
-DEFAULT_SORT = const.DEFAULT_POST_SORT_METHOD
-class SearchStateTests(TestCase):
- def setUp(self):
- self.state = SearchState()
- self.log = ViewLog()
-
- def visit_page(self, page_name):
- """page_name is name of the view function
- that is to be "visited"
- """
- self.log.set_current(page_name)
-
- def update(self, data, user = None):
- self.visit_page('questions')
- if user is None:
- user = AnonymousUser()
- self.state.update(data, self.log, user)
-
- def add_tag(self, tag):
- self.update({'tags': set([tag])})
-
- def remove_tag(self, tag):
- self.update({'remove_tag': tag})
-
- def assert_tags_are(self, *args):
- self.assertEqual(self.state.tags, set(args))
-
- def test_add_remove_tags(self):
- self.add_tag('tag1')
- self.assert_tags_are('tag1')
- self.add_tag('tag2')
- self.assert_tags_are('tag1', 'tag2')
- self.add_tag('tag3')
- self.assert_tags_are('tag1', 'tag2', 'tag3')
- self.remove_tag('tag3')
- self.assert_tags_are('tag1', 'tag2')
- self.remove_tag('tag2')
- self.assert_tags_are('tag1')
- self.remove_tag('tag1')
- self.assertEqual(len(self.state.tags), 0)
-
- def test_query_and_tags1(self):
- self.update({'query': 'hahaha'})
- self.add_tag('tag1')
- self.assertEquals(self.state.query, 'hahaha')
- self.assert_tags_are('tag1')
- self.update({'reset_query': True})
- self.assertEquals(self.state.query, None)
- self.assert_tags_are('tag1')
-
- def test_start_over(self):
- self.update({'query': 'hahaha'})
- self.add_tag('tag1')
- self.update({'start_over': True})
- self.assertEquals(self.state.query, None)
- self.assertEquals(self.state.tags, None)
-
- def test_auto_reset_sort(self):
- self.update({'sort': 'age-asc'})
- self.assertEquals(self.state.sort, 'age-asc')
- self.update({})
- self.assertEquals(self.state.sort, DEFAULT_SORT)
-class ParseQueryTests(unittest.TestCase):
+from askbot.tests.utils import AskbotTestCase
+from askbot.search.state_manager import SearchState
+import askbot.conf
+from django.core import urlresolvers
+
+
+class SearchStateTests(AskbotTestCase):
+ def _ss(self, query=None, tags=None):
+ return SearchState(
+ scope=None,
+ sort=None,
+ query=query,
+ tags=tags,
+ author=None,
+ page=None,
+
+ user_logged_in=False
+ )
+
+ def test_no_selectors(self):
+ ss = self._ss()
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/page:1/', # search defaults
+ ss.query_string()
+ )
+
+ def test_buggy_selectors(self):
+ ss = SearchState(
+ scope='blah1',
+ sort='blah2',
+ query=None,
+ tags=None,
+
+ # INFO: URLs for the following selectors accept only digits!
+ author=None,
+ page='0',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/page:1/', # search defaults
+ ss.query_string()
+ )
+
+ def test_all_valid_selectors(self):
+ ss = SearchState(
+ scope='unanswered',
+ sort='age-desc',
+ query=' alfa',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:unanswered/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+ self.assertEqual(
+ 'scope:unanswered/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.deepcopy().query_string()
+ )
+
+ def test_edge_cases_1(self):
+ ss = SearchState(
+ scope='favorite', # this is not a valid choice for non-logger users
+ sort='age-desc',
+ query=' alfa',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+ self.assertEqual(
+ 'scope:all/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.deepcopy().query_string()
+ )
+
+ ss = SearchState(
+ scope='favorite',
+ sort='age-desc',
+ query=' alfa',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=True
+ )
+ self.assertEqual(
+ 'scope:favorite/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+ self.assertEqual(
+ 'scope:favorite/sort:age-desc/query:alfa/tags:miki,mini/author:12/page:2/',
+ ss.deepcopy().query_string()
+ )
+
+ def test_edge_cases_2(self):
+ old_func = askbot.conf.should_show_sort_by_relevance
+ askbot.conf.should_show_sort_by_relevance = lambda: True # monkey patch
+
+ ss = SearchState(
+ scope='all',
+ sort='relevance-desc',
+ query='hejho',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:relevance-desc/query:hejho/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+
+ ss = SearchState(
+ scope='all',
+ sort='relevance-desc', # this is not a valid choice for empty queries
+ query=None,
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+
+ askbot.conf.should_show_sort_by_relevance = lambda: False # monkey patch
+
+ ss = SearchState(
+ scope='all',
+ sort='relevance-desc', # this is also invalid for db-s other than Postgresql
+ query='hejho',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/query:hejho/tags:miki,mini/author:12/page:2/',
+ ss.query_string()
+ )
+
+ askbot.conf.should_show_sort_by_relevance = old_func
+
+ def test_query_escaping(self):
+ ss = self._ss(query=' alfa miki maki +-%#?= lalala/: ') # query coming from URL is already unescaped
+
+ qs = 'scope:all/sort:activity-desc/query:alfa%20miki%20maki%20+-%25%23%3F%3D%20lalala%2F%3A/page:1/'
+ self.assertEqual(qs, ss.query_string())
+ self.assertEqual(qs, ss.deepcopy().query_string())
+
+ def test_tag_escaping(self):
+ ss = self._ss(tags=' aA09_+.-#, miki ') # tag string coming from URL is already unescaped
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/tags:aA09_+.-%23,miki/page:1/',
+ ss.query_string()
+ )
+
def test_extract_users(self):
- text = '@anna haha @"maria fernanda" @\'diego maradona\' hehe [user:karl marx] hoho user:\' george bush \''
- parse_results = parse_query(text)
- self.assertEquals(
- sorted(parse_results['query_users']),
+ ss = self._ss(query='"@anna haha @"maria fernanda" @\'diego maradona\' hehe [user:karl marx] hoho user:\' george bush \'')
+ self.assertEqual(
+ sorted(ss.query_users),
sorted(['anna', 'maria fernanda', 'diego maradona', 'karl marx', 'george bush'])
)
- self.assertEquals(parse_results['stripped_query'], 'haha hehe hoho')
+ self.assertEqual(sorted(ss.query_users), sorted(ss.deepcopy().query_users))
+
+ self.assertEqual(ss.stripped_query, '" haha hehe hoho')
+ self.assertEqual(ss.stripped_query, ss.deepcopy().stripped_query)
+
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/query:%22%40anna%20haha%20%40%22maria%20fernanda%22%20%40%27diego%20maradona%27%20hehe%20%5Buser%3Akarl%20%20marx%5D%20hoho%20%20user%3A%27%20george%20bush%20%20%27/page:1/',
+ ss.query_string()
+ )
def test_extract_tags(self):
- text = '#tag1 [tag: tag2] some text [tag3] query'
- parse_results = parse_query(text)
- self.assertEquals(set(parse_results['query_tags']), set(['tag1', 'tag2', 'tag3']))
- self.assertEquals(parse_results['stripped_query'], 'some text query')
+ ss = self._ss(query='#tag1 [tag: tag2] some text [tag3] query')
+ self.assertEqual(set(ss.query_tags), set(['tag1', 'tag2', 'tag3']))
+ self.assertEqual(ss.stripped_query, 'some text query')
+
+ self.assertFalse(ss.deepcopy().query_tags is ss.query_tags)
+ self.assertEqual(set(ss.deepcopy().query_tags), set(ss.query_tags))
+ self.assertTrue(ss.deepcopy().stripped_query is ss.stripped_query)
+ self.assertEqual(ss.deepcopy().stripped_query, ss.stripped_query)
def test_extract_title1(self):
- text = 'some text query [title: what is this?]'
- parse_results = parse_query(text)
- self.assertEquals(parse_results['query_title'], 'what is this?')
- self.assertEquals(parse_results['stripped_query'], 'some text query')
+ ss = self._ss(query='some text query [title: what is this?]')
+ self.assertEqual(ss.query_title, 'what is this?')
+ self.assertEqual(ss.stripped_query, 'some text query')
def test_extract_title2(self):
- text = 'some text query title:"what is this?"'
- parse_results = parse_query(text)
- self.assertEquals(parse_results['query_title'], 'what is this?')
- self.assertEquals(parse_results['stripped_query'], 'some text query')
+ ss = self._ss(query='some text query title:"what is this?"')
+ self.assertEqual(ss.query_title, 'what is this?')
+ self.assertEqual(ss.stripped_query, 'some text query')
def test_extract_title3(self):
- text = 'some text query title:\'what is this?\''
- parse_results = parse_query(text)
- self.assertEquals(parse_results['query_title'], 'what is this?')
- self.assertEquals(parse_results['stripped_query'], 'some text query')
-
- def test_negative_match(self):
- text = 'some query text'
- parse_results = parse_query(text)
- self.assertEquals(parse_results['stripped_query'], 'some query text')
+ ss = self._ss(query='some text query title:\'what is this?\'')
+ self.assertEqual(ss.query_title, 'what is this?')
+ self.assertEqual(ss.stripped_query, 'some text query')
+
+ def test_deep_copy_1(self):
+ # deepcopy() is tested in other tests as well, but this is a dedicated test
+ # just to make sure in one place that everything is ok:
+ # 1. immutable properties (strings, ints) are just assigned to the copy
+ # 2. lists are cloned so that change in the copy doesn't affect the original
+
+ ss = SearchState(
+ scope='unanswered',
+ sort='votes-desc',
+ query='hejho #tag1 [tag: tag2] @user @user2 title:"what is this?"',
+ tags='miki, mini',
+ author='12',
+ page='2',
+
+ user_logged_in=False
+ )
+ ss2 = ss.deepcopy()
+
+ self.assertEqual(ss.scope, 'unanswered')
+ self.assertTrue(ss.scope is ss2.scope)
+
+ self.assertEqual(ss.sort, 'votes-desc')
+ self.assertTrue(ss.sort is ss2.sort)
+
+ self.assertEqual(ss.query, 'hejho #tag1 [tag: tag2] @user @user2 title:"what is this?"')
+ self.assertTrue(ss.query is ss2.query)
+
+ self.assertFalse(ss.tags is ss2.tags)
+ self.assertItemsEqual(ss.tags, ss2.tags)
+
+ self.assertEqual(ss.author, 12)
+ self.assertTrue(ss.author is ss2.author)
+
+ self.assertEqual(ss.page, 2)
+ self.assertTrue(ss.page is ss2.page)
+
+ self.assertEqual(ss.stripped_query, 'hejho')
+ self.assertTrue(ss.stripped_query is ss2.stripped_query)
+
+ self.assertItemsEqual(ss.query_tags, ['tag1', 'tag2'])
+ self.assertFalse(ss.query_tags is ss2.query_tags)
+
+ self.assertItemsEqual(ss.query_users, ['user', 'user2'])
+ self.assertFalse(ss.query_users is ss2.query_users)
+
+ self.assertEqual(ss.query_title, 'what is this?')
+ self.assertTrue(ss.query_title is ss2.query_title)
+
+ self.assertEqual(ss._questions_url, urlresolvers.reverse('questions'))
+ self.assertTrue(ss._questions_url is ss2._questions_url)
+
+ def test_deep_copy_2(self):
+ # Regression test: a special case of deepcopy() when `tags` list is empty,
+ # there was a bug before where this empty list in original and copy pointed
+ # to the same list object
+ ss = SearchState.get_empty()
+ ss2 = ss.deepcopy()
+
+ self.assertFalse(ss.tags is ss2.tags)
+ self.assertItemsEqual(ss.tags, ss2.tags)
+ self.assertItemsEqual([], ss2.tags)
+
+ def test_cannot_add_already_added_tag(self):
+ ss = SearchState.get_empty().add_tag('double').add_tag('double')
+ self.assertListEqual(['double'], ss.tags)
+
+ def test_prevent_dupped_tags(self):
+ ss = SearchState(
+ scope=None,
+ sort=None,
+ query=None,
+ tags='valid1,dupped,valid2,dupped',
+ author=None,
+ page=None,
+ user_logged_in=False
+ )
+ self.assertEqual(
+ 'scope:all/sort:activity-desc/tags:valid1,dupped,valid2/page:1/',
+ ss.query_string()
+ )
+
+
diff --git a/askbot/tests/skin_tests.py b/askbot/tests/skin_tests.py
index 660daa4e..5226e6d6 100644
--- a/askbot/tests/skin_tests.py
+++ b/askbot/tests/skin_tests.py
@@ -41,13 +41,9 @@ class SkinTests(TestCase):
def assert_default_logo_in_skin(self, skin_name):
url = skin_utils.get_media_url(askbot_settings.SITE_LOGO_URL)
self.assertTrue('/' + skin_name + '/' in url)
- response = self.client.get(url)
- self.assertTrue(response.status_code == 200)
def test_default_skin_logo(self):
- """make sure that default logo
- is where it is expected
- """
+ """make sure that default logo is where it is expected"""
self.assert_default_logo_in_skin('default')
def test_switch_to_custom_skin_logo(self):
@@ -65,10 +61,6 @@ class SkinTests(TestCase):
new_logo = UploadedFile(file = logo_file)
askbot_settings.update('SITE_LOGO_URL', new_logo)
logo_url = askbot_settings.SITE_LOGO_URL
- self.assertTrue(
- logo_url.startswith(
- '/' + django_settings.ASKBOT_UPLOADED_FILES_URL
- )
- )
+ self.assertTrue(logo_url.startswith(django_settings.MEDIA_URL))
response = self.client.get(logo_url)
self.assertTrue(response.status_code == 200)
diff --git a/askbot/tests/utils.py b/askbot/tests/utils.py
index fdeea371..4bc69ac4 100644
--- a/askbot/tests/utils.py
+++ b/askbot/tests/utils.py
@@ -115,10 +115,11 @@ class AskbotTestCase(TestCase):
title = 'test question title',
body_text = 'test question body text',
tags = 'test',
+ by_email = False,
wiki = False,
is_anonymous = False,
follow = False,
- timestamp = None
+ timestamp = None,
):
"""posts and returns question on behalf
of user. If user is not given, it will be self.user
@@ -135,6 +136,7 @@ class AskbotTestCase(TestCase):
title = title,
body_text = body_text,
tags = tags,
+ by_email = by_email,
wiki = wiki,
is_anonymous = is_anonymous,
timestamp = timestamp
@@ -155,6 +157,7 @@ class AskbotTestCase(TestCase):
user = None,
question = None,
body_text = 'test answer text',
+ by_email = False,
follow = False,
wiki = False,
timestamp = None
@@ -165,16 +168,30 @@ class AskbotTestCase(TestCase):
return user.post_answer(
question = question,
body_text = body_text,
+ by_email = by_email,
follow = follow,
wiki = wiki,
timestamp = timestamp
)
+ def create_tag(self, tag_name, user = None):
+ """creates a user, b/c it is necessary"""
+ if user is None:
+ try:
+ user = models.User.objects.get(username = 'tag_creator')
+ except models.User.DoesNotExist:
+ user = self.create_user('tag_creator')
+
+ tag = models.Tag(created_by = user, name = tag_name)
+ tag.save()
+ return tag
+
def post_comment(
self,
user = None,
parent_post = None,
body_text = 'test comment text',
+ by_email = False,
timestamp = None
):
"""posts and returns a comment to parent post, uses
@@ -187,6 +204,7 @@ class AskbotTestCase(TestCase):
comment = user.post_comment(
parent_post = parent_post,
body_text = body_text,
+ by_email = by_email,
timestamp = timestamp,
)
diff --git a/askbot/urls.py b/askbot/urls.py
index 2c3d143d..869f7d69 100644
--- a/askbot/urls.py
+++ b/askbot/urls.py
@@ -14,7 +14,7 @@ from askbot.skins.utils import update_media_revision
admin.autodiscover()
update_media_revision()#needs to be run once, so put it here
-if hasattr(settings, "ASKBOT_TRANSLATE_URL") and settings.ASKBOT_TRANSLATE_URL:
+if getattr(settings, "ASKBOT_TRANSLATE_URL", False):
from django.utils.translation import ugettext as _
else:
_ = lambda s:s
@@ -36,27 +36,12 @@ urlpatterns = patterns('',
{'sitemaps': sitemaps},
name='sitemap'
),
- url(
- r'^m/(?P<skin>[^/]+)/media/(?P<resource>.*)$',
- views.meta.media,
- name='askbot_media',
- ),
- url(
- r'^%s(?P<path>.*)$' % settings.ASKBOT_UPLOADED_FILES_URL,
- 'django.views.static.serve',
- {'document_root': os.path.join(
- settings.PROJECT_ROOT,
- 'askbot',
- 'upfiles'
- ).replace('\\','/')
- },
- name='uploaded_file',
- ),
#no translation for this url!!
url(r'import-data/$', views.writers.import_data, name='import_data'),
url(r'^%s$' % _('about/'), views.meta.about, name='about'),
url(r'^%s$' % _('faq/'), views.meta.faq, name='faq'),
url(r'^%s$' % _('privacy/'), views.meta.privacy, name='privacy'),
+ url(r'^%s$' % _('help/'), views.meta.help, name='help'),
url(
r'^%s(?P<id>\d+)/%s$' % (_('answers/'), _('edit/')),
views.writers.edit_answer,
@@ -65,14 +50,29 @@ urlpatterns = patterns('',
url(
r'^%s(?P<id>\d+)/%s$' % (_('answers/'), _('revisions/')),
views.readers.revisions,
- kwargs = {'object_name': 'Answer'},
+ kwargs = {'post_type': 'answer'},
name='answer_revisions'
),
- url(#this url works both normally and through ajax
- r'^%s$' % _('questions/'),
+
+ # BEGIN Questions (main page) urls. All this urls work both normally and through ajax
+
+ url(
+ # Note that all parameters, even if optional, are provided to the view. Non-present ones have None value.
+ (r'^%s' % _('questions') +
+ r'(%s)?' % r'/scope:(?P<scope>\w+)' +
+ r'(%s)?' % r'/sort:(?P<sort>[\w\-]+)' +
+ r'(%s)?' % r'/query:(?P<query>[^/]+)' + # INFO: question string cannot contain slash (/), which is a section terminator
+ r'(%s)?' % r'/tags:(?P<tags>[\w+.#,-]+)' + # Should match: const.TAG_CHARS + ','; TODO: Is `#` char decoded by the time URLs are processed ??
+ r'(%s)?' % r'/author:(?P<author>\d+)' +
+ r'(%s)?' % r'/page:(?P<page>\d+)' +
+ r'/$'),
+
views.readers.questions,
name='questions'
),
+
+ # END main page urls
+
url(
r'^api/get_questions/',
views.commands.api_get_questions,
@@ -116,7 +116,7 @@ urlpatterns = patterns('',
url(
r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('revisions/')),
views.readers.revisions,
- kwargs = {'object_name': 'Question'},
+ kwargs = {'post_type': 'question'},
name='question_revisions'
),
url(
@@ -130,6 +130,11 @@ urlpatterns = patterns('',
name = 'upvote_comment'
),
url(#ajax only
+ r'^post/delete/$',
+ views.commands.delete_post,
+ name = 'delete_post'
+ ),
+ url(#ajax only
r'^post_comments/$',
views.writers.post_comments,
name='post_comments'
@@ -149,16 +154,12 @@ urlpatterns = patterns('',
views.readers.get_comment,
name='get_comment'
),
- url(#ajax only
- r'^question/get_body/$',
- views.readers.get_question_body,
- name='get_question_body'
- ),
url(
r'^%s$' % _('tags/'),
views.readers.tags,
name='tags'
),
+ #todo: collapse these three urls and use an extra json data var
url(#ajax only
r'^%s%s$' % ('mark-tag/', 'interesting/'),
views.commands.mark_tag,
@@ -172,6 +173,12 @@ urlpatterns = patterns('',
name='mark_ignored_tag'
),
url(#ajax only
+ r'^%s%s$' % ('mark-tag/', 'subscribed/'),
+ views.commands.mark_tag,
+ kwargs={'reason':'subscribed','action':'add'},
+ name='mark_subscribed_tag'
+ ),
+ url(#ajax only
r'^unmark-tag/',
views.commands.mark_tag,
kwargs={'action':'remove'},
@@ -193,6 +200,41 @@ urlpatterns = patterns('',
name = 'get_tag_list'
),
url(
+ r'^load-tag-wiki-text/',
+ views.commands.load_tag_wiki_text,
+ name = 'load_tag_wiki_text'
+ ),
+ url(#ajax only
+ r'^save-tag-wiki-text/',
+ views.commands.save_tag_wiki_text,
+ name = 'save_tag_wiki_text'
+ ),
+ url(#ajax only
+ r'^save-group-logo-url/',
+ views.commands.save_group_logo_url,
+ name = 'save_group_logo_url'
+ ),
+ url(#ajax only
+ r'^delete-group-logo/',
+ views.commands.delete_group_logo,
+ name = 'delete_group_logo'
+ ),
+ url(#ajax only
+ r'^toggle-group-profile-property/',
+ views.commands.toggle_group_profile_property,
+ name = 'toggle_group_profile_property'
+ ),
+ url(#ajax only
+ r'^edit-object-property-text/',
+ views.commands.edit_object_property_text,
+ name = 'edit_object_property_text'
+ ),
+ url(
+ r'^get-groups-list/',
+ views.commands.get_groups_list,
+ name = 'get_groups_list'
+ ),
+ url(
r'^swap-question-with-answer/',
views.commands.swap_question_with_answer,
name = 'swap_question_with_answer'
@@ -204,14 +246,20 @@ urlpatterns = patterns('',
),
url(
r'^%s$' % _('users/'),
- views.users.users,
+ views.users.show_users,
name='users'
),
+ url(
+ r'^%s%s(?P<group_id>\d+)/(?P<group_slug>.*)/$' % (_('users/'), _('by-group/')),
+ views.users.show_users,
+ kwargs = {'by_group': True},
+ name = 'users_by_group'
+ ),
#todo: rename as user_edit, b/c that's how template is named
url(
r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('edit/')),
views.users.edit_user,
- name='edit_user'
+ name ='edit_user'
),
url(
r'^%s(?P<id>\d+)/(?P<slug>.+)/%s$' % (
@@ -228,6 +276,11 @@ urlpatterns = patterns('',
name='user_profile'
),
url(
+ r'^%s$' % _('groups/'),
+ views.users.groups,
+ name='groups'
+ ),
+ url(
r'^%s$' % _('users/update_has_custom_avatar/'),
views.users.update_has_custom_avatar,
name='user_update_has_custom_avatar'
@@ -248,10 +301,30 @@ urlpatterns = patterns('',
name='read_message'
),
url(#ajax only
- r'^manage_inbox/$',
+ r'^manage-inbox/$',
views.commands.manage_inbox,
name='manage_inbox'
),
+ url(#ajax only
+ r'^save-post-reject-reason/$',
+ views.commands.save_post_reject_reason,
+ name='save_post_reject_reason'
+ ),
+ url(#ajax only
+ r'^delete-post-reject-reason/$',
+ views.commands.delete_post_reject_reason,
+ name='delete_post_reject_reason'
+ ),
+ url(#ajax only
+ r'^edit-group-membership/$',
+ views.commands.edit_group_membership,
+ name='edit_group_membership'
+ ),
+ url(#ajax only
+ r'^join-or-leave-group/$',
+ views.commands.join_or_leave_group,
+ name = 'join_or_leave_group'
+ ),
url(
r'^feeds/(?P<url>.*)/$',
'django.contrib.syndication.views.feed',
@@ -294,6 +367,8 @@ urlpatterns = patterns('',
),
)
+#todo - this url below won't work, because it is defined above
+#therefore the stackexchange urls feature won't work
if getattr(settings, 'ASKBOT_USE_STACKEXCHANGE_URLS', False):
urlpatterns += (url(
r'^%s(?P<id>\d+)/' % _('questions/'),
diff --git a/askbot/user_messages/context_processors.py b/askbot/user_messages/context_processors.py
index f4c5e3ac..230e967c 100644
--- a/askbot/user_messages/context_processors.py
+++ b/askbot/user_messages/context_processors.py
@@ -4,6 +4,7 @@ Context processor for lightweight session messages.
Time-stamp: <2008-07-19 23:16:19 carljm context_processors.py>
"""
+from django.conf import settings as django_settings
from django.utils.encoding import StrAndUnicode
from askbot.user_messages import get_and_delete_messages
@@ -13,6 +14,10 @@ def user_messages (request):
Returns session messages for the current session.
"""
+ if not request.path.startswith('/' + django_settings.ASKBOT_URL):
+ #todo: a hack, for real we need to remove this middleware
+ #and switch to the new-style session messages
+ return {}
messages = request.user.get_and_delete_messages()
#if request.user.is_authenticated():
#else:
diff --git a/askbot/utils/console.py b/askbot/utils/console.py
index 496bbd65..fe6ad29e 100644
--- a/askbot/utils/console.py
+++ b/askbot/utils/console.py
@@ -74,3 +74,43 @@ def print_progress(elapsed, total, nowipe = False):
in-place"""
output = '%6.2f%%' % (100 * float(elapsed)/float(total))
print_action(output, nowipe)
+
+class ProgressBar(object):
+ """A wrapper for an iterator, that prints
+ a progress bar along the way of iteration
+ """
+ def __init__(self, iterable, length, message = ''):
+ self.iterable = iterable
+ self.length = length
+ self.counter = float(0)
+ self.barlen = 60
+ self.progress = ''
+ if message and length > 0:
+ print message
+
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+
+ try:
+ result = self.iterable.next()
+ except StopIteration:
+ if self.length > 0:
+ sys.stdout.write('\n')
+ raise
+
+ sys.stdout.write('\b'*len(self.progress))
+
+ if self.length < self.barlen:
+ sys.stdout.write('-'*(self.barlen/self.length))
+ elif int(self.counter) % (self.length / self.barlen) == 0:
+ sys.stdout.write('-')
+
+ self.progress = ' %.2f%%' % (100 * (self.counter/self.length))
+ sys.stdout.write(self.progress)
+ sys.stdout.flush()
+
+ self.counter += 1
+ return result
diff --git a/askbot/utils/decorators.py b/askbot/utils/decorators.py
index 29e92645..0042df8f 100644
--- a/askbot/utils/decorators.py
+++ b/askbot/utils/decorators.py
@@ -84,8 +84,20 @@ def ajax_only(view_func):
raise Http404
try:
data = view_func(request, *args, **kwargs)
+ if data is None:
+ data = {}
except Exception, e:
- message = unicode(e)
+ if hasattr(e, 'messages'):
+ if len(e.messages) > 1:
+ message = u'<ul>' + \
+ u''.join(
+ map(lambda v: u'<li>%s</li>' % v, e.messages)
+ ) + \
+ u'</ul>'
+ else:
+ message = e.messages[0]
+ else:
+ message = unicode(e)
if message == '':
message = _('Oops, apologies - there was some error')
logging.debug(message)
@@ -218,3 +230,16 @@ def check_spam(field):
return wrapper
return decorator
+
+def admins_only(view_func):
+ @functools.wraps(view_func)
+ def decorator(request, *args, **kwargs):
+ if request.user.is_anonymous():
+ raise django_exceptions.PermissionDenied()
+ if not request.user.is_administrator_or_moderator():
+ raise django_exceptions.PermissionDenied(
+ _('This function is limited to moderators and administrators')
+ )
+ return view_func(request, *args, **kwargs)
+ return decorator
+
diff --git a/askbot/utils/email.py b/askbot/utils/email.py
deleted file mode 100644
index 34b11c45..00000000
--- a/askbot/utils/email.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from django.core.mail import EmailMultiAlternatives
-from django.conf import settings as django_settings
-from django.template import loader, Context
-from django.utils.html import strip_tags
-from threading import Thread
-
-def send_email(
- subject,
- recipients,
- template,
- context = {},
- sender = django_settings.DEFAULT_FROM_EMAIL,
- txt_template = None
- ):
- context['settings'] = django_settings
- html_body = loader.get_template(template).render(Context(context))
-
- if txt_template is None:
- txt_body = strip_tags(html_body)
- else:
- txt_body = loader.get_template(txt_template).render(Context(context))
-
- msg = EmailMultiAlternatives(subject, txt_body, sender, recipients)
- msg.attach_alternative(html_body, "text/html")
-
- thread = Thread(target=EmailMultiAlternatives.send, args=[msg])
- thread.setDaemon(True)
- thread.start()
diff --git a/askbot/utils/file_utils.py b/askbot/utils/file_utils.py
new file mode 100644
index 00000000..3793b5ce
--- /dev/null
+++ b/askbot/utils/file_utils.py
@@ -0,0 +1,36 @@
+"""file utilities for askbot"""
+import os
+import random
+import time
+import urlparse
+from django.core.files.storage import get_storage_class
+
+def store_file(file_object, file_name_prefix = ''):
+ """Creates an instance of django's file storage
+ object based on the file-like object,
+ returns the storage object, file name, file url
+ """
+ file_name = str(
+ time.time()
+ ).replace(
+ '.',
+ str(random.randint(0,100000))
+ ) + os.path.splitext(file_object.name)[1].lower()
+ file_name = file_name_prefix + file_name
+
+ file_storage = get_storage_class()()
+ # use default storage to store file
+ file_storage.save(file_name, file_object)
+
+ file_url = file_storage.url(file_name)
+ parsed_url = urlparse.urlparse(file_url)
+ file_url = urlparse.urlunparse(
+ urlparse.ParseResult(
+ parsed_url.scheme,
+ parsed_url.netloc,
+ parsed_url.path,
+ '', '', ''
+ )
+ )
+
+ return file_storage, file_name, file_url
diff --git a/askbot/utils/forms.py b/askbot/utils/forms.py
index c3bccf24..ee7adf7e 100644
--- a/askbot/utils/forms.py
+++ b/askbot/utils/forms.py
@@ -1,11 +1,12 @@
-from django import forms
import re
+from django import forms
+from django.http import str_to_unicode
+from django.contrib.auth.models import User
+from django.conf import settings
from django.utils.translation import ugettext as _
from django.utils.safestring import mark_safe
-from django.conf import settings
from askbot.conf import settings as askbot_settings
-from django.http import str_to_unicode
-from django.contrib.auth.models import User
+from askbot.utils.slug import slugify
from askbot import const
import logging
import urllib
@@ -26,7 +27,7 @@ def get_next_url(request, default = None):
return clean_next(request.REQUEST.get('next'), default)
class StrippedNonEmptyCharField(forms.CharField):
- def clean(self,value):
+ def clean(self, value):
value = value.strip()
if self.required and value == '':
raise forms.ValidationError(_('this field is required'))
@@ -34,7 +35,14 @@ class StrippedNonEmptyCharField(forms.CharField):
class NextUrlField(forms.CharField):
def __init__(self):
- super(NextUrlField,self).__init__(max_length = 255,widget = forms.HiddenInput(),required = False)
+ super(
+ NextUrlField,
+ self
+ ).__init__(
+ max_length = 255,
+ widget = forms.HiddenInput(),
+ required = False
+ )
def clean(self,value):
return clean_next(value)
@@ -43,19 +51,29 @@ login_form_widget_attrs = { 'class': 'required login' }
class UserNameField(StrippedNonEmptyCharField):
RESERVED_NAMES = (u'fuck', u'shit', u'ass', u'sex', u'add',
u'edit', u'save', u'delete', u'manage', u'update', 'remove', 'new')
- def __init__(self,db_model=User, db_field='username', must_exist=False,skip_clean=False,label=_('choose a username'),**kw):
+ def __init__(
+ self,
+ db_model=User,
+ db_field='username',
+ must_exist=False,
+ skip_clean=False,
+ label=_('Choose a screen name'),
+ **kw
+ ):
self.must_exist = must_exist
self.skip_clean = skip_clean
self.db_model = db_model
self.db_field = db_field
self.user_instance = None
- error_messages={'required':_('user name is required'),
- 'taken':_('sorry, this name is taken, please choose another'),
- 'forbidden':_('sorry, this name is not allowed, please choose another'),
- 'missing':_('sorry, there is no user with this name'),
- 'multiple-taken':_('sorry, we have a serious error - user name is taken by several users'),
- 'invalid':_('user name can only consist of letters, empty space and underscore'),
- }
+ error_messages={
+ 'required': _('user name is required'),
+ 'taken': _('sorry, this name is taken, please choose another'),
+ 'forbidden': _('sorry, this name is not allowed, please choose another'),
+ 'missing': _('sorry, there is no user with this name'),
+ 'multiple-taken': _('sorry, we have a serious error - user name is taken by several users'),
+ 'invalid': _('user name can only consist of letters, empty space and underscore'),
+ 'meaningless': _('please use at least some alphabetic characters in the user name'),
+ }
if 'error_messages' in kw:
error_messages.update(kw['error_messages'])
del kw['error_messages']
@@ -90,6 +108,8 @@ class UserNameField(StrippedNonEmptyCharField):
raise forms.ValidationError(self.error_messages['invalid'])
if username in self.RESERVED_NAMES:
raise forms.ValidationError(self.error_messages['forbidden'])
+ if slugify(username) == '':
+ raise forms.ValidationError(self.error_messages['meaningless'])
try:
user = self.db_model.objects.get(
**{'%s' % self.db_field : username}
@@ -115,7 +135,7 @@ class UserEmailField(forms.EmailField):
def __init__(self,skip_clean=False,**kw):
self.skip_clean = skip_clean
super(UserEmailField,self).__init__(widget=forms.TextInput(attrs=dict(login_form_widget_attrs,
- maxlength=200)), label=mark_safe(_('your email address')),
+ maxlength=200)), label=mark_safe(_('Your email <i>(never shared)</i>')),
error_messages={'required':_('email address is required'),
'invalid':_('please enter a valid email address'),
'taken':_('this email is already used by someone else, please choose another'),
@@ -146,11 +166,11 @@ class UserEmailField(forms.EmailField):
class SetPasswordForm(forms.Form):
password1 = forms.CharField(widget=forms.PasswordInput(attrs=login_form_widget_attrs),
- label=_('choose password'),
+ label=_('Password'),
error_messages={'required':_('password is required')},
)
password2 = forms.CharField(widget=forms.PasswordInput(attrs=login_form_widget_attrs),
- label=mark_safe(_('retype password')),
+ label=mark_safe(_('Password <i>(please retype)</i>')),
error_messages={'required':_('please, retype your password'),
'nomatch':_('sorry, entered passwords did not match, please try again')},
)
diff --git a/askbot/utils/functions.py b/askbot/utils/functions.py
index d31d9027..f9d36534 100644
--- a/askbot/utils/functions.py
+++ b/askbot/utils/functions.py
@@ -11,6 +11,33 @@ def get_from_dict_or_object(source, key):
return getattr(source, key)
+def enumerate_string_list(strings):
+ """for a list or a tuple ('one', 'two',) return
+ a list formatted as ['1) one', '2) two',]
+ """
+ numbered_strings = enumerate(strings, start = 1)
+ return [ '%d) %s' % item for item in numbered_strings ]
+
+def pad_string(text):
+ """Inserts one space between words,
+ including one space before the first word
+ and after the last word.
+ String without words is collapsed to ''
+ """
+ words = text.strip().split()
+ if len(words) > 0:
+ return ' ' + ' '.join(words) + ' '
+ else:
+ return ''
+
+def split_list(text):
+ """Takes text, representing a loosely formatted
+ list (comma, semicolon, empty space separated
+ words) and returns a list() of words.
+ """
+ text = text.replace(',', ' ').replace(';', ' ')
+ return text.strip().split()
+
def is_iterable(thing):
if hasattr(thing, '__iter__'):
return True
@@ -118,7 +145,6 @@ def setup_paginator(context):
pages_outside_leading_range = [n + context["pages"] for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)]
pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)]
- extend_url = context.get('extend_url', '')
return {
"base_url": context["base_url"],
"is_paginated": context["is_paginated"],
@@ -133,7 +159,6 @@ def setup_paginator(context):
"in_trailing_range" : in_trailing_range,
"pages_outside_leading_range": pages_outside_leading_range,
"pages_outside_trailing_range": pages_outside_trailing_range,
- "extend_url" : extend_url
}
def get_admin():
diff --git a/askbot/utils/html.py b/askbot/utils/html.py
index f6c168fb..2e3c1913 100644
--- a/askbot/utils/html.py
+++ b/askbot/utils/html.py
@@ -1,7 +1,11 @@
"""Utilities for working with HTML."""
import html5lib
from html5lib import sanitizer, serializer, tokenizer, treebuilders, treewalkers
-import re, htmlentitydefs
+import re
+import htmlentitydefs
+from urlparse import urlparse
+from django.core.urlresolvers import reverse
+from django.utils.html import escape
class HTMLSanitizerMixin(sanitizer.HTMLSanitizerMixin):
acceptable_elements = ('a', 'abbr', 'acronym', 'address', 'b', 'big',
@@ -28,10 +32,10 @@ class HTMLSanitizerMixin(sanitizer.HTMLSanitizerMixin):
class HTMLSanitizer(tokenizer.HTMLTokenizer, HTMLSanitizerMixin):
def __init__(self, stream, encoding=None, parseMeta=True, useChardet=True,
- lowercaseElementName=True, lowercaseAttrName=True):
+ lowercaseElementName=True, lowercaseAttrName=True, **kwargs):
tokenizer.HTMLTokenizer.__init__(self, stream, encoding, parseMeta,
useChardet, lowercaseElementName,
- lowercaseAttrName)
+ lowercaseAttrName, **kwargs)
def __iter__(self):
for token in tokenizer.HTMLTokenizer.__iter__(self):
@@ -51,6 +55,16 @@ def sanitize_html(html):
output_generator = s.serialize(stream)
return u''.join(output_generator)
+def site_link(url_name, title):
+ """returns html for the link to the given url
+ todo: may be improved to process url parameters, keyword
+ and other arguments
+ """
+ from askbot.conf import settings
+ base_url = urlparse(settings.APP_URL)
+ url = base_url.scheme + '://' + base_url.netloc + reverse(url_name)
+ return '<a href="%s">%s</a>' % (url, escape(title))
+
def unescape(text):
"""source: http://effbot.org/zone/re-sub.htm#unescape-html
Removes HTML or XML character references and entities from a text string.
diff --git a/askbot/utils/mail.py b/askbot/utils/mail.py
deleted file mode 100644
index 3eb9e97d..00000000
--- a/askbot/utils/mail.py
+++ /dev/null
@@ -1,136 +0,0 @@
-"""functions that send email in askbot
-these automatically catch email-related exceptions
-"""
-import smtplib
-import logging
-from django.core import mail
-from django.conf import settings as django_settings
-from askbot.conf import settings as askbot_settings
-from askbot import exceptions
-from askbot import const
-#todo: maybe send_mail functions belong to models
-#or the future API
-def prefix_the_subject_line(subject):
- """prefixes the subject line with the
- EMAIL_SUBJECT_LINE_PREFIX either from
- from live settings, which take default from django
- """
- prefix = askbot_settings.EMAIL_SUBJECT_PREFIX
- if prefix != '':
- subject = prefix.strip() + ' ' + subject.strip()
- return subject
-
-def extract_first_email_address(text):
- """extract first matching email address
- from text string
- returns ``None`` if there are no matches
- """
- match = const.EMAIL_REGEX.search(text)
- if match:
- return match.group(0)
- else:
- return None
-
-def thread_headers(post, orig_post, update):
- suffix_id = django_settings.SERVER_EMAIL
- if update == const.TYPE_ACTIVITY_ASK_QUESTION:
- id = "NQ-%s-%s" % (post.id, suffix_id)
- headers = {'Message-ID': id}
- elif update == const.TYPE_ACTIVITY_ANSWER:
- id = "NA-%s-%s" % (post.id, suffix_id)
- orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
- headers = {'Message-ID': id,
- 'In-Reply-To': orig_id}
- elif update == const.TYPE_ACTIVITY_UPDATE_QUESTION:
- id = "UQ-%s-%s-%s" % (post.id, post.last_edited_at, suffix_id)
- orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
- headers = {'Message-ID': id,
- 'In-Reply-To': orig_id}
- elif update == const.TYPE_ACTIVITY_COMMENT_QUESTION:
- id = "CQ-%s-%s" % (post.id, suffix_id)
- orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
- headers = {'Message-ID': id,
- 'In-Reply-To': orig_id}
- elif update == const.TYPE_ACTIVITY_UPDATE_ANSWER:
- id = "UA-%s-%s-%s" % (post.id, post.last_edited_at, suffix_id)
- orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
- headers = {'Message-ID': id,
- 'In-Reply-To': orig_id}
- elif update == const.TYPE_ACTIVITY_COMMENT_ANSWER:
- id = "CA-%s-%s" % (post.id, suffix_id)
- orig_id = "NQ-%s-%s" % (orig_post.id, suffix_id)
- headers = {'Message-ID': id,
- 'In-Reply-To': orig_id}
- else:
- # Unknown type -> Can't set headers
- return {}
-
- return headers
-
-def send_mail(
- subject_line = None,
- body_text = None,
- recipient_list = None,
- activity_type = None,
- related_object = None,
- headers = None,
- raise_on_failure = False,
- ):
- """
- todo: remove parameters not relevant to the function
- sends email message
- logs email sending activity
- and any errors are reported as critical
- in the main log file
-
- related_object is not mandatory, other arguments
- are. related_object (if given, will be saved in
- the activity record)
-
- if raise_on_failure is True, exceptions.EmailNotSent is raised
- """
- try:
- assert(subject_line is not None)
- subject_line = prefix_the_subject_line(subject_line)
- msg = mail.EmailMessage(
- subject_line,
- body_text,
- django_settings.DEFAULT_FROM_EMAIL,
- recipient_list,
- headers = headers
- )
- msg.content_subtype = 'html'
- msg.send()
- if related_object is not None:
- assert(activity_type is not None)
- except Exception, error:
- logging.critical(unicode(error))
- if raise_on_failure == True:
- raise exceptions.EmailNotSent(unicode(error))
-
-def mail_moderators(
- subject_line = '',
- body_text = '',
- raise_on_failure = False):
- """sends email to forum moderators and admins
- """
- from django.db.models import Q
- from askbot.models import User
- recipient_list = User.objects.filter(
- Q(status='m') | Q(is_superuser=True)
- ).filter(
- is_active = True
- ).values_list('email', flat=True)
- recipient_list = set(recipient_list)
-
- from_email = ''
- if hasattr(django_settings, 'DEFAULT_FROM_EMAIL'):
- from_email = django_settings.DEFAULT_FROM_EMAIL
-
- try:
- mail.send_mail(subject_line, body_text, from_email, recipient_list)
- pass
- except smtplib.SMTPException, error:
- logging.critical(unicode(error))
- if raise_on_failure == True:
- raise exceptions.EmailNotSent(unicode(error))
diff --git a/askbot/utils/markup.py b/askbot/utils/markup.py
index 3ebea3e4..ac96ec74 100644
--- a/askbot/utils/markup.py
+++ b/askbot/utils/markup.py
@@ -11,15 +11,11 @@ from markdown2 import Markdown
#url taken from http://regexlib.com/REDetails.aspx?regexp_id=501 by Brian Bothwell
URL_RE = re.compile("((?<!(href|.src|data)=['\"])((http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*))")
-LINK_PATTERNS = [
- (URL_RE, r'\1'),
-]
-
-
def get_parser():
"""returns an instance of configured ``markdown2`` parser
"""
extras = ['link-patterns', 'video']
+
if askbot_settings.ENABLE_MATHJAX or \
askbot_settings.MARKUP_CODE_FRIENDLY:
extras.append('code-friendly')
@@ -30,12 +26,17 @@ def get_parser():
#pip install -e git+git://github.com/andryuha/python-markdown2.git
extras.append('video')
+ link_patterns = [
+ (URL_RE, r'\1'),
+ ]
if askbot_settings.ENABLE_AUTO_LINKING:
pattern_list = askbot_settings.AUTO_LINK_PATTERNS.split('\n')
url_list = askbot_settings.AUTO_LINK_URLS.split('\n')
pairs = zip(pattern_list, url_list)#always takes equal number of items
for item in pairs:
- LINK_PATTERNS.append(
+ if item[0].strip() =='' or item[1].strip() == '':
+ continue
+ link_patterns.append(
(
re.compile(item[0].strip()),
item[1].strip()
@@ -57,7 +58,7 @@ def get_parser():
return Markdown(
html4tags=True,
extras=extras,
- link_patterns = LINK_PATTERNS
+ link_patterns = link_patterns
)
diff --git a/askbot/utils/mysql.py b/askbot/utils/mysql.py
index cf073010..cf0e71ef 100644
--- a/askbot/utils/mysql.py
+++ b/askbot/utils/mysql.py
@@ -6,12 +6,28 @@ SUPPORTS_FTS = None
def supports_full_text_search():
"""True if the database engine is MyISAM"""
- from askbot.models import Question
+ from askbot.models import Post
global SUPPORTS_FTS
if SUPPORTS_FTS is None:
cursor = connection.cursor()
- table_name = Question._meta.db_table
- cursor.execute("SHOW CREATE TABLE %s" % table_name);
+ table_name = Post._meta.db_table
+ cursor.execute("SHOW CREATE TABLE %s" % table_name)
+ data = cursor.fetchone()
+ if 'ENGINE=MyISAM' in data[1]:
+ SUPPORTS_FTS = True
+ else:
+ SUPPORTS_FTS = False
+ return SUPPORTS_FTS
+
+
+# This is needed to maintain compatibility with the old 0004 migration
+# Usually South migrations should be self-contained and shouldn't depend on anything but themselves,
+# but 0004 is an unfortunate exception
+def supports_full_text_search_migr0004():
+ global SUPPORTS_FTS
+ if SUPPORTS_FTS is None:
+ cursor = connection.cursor()
+ cursor.execute("SHOW CREATE TABLE question") # In migration 0004 model forum.Question used db table `question`
data = cursor.fetchone()
if 'ENGINE=MyISAM' in data[1]:
SUPPORTS_FTS = True
diff --git a/askbot/utils/slug.py b/askbot/utils/slug.py
index dbf794ce..f9e30cbf 100644
--- a/askbot/utils/slug.py
+++ b/askbot/utils/slug.py
@@ -5,29 +5,63 @@ the setting was added just in case - if people actually
want to see unicode characters in the slug. If this is the choice
slug will be simply equal to the input text
"""
+import re
+import unicodedata
from unidecode import unidecode
-from django.template import defaultfilters
+
from django.conf import settings
+from django.template import defaultfilters
+from django.utils.encoding import smart_unicode
+
+# Extra characters outside of alphanumerics that we'll allow.
+SLUG_OK = '-_~'
-def slugify(input_text, max_length=50):
+
+def unicode_slugify(s, ok=SLUG_OK, lower=True, spaces=False):
+ """Function copied from https://github.com/mozilla/unicode-slugify
+ because the author of the package never published it on pypi.
+
+ Copyright notice below applies just to this function
+ Copyright (c) 2011, Mozilla Foundation
+ All rights reserved.
+
+ L and N signify letter/number.
+ http://www.unicode.org/reports/tr44/tr44-4.html#GC_Values_Table
+ """
+ rv = []
+ for c in unicodedata.normalize('NFKC', smart_unicode(s)):
+ cat = unicodedata.category(c)[0]
+ if cat in 'LN' or c in ok:
+ rv.append(c)
+ if cat == 'Z': # space
+ rv.append(' ')
+ new = ''.join(rv).strip()
+ if not spaces:
+ new = re.sub('[-\s]+', '-', new)
+ return new.lower() if lower else new
+
+
+def slugify(input_text, max_length=150):
"""custom slugify function that
removes diacritic modifiers from the characters
"""
- if getattr(settings, 'ALLOW_UNICODE_SLUGS', False) == False:
- if input_text == '':
- return input_text
- slug = defaultfilters.slugify(unidecode(input_text))
- while len(slug) > max_length:
- # try to shorten word by word until len(slug) <= max_length
- temp = slug[:slug.rfind('-')]
- if len(temp) > 0:
- slug = temp
- else:
- #we have nothing left, do not apply the last crop,
- #apply the cut-off directly
- slug = slug[:max_length]
- break
- return slug
- else:
+ if input_text == '':
return input_text
+
+ allow_unicode_slugs = getattr(settings, 'ALLOW_UNICODE_SLUGS', False)
+ if allow_unicode_slugs:
+ slug = unicode_slugify(input_text)
+ else:
+ slug = defaultfilters.slugify(unidecode(input_text))
+ while len(slug) > max_length:
+ # try to shorten word by word until len(slug) <= max_length
+ temp = slug[:slug.rfind('-')]
+ if len(temp) > 0:
+ slug = temp
+ else:
+ #we have nothing left, do not apply the last crop,
+ #apply the cut-off directly
+ slug = slug[:max_length]
+ break
+ return slug
diff --git a/askbot/utils/url_utils.py b/askbot/utils/url_utils.py
index 0ebce394..6027d096 100644
--- a/askbot/utils/url_utils.py
+++ b/askbot/utils/url_utils.py
@@ -1,6 +1,18 @@
+import urlparse
from django.core.urlresolvers import reverse
from django.conf import settings
+def strip_path(url):
+ """srips path, params and hash fragments of the url"""
+ purl = urlparse.urlparse(url)
+ return urlparse.urlunparse(
+ urlparse.ParseResult(
+ purl.scheme,
+ purl.netloc,
+ '', '', '', ''
+ )
+ )
+
def get_login_url():
"""returns internal login url if
django_authopenid is used, or
@@ -27,6 +39,6 @@ def get_logout_redirect_url():
if 'askbot.deps.django_authopenid' in settings.INSTALLED_APPS:
return reverse('logout')
elif hasattr(settings, 'LOGOUT_REDIRECT_URL'):
- return settigs.LOGOUT_REDIRECT_URL
+ return settings.LOGOUT_REDIRECT_URL
else:
return reverse('index')
diff --git a/askbot/views/commands.py b/askbot/views/commands.py
index 2022b148..e343c85e 100644
--- a/askbot/views/commands.py
+++ b/askbot/views/commands.py
@@ -9,75 +9,27 @@ from django.conf import settings as django_settings
from django.core import exceptions
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
-from django.http import HttpResponse, HttpResponseRedirect, Http404
-from django.forms import ValidationError
+from django.http import HttpResponse, HttpResponseRedirect, Http404, HttpResponseBadRequest
+from django.forms import ValidationError, IntegerField, CharField
from django.shortcuts import get_object_or_404
from django.views.decorators import csrf
from django.utils import simplejson
+from django.utils.html import escape
from django.utils.translation import ugettext as _
+from django.utils.translation import string_concat
from askbot import models
from askbot import forms
from askbot.conf import should_show_sort_by_relevance
from askbot.conf import settings as askbot_settings
from askbot.utils import decorators
from askbot.utils import url_utils
-from askbot.skins.loaders import render_into_skin
+from askbot import mail
+from askbot.skins.loaders import render_into_skin, get_template
from askbot import const
import logging
-def process_vote(user = None, vote_direction = None, post = None):
- """function (non-view) that actually processes user votes
- - i.e. up- or down- votes
-
- in the future this needs to be converted into a real view function
- for that url and javascript will need to be adjusted
-
- also in the future make keys in response data be more meaningful
- right now they are kind of cryptic - "status", "count"
- """
- if user.is_anonymous():
- raise exceptions.PermissionDenied(_('anonymous users cannot vote'))
-
- user.assert_can_vote_for_post(
- post = post,
- direction = vote_direction
- )
-
- vote = user.get_old_vote_for_post(post)
- response_data = {}
- if vote != None:
- user.assert_can_revoke_old_vote(vote)
- score_delta = vote.cancel()
- response_data['count'] = post.score + score_delta
- response_data['status'] = 1 #this means "cancel"
-
- else:
- #this is a new vote
- votes_left = user.get_unused_votes_today()
- if votes_left <= 0:
- raise exceptions.PermissionDenied(
- _('Sorry you ran out of votes for today')
- )
-
- votes_left -= 1
- if votes_left <= \
- askbot_settings.VOTES_LEFT_WARNING_THRESHOLD:
- msg = _('You have %(votes_left)s votes left for today') \
- % {'votes_left': votes_left }
- response_data['message'] = msg
-
- if vote_direction == 'up':
- vote = user.upvote(post = post)
- else:
- vote = user.downvote(post = post)
-
- response_data['count'] = post.score
- response_data['status'] = 0 #this means "not cancel", normal operation
-
- response_data['success'] = 1
-
- return response_data
+@csrf.csrf_exempt
def manage_inbox(request):
"""delete, mark as new or seen user's
response memo objects, excluding flags
@@ -92,13 +44,18 @@ def manage_inbox(request):
post_data = simplejson.loads(request.raw_post_data)
if request.user.is_authenticated():
activity_types = const.RESPONSE_ACTIVITY_TYPES_FOR_DISPLAY
- activity_types += (const.TYPE_ACTIVITY_MENTION, )
+ activity_types += (
+ const.TYPE_ACTIVITY_MENTION,
+ const.TYPE_ACTIVITY_MARK_OFFENSIVE,
+ const.TYPE_ACTIVITY_MODERATED_NEW_POST,
+ const.TYPE_ACTIVITY_MODERATED_POST_EDIT
+ )
user = request.user
memo_set = models.ActivityAuditStatus.objects.filter(
- id__in = post_data['memo_list'],
- activity__activity_type__in = activity_types,
- user = user
- )
+ id__in = post_data['memo_list'],
+ activity__activity_type__in = activity_types,
+ user = user
+ )
action_type = post_data['action_type']
if action_type == 'delete':
@@ -107,10 +64,56 @@ def manage_inbox(request):
memo_set.update(status = models.ActivityAuditStatus.STATUS_NEW)
elif action_type == 'mark_seen':
memo_set.update(status = models.ActivityAuditStatus.STATUS_SEEN)
- else:
- raise exceptions.PermissionDenied(
- _('Oops, apologies - there was some error')
+ elif action_type == 'remove_flag':
+ for memo in memo_set:
+ activity_type = memo.activity.activity_type
+ if activity_type == const.TYPE_ACTIVITY_MARK_OFFENSIVE:
+ request.user.flag_post(
+ post = memo.activity.content_object,
+ cancel_all = True
)
+ elif activity_type in \
+ (
+ const.TYPE_ACTIVITY_MODERATED_NEW_POST,
+ const.TYPE_ACTIVITY_MODERATED_POST_EDIT
+ ):
+ post_revision = memo.activity.content_object
+ request.user.approve_post_revision(post_revision)
+ memo.delete()
+
+ #elif action_type == 'close':
+ # for memo in memo_set:
+ # if memo.activity.content_object.post_type == "question":
+ # request.user.close_question(question = memo.activity.content_object, reason = 7)
+ # memo.delete()
+ elif action_type == 'delete_post':
+ for memo in memo_set:
+ content_object = memo.activity.content_object
+ if isinstance(content_object, models.PostRevision):
+ post = content_object.post
+ else:
+ post = content_object
+ request.user.delete_post(post)
+ reject_reason = models.PostFlagReason.objects.get(
+ id = post_data['reject_reason_id']
+ )
+ body_text = string_concat(
+ _('Your post (copied in the end),'),
+ '<br/>',
+ _('was rejected for the following reason:'),
+ '<br/><br/>',
+ reject_reason.details.html,
+ '<br/><br/>',
+ _('Here is your original post'),
+ '<br/><br/>',
+ post.text
+ )
+ mail.send_mail(
+ subject_line = _('your post was not accepted'),
+ body_text = unicode(body_text),
+ recipient_list = [post.author.email,]
+ )
+ memo.delete()
user.update_response_counts()
@@ -119,8 +122,8 @@ def manage_inbox(request):
return HttpResponse(data, mimetype="application/json")
else:
raise exceptions.PermissionDenied(
- _('Sorry, but anonymous users cannot access the inbox')
- )
+ _('Sorry, but anonymous users cannot access the inbox')
+ )
else:
raise exceptions.PermissionDenied('must use POST request')
else:
@@ -136,6 +139,59 @@ def manage_inbox(request):
return HttpResponse(data, mimetype="application/json")
+def process_vote(user = None, vote_direction = None, post = None):
+ """function (non-view) that actually processes user votes
+ - i.e. up- or down- votes
+
+ in the future this needs to be converted into a real view function
+ for that url and javascript will need to be adjusted
+
+ also in the future make keys in response data be more meaningful
+ right now they are kind of cryptic - "status", "count"
+ """
+ if user.is_anonymous():
+ raise exceptions.PermissionDenied(_(
+ 'Sorry, anonymous users cannot vote'
+ ))
+
+ user.assert_can_vote_for_post(post = post, direction = vote_direction)
+ vote = user.get_old_vote_for_post(post)
+ response_data = {}
+ if vote != None:
+ user.assert_can_revoke_old_vote(vote)
+ score_delta = vote.cancel()
+ response_data['count'] = post.score + score_delta
+ response_data['status'] = 1 #this means "cancel"
+
+ else:
+ #this is a new vote
+ votes_left = user.get_unused_votes_today()
+ if votes_left <= 0:
+ raise exceptions.PermissionDenied(
+ _('Sorry you ran out of votes for today')
+ )
+
+ votes_left -= 1
+ if votes_left <= \
+ askbot_settings.VOTES_LEFT_WARNING_THRESHOLD:
+ msg = _('You have %(votes_left)s votes left for today') \
+ % {'votes_left': votes_left }
+ response_data['message'] = msg
+
+ if vote_direction == 'up':
+ vote = user.upvote(post = post)
+ else:
+ vote = user.downvote(post = post)
+
+ response_data['count'] = post.score
+ response_data['status'] = 0 #this means "not cancel", normal operation
+
+ response_data['success'] = 1
+
+ return response_data
+
+
+@csrf.csrf_exempt
def vote(request, id):
"""
todo: this subroutine needs serious refactoring it's too long and is hard to understand
@@ -198,14 +254,18 @@ def vote(request, id):
if vote_type == '0':
if request.user.is_authenticated():
answer_id = request.POST.get('postId')
- answer = get_object_or_404(models.Answer, id = answer_id)
- question = answer.question
+ answer = get_object_or_404(models.Post, post_type='answer', id = answer_id)
# make sure question author is current user
- if answer.accepted:
+ if answer.accepted():
request.user.unaccept_best_answer(answer)
response_data['status'] = 1 #cancelation
else:
request.user.accept_best_answer(answer)
+
+ ####################################################################
+ answer.thread.update_summary_html() # regenerate question/thread summary html
+ ####################################################################
+
else:
raise exceptions.PermissionDenied(
_('Sorry, but anonymous users cannot accept answers')
@@ -224,9 +284,9 @@ def vote(request, id):
#todo: fix this weirdness - why postId here
#and not with question?
id = request.POST.get('postId')
- post = get_object_or_404(models.Answer, id=id)
+ post = get_object_or_404(models.Post, post_type='answer', id=id)
else:
- post = get_object_or_404(models.Question, id=id)
+ post = get_object_or_404(models.Post, post_type='question', id=id)
#
######################
@@ -236,13 +296,18 @@ def vote(request, id):
post = post
)
+ ####################################################################
+ if vote_type in ('1', '2'): # up/down-vote question
+ post.thread.update_summary_html() # regenerate question/thread summary html
+ ####################################################################
+
elif vote_type in ['7', '8']:
#flag question or answer
if vote_type == '7':
- post = get_object_or_404(models.Question, id=id)
+ post = get_object_or_404(models.Post, post_type='question', id=id)
if vote_type == '8':
id = request.POST.get('postId')
- post = get_object_or_404(models.Answer, id=id)
+ post = get_object_or_404(models.Post, post_type='answer', id=id)
request.user.flag_post(post)
@@ -252,10 +317,10 @@ def vote(request, id):
elif vote_type in ['7.5', '8.5']:
#flag question or answer
if vote_type == '7.5':
- post = get_object_or_404(models.Question, id=id)
+ post = get_object_or_404(models.Post, post_type='question', id=id)
if vote_type == '8.5':
id = request.POST.get('postId')
- post = get_object_or_404(models.Answer, id=id)
+ post = get_object_or_404(models.Post, post_type='answer', id=id)
request.user.flag_post(post, cancel = True)
@@ -265,10 +330,10 @@ def vote(request, id):
elif vote_type in ['7.6', '8.6']:
#flag question or answer
if vote_type == '7.6':
- post = get_object_or_404(models.Question, id=id)
+ post = get_object_or_404(models.Post, id=id)
if vote_type == '8.6':
id = request.POST.get('postId')
- post = get_object_or_404(models.Answer, id=id)
+ post = get_object_or_404(models.Post, id=id)
request.user.flag_post(post, cancel_all = True)
@@ -277,10 +342,10 @@ def vote(request, id):
elif vote_type in ['9', '10']:
#delete question or answer
- post = get_object_or_404(models.Question, id = id)
+ post = get_object_or_404(models.Post, post_type='question', id=id)
if vote_type == '10':
id = request.POST.get('postId')
- post = get_object_or_404(models.Answer, id = id)
+ post = get_object_or_404(models.Post, post_type='answer', id=id)
if post.deleted == True:
request.user.restore_post(post = post)
@@ -293,30 +358,30 @@ def vote(request, id):
response_data['allowed'] = 0
response_data['success'] = 0
- question = get_object_or_404(models.Question, id=id)
+ question = get_object_or_404(models.Post, post_type='question', id=id)
vote_type = request.POST.get('type')
#accept answer
if vote_type == '4':
- has_favorited = False
fave = request.user.toggle_favorite_question(question)
- response_data['count'] = models.FavoriteQuestion.objects.filter(
- question = question
- ).count()
+ response_data['count'] = models.FavoriteQuestion.objects.filter(thread = question.thread).count()
if fave == False:
response_data['status'] = 1
elif vote_type == '11':#subscribe q updates
user = request.user
if user.is_authenticated():
- if user not in question.followed_by.all():
+ if user not in question.thread.followed_by.all():
user.follow_question(question)
if askbot_settings.EMAIL_VALIDATION == True \
and user.email_isvalid == False:
response_data['message'] = \
- _('subscription saved, %(email)s needs validation, see %(details_url)s') \
- % {'email':user.email,'details_url':reverse('faq') + '#validate'}
+ _(
+ 'Your subscription is saved, but email address '
+ '%(email)s needs to be validated, please see '
+ '<a href="%(details_url)s">more details here</a>'
+ ) % {'email':user.email,'details_url':reverse('faq') + '#validate'}
subscribed = user.subscribe_for_followed_question_alerts()
if subscribed:
@@ -337,6 +402,13 @@ def vote(request, id):
response_data['success'] = 0
response_data['message'] = u'Request mode is not supported. Please try again.'
+ if vote_type not in (1, 2, 4, 5, 6, 11, 12):
+ #favorite or subscribe/unsubscribe
+ #upvote or downvote question or answer - those
+ #are handled within user.upvote and user.downvote
+ post = models.Post.objects.get(id = id)
+ post.thread.invalidate_cached_data()
+
data = simplejson.dumps(response_data)
except Exception, e:
@@ -346,6 +418,8 @@ def vote(request, id):
return HttpResponse(data, mimetype="application/json")
#internally grouped views - used by the tagging system
+@csrf.csrf_exempt
+@decorators.post_only
@decorators.ajax_login_required
def mark_tag(request, **kwargs):#tagging system
action = kwargs['action']
@@ -386,9 +460,11 @@ def get_tags_by_wildcard(request):
"""returns an json encoded array of tag names
in the response to a wildcard tag name
"""
- matching_tags = models.Tag.objects.get_by_wildcards(
- [request.GET['wildcard'],]
- )
+ wildcard = request.GET.get('wildcard', None)
+ if wildcard is None:
+ raise Http404
+
+ matching_tags = models.Tag.objects.get_by_wildcards( [wildcard,] )
count = matching_tags.count()
names = matching_tags.values_list('name', flat = True)[:20]
re_data = simplejson.dumps({'tag_count': count, 'tag_names': list(names)})
@@ -405,7 +481,52 @@ def get_tag_list(request):
'name', flat = True
)
output = '\n'.join(tag_names)
- return HttpResponse(output, mimetype = "text/plain")
+ return HttpResponse(output, mimetype = 'text/plain')
+
+@decorators.get_only
+def load_tag_wiki_text(request):
+ """returns text of the tag wiki in markdown format"""
+ if 'tag_id' not in request.GET:
+ return HttpResponse('', status = 400)#bad request
+
+ tag = get_object_or_404(models.Tag, id = request.GET['tag_id'])
+ tag_wiki_text = getattr(tag.tag_wiki, 'text', '').strip()
+ return HttpResponse(tag_wiki_text, mimetype = 'text/plain')
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+def save_tag_wiki_text(request):
+ """if tag wiki text does not exist,
+ creates a new record, otherwise edits an existing
+ tag wiki record"""
+ form = forms.EditTagWikiForm(request.POST)
+ if form.is_valid():
+ tag_id = form.cleaned_data['tag_id']
+ text = form.cleaned_data['text'] or ' '#a hack to save blank data
+ tag = models.Tag.objects.get(id = tag_id)
+ if tag.tag_wiki:
+ request.user.edit_post(tag.tag_wiki, body_text = text)
+ tag_wiki = tag.tag_wiki
+ else:
+ tag_wiki = request.user.post_tag_wiki(tag, body_text = text)
+ return {'html': tag_wiki.html}
+ else:
+ raise ValueError('invalid post data')
+
+
+@decorators.get_only
+def get_groups_list(request):
+ """returns names of group tags
+ for the autocomplete function"""
+ group_names = models.Tag.group_tags.get_all().filter(
+ deleted = False
+ ).values_list(
+ 'name', flat = True
+ )
+ group_names = map(lambda v: v.replace('-', ' '), group_names)
+ output = '\n'.join(group_names)
+ return HttpResponse(output, mimetype = 'text/plain')
@csrf.csrf_protect
def subscribe_for_tags(request):
@@ -445,44 +566,40 @@ def subscribe_for_tags(request):
@decorators.get_only
def api_get_questions(request):
- """json api for retrieving questions
- todo - see if it is possible to integrate this with the
- questions view
- """
- form = forms.AdvancedSearchForm(request.GET)
- if form.is_valid():
- query = form.cleaned_data['query']
- questions = models.Question.objects.get_by_text_query(query)
- if should_show_sort_by_relevance():
- questions = questions.extra(order_by = ['-relevance'])
- questions = questions.distinct()
- page_size = form.cleaned_data.get('page_size', 30)
- questions = questions[:page_size]
-
-
- question_list = list()
- for question in questions:
- question_list.append({
- 'url': question.get_absolute_url(),
- 'title': question.title,
- 'answer_count': question.answer_count
- })
- json_data = simplejson.dumps(question_list)
- return HttpResponse(json_data, mimetype = "application/json")
- else:
- raise ValidationError('InvalidInput')
-
-
+ """json api for retrieving questions"""
+ query = request.GET.get('query', '').strip()
+ if not query:
+ return HttpResponseBadRequest('Invalid query')
+ threads = models.Thread.objects.get_for_query(query)
+ if should_show_sort_by_relevance():
+ threads = threads.extra(order_by = ['-relevance'])
+ #todo: filter out deleted threads, for now there is no way
+ threads = threads.distinct()[:30]
+ thread_list = [{
+ 'url': thread.get_absolute_url(),
+ 'title': escape(thread.title),
+ 'answer_count': thread.answer_count
+ } for thread in threads]
+ json_data = simplejson.dumps(thread_list)
+ return HttpResponse(json_data, mimetype = "application/json")
+
+
+@csrf.csrf_exempt
+@decorators.post_only
@decorators.ajax_login_required
def set_tag_filter_strategy(request):
- """saves data in the ``User.display_tag_filter_strategy``
+ """saves data in the ``User.[email/display]_tag_filter_strategy``
for the current user
"""
filter_type = request.POST['filter_type']
filter_value = int(request.POST['filter_value'])
- assert(filter_type == 'display')
- assert(filter_value in dict(const.TAG_FILTER_STRATEGY_CHOICES))
- request.user.display_tag_filter_strategy = filter_value
+ assert(filter_type in ('display', 'email'))
+ if filter_type == 'display':
+ assert(filter_value in dict(const.TAG_DISPLAY_FILTER_STRATEGY_CHOICES))
+ request.user.display_tag_filter_strategy = filter_value
+ else:
+ assert(filter_value in dict(const.TAG_EMAIL_FILTER_STRATEGY_CHOICES))
+ request.user.email_tag_filter_strategy = filter_value
request.user.save()
return HttpResponse('', mimetype = "application/json")
@@ -493,7 +610,7 @@ def close(request, id):#close question
"""view to initiate and process
question close
"""
- question = get_object_or_404(models.Question, id=id)
+ question = get_object_or_404(models.Post, post_type='question', id=id)
try:
if request.method == 'POST':
form = forms.CloseForm(request.POST)
@@ -526,7 +643,7 @@ def reopen(request, id):#re-open question
this is not an ajax view
"""
- question = get_object_or_404(models.Question, id=id)
+ question = get_object_or_404(models.Post, post_type='question', id=id)
# open question
try:
if request.method == 'POST' :
@@ -534,8 +651,8 @@ def reopen(request, id):#re-open question
return HttpResponseRedirect(question.get_absolute_url())
else:
request.user.assert_can_reopen_question(question)
- closed_by_profile_url = question.closed_by.get_profile_url()
- closed_by_username = question.closed_by.username
+ closed_by_profile_url = question.thread.closed_by.get_profile_url()
+ closed_by_username = question.thread.closed_by.username
data = {
'question' : question,
'closed_by_profile_url': closed_by_profile_url,
@@ -548,6 +665,7 @@ def reopen(request, id):#re-open question
return HttpResponseRedirect(question.get_absolute_url())
+@csrf.csrf_exempt
@decorators.ajax_only
def swap_question_with_answer(request):
"""receives two json parameters - answer id
@@ -557,7 +675,7 @@ def swap_question_with_answer(request):
"""
if request.user.is_authenticated():
if request.user.is_administrator() or request.user.is_moderator():
- answer = models.Answer.objects.get(id = request.POST['answer_id'])
+ answer = models.Post.objects.get_answers().get(id = request.POST['answer_id'])
new_question = answer.swap_with_question(new_title = request.POST['new_title'])
return {
'id': new_question.id,
@@ -565,6 +683,7 @@ def swap_question_with_answer(request):
}
raise Http404
+@csrf.csrf_exempt
@decorators.ajax_only
@decorators.post_only
def upvote_comment(request):
@@ -574,7 +693,7 @@ def upvote_comment(request):
if form.is_valid():
comment_id = form.cleaned_data['post_id']
cancel_vote = form.cleaned_data['cancel_vote']
- comment = models.Comment.objects.get(id = comment_id)
+ comment = get_object_or_404(models.Post, post_type='comment', id=comment_id)
process_vote(
post = comment,
vote_direction = 'up',
@@ -584,7 +703,30 @@ def upvote_comment(request):
raise ValueError
return {'score': comment.score}
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+def delete_post(request):
+ if request.user.is_anonymous():
+ raise exceptions.PermissionDenied(_('Please sign in to delete/restore posts'))
+ form = forms.VoteForm(request.POST)
+ if form.is_valid():
+ post_id = form.cleaned_data['post_id']
+ post = get_object_or_404(
+ models.Post,
+ post_type__in = ('question', 'answer'),
+ id = post_id
+ )
+ if form.cleaned_data['cancel_vote']:
+ request.user.restore_post(post)
+ else:
+ request.user.delete_post(post)
+ else:
+ raise ValueError
+ return {'is_deleted': post.deleted}
+
#askbot-user communication system
+@csrf.csrf_exempt
def read_message(request):#marks message a read
if request.method == "POST":
if request.POST['formdata'] == 'required':
@@ -592,3 +734,182 @@ def read_message(request):#marks message a read
if request.user.is_authenticated():
request.user.delete_messages()
return HttpResponse('')
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def edit_group_membership(request):
+ form = forms.EditGroupMembershipForm(request.POST)
+ if form.is_valid():
+ group_name = form.cleaned_data['group_name']
+ user_id = form.cleaned_data['user_id']
+ try:
+ user = models.User.objects.get(id = user_id)
+ except models.User.DoesNotExist:
+ raise exceptions.PermissionDenied(
+ 'user with id %d not found' % user_id
+ )
+
+ action = form.cleaned_data['action']
+ #warning: possible race condition
+ if action == 'add':
+ group_params = {'group_name': group_name, 'user': user}
+ group = models.Tag.group_tags.get_or_create(**group_params)
+ request.user.edit_group_membership(user, group, 'add')
+ template = get_template('widgets/group_snippet.html')
+ return {
+ 'name': group.name,
+ 'description': getattr(group.tag_wiki, 'text', ''),
+ 'html': template.render({'group': group})
+ }
+ elif action == 'remove':
+ try:
+ group = models.Tag.group_tags.get_by_name(group_name = group_name)
+ request.user.edit_group_membership(user, group, 'remove')
+ except models.Tag.DoesNotExist:
+ raise exceptions.PermissionDenied()
+ else:
+ raise exceptions.PermissionDenied()
+ else:
+ raise exceptions.PermissionDenied()
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def save_group_logo_url(request):
+ """saves urls for the group logo"""
+ form = forms.GroupLogoURLForm(request.POST)
+ if form.is_valid():
+ group_id = form.cleaned_data['group_id']
+ image_url = form.cleaned_data['image_url']
+ group = models.Tag.group_tags.get(id = group_id)
+ group.group_profile.logo_url = image_url
+ group.group_profile.save()
+ else:
+ raise ValueError('invalid data found when saving group logo')
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def delete_group_logo(request):
+ group_id = IntegerField().clean(int(request.POST['group_id']))
+ group = models.Tag.group_tags.get(id = group_id)
+ group.group_profile.logo_url = None
+ group.group_profile.save()
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def delete_post_reject_reason(request):
+ reason_id = IntegerField().clean(int(request.POST['reason_id']))
+ reason = models.PostFlagReason.objects.get(id = reason_id)
+ reason.delete()
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def toggle_group_profile_property(request):
+ #todo: this might be changed to more general "toggle object property"
+ group_id = IntegerField().clean(int(request.POST['group_id']))
+ property_name = CharField().clean(request.POST['property_name'])
+ assert property_name in ('is_open', 'moderate_email')
+
+ group = models.Tag.objects.get(id = group_id)
+ new_value = not getattr(group.group_profile, property_name)
+ setattr(group.group_profile, property_name, new_value)
+ group.group_profile.save()
+ return {'is_enabled': new_value}
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.admins_only
+def edit_object_property_text(request):
+ model_name = CharField().clean(request.REQUEST['model_name'])
+ object_id = IntegerField().clean(request.REQUEST['object_id'])
+ property_name = CharField().clean(request.REQUEST['property_name'])
+
+ accessible_fields = (
+ ('GroupProfile', 'preapproved_emails'),
+ ('GroupProfile', 'preapproved_email_domains')
+ )
+
+ if (model_name, property_name) not in accessible_fields:
+ raise exceptions.PermissionDenied()
+
+ obj = models.get_model(model_name).objects.get(id=object_id)
+ if request.method == 'POST':
+ text = CharField().clean(request.POST['text'])
+ setattr(obj, property_name, text)
+ obj.save()
+ elif request.method == 'GET':
+ return {'text': getattr(obj, property_name)}
+ else:
+ raise exceptions.PermissionDenied()
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+def join_or_leave_group(request):
+ """only current user can join/leave group"""
+ if request.user.is_anonymous():
+ raise exceptions.PermissionDenied()
+
+ group_id = IntegerField().clean(request.POST['group_id'])
+ group = models.Tag.objects.get(id = group_id)
+
+ if request.user.is_group_member(group):
+ action = 'remove'
+ is_member = False
+ else:
+ action = 'add'
+ is_member = True
+ request.user.edit_group_membership(
+ user = request.user,
+ group = group,
+ action = action
+ )
+ return {'is_member': is_member}
+
+
+@csrf.csrf_exempt
+@decorators.ajax_only
+@decorators.post_only
+@decorators.admins_only
+def save_post_reject_reason(request):
+ """saves post reject reason and returns the reason id
+ if reason_id is not given in the input - a new reason is created,
+ otherwise a reason with the given id is edited and saved
+ """
+ form = forms.EditRejectReasonForm(request.POST)
+ if form.is_valid():
+ title = form.cleaned_data['title']
+ details = form.cleaned_data['details']
+ if form.cleaned_data['reason_id'] is None:
+ reason = request.user.create_post_reject_reason(
+ title = title, details = details
+ )
+ else:
+ reason_id = form.cleaned_data['reason_id']
+ reason = models.PostFlagReason.objects.get(id = reason_id)
+ request.user.edit_post_reject_reason(
+ reason, title = title, details = details
+ )
+ return {
+ 'reason_id': reason.id,
+ 'title': title,
+ 'details': details
+ }
+ else:
+ raise Exception(forms.format_form_errors(form))
diff --git a/askbot/views/meta.py b/askbot/views/meta.py
index 493ab8ec..8e2c555e 100644
--- a/askbot/views/meta.py
+++ b/askbot/views/meta.py
@@ -6,7 +6,7 @@ This module contains a collection of views displaying all sorts of secondary and
from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from django.template import RequestContext, Template
-from django.http import HttpResponseRedirect, HttpResponse
+from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.views import static
@@ -14,7 +14,7 @@ from django.views.decorators import csrf
from django.db.models import Max, Count
from askbot.forms import FeedbackForm
from askbot.utils.forms import get_next_url
-from askbot.utils.mail import mail_moderators
+from askbot.mail import mail_moderators
from askbot.models import BadgeData, Award, User
from askbot.models import badges as badge_data
from askbot.skins.loaders import get_template, render_into_skin, render_text_into_skin
@@ -23,17 +23,26 @@ from askbot import skins
def generic_view(request, template = None, page_class = None):
"""this may be not necessary, since it is just a rewrite of render_into_skin"""
+ if request is None: # a plug for strange import errors in django startup
+ return render_to_response('django_error.html')
return render_into_skin(template, {'page_class': page_class}, request)
def config_variable(request, variable_name = None, mimetype = None):
"""Print value from the configuration settings
as response content. All parameters are required.
"""
+ #todo add http header-based caching here!!!
output = getattr(askbot_settings, variable_name, '')
return HttpResponse(output, mimetype = mimetype)
def about(request, template='about.html'):
- return generic_view(request, template = template, page_class = 'meta')
+ title = _('About %(site)s') % {'site': askbot_settings.APP_SHORT_NAME}
+ data = {
+ 'title': title,
+ 'page_class': 'meta',
+ 'content': askbot_settings.FORUM_ABOUT
+ }
+ return render_into_skin('static_page.html', data, request)
def page_not_found(request, template='404.html'):
return generic_view(request, template)
@@ -41,31 +50,32 @@ def page_not_found(request, template='404.html'):
def server_error(request, template='500.html'):
return generic_view(request, template)
+def help(request):
+ data = {
+ 'app_name': askbot_settings.APP_SHORT_NAME,
+ 'page_class': 'meta'
+ }
+ return render_into_skin('help.html', data, request)
+
def faq(request):
- if getattr(askbot_settings, 'FORUM_FAQ',''):
- text = _(getattr(askbot_settings, 'FORUM_FAQ',''))
+ if askbot_settings.FORUM_FAQ.strip() != '':
data = {
- 'gravatar_faq_url': reverse('faq') + '#gravatar',
- #'send_email_key_url': reverse('send_email_key'),
- 'ask_question_url': reverse('ask'),
+ 'title': _('FAQ'),
+ 'content': askbot_settings.FORUM_FAQ,
'page_class': 'meta',
}
- forum_faq = render_text_into_skin(text, data, request)
- data_out = {
+ return render_into_skin(
+ 'static_page.html',
+ data,
+ request
+ )
+ else:
+ data = {
'gravatar_faq_url': reverse('faq') + '#gravatar',
- #'send_email_key_url': reverse('send_email_key'),
'ask_question_url': reverse('ask'),
'page_class': 'meta',
- 'forum_faq' : forum_faq,
}
- return render_into_skin('faq.html', data_out, request)
- data = {
- 'gravatar_faq_url': reverse('faq') + '#gravatar',
- #'send_email_key_url': reverse('send_email_key'),
- 'ask_question_url': reverse('ask'),
- 'page_class': 'meta',
- }
- return render_into_skin('faq_static.html', data, request)
+ return render_into_skin('faq_static.html', data, request)
@csrf.csrf_protect
def feedback(request):
@@ -79,7 +89,7 @@ def feedback(request):
data['email'] = form.cleaned_data.get('email',None)
data['message'] = form.cleaned_data['message']
data['name'] = form.cleaned_data.get('name',None)
- template = get_template('feedback_email.txt', request)
+ template = get_template('email/feedback_email.txt', request)
message = template.render(RequestContext(request, data))
mail_moderators(_('Q&A forum feedback'), message)
msg = _('Thanks for the feedback!')
@@ -94,10 +104,17 @@ def feedback(request):
feedback.CANCEL_MESSAGE=_('We look forward to hearing your feedback! Please, give it next time :)')
def privacy(request):
- return render_into_skin('privacy.html', {'page_class': 'meta'}, request)
+ data = {
+ 'title': _('Privacy policy'),
+ 'page_class': 'meta',
+ 'content': askbot_settings.FORUM_PRIVACY
+ }
+ return render_into_skin('static_page.html', data, request)
def badges(request):#user status/reputation system
#todo: supplement database data with the stuff from badges.py
+ if askbot_settings.BADGES_MODE != 'public':
+ raise Http404
known_badges = badge_data.BADGES.keys()
badges = BadgeData.objects.filter(slug__in = known_badges).order_by('slug')
my_badges = []
@@ -121,6 +138,7 @@ def badges(request):#user status/reputation system
def badge(request, id):
#todo: supplement database data with the stuff from badges.py
badge = get_object_or_404(BadgeData, id=id)
+
badge_recipients = User.objects.filter(
award_user__badge = badge
).annotate(
@@ -137,14 +155,3 @@ def badge(request, id):
'page_class': 'meta',
}
return render_into_skin('badge.html', data, request)
-
-def media(request, skin, resource):
- """view that serves static media from any skin
- uses django static serve view, where document root is
- adjusted according to the current skin selection
-
- in production this views should be by-passed via server configuration
- for the better efficiency of serving static files
- """
- dir = skins.utils.get_path_to_skin(skin)
- return static.serve(request, '/media/' + resource, document_root = dir)
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index 2c637f36..5f4d9ee4 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -11,12 +11,11 @@ import logging
import urllib
import operator
from django.shortcuts import get_object_or_404
-from django.http import HttpResponseRedirect, HttpResponse, Http404
-from django.conf import settings as django_settings
+from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpResponseNotAllowed
from django.core.paginator import Paginator, EmptyPage, InvalidPage
from django.template import Context
-from django.utils.http import urlencode
from django.utils import simplejson
+from django.utils.html import escape
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from django.utils import translation
@@ -24,28 +23,30 @@ from django.views.decorators import csrf
from django.core.urlresolvers import reverse
from django.core import exceptions as django_exceptions
from django.contrib.humanize.templatetags import humanize
-from django.views.decorators.cache import cache_page
from django.http import QueryDict
+from django.conf import settings
import askbot
from askbot import exceptions
from askbot.utils.diff import textDiff as htmldiff
-from askbot.forms import AdvancedSearchForm, AnswerForm, ShowQuestionForm
+from askbot.forms import AnswerForm, ShowQuestionForm
from askbot import models
from askbot import schedules
-from askbot.models.badges import award_badges_signal
+from askbot.models.tag import Tag
from askbot import const
from askbot.utils import functions
+from askbot.utils.html import sanitize_html
from askbot.utils.decorators import anonymous_forbidden, ajax_only, get_only
-from askbot.search.state_manager import SearchState
+from askbot.search.state_manager import SearchState, DummySearchState
from askbot.templatetags import extra_tags
-from askbot.templatetags import extra_filters
import askbot.conf
from askbot.conf import settings as askbot_settings
-from askbot.skins.loaders import render_into_skin, get_template#jinja2 template loading enviroment
+from askbot.skins.loaders import render_into_skin, get_template #jinja2 template loading enviroment
# used in index page
#todo: - take these out of const or settings
+from askbot.models import Post, Vote
+
INDEX_PAGE_SIZE = 30
INDEX_AWARD_SIZE = 15
INDEX_TAGS_SIZE = 25
@@ -65,65 +66,53 @@ def index(request):#generates front page - shows listing of questions sorted in
"""
return HttpResponseRedirect(reverse('questions'))
-def questions(request):
+def questions(request, **kwargs):
"""
List of Questions, Tagged questions, and Unanswered questions.
matching search query or user selection
"""
#before = datetime.datetime.now()
- #don't allow to post to this view
- if request.method == 'POST':
- raise Http404
+ if request.method != 'GET':
+ return HttpResponseNotAllowed(['GET'])
- #update search state
- form = AdvancedSearchForm(request.GET)
- if form.is_valid():
- user_input = form.cleaned_data
- else:
- user_input = None
- search_state = request.session.get('search_state', SearchState())
- view_log = request.session['view_log']
- search_state.update(user_input, view_log, request.user)
- request.session['search_state'] = search_state
- request.session.modified = True
-
- #force reset for debugging
- #search_state.reset()
- #request.session.modified = True
-
- #todo: have this call implemented for sphinx, mysql and pgsql
- (qs, meta_data, related_tags) = models.Question.objects.run_advanced_search(
- request_user = request.user,
- search_state = search_state,
- )
+ search_state = SearchState(user_logged_in=request.user.is_authenticated(), **kwargs)
+ page_size = int(askbot_settings.DEFAULT_QUESTIONS_PAGE_SIZE)
- tag_list_type = askbot_settings.TAG_LIST_FORMAT
+ qs, meta_data = models.Thread.objects.run_advanced_search(request_user=request.user, search_state=search_state)
- #force cloud to sort by name
- if tag_list_type == 'cloud':
- related_tags = sorted(related_tags, key = operator.attrgetter('name'))
+ if meta_data['non_existing_tags']:
+ search_state = search_state.remove_tags(meta_data['non_existing_tags'])
- font_size = extra_tags.get_tag_font_size(related_tags)
+ paginator = Paginator(qs, page_size)
+ if paginator.num_pages < search_state.page:
+ search_state.page = 1
+ page = paginator.page(search_state.page)
- paginator = Paginator(qs, search_state.page_size)
+ page.object_list = list(page.object_list) # evaluate queryset
- if paginator.num_pages < search_state.page:
- raise Http404
+ # INFO: Because for the time being we need question posts and thread authors
+ # down the pipeline, we have to precache them in thread objects
+ models.Thread.objects.precache_view_data_hack(threads=page.object_list)
- page = paginator.page(search_state.page)
+ related_tags = Tag.objects.get_related_to_search(threads=page.object_list, ignored_tag_names=meta_data.get('ignored_tag_names', []))
+ tag_list_type = askbot_settings.TAG_LIST_FORMAT
+ if tag_list_type == 'cloud': #force cloud to sort by name
+ related_tags = sorted(related_tags, key = operator.attrgetter('name'))
- contributors = models.Question.objects.get_question_and_answer_contributors(page.object_list)
+ contributors = list(models.Thread.objects.get_thread_contributors(thread_list=page.object_list).only('id', 'username', 'gravatar'))
paginator_context = {
- 'is_paginated' : (paginator.count > search_state.page_size),
+ 'is_paginated' : (paginator.count > page_size),
+
'pages': paginator.num_pages,
'page': search_state.page,
'has_previous': page.has_previous(),
'has_next': page.has_next(),
'previous': page.previous_page_number(),
'next': page.next_page_number(),
- 'base_url' : request.path + '?sort=%s&amp;' % search_state.sort,#todo in T sort=>sort_method
- 'page_size' : search_state.page_size,#todo in T pagesize -> page_size
+
+ 'base_url' : search_state.query_string(),
+ 'page_size' : page_size,
}
# We need to pass the rss feed url based
@@ -140,148 +129,93 @@ def questions(request):
# We have tags in session - pass it to the
# QueryDict but as a list - we want tags+
rss_query_dict.setlist("tags", search_state.tags)
-
- # Format the url with the QueryDict
- context_feed_url = '/feeds/rss/?%s' % rss_query_dict.urlencode()
+ context_feed_url = '/%sfeeds/rss/?%s' % (settings.ASKBOT_URL, rss_query_dict.urlencode()) # Format the url with the QueryDict
- if request.is_ajax():
+ reset_method_count = len(filter(None, [search_state.query, search_state.tags, meta_data.get('author_name', None)]))
+ if request.is_ajax():
q_count = paginator.count
- if search_state.tags:
- question_counter = ungettext(
- '%(q_num)s question, tagged',
- '%(q_num)s questions, tagged',
- q_count
- ) % {
- 'q_num': humanize.intcomma(q_count),
- }
- else:
- question_counter = ungettext(
- '%(q_num)s question',
- '%(q_num)s questions',
- q_count
- ) % {
- 'q_num': humanize.intcomma(q_count),
- }
-
- if q_count > search_state.page_size:
+
+ question_counter = ungettext('%(q_num)s question', '%(q_num)s questions', q_count)
+ question_counter = question_counter % {'q_num': humanize.intcomma(q_count),}
+
+ if q_count > page_size:
paginator_tpl = get_template('main_page/paginator.html', request)
- #todo: remove this patch on context after all templates are moved to jinja
- paginator_context['base_url'] = request.path + '?sort=%s&' % search_state.sort
- data = {
- 'context': extra_tags.cnprog_paginator(paginator_context),
- 'questions_count': q_count
- }
- paginator_html = paginator_tpl.render(Context(data))
+ paginator_html = paginator_tpl.render(Context({
+ 'context': functions.setup_paginator(paginator_context),
+ 'questions_count': q_count,
+ 'page_size' : page_size,
+ 'search_state': search_state,
+ }))
else:
paginator_html = ''
- search_tags = list()
- if search_state.tags:
- search_tags = list(search_state.tags)
- query_data = {
- 'tags': search_tags,
- 'sort_order': search_state.sort
- }
+
+ questions_tpl = get_template('main_page/questions_loop.html', request)
+ questions_html = questions_tpl.render(Context({
+ 'threads': page,
+ 'search_state': search_state,
+ 'reset_method_count': reset_method_count,
+ }))
+
ajax_data = {
- #current page is 1 by default now
- #because ajax is only called by update in the search button
- 'query_data': query_data,
+ 'query_data': {
+ 'tags': search_state.tags,
+ 'sort_order': search_state.sort,
+ 'ask_query_string': search_state.ask_query_string(),
+ },
'paginator': paginator_html,
'question_counter': question_counter,
- 'questions': list(),
- 'related_tags': list(),
- 'faces': list(),
+ 'faces': [],#[extra_tags.gravatar(contributor, 48) for contributor in contributors],
'feed_url': context_feed_url,
+ 'query_string': search_state.query_string(),
+ 'page_size' : page_size,
+ 'questions': questions_html.replace('\n',''),
+ 'non_existing_tags': meta_data['non_existing_tags']
}
-
- badge_levels = dict(const.BADGE_TYPE_CHOICES)
- def pluralize_badge_count(count, level):
- return ungettext(
- '%(badge_count)d %(badge_level)s badge',
- '%(badge_count)d %(badge_level)s badges',
- count
- ) % {
- 'badge_count': count,
- 'badge_level': badge_levels[level]
- }
-
- gold_badge_css_class = const.BADGE_CSS_CLASSES[const.GOLD_BADGE],
- silver_badge_css_class = const.BADGE_CSS_CLASSES[const.SILVER_BADGE],
- bronze_badge_css_class = const.BADGE_CSS_CLASSES[const.BRONZE_BADGE],
-
- for tag in related_tags:
- tag_data = {
- 'name': tag.name,
- 'used_count': humanize.intcomma(tag.local_used_count)
- }
- ajax_data['related_tags'].append(tag_data)
-
- for contributor in contributors:
- ajax_data['faces'].append(extra_tags.gravatar(contributor, 48))
- #we render the template
- #from django.template import RequestContext
- questions_tpl = get_template('main_page/questions_loop.html', request)
- #todo: remove this patch on context after all templates are moved to jinja
- data = {
- 'questions': page,
- 'questions_count': q_count,
- 'context': paginator_context,
+ ajax_data['related_tags'] = [{
+ 'name': escape(tag.name),
+ 'used_count': humanize.intcomma(tag.local_used_count)
+ } for tag in related_tags]
+
+ return HttpResponse(simplejson.dumps(ajax_data), mimetype = 'application/json')
+
+ else: # non-AJAX branch
+
+ template_data = {
+ 'active_tab': 'questions',
+ 'author_name' : meta_data.get('author_name',None),
+ 'contributors' : contributors,
+ 'context' : paginator_context,
+ 'is_unanswered' : False,#remove this from template
+ 'interesting_tag_names': meta_data.get('interesting_tag_names', None),
+ 'ignored_tag_names': meta_data.get('ignored_tag_names', None),
+ 'subscribed_tag_names': meta_data.get('subscribed_tag_names', None),
'language_code': translation.get_language(),
+ 'name_of_anonymous_user' : models.get_name_of_anonymous_user(),
+ 'page_class': 'main-page',
+ 'page_size': page_size,
'query': search_state.query,
+ 'threads' : page,
+ 'questions_count' : paginator.count,
+ 'reset_method_count': reset_method_count,
+ 'scope': search_state.scope,
+ 'show_sort_by_relevance': askbot.conf.should_show_sort_by_relevance(),
+ 'search_tags' : search_state.tags,
+ 'sort': search_state.sort,
+ 'tab_id' : search_state.sort,
+ 'tags' : related_tags,
+ 'tag_list_type' : tag_list_type,
+ 'font_size' : extra_tags.get_tag_font_size(related_tags),
+ 'display_tag_filter_strategy_choices': const.TAG_DISPLAY_FILTER_STRATEGY_CHOICES,
+ 'email_tag_filter_strategy_choices': const.TAG_EMAIL_FILTER_STRATEGY_CHOICES,
+ 'update_avatar_data': schedules.should_update_avatar_data(request),
+ 'query_string': search_state.query_string(),
+ 'search_state': search_state,
+ 'feed_url': context_feed_url,
}
- questions_html = questions_tpl.render(Context(data))
- ajax_data['questions'] = questions_html.replace('\n','')
- return HttpResponse(
- simplejson.dumps(ajax_data),
- mimetype = 'application/json'
- )
-
- reset_method_count = 0
- if search_state.query:
- reset_method_count += 1
- if search_state.tags:
- reset_method_count += 1
- if meta_data.get('author_name',None):
- reset_method_count += 1
-
-
- template_data = {
- 'active_tab': 'questions',
- 'author_name' : meta_data.get('author_name',None),
- 'contributors' : contributors,
- 'context' : paginator_context,
- 'is_unanswered' : False,#remove this from template
- 'interesting_tag_names': meta_data.get('interesting_tag_names',None),
- 'ignored_tag_names': meta_data.get('ignored_tag_names',None),
- 'language_code': translation.get_language(),
- 'name_of_anonymous_user' : models.get_name_of_anonymous_user(),
- 'page_class': 'main-page',
- 'query': search_state.query,
- 'questions' : page,
- 'questions_count' : paginator.count,
- 'reset_method_count': reset_method_count,
- 'scope': search_state.scope,
- 'show_sort_by_relevance': askbot.conf.should_show_sort_by_relevance(),
- 'search_tags' : search_state.tags,
- 'sort': search_state.sort,
- 'tab_id' : search_state.sort,
- 'tags' : related_tags,
- 'tag_list_type' : tag_list_type,
- 'font_size' : font_size,
- 'tag_filter_strategy_choices': const.TAG_FILTER_STRATEGY_CHOICES,
- 'update_avatar_data': schedules.should_update_avatar_data(request),
- 'feed_url': context_feed_url,
- }
-
- assert(request.is_ajax() == False)
- #ajax request is handled in a separate branch above
+ return render_into_skin('main_page.html', template_data, request)
- #before = datetime.datetime.now()
- response = render_into_skin('main_page.html', template_data, request)
- #after = datetime.datetime.now()
- #print after - before
- return response
def tags(request):#view showing a listing of available tags - plain list
@@ -330,7 +264,7 @@ def tags(request):#view showing a listing of available tags - plain list
'next': tags.next_page_number(),
'base_url' : reverse('tags') + '?sort=%s&amp;' % sortby
}
- paginator_context = extra_tags.cnprog_paginator(paginator_data)
+ paginator_context = functions.setup_paginator(paginator_data)
data = {
'active_tab': 'tags',
'page_class': 'tags-page',
@@ -339,7 +273,7 @@ def tags(request):#view showing a listing of available tags - plain list
'stag' : stag,
'tab_id' : sortby,
'keywords' : stag,
- 'paginator_context' : paginator_context
+ 'paginator_context' : paginator_context,
}
else:
@@ -368,6 +302,7 @@ def tags(request):#view showing a listing of available tags - plain list
'stag' : stag,
'tab_id' : sortby,
'keywords' : stag,
+ 'search_state': SearchState(*[None for x in range(7)])
}
return render_into_skin('tags.html', data, request)
@@ -380,15 +315,63 @@ def question(request, id):#refactor - long subroutine. display question body, an
"""
#process url parameters
#todo: fix inheritance of sort method from questions
+ #before = datetime.datetime.now()
default_sort_method = request.session.get('questions_sort_method', 'votes')
form = ShowQuestionForm(request.GET, default_sort_method)
form.full_clean()#always valid
show_answer = form.cleaned_data['show_answer']
show_comment = form.cleaned_data['show_comment']
show_page = form.cleaned_data['show_page']
- is_permalink = form.cleaned_data['is_permalink']
answer_sort_method = form.cleaned_data['answer_sort_method']
+ #load question and maybe refuse showing deleted question
+ #if the question does not exist - try mapping to old questions
+ #and and if it is not found again - then give up
+ try:
+ question_post = models.Post.objects.filter(
+ post_type = 'question',
+ id = id
+ ).select_related('thread')[0]
+ except IndexError:
+ # Handle URL mapping - from old Q/A/C/ URLs to the new one
+ try:
+ question_post = models.Post.objects.filter(
+ post_type='question',
+ old_question_id = id
+ ).select_related('thread')[0]
+ except IndexError:
+ raise Http404
+
+ if show_answer:
+ try:
+ old_answer = models.Post.objects.get_answers().get(old_answer_id=show_answer)
+ return HttpResponseRedirect(old_answer.get_absolute_url())
+ except models.Post.DoesNotExist:
+ pass
+
+ elif show_comment:
+ try:
+ old_comment = models.Post.objects.get_comments().get(old_comment_id=show_comment)
+ return HttpResponseRedirect(old_comment.get_absolute_url())
+ except models.Post.DoesNotExist:
+ pass
+
+ try:
+ question_post.assert_is_visible_to(request.user)
+ except exceptions.QuestionHidden, error:
+ request.user.message_set.create(message = unicode(error))
+ return HttpResponseRedirect(reverse('index'))
+
+ #redirect if slug in the url is wrong
+ if request.path.split('/')[-2] != question_post.slug:
+ logging.debug('no slug match!')
+ question_url = '?'.join((
+ question_post.get_absolute_url(),
+ urllib.urlencode(request.GET)
+ ))
+ return HttpResponseRedirect(question_url)
+
+
#resolve comment and answer permalinks
#they go first because in theory both can be moved to another question
#this block "returns" show_post and assigns actual comment and answer
@@ -396,7 +379,7 @@ def question(request, id):#refactor - long subroutine. display question body, an
#in the case if the permalinked items or their parents are gone - redirect
#redirect also happens if id of the object's origin post != requested id
show_post = None #used for permalinks
- if show_comment is not None:
+ if show_comment:
#if url calls for display of a specific comment,
#check that comment exists, that it belongs to
#the current question
@@ -406,18 +389,21 @@ def question(request, id):#refactor - long subroutine. display question body, an
#in addition - if url points to a comment and the comment
#is for the answer - we need the answer object
try:
- show_comment = models.Comment.objects.get(id = show_comment)
- if str(show_comment.get_origin_post().id) != id:
- return HttpResponseRedirect(show_comment.get_absolute_url())
- show_post = show_comment.content_object
- show_comment.assert_is_visible_to(request.user)
- except models.Comment.DoesNotExist:
+ show_comment = models.Post.objects.get_comments().get(id=show_comment)
+ except models.Post.DoesNotExist:
error_message = _(
'Sorry, the comment you are looking for has been '
'deleted and is no longer accessible'
)
request.user.message_set.create(message = error_message)
- return HttpResponseRedirect(reverse('question', kwargs = {'id': id}))
+ return HttpResponseRedirect(question_post.thread.get_absolute_url())
+
+ if str(show_comment.thread._question_post().id) != str(id):
+ return HttpResponseRedirect(show_comment.get_absolute_url())
+ show_post = show_comment.parent
+
+ try:
+ show_comment.assert_is_visible_to(request.user)
except exceptions.AnswerHidden, error:
request.user.message_set.create(message = unicode(error))
#use reverse function here because question is not yet loaded
@@ -426,77 +412,65 @@ def question(request, id):#refactor - long subroutine. display question body, an
request.user.message_set.create(message = unicode(error))
return HttpResponseRedirect(reverse('index'))
- elif show_answer is not None:
+ elif show_answer:
#if the url calls to view a particular answer to
#question - we must check whether the question exists
#whether answer is actually corresponding to the current question
#and that the visitor is allowed to see it
+ show_post = get_object_or_404(models.Post, post_type='answer', id=show_answer)
+ if str(show_post.thread._question_post().id) != str(id):
+ return HttpResponseRedirect(show_post.get_absolute_url())
+
try:
- show_post = get_object_or_404(models.Answer, id = show_answer)
- if str(show_post.question.id) != id:
- return HttpResponseRedirect(show_post.get_absolute_url())
show_post.assert_is_visible_to(request.user)
except django_exceptions.PermissionDenied, error:
request.user.message_set.create(message = unicode(error))
return HttpResponseRedirect(reverse('question', kwargs = {'id': id}))
- #load question and maybe refuse showing deleted question
- try:
- question = get_object_or_404(models.Question, id=id)
- question.assert_is_visible_to(request.user)
- except exceptions.QuestionHidden, error:
- request.user.message_set.create(message = unicode(error))
- return HttpResponseRedirect(reverse('index'))
+ thread = question_post.thread
- #redirect if slug in the url is wrong
- if request.path.split('/')[-1] != question.slug:
- logging.debug('no slug match!')
- question_url = '?'.join((
- question.get_absolute_url(),
- urllib.urlencode(request.GET)
- ))
- return HttpResponseRedirect(question_url)
+ logging.debug('answer_sort_method=' + unicode(answer_sort_method))
+ #load answers and post id's->athor_id mapping
+ #posts are pre-stuffed with the correctly ordered comments
+ updated_question_post, answers, post_to_author = thread.get_cached_post_data(
+ sort_method = answer_sort_method,
+ )
+ question_post.set_cached_comments(updated_question_post.get_cached_comments())
- logging.debug('answer_sort_method=' + unicode(answer_sort_method))
- #load answers
- answers = question.get_answers(user = request.user)
- answers = answers.select_related(depth=1)
- user_answer_votes = {}
+ #Post.objects.precache_comments(for_posts=[question_post] + answers, visitor=request.user)
+
+ user_votes = {}
+ user_post_id_list = list()
+ #todo: cache this query set, but again takes only 3ms!
if request.user.is_authenticated():
- for answer in answers:
- vote = answer.get_user_vote(request.user)
- if vote is not None and not answer.id in user_answer_votes:
- user_answer_votes[answer.id] = int(vote)
-
- view_dic = {"latest":"-added_at", "oldest":"added_at", "votes":"-score" }
- orderby = view_dic[answer_sort_method]
- if answers is not None:
- answers = answers.order_by("-accepted", orderby)
-
- filtered_answers = []
- for answer in answers:
- if answer.deleted == True:
- if answer.author_id == request.user.id:
- filtered_answers.append(answer)
- else:
- filtered_answers.append(answer)
+ user_votes = Vote.objects.filter(
+ user=request.user,
+ voted_post__id__in = post_to_author.keys()
+ ).values_list('voted_post_id', 'vote')
+ user_votes = dict(user_votes)
+ #we can avoid making this query by iterating through
+ #already loaded posts
+ user_post_id_list = [
+ id for id in post_to_author if post_to_author[id] == request.user.id
+ ]
#resolve page number and comment number for permalinks
show_comment_position = None
if show_comment:
- show_page = show_comment.get_page_number(answers = filtered_answers)
+ show_page = show_comment.get_page_number(answer_posts=answers)
show_comment_position = show_comment.get_order_number()
elif show_answer:
- show_page = show_post.get_page_number(answers = filtered_answers)
+ show_page = show_post.get_page_number(answer_posts=answers)
- objects_list = Paginator(filtered_answers, const.ANSWERS_PAGE_SIZE)
+ objects_list = Paginator(answers, const.ANSWERS_PAGE_SIZE)
if show_page > objects_list.num_pages:
- return HttpResponseRedirect(question.get_absolute_url())
+ return HttpResponseRedirect(question_post.get_absolute_url())
page_objects = objects_list.page(show_page)
#count visits
+ #import ipdb; ipdb.set_trace()
if functions.not_a_robot_request(request):
#todo: split this out into a subroutine
#todo: merge view counts per user and per session
@@ -505,35 +479,25 @@ def question(request, id):#refactor - long subroutine. display question body, an
if 'question_view_times' not in request.session:
request.session['question_view_times'] = {}
- last_seen = request.session['question_view_times'].get(question.id, None)
- updated_when, updated_who = question.get_last_update_info()
+ last_seen = request.session['question_view_times'].get(question_post.id, None)
- if updated_who != request.user:
+ if thread.last_activity_by_id != request.user.id:
if last_seen:
- if last_seen < updated_when:
+ if last_seen < thread.last_activity_at:
update_view_count = True
else:
update_view_count = True
- request.session['question_view_times'][question.id] = \
+ request.session['question_view_times'][question_post.id] = \
datetime.datetime.now()
- if update_view_count:
- question.view_count += 1
- question.save()
-
- #2) question view count per user and clear response displays
- if request.user.is_authenticated():
- #get response notifications
- request.user.visit_question(question)
-
- #3) send award badges signal for any badges
- #that are awarded for question views
- award_badges_signal.send(None,
- event = 'view_question',
- actor = request.user,
- context_object = question,
- )
+ #2) run the slower jobs in a celery task
+ from askbot import tasks
+ tasks.record_question_visit.delay(
+ question_post = question_post,
+ user = request.user,
+ update_view_count = update_view_count
+ )
paginator_data = {
'is_paginated' : (objects_list.count > const.ANSWERS_PAGE_SIZE),
@@ -544,52 +508,82 @@ def question(request, id):#refactor - long subroutine. display question body, an
'previous': page_objects.previous_page_number(),
'next': page_objects.next_page_number(),
'base_url' : request.path + '?sort=%s&amp;' % answer_sort_method,
- 'extend_url' : "#sort-top"
}
- paginator_context = extra_tags.cnprog_paginator(paginator_data)
+ paginator_context = functions.setup_paginator(paginator_data)
+
+ #todo: maybe consolidate all activity in the thread
+ #for the user into just one query?
+ favorited = thread.has_favorite_by_user(request.user)
+
+ is_cacheable = True
+ if show_page != 1:
+ is_cacheable = False
+ elif show_comment_position > askbot_settings.MAX_COMMENTS_TO_SHOW:
+ is_cacheable = False
+
+ answer_form = AnswerForm(
+ initial = {
+ 'wiki': question_post.wiki and askbot_settings.WIKI_ON,
+ 'email_notify': thread.is_followed_by(request.user)
+ }
+ )
+
+ user_can_post_comment = (
+ request.user.is_authenticated() and request.user.can_post_comment()
+ )
- favorited = question.has_favorite_by_user(request.user)
- user_question_vote = 0
+ user_already_gave_answer = False
+ previous_answer = None
if request.user.is_authenticated():
- votes = question.votes.select_related().filter(user=request.user)
- if votes.count() > 0:
- user_question_vote = int(votes[0])
- else:
- user_question_vote = 0
+ if askbot_settings.LIMIT_ONE_ANSWER_PER_USER:
+ for answer in answers:
+ if answer.author == request.user:
+ user_already_gave_answer = True
+ previous_answer = answer
+ break
data = {
+ 'is_cacheable': False,#is_cacheable, #temporary, until invalidation fix
+ 'long_time': const.LONG_TIME,#"forever" caching
'page_class': 'question-page',
'active_tab': 'questions',
- 'question' : question,
- 'user_question_vote' : user_question_vote,
- 'question_comment_count':question.comments.count(),
- 'answer' : AnswerForm(question,request.user),
+ 'question' : question_post,
+ 'thread': thread,
+ 'answer' : answer_form,
'answers' : page_objects.object_list,
- 'user_answer_votes': user_answer_votes,
- 'tags' : question.tags.all(),
+ 'answer_count': len(answers),
+ 'user_votes': user_votes,
+ 'user_post_id_list': user_post_id_list,
+ 'user_can_post_comment': user_can_post_comment,#in general
+ 'user_already_gave_answer': user_already_gave_answer,
+ 'previous_answer': previous_answer,
'tab_id' : answer_sort_method,
'favorited' : favorited,
- 'similar_questions' : question.get_similar_questions(),
+ 'similar_threads' : thread.get_similar_threads(),
'language_code': translation.get_language(),
'paginator_context' : paginator_context,
'show_post': show_post,
'show_comment': show_comment,
- 'show_comment_position': show_comment_position
+ 'show_comment_position': show_comment_position,
}
+
return render_into_skin('question.html', data, request)
-def revisions(request, id, object_name=None):
- assert(object_name in ('Question', 'Answer'))
- post = get_object_or_404(models.get_model(object_name), id=id)
- revisions = list(post.revisions.all())
+def revisions(request, id, post_type = None):
+ assert post_type in ('question', 'answer')
+ post = get_object_or_404(models.Post, post_type=post_type, id=id)
+ revisions = list(models.PostRevision.objects.filter(post=post))
revisions.reverse()
for i, revision in enumerate(revisions):
- revision.html = revision.as_html()
if i == 0:
- revision.diff = revisions[i].html
+ revision.diff = sanitize_html(revisions[i].html)
revision.summary = _('initial version')
else:
- revision.diff = htmldiff(revisions[i-1].html, revision.html)
+ revision.diff = htmldiff(
+ sanitize_html(revisions[i-1].html),
+ sanitize_html(revision.html)
+ )
+
data = {
'page_class':'revisions-page',
'active_tab':'questions',
@@ -598,6 +592,7 @@ def revisions(request, id, object_name=None):
}
return render_into_skin('revisions.html', data, request)
+@csrf.csrf_exempt
@ajax_only
@anonymous_forbidden
@get_only
@@ -607,26 +602,9 @@ def get_comment(request):
and request must be ajax
"""
id = int(request.GET['id'])
- comment = models.Comment.objects.get(id = id)
+ comment = models.Post.objects.get(post_type='comment', id=id)
request.user.assert_can_edit_comment(comment)
- return {'text': comment.comment}
-
-@ajax_only
-@get_only
-def get_question_body(request):
- search_state = request.session.get('search_state', SearchState())
- view_log = request.session['view_log']
- (qs, meta_data, related_tags) = models.Question.objects.run_advanced_search(
- request_user = request.user,
- search_state = search_state)
- paginator = Paginator(qs, search_state.page_size)
- page = paginator.page(search_state.page)
- questions_dict = {}
- for question in page.object_list:
- questions_dict['question-%s' % question.id] = question.summary
-
- return {'questions-titles': questions_dict}
- return {'questions-titles': questions_dict}
+ return {'text': comment.text}
def widget_questions(request):
"""Returns the first x questions based on certain tags.
@@ -634,13 +612,13 @@ def widget_questions(request):
# make sure this is a GET request with the correct parameters.
if request.method != 'GET':
raise Http404
- questions = models.Question.objects.all()
+ threads = models.Thread.objects.all()
tags_input = request.GET.get('tags','').strip()
if len(tags_input) > 0:
tags = [tag.strip() for tag in tags_input.split(',')]
- questions = questions.filter(tags__name__in = tags)
+ threads = threads.filter(tags__name__in=tags)
data = {
- 'questions': questions[:askbot_settings.QUESTIONS_WIDGET_MAX_QUESTIONS]
+ 'threads': threads[:askbot_settings.QUESTIONS_WIDGET_MAX_QUESTIONS]
}
return render_into_skin('question_widget.html', data, request)
diff --git a/askbot/views/users.py b/askbot/views/users.py
index 935bf4fa..66ab7420 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -7,9 +7,12 @@ and other views showing profile-related information.
Also this module includes the view listing all forum users.
"""
import calendar
+import collections
import functools
import datetime
import logging
+import operator
+
from django.db.models import Count
from django.conf import settings as django_settings
from django.contrib.auth.decorators import login_required
@@ -22,10 +25,12 @@ from django.http import HttpResponseRedirect, Http404
from django.utils.translation import ugettext as _
from django.utils import simplejson
from django.views.decorators import csrf
+
from askbot.utils.slug import slugify
from askbot.utils.html import sanitize_html
-from askbot.utils.mail import send_mail
+from askbot.mail import send_mail
from askbot.utils.http import get_request_info
+from askbot.utils import functions
from askbot import forms
from askbot import const
from askbot.conf import settings as askbot_settings
@@ -34,19 +39,9 @@ from askbot import exceptions
from askbot.models.badges import award_badges_signal
from askbot.skins.loaders import render_into_skin
from askbot.templatetags import extra_tags
-
-
-#todo: queries in the user activity summary view must be redone
-def get_related_object_type_name(content_type_id, object_id):
- if content_type_id == ContentType.objects.get_for_model(models.Question).id:
- return 'question'
- elif content_type_id == ContentType.objects.get_for_model(models.Answer).id:
- return 'answer'
- elif content_type_id == ContentType.objects.get_for_model(models.PostRevision).id:
- post_revision = models.PostRevision.objects.get(id=object_id)
- return post_revision.revision_type_str()
-
- return None
+from askbot.search.state_manager import SearchState
+from askbot.utils import url_utils
+from askbot.utils.loading import load_module
def owner_or_moderator_required(f):
@functools.wraps(f)
@@ -57,20 +52,68 @@ def owner_or_moderator_required(f):
pass
else:
params = '?next=%s' % request.path
- return HttpResponseRedirect(reverse('user_signin') + params)
+ return HttpResponseRedirect(url_utils.get_login_url() + params)
return f(request, profile_owner, context)
return wrapped_func
-def users(request):
+def show_users(request, by_group = False, group_id = None, group_slug = None):
+ """Users view, including listing of users by group"""
+ users = models.User.objects.exclude(status = 'b')
+ group = None
+ group_email_moderation_enabled = False
+ user_can_join_group = False
+ user_is_group_member = False
+ if by_group == True:
+ if askbot_settings.GROUPS_ENABLED == False:
+ raise Http404
+ if group_id:
+ if all((group_id, group_slug)) == False:
+ return HttpResponseRedirect('groups')
+ else:
+ try:
+ group = models.Tag.group_tags.get(id = group_id)
+ group_email_moderation_enabled = \
+ (
+ askbot_settings.GROUP_EMAIL_ADDRESSES_ENABLED \
+ and askbot_settings.ENABLE_CONTENT_MODERATION
+ )
+ user_can_join_group = group.group_profile.can_accept_user(request.user)
+ except models.Tag.DoesNotExist:
+ raise Http404
+ if group_slug == slugify(group.name):
+ users = users.filter(
+ group_memberships__group__id = group_id
+ )
+ if request.user.is_authenticated():
+ user_is_group_member = bool(
+ users.filter(
+ id = request.user.id
+ ).count()
+ )
+ else:
+ group_page_url = reverse(
+ 'users_by_group',
+ kwargs = {
+ 'group_id': group.id,
+ 'group_slug': slugify(group.name)
+ }
+ )
+ return HttpResponseRedirect(group_page_url)
+
+
is_paginated = True
+
sortby = request.GET.get('sort', 'reputation')
- suser = request.REQUEST.get('query', "")
+ if askbot_settings.KARMA_MODE == 'private' and sortby == 'reputation':
+ sortby = 'newest'
+
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
- if suser == "":
+ search_query = request.REQUEST.get('query', "")
+ if search_query == "":
if sortby == "newest":
order_by_parameter = '-date_joined'
elif sortby == "last":
@@ -82,23 +125,18 @@ def users(request):
order_by_parameter = '-reputation'
objects_list = Paginator(
- models.User.objects.all().order_by(
- order_by_parameter
- ),
+ users.order_by(order_by_parameter),
const.USERS_PAGE_SIZE
)
- base_url = reverse('users') + '?sort=%s&' % sortby
+ base_url = request.path + '?sort=%s&amp;' % sortby
else:
sortby = "reputation"
+ matching_users = models.get_users_by_text_query(search_query)
objects_list = Paginator(
- models.User.objects.filter(
- username__icontains = suser
- ).order_by(
- '-reputation'
- ),
+ matching_users.order_by('-reputation'),
const.USERS_PAGE_SIZE
)
- base_url = reverse('users') + '?name=%s&sort=%s&' % (suser, sortby)
+ base_url = request.path + '?name=%s&amp;sort=%s&amp;' % (search_query, sortby)
try:
users_page = objects_list.page(page)
@@ -115,15 +153,18 @@ def users(request):
'next': users_page.next_page_number(),
'base_url' : base_url
}
- paginator_context = extra_tags.cnprog_paginator(paginator_data)
+ paginator_context = functions.setup_paginator(paginator_data) #
data = {
'active_tab': 'users',
'page_class': 'users-page',
'users' : users_page,
- 'suser' : suser,
- 'keywords' : suser,
+ 'group': group,
+ 'search_query' : search_query,
'tab_id' : sortby,
- 'paginator_context' : paginator_context
+ 'paginator_context' : paginator_context,
+ 'group_email_moderation_enabled': group_email_moderation_enabled,
+ 'user_can_join_group': user_can_join_group,
+ 'user_is_group_member': user_is_group_member
}
return render_into_skin('users.html', data, request)
@@ -133,7 +174,7 @@ def user_moderate(request, subject, context):
"""
moderator = request.user
- if not moderator.can_moderate_user(subject):
+ if moderator.is_authenticated() and not moderator.can_moderate_user(subject):
raise Http404
user_rep_changed = False
@@ -256,7 +297,7 @@ def edit_user(request, id):
user.about = sanitize_html(form.cleaned_data['about'])
user.country = form.cleaned_data['country']
user.show_country = form.cleaned_data['show_country']
-
+ user.show_marked_tags = form.cleaned_data['show_marked_tags']
user.save()
# send user updated signal if full fields have been updated
award_badges_signal.send(None,
@@ -267,117 +308,141 @@ def edit_user(request, id):
return HttpResponseRedirect(user.get_profile_url())
else:
form = forms.EditUserForm(user)
+
data = {
'active_tab': 'users',
'page_class': 'user-profile-edit-page',
'form' : form,
+ 'marked_tags_setting': askbot_settings.MARKED_TAGS_ARE_PUBLIC_WHEN,
'support_custom_avatars': ('avatar' in django_settings.INSTALLED_APPS),
'view_user': user,
}
return render_into_skin('user_profile/user_edit.html', data, request)
def user_stats(request, user, context):
-
- question_filter = {'author': user}
+ question_filter = {}
if request.user != user:
question_filter['is_anonymous'] = False
- questions = models.Question.objects.filter(
- **question_filter
- ).order_by(
- '-score', '-last_activity_at'
- ).select_related(
- 'last_activity_by__id',
- 'last_activity_by__username',
- 'last_activity_by__reputation',
- 'last_activity_by__gold',
- 'last_activity_by__silver',
- 'last_activity_by__bronze'
- )[:100]
-
- questions = list(questions)
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ question_filter['approved'] = True
+
+ #
+ # Questions
+ #
+ questions = user.posts.get_questions().filter(**question_filter).\
+ order_by('-score', '-thread__last_activity_at').\
+ select_related('thread', 'thread__last_activity_by')[:100]
#added this if to avoid another query if questions is less than 100
if len(questions) < 100:
question_count = len(questions)
else:
- question_count = models.Question.objects.filter(
- **question_filter
- ).order_by(
- '-score', '-last_activity_at'
- ).select_related(
- 'last_activity_by__id',
- 'last_activity_by__username',
- 'last_activity_by__reputation',
- 'last_activity_by__gold',
- 'last_activity_by__silver',
- 'last_activity_by__bronze'
- ).count()
-
- favorited_myself = models.FavoriteQuestion.objects.filter(
- question__in = questions,
- user = user
- ).values_list('question__id', flat=True)
-
- #this is meant for the questions answered by the user (or where answers were edited by him/her?)
- answered_questions = models.Question.objects.extra(
- select={
- 'vote_up_count' : 'answer.vote_up_count',
- 'vote_down_count' : 'answer.vote_down_count',
- 'answer_id' : 'answer.id',
- 'answer_accepted' : 'answer.accepted',
- 'answer_score' : 'answer.score',
- 'comment_count' : 'answer.comment_count'
- },
- tables=['question', 'answer'],
- where=['NOT answer.deleted AND NOT question.deleted AND answer.author_id=%s AND answer.question_id=question.id'],
- params=[user.id],
- order_by=['-answer_score', '-answer_id'],
- select_params=[user.id]
- ).distinct().values('comment_count',
- 'id',
- 'answer_id',
- 'title',
- 'author_id',
- 'answer_accepted',
- 'answer_score',
- 'answer_count',
- 'vote_up_count',
- 'vote_down_count')[:100]
-
+ question_count = user.posts.get_questions().filter(**question_filter).count()
+
+ #
+ # Top answers
+ #
+ top_answers = user.posts.get_answers().filter(
+ deleted=False,
+ thread__posts__deleted=False,
+ thread__posts__post_type='question',
+ ).select_related('thread').order_by('-score', '-added_at')[:100]
+
+ top_answer_count = len(top_answers)
+
+ #
+ # Votes
+ #
up_votes = models.Vote.objects.get_up_vote_count_from_user(user)
down_votes = models.Vote.objects.get_down_vote_count_from_user(user)
votes_today = models.Vote.objects.get_votes_count_today_from_user(user)
votes_total = askbot_settings.MAX_VOTES_PER_USER_PER_DAY
- question_id_set = set()
- #todo: there may be a better way to do these queries
- question_id_set.update([q.id for q in questions])
- question_id_set.update([q['id'] for q in answered_questions])
- user_tags = models.Tag.objects.filter(questions__id__in = question_id_set)
+ #
+ # Tags
+ #
+ # INFO: There's bug in Django that makes the following query kind of broken (GROUP BY clause is problematic):
+ # http://stackoverflow.com/questions/7973461/django-aggregation-does-excessive-group-by-clauses
+ # Fortunately it looks like it returns correct results for the test data
+ user_tags = models.Tag.objects.filter(threads__posts__author=user).distinct().\
+ annotate(user_tag_usage_count=Count('threads')).\
+ order_by('-user_tag_usage_count')[:const.USER_VIEW_DATA_SIZE]
+ user_tags = list(user_tags) # evaluate
+
+ when = askbot_settings.MARKED_TAGS_ARE_PUBLIC_WHEN
+ if when == 'always' or \
+ (when == 'when-user-wants' and user.show_marked_tags == True):
+ #refactor into: user.get_marked_tag_names('good'/'bad'/'subscribed')
+ interesting_tag_names = user.get_marked_tag_names('good')
+ ignored_tag_names = user.get_marked_tag_names('bad')
+ subscribed_tag_names = user.get_marked_tag_names('subscribed')
+ else:
+ interesting_tag_names = None
+ ignored_tag_names = None
+ subscribed_tag_names = None
+
+# tags = models.Post.objects.filter(author=user).values('id', 'thread', 'thread__tags')
+# post_ids = set()
+# thread_ids = set()
+# tag_ids = set()
+# for t in tags:
+# post_ids.add(t['id'])
+# thread_ids.add(t['thread'])
+# tag_ids.add(t['thread__tags'])
+# if t['thread__tags'] == 11:
+# print t['thread'], t['id']
+# import ipdb; ipdb.set_trace()
+
+ #
+ # Badges/Awards (TODO: refactor into Managers/QuerySets when a pattern emerges; Simplify when we get rid of Question&Answer models)
+ #
+ post_type = ContentType.objects.get_for_model(models.Post)
+
+ user_awards = models.Award.objects.filter(user=user).select_related('badge')
+
+ awarded_post_ids = []
+ for award in user_awards:
+ if award.content_type_id == post_type.id:
+ awarded_post_ids.append(award.object_id)
+
+ awarded_posts = models.Post.objects.filter(id__in=awarded_post_ids)\
+ .select_related('thread') # select related to avoid additional queries in Post.get_absolute_url()
+
+ awarded_posts_map = {}
+ for post in awarded_posts:
+ awarded_posts_map[post.id] = post
+
+ badges_dict = collections.defaultdict(list)
+
+ for award in user_awards:
+ # Fetch content object
+ if award.content_type_id == post_type.id:
+ #here we go around a possibility of awards
+ #losing the content objects when the content
+ #objects are deleted for some reason
+ awarded_post = awarded_posts_map.get(award.object_id, None)
+ if awarded_post is not None:
+ #protect from awards that are associated with deleted posts
+ award.content_object = awarded_post
+ award.content_object_is_post = True
+ else:
+ award.content_object_is_post = False
+ else:
+ award.content_object_is_post = False
- badges = models.BadgeData.objects.filter(
- award_badge__user=user
- )
- total_awards = badges.count()
- badges = badges.order_by('-slug').distinct()
+ # "Assign" to its Badge
+ badges_dict[award.badge].append(award)
- user_tags = user_tags.annotate(
- user_tag_usage_count=Count('name')
- ).order_by(
- '-user_tag_usage_count'
- )
+ badges = badges_dict.items()
+ badges.sort(key=operator.itemgetter(1), reverse=True)
+
+ user_groups = models.Tag.group_tags.get_for_user(user = user)
- if user.is_administrator():
- user_status = _('Site Adminstrator')
- elif user.is_moderator():
- user_status = _('Forum Moderator')
- elif user.is_suspended():
- user_status = _('Suspended User')
- elif user.is_blocked():
- user_status = _('Blocked User')
+ if request.user == user:
+ groups_membership_info = user.get_groups_membership_info(user_groups)
else:
- user_status = _('Registered User')
+ groups_membership_info = collections.defaultdict()
data = {
'active_tab':'users',
@@ -389,20 +454,27 @@ def user_stats(request, user, context):
'user_status_for_display': user.get_status_display(soft = True),
'questions' : questions,
'question_count': question_count,
- 'question_type' : ContentType.objects.get_for_model(models.Question),
- 'answer_type' : ContentType.objects.get_for_model(models.Answer),
- 'favorited_myself': favorited_myself,
- 'answered_questions' : answered_questions,
+
+ 'top_answers': top_answers,
+ 'top_answer_count': top_answer_count,
+
'up_votes' : up_votes,
'down_votes' : down_votes,
'total_votes': up_votes + down_votes,
- 'votes_today_left': votes_total-votes_today,
+ 'votes_today_left': votes_total - votes_today,
'votes_total_per_day': votes_total,
- 'user_tags' : user_tags[:const.USER_VIEW_DATA_SIZE],
+
+ 'user_tags' : user_tags,
+ 'user_groups': user_groups,
+ 'groups_membership_info': groups_membership_info,
+ 'interesting_tag_names': interesting_tag_names,
+ 'ignored_tag_names': ignored_tag_names,
+ 'subscribed_tag_names': subscribed_tag_names,
'badges': badges,
- 'total_awards' : total_awards,
+ 'total_badges' : len(badges),
}
context.update(data)
+
return render_into_skin('user_profile/user_stats.html', context, request)
def user_recent(request, user, context):
@@ -412,7 +484,7 @@ def user_recent(request, user, context):
if type_id in item:
return item[1]
- class Event:
+ class Event(object):
is_badge = False
def __init__(self, time, type, title, summary, answer_id, question_id):
self.time = time
@@ -428,271 +500,127 @@ def user_recent(request, user, context):
if int(answer_id) > 0:
self.title_link += '#%s' % answer_id
- class AwardEvent:
+ class AwardEvent(object):
is_badge = True
- def __init__(self, time, obj, cont, type, id, related_object_type = None):
+ def __init__(self, time, type, content_object, badge):
self.time = time
- self.obj = obj
- self.cont = cont
self.type = get_type_name(type)
- self.type_id = type
- self.badge = get_object_or_404(models.BadgeData, id=id)
- self.related_object_type = related_object_type
+ self.content_object = content_object
+ self.badge = badge
activities = []
- # ask questions
- questions = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'summary' : 'question.summary',
- 'active_at' : 'activity.active_at',
- 'activity_type' : 'activity.activity_type'
- },
- tables=['activity', 'question'],
- where=['activity.content_type_id = %s AND activity.object_id = ' +
- 'question.id AND activity.user_id = %s AND activity.activity_type = %s AND NOT question.deleted'],
- params=[ContentType.objects.get_for_model(models.Question).id, user.id, const.TYPE_ACTIVITY_ASK_QUESTION],
- order_by=['-activity.active_at']
- ).values(
- 'title',
- 'question_id',
- 'summary',
- 'active_at',
- 'activity_type'
- )
-
- for q in questions:
- q_event = Event(
- q['active_at'],
- q['activity_type'],
- q['title'],
- '',
- '0',
- q['question_id']
- )
- activities.append(q_event)
-
- # answers
- answers = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'summary' : 'question.summary',
- 'answer_id' : 'answer.id',
- 'active_at' : 'activity.active_at',
- 'activity_type' : 'activity.activity_type'
- },
- tables=['activity', 'answer', 'question'],
- where=['activity.content_type_id = %s AND activity.object_id = answer.id AND ' +
- 'answer.question_id=question.id AND NOT answer.deleted AND activity.user_id=%s AND '+
- 'activity.activity_type=%s AND NOT question.deleted'],
- params=[ContentType.objects.get_for_model(models.Answer).id, user.id, const.TYPE_ACTIVITY_ANSWER],
- order_by=['-activity.active_at']
- ).values(
- 'title',
- 'question_id',
- 'summary',
- 'answer_id',
- 'active_at',
- 'activity_type'
- )
- if len(answers) > 0:
- answer_activities = [(Event(q['active_at'], q['activity_type'], q['title'], '', q['answer_id'], \
- q['question_id'])) for q in answers]
- activities.extend(answer_activities)
-
- # question comments
- comments = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'comment.object_id',
- 'added_at' : 'comment.added_at',
- 'activity_type' : 'activity.activity_type'
- },
- tables=['activity', 'question', 'comment'],
-
- where=['activity.content_type_id = %s AND activity.object_id = comment.id AND '+
- 'activity.user_id = comment.user_id AND comment.object_id=question.id AND '+
- 'comment.content_type_id=%s AND activity.user_id = %s AND activity.activity_type=%s AND ' +
- 'NOT question.deleted'],
- params=[ContentType.objects.get_for_model(models.Comment).id, ContentType.objects.get_for_model(models.Question).id, user.id, const.TYPE_ACTIVITY_COMMENT_QUESTION],
- order_by=['-comment.added_at']
- ).values(
- 'title',
- 'question_id',
- 'added_at',
- 'activity_type'
- )
- if len(comments) > 0:
- comments = [(Event(q['added_at'], q['activity_type'], q['title'], '', '0', \
- q['question_id'])) for q in comments]
- activities.extend(comments)
-
- # answer comments
- comments = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'answer_id' : 'answer.id',
- 'added_at' : 'comment.added_at',
- 'activity_type' : 'activity.activity_type'
- },
- tables=['activity', 'question', 'answer', 'comment'],
-
- where=['activity.content_type_id = %s AND activity.object_id = comment.id AND '+
- 'activity.user_id = comment.user_id AND comment.object_id=answer.id AND '+
- 'comment.content_type_id=%s AND question.id = answer.question_id AND '+
- 'activity.user_id = %s AND activity.activity_type=%s AND '+
- 'NOT answer.deleted AND NOT question.deleted'],
- params=[ContentType.objects.get_for_model(models.Comment).id, ContentType.objects.get_for_model(models.Answer).id, user.id, const.TYPE_ACTIVITY_COMMENT_ANSWER],
- order_by=['-comment.added_at']
- ).values(
- 'title',
- 'question_id',
- 'answer_id',
- 'added_at',
- 'activity_type'
- )
-
- if len(comments) > 0:
- comments = [(Event(q['added_at'], q['activity_type'], q['title'], '', q['answer_id'], \
- q['question_id'])) for q in comments]
- activities.extend(comments)
-
- # question revisions
- revisions = models.Activity.objects.extra(
- select={
- 'title' : 'askbot_postrevision.title',
- 'question_id' : 'askbot_postrevision.question_id',
- 'added_at' : 'activity.active_at',
- 'activity_type' : 'activity.activity_type',
- 'summary' : 'askbot_postrevision.summary'
- },
- tables=['activity', 'askbot_postrevision', 'question'],
- where=['''
- activity.content_type_id=%s AND activity.object_id=askbot_postrevision.id AND
- askbot_postrevision.question_id=question.id AND askbot_postrevision.revision_type=%s AND NOT question.deleted AND
- activity.user_id=askbot_postrevision.author_id AND activity.user_id=%s AND
- activity.activity_type=%s
- '''],
- params=[ContentType.objects.get_for_model(models.PostRevision).id, models.PostRevision.QUESTION_REVISION, user.id, const.TYPE_ACTIVITY_UPDATE_QUESTION],
- order_by=['-activity.active_at']
- ).values(
- 'title',
- 'question_id',
- 'added_at',
- 'activity_type',
- 'summary'
- )
-
- if len(revisions) > 0:
- revisions = [(Event(q['added_at'], q['activity_type'], q['title'], q['summary'], '0', \
- q['question_id'])) for q in revisions]
- activities.extend(revisions)
-
- # answer revisions
- revisions = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'answer_id' : 'answer.id',
- 'added_at' : 'activity.active_at',
- 'activity_type' : 'activity.activity_type',
- 'summary' : 'askbot_postrevision.summary'
- },
- tables=['activity', 'askbot_postrevision', 'question', 'answer'],
- where=['''
- activity.content_type_id=%s AND activity.object_id=askbot_postrevision.id AND
- askbot_postrevision.answer_id=answer.id AND askbot_postrevision.revision_type=%s AND
- answer.question_id=question.id AND NOT question.deleted AND NOT answer.deleted AND
- activity.user_id=askbot_postrevision.author_id AND activity.user_id=%s AND
- activity.activity_type=%s
- '''],
- params=[ContentType.objects.get_for_model(models.PostRevision).id, models.PostRevision.ANSWER_REVISION, user.id, const.TYPE_ACTIVITY_UPDATE_ANSWER],
- order_by=['-activity.active_at']
- ).values(
- 'title',
- 'question_id',
- 'added_at',
- 'answer_id',
- 'activity_type',
- 'summary'
- )
-
- if len(revisions) > 0:
- revisions = [(Event(q['added_at'], q['activity_type'], q['title'], q['summary'], \
- q['answer_id'], q['question_id'])) for q in revisions]
- activities.extend(revisions)
-
- # accepted answers
- accept_answers = models.Activity.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'added_at' : 'activity.active_at',
- 'activity_type' : 'activity.activity_type',
- },
- tables=['activity', 'answer', 'question'],
- where=['activity.content_type_id = %s AND activity.object_id = answer.id AND '+
- 'activity.user_id = question.author_id AND activity.user_id = %s AND '+
- 'NOT answer.deleted AND NOT question.deleted AND '+
- 'answer.question_id=question.id AND activity.activity_type=%s'],
- params=[ContentType.objects.get_for_model(models.Answer).id, user.id, const.TYPE_ACTIVITY_MARK_ANSWER],
- order_by=['-activity.active_at']
- ).values(
- 'title',
- 'question_id',
- 'added_at',
- 'activity_type',
- )
- if len(accept_answers) > 0:
- accept_answers = [(Event(q['added_at'], q['activity_type'], q['title'], '', '0', \
- q['question_id'])) for q in accept_answers]
- activities.extend(accept_answers)
- #award history
- awards = models.Activity.objects.extra(
- select={
- 'badge_id' : 'askbot_badgedata.id',
- 'awarded_at': 'award.awarded_at',
- 'object_id': 'award.object_id',
- 'content_type_id': 'award.content_type_id',
- 'activity_type' : 'activity.activity_type'
- },
- tables=['activity', 'award', 'askbot_badgedata'],
- where=['activity.user_id = award.user_id AND activity.user_id = %s AND '+
- 'award.badge_id=askbot_badgedata.id AND activity.object_id=award.id AND activity.activity_type=%s'],
- params=[user.id, const.TYPE_ACTIVITY_PRIZE],
- order_by=['-activity.active_at']
- ).values(
- 'badge_id',
- 'awarded_at',
- 'object_id',
- 'content_type_id',
- 'activity_type'
- )
- for award in awards:
- related_object_type = get_related_object_type_name(
- content_type_id=award['content_type_id'],
- object_id=award['object_id']
- )
- activities.append(
- AwardEvent(
- award['awarded_at'],
- award['object_id'],
- award['content_type_id'],
- award['activity_type'],
- award['badge_id'],
- related_object_type = related_object_type
- )
- )
-
- activities.sort(lambda x,y: cmp(y.time, x.time))
+ # TODO: Don't process all activities here for the user, only a subset ([:const.USER_VIEW_DATA_SIZE])
+ for activity in models.Activity.objects.filter(user=user):
+
+ # TODO: multi-if means that we have here a construct for which a design pattern should be used
+
+ # ask questions
+ if activity.activity_type == const.TYPE_ACTIVITY_ASK_QUESTION:
+ q = activity.content_object
+ if q.deleted:
+ activities.append(Event(
+ time=activity.active_at,
+ type=activity.activity_type,
+ title=q.thread.title,
+ summary='', #q.summary, # TODO: was set to '' before, but that was probably wrong
+ answer_id=0,
+ question_id=q.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_ANSWER:
+ ans = activity.content_object
+ question = ans.thread._question_post()
+ if not ans.deleted and not question.deleted:
+ activities.append(Event(
+ time=activity.active_at,
+ type=activity.activity_type,
+ title=ans.thread.title,
+ summary=question.summary,
+ answer_id=ans.id,
+ question_id=question.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_COMMENT_QUESTION:
+ cm = activity.content_object
+ q = cm.parent
+ assert q.is_question()
+ if not q.deleted:
+ activities.append(Event(
+ time=cm.added_at,
+ type=activity.activity_type,
+ title=q.thread.title,
+ summary='',
+ answer_id=0,
+ question_id=q.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_COMMENT_ANSWER:
+ cm = activity.content_object
+ ans = cm.parent
+ assert ans.is_answer()
+ question = ans.thread._question_post()
+ if not ans.deleted and not question.deleted:
+ activities.append(Event(
+ time=cm.added_at,
+ type=activity.activity_type,
+ title=ans.thread.title,
+ summary='',
+ answer_id=ans.id,
+ question_id=question.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_UPDATE_QUESTION:
+ q = activity.content_object
+ if not q.deleted:
+ activities.append(Event(
+ time=activity.active_at,
+ type=activity.activity_type,
+ title=q.thread.title,
+ summary=q.summary,
+ answer_id=0,
+ question_id=q.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_UPDATE_ANSWER:
+ ans = activity.content_object
+ question = ans.thread._question_post()
+ if not ans.deleted and not question.deleted:
+ activities.append(Event(
+ time=activity.active_at,
+ type=activity.activity_type,
+ title=ans.thread.title,
+ summary=ans.summary,
+ answer_id=ans.id,
+ question_id=question.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_MARK_ANSWER:
+ ans = activity.content_object
+ question = ans.thread._question_post()
+ if not ans.deleted and not question.deleted:
+ activities.append(Event(
+ time=activity.active_at,
+ type=activity.activity_type,
+ title=ans.thread.title,
+ summary='',
+ answer_id=0,
+ question_id=question.id
+ ))
+
+ elif activity.activity_type == const.TYPE_ACTIVITY_PRIZE:
+ award = activity.content_object
+ if award is not None:#todo: work around halfa$$ comment deletion
+ activities.append(AwardEvent(
+ time=award.awarded_at,
+ type=activity.activity_type,
+ content_object=award.content_object,
+ badge=award.badge,
+ ))
+
+ activities.sort(key=operator.attrgetter('time'), reverse=True)
data = {
- 'answers': answers,
- 'questions': questions,
'active_tab': 'users',
'page_class': 'user-profile-page',
'tab_name' : 'recent',
@@ -711,60 +639,73 @@ def user_responses(request, user, context):
as well as mentions of the user
user - the profile owner
+
+ the view has two sub-views - "forum" - i.e. responses
+ and "flags" - moderation items for mods only
"""
- section = 'forum'
- if request.user.is_moderator() or request.user.is_administrator():
- if 'section' in request.GET and request.GET['section'] == 'flags':
- section = 'flags'
+ #1) select activity types according to section
+ section = request.GET.get('section', 'forum')
+ if section == 'flags' and not\
+ (request.user.is_moderator() or request.user.is_administrator()):
+ raise Http404
if section == 'forum':
activity_types = const.RESPONSE_ACTIVITY_TYPES_FOR_DISPLAY
activity_types += (const.TYPE_ACTIVITY_MENTION,)
- else:
- assert(section == 'flags')
+ elif section == 'flags':
activity_types = (const.TYPE_ACTIVITY_MARK_OFFENSIVE,)
+ if askbot_settings.ENABLE_CONTENT_MODERATION:
+ activity_types += (
+ const.TYPE_ACTIVITY_MODERATED_NEW_POST,
+ const.TYPE_ACTIVITY_MODERATED_POST_EDIT
+ )
+ else:
+ raise Http404
+ #2) load the activity notifications according to activity types
+ #todo: insert pagination code here
memo_set = models.ActivityAuditStatus.objects.filter(
user = request.user,
activity__activity_type__in = activity_types
).select_related(
- 'activity__active_at',
- 'activity__object_id',
+ 'activity',
'activity__content_type',
- 'activity__question__title',
- 'activity__user__username',
- 'activity__user__id',
+ 'activity__question__thread',
+ 'activity__user',
'activity__user__gravatar',
).order_by(
'-activity__active_at'
)[:const.USER_VIEW_DATA_SIZE]
- #todo: insert pagination code here
-
+ #3) "package" data for the output
response_list = list()
for memo in memo_set:
+ if memo.activity.content_object is None:
+ continue#a temp plug due to bug in the comment deletion
response = {
'id': memo.id,
'timestamp': memo.activity.active_at,
'user': memo.activity.user,
'is_new': memo.is_new(),
'response_url': memo.activity.get_absolute_url(),
- 'response_snippet': memo.activity.get_preview(),
- 'response_title': memo.activity.question.title,
+ 'response_snippet': memo.activity.get_snippet(),
+ 'response_title': memo.activity.question.thread.title,
'response_type': memo.activity.get_activity_type_display(),
'response_id': memo.activity.question.id,
'nested_responses': [],
+ 'response_content': memo.activity.content_object.html,
}
response_list.append(response)
+ #4) sort by response id
response_list.sort(lambda x,y: cmp(y['response_id'], x['response_id']))
+
+ #5) group responses by thread (response_id is really the question post id)
last_response_id = None #flag to know if the response id is different
- last_response_index = None #flag to know if the response index in the list is different
filtered_response_list = list()
-
for i, response in enumerate(response_list):
- #todo: agrupate users
+ #todo: group responses by the user as well
if response['response_id'] == last_response_id:
original_response = dict.copy(filtered_response_list[len(filtered_response_list)-1])
original_response['nested_responses'].append(response)
@@ -772,12 +713,11 @@ def user_responses(request, user, context):
else:
filtered_response_list.append(response)
last_response_id = response['response_id']
- last_response_index = i
- response_list = filtered_response_list
- response_list.sort(lambda x,y: cmp(y['timestamp'], x['timestamp']))
- filtered_response_list = list()
+ #6) sort responses by time
+ filtered_response_list.sort(lambda x,y: cmp(y['timestamp'], x['timestamp']))
+ reject_reasons = models.PostFlagReason.objects.all().order_by('title')
data = {
'active_tab':'users',
'page_class': 'user-profile-page',
@@ -785,7 +725,8 @@ def user_responses(request, user, context):
'inbox_section':section,
'tab_description' : _('comments and answers to others questions'),
'page_title' : _('profile - responses'),
- 'responses' : response_list,
+ 'post_reject_reasons': reject_reasons,
+ 'responses' : filtered_response_list,
}
context.update(data)
return render_into_skin('user_profile/user_inbox.html', context, request)
@@ -803,56 +744,22 @@ def user_network(request, user, context):
@owner_or_moderator_required
def user_votes(request, user, context):
-
+ all_votes = list(models.Vote.objects.filter(user=user))
votes = []
- question_votes = models.Vote.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'answer_id' : 0,
- 'voted_at' : 'vote.voted_at',
- 'vote' : 'vote',
- },
- select_params=[user.id],
- tables=['vote', 'question', 'auth_user'],
- where=['vote.content_type_id = %s AND vote.user_id = %s AND vote.object_id = question.id '+
- 'AND vote.user_id=auth_user.id'],
- params=[ContentType.objects.get_for_model(models.Question).id, user.id],
- order_by=['-vote.id']
- ).values(
- 'title',
- 'question_id',
- 'answer_id',
- 'voted_at',
- 'vote',
- )
- if(len(question_votes) > 0):
- votes.extend(question_votes)
-
- answer_votes = models.Vote.objects.extra(
- select={
- 'title' : 'question.title',
- 'question_id' : 'question.id',
- 'answer_id' : 'answer.id',
- 'voted_at' : 'vote.voted_at',
- 'vote' : 'vote',
- },
- select_params=[user.id],
- tables=['vote', 'answer', 'question', 'auth_user'],
- where=['vote.content_type_id = %s AND vote.user_id = %s AND vote.object_id = answer.id '+
- 'AND answer.question_id = question.id AND vote.user_id=auth_user.id'],
- params=[ContentType.objects.get_for_model(models.Answer).id, user.id],
- order_by=['-vote.id']
- ).values(
- 'title',
- 'question_id',
- 'answer_id',
- 'voted_at',
- 'vote',
- )
- if(len(answer_votes) > 0):
- votes.extend(answer_votes)
- votes.sort(lambda x,y: cmp(y['voted_at'], x['voted_at']))
+ for vote in all_votes:
+ post = vote.voted_post
+ if post.is_question():
+ vote.title = post.thread.title
+ vote.question_id = post.id
+ vote.answer_id = 0
+ votes.append(vote)
+ elif post.is_answer():
+ vote.title = post.thread.title
+ vote.question_id = post.thread._question_post().id
+ vote.answer_id = post.id
+ votes.append(vote)
+
+ votes.sort(key=operator.attrgetter('id'), reverse=True)
data = {
'active_tab':'users',
@@ -865,28 +772,14 @@ def user_votes(request, user, context):
context.update(data)
return render_into_skin('user_profile/user_votes.html', context, request)
+
def user_reputation(request, user, context):
- reputes = models.Repute.objects.filter(user=user).order_by('-reputed_at')
- #select_related() adds stuff needed for the query
- reputes = reputes.select_related(
- 'question__title',
- 'question__id',
- 'user__username'
- )
- #prepare data for the graph
- rep_list = []
- #last values go in first
- rep_list.append('[%s,%s]' % (
- calendar.timegm(
- datetime.datetime.now().timetuple()
- ) * 1000,
- user.reputation
- )
- )
- #ret remaining values in
+ reputes = models.Repute.objects.filter(user=user).select_related('question', 'question__thread', 'user').order_by('-reputed_at')
+
+ # prepare data for the graph - last values go in first
+ rep_list = ['[%s,%s]' % (calendar.timegm(datetime.datetime.now().timetuple()) * 1000, user.reputation)]
for rep in reputes:
- dic = '[%s,%s]' % (calendar.timegm(rep.reputed_at.timetuple()) * 1000, rep.reputation)
- rep_list.append(dic)
+ rep_list.append('[%s,%s]' % (calendar.timegm(rep.reputed_at.timetuple()) * 1000, rep.reputation))
reps = ','.join(rep_list)
reps = '[%s]' % reps
@@ -894,30 +787,21 @@ def user_reputation(request, user, context):
'active_tab':'users',
'page_class': 'user-profile-page',
'tab_name': 'reputation',
- 'tab_description': _('user reputation in the community'),
- 'page_title': _('profile - user reputation'),
+ 'tab_description': _('user karma'),
+ 'page_title': _("Profile - User's Karma"),
'reputation': reputes,
'reps': reps
}
context.update(data)
return render_into_skin('user_profile/user_reputation.html', context, request)
+
def user_favorites(request, user, context):
- favorited_q_id_list= models.FavoriteQuestion.objects.filter(
- user = user
- ).values_list('question__id', flat=True)
- questions = models.Question.objects.filter(
- id__in=favorited_q_id_list
- ).order_by(
- '-score', '-last_activity_at'
- ).select_related(
- 'last_activity_by__id',
- 'last_activity_by__username',
- 'last_activity_by__reputation',
- 'last_activity_by__gold',
- 'last_activity_by__silver',
- 'last_activity_by__bronze'
- )[:const.USER_VIEW_DATA_SIZE]
+ favorite_threads = user.user_favorite_questions.values_list('thread', flat=True)
+ questions = models.Post.objects.filter(post_type='question', thread__in=favorite_threads)\
+ .select_related('thread', 'thread__last_activity_by')\
+ .order_by('-score', '-thread__last_activity_at')[:const.USER_VIEW_DATA_SIZE]
+
data = {
'active_tab':'users',
'page_class': 'user-profile-page',
@@ -925,11 +809,11 @@ def user_favorites(request, user, context):
'tab_description' : _('users favorite questions'),
'page_title' : _('profile - favorite questions'),
'questions' : questions,
- 'favorited_myself': favorited_q_id_list,
}
context.update(data)
return render_into_skin('user_profile/user_favorites.html', context, request)
+
@owner_or_moderator_required
@csrf.csrf_protect
def user_email_subscriptions(request, user, context):
@@ -984,7 +868,25 @@ def user_email_subscriptions(request, user, context):
request
)
-user_view_call_table = {
+@csrf.csrf_protect
+def user_custom_tab(request, user, context):
+ """works only if `ASKBOT_CUSTOM_USER_PROFILE_TAB`
+ setting in the ``settings.py`` is properly configured"""
+ tab_settings = django_settings.ASKBOT_CUSTOM_USER_PROFILE_TAB
+ module_path = tab_settings['CONTENT_GENERATOR']
+ content_generator = load_module(module_path)
+
+ page_title = _('profile - %(section)s') % \
+ {'section': tab_settings['NAME']}
+
+ context.update({
+ 'custom_tab_content': content_generator(request, user),
+ 'tab_name': tab_settings['SLUG'],
+ 'page_title': page_title
+ })
+ return render_into_skin('user_profile/custom_tab.html', context, request)
+
+USER_VIEW_CALL_TABLE = {
'stats': user_stats,
'recent': user_recent,
'inbox': user_responses,
@@ -995,6 +897,12 @@ user_view_call_table = {
'email_subscriptions': user_email_subscriptions,
'moderation': user_moderate,
}
+
+CUSTOM_TAB = getattr(django_settings, 'ASKBOT_CUSTOM_USER_PROFILE_TAB', None)
+if CUSTOM_TAB:
+ CUSTOM_SLUG = CUSTOM_TAB['SLUG']
+ USER_VIEW_CALL_TABLE[CUSTOM_SLUG] = user_custom_tab
+
#todo: rename this function - variable named user is everywhere
def user(request, id, slug=None, tab_name=None):
"""Main user view function that works as a switchboard
@@ -1006,23 +914,50 @@ def user(request, id, slug=None, tab_name=None):
"""
profile_owner = get_object_or_404(models.User, id = id)
- if tab_name is None:
- #sort CGI parameter tells us which tab in the user
- #profile to show, the default one is 'stats'
+ if not tab_name:
tab_name = request.GET.get('sort', 'stats')
- if tab_name in user_view_call_table:
- #get the actual view function
- user_view_func = user_view_call_table[tab_name]
+ if askbot_settings.KARMA_MODE == 'public':
+ can_show_karma = True
+ elif askbot_settings.KARMA_MODE == 'hidden':
+ can_show_karma = False
else:
- user_view_func = user_stats
+ if request.user.is_anonymous():
+ can_show_karma = False
+ elif request.user.is_administrator_or_moderator():
+ can_show_karma = True
+ elif request.user == profile_owner:
+ can_show_karma = True
+ else:
+ can_show_karma = False
+
+ if can_show_karma == False and tab_name == 'reputation':
+ raise Http404
+
+ user_view_func = USER_VIEW_CALL_TABLE.get(tab_name, user_stats)
+
+ search_state = SearchState( # Non-default SearchState with user data set
+ scope=None,
+ sort=None,
+ query=None,
+ tags=None,
+ author=profile_owner.id,
+ page=None,
+ user_logged_in=profile_owner.is_authenticated(),
+ )
context = {
'view_user': profile_owner,
+ 'can_show_karma': can_show_karma,
+ 'search_state': search_state,
'user_follow_feature_on': ('followit' in django_settings.INSTALLED_APPS),
}
+ if CUSTOM_TAB:
+ context['custom_tab_name'] = CUSTOM_TAB['NAME']
+ context['custom_tab_slug'] = CUSTOM_TAB['SLUG']
return user_view_func(request, profile_owner, context)
+@csrf.csrf_exempt
def update_has_custom_avatar(request):
"""updates current avatar type data for the user
"""
@@ -1032,3 +967,44 @@ def update_has_custom_avatar(request):
request.session['avatar_data_updated_at'] = datetime.datetime.now()
return HttpResponse(simplejson.dumps({'status':'ok'}), mimetype='application/json')
return HttpResponseForbidden()
+
+def groups(request, id = None, slug = None):
+ """output groups page
+ """
+ if askbot_settings.GROUPS_ENABLED == False:
+ raise Http404
+
+ #6 lines of input cleaning code
+ if request.user.is_authenticated():
+ scope = request.GET.get('sort', 'all-groups')
+ if scope not in ('all-groups', 'my-groups'):
+ scope = 'all-groups'
+ else:
+ scope = 'all-groups'
+
+ if scope == 'all-groups':
+ groups = models.Tag.group_tags.get_all()
+ else:
+ groups = models.Tag.group_tags.get_for_user(
+ user = request.user
+ )
+
+ groups = groups.select_related('group_profile')
+
+ user_can_add_groups = request.user.is_authenticated() and \
+ request.user.is_administrator_or_moderator()
+
+ groups_membership_info = collections.defaultdict()
+ if request.user.is_authenticated():
+ #collect group memberhship information
+ groups_membership_info = request.user.get_groups_membership_info(groups)
+
+ data = {
+ 'groups': groups,
+ 'groups_membership_info': groups_membership_info,
+ 'user_can_add_groups': user_can_add_groups,
+ 'active_tab': 'groups',#todo vars active_tab and tab_name are too similar
+ 'tab_name': scope,
+ 'page_class': 'groups-page'
+ }
+ return render_into_skin('groups.html', data, request)
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index 5f073b37..9a2de128 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -12,24 +12,26 @@ import random
import sys
import tempfile
import time
-from django.core.files.storage import FileSystemStorage
+import urlparse
from django.shortcuts import get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404
from django.utils import simplejson
-from django.utils.html import strip_tags
+from django.utils.html import strip_tags, escape
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from django.core import exceptions
from django.conf import settings
from django.views.decorators import csrf
+from askbot import exceptions as askbot_exceptions
from askbot import forms
from askbot import models
from askbot.skins.loaders import render_into_skin
from askbot.utils import decorators
from askbot.utils.functions import diff_date
from askbot.utils import url_utils
+from askbot.utils.file_utils import store_file
from askbot.templatetags import extra_filters_jinja as template_filters
from askbot.importers.stackexchange import management as stackexchange#todo: may change
@@ -44,6 +46,7 @@ QUESTIONS_PAGE_SIZE = 10
# used in answers
ANSWERS_PAGE_SIZE = 10
+@csrf.csrf_exempt
def upload(request):#ajax upload file to a question or answer
"""view that handles file upload via Ajax
"""
@@ -60,8 +63,15 @@ def upload(request):#ajax upload file to a question or answer
request.user.assert_can_upload_file()
+ #todo: build proper form validation
+ file_name_prefix = request.POST.get('file_name_prefix', '')
+ if file_name_prefix not in ('', 'group_logo_'):
+ raise exceptions.PermissionDenied('invalid upload file name prefix')
+
# check file type
f = request.FILES['file-upload']
+ #todo: extension checking should be replaced with mimetype checking
+ #and this must be part of the form validation
file_extension = os.path.splitext(f.name)[1].lower()
if not file_extension in settings.ASKBOT_ALLOWED_UPLOAD_FILE_TYPES:
file_types = "', '".join(settings.ASKBOT_ALLOWED_UPLOAD_FILE_TYPES)
@@ -69,20 +79,10 @@ def upload(request):#ajax upload file to a question or answer
{'file_types': file_types}
raise exceptions.PermissionDenied(msg)
- # generate new file name
- new_file_name = str(
- time.time()
- ).replace(
- '.',
- str(random.randint(0,100000))
- ) + file_extension
-
- file_storage = FileSystemStorage(
- location = settings.ASKBOT_FILE_UPLOAD_DIR,
- base_url = reverse('uploaded_file', kwargs = {'path':''}),
- )
- # use default storage to store file
- file_storage.save(new_file_name, f)
+ # generate new file name and storage object
+ file_storage, new_file_name, file_url = store_file(
+ f, file_name_prefix
+ )
# check file size
# byte
size = file_storage.size(new_file_name)
@@ -100,12 +100,16 @@ def upload(request):#ajax upload file to a question or answer
if error == '':
result = 'Good'
- file_url = file_storage.url(new_file_name)
else:
result = ''
file_url = ''
- #<result><msg><![CDATA[%s]]></msg><error><![CDATA[%s]]></error><file_url>%s</file_url></result>
+ #data = simplejson.dumps({
+ # 'result': result,
+ # 'error': error,
+ # 'file_url': file_url
+ #})
+ #return HttpResponse(data, mimetype = 'application/json')
xml_template = "<result><msg><![CDATA[%s]]></msg><error><![CDATA[%s]]></error><file_url>%s</file_url></result>"
xml = xml_template % (result, error, file_url)
@@ -157,7 +161,7 @@ def import_data(request):
#allow to use this view to site admins
#or when the forum in completely empty
if request.user.is_anonymous() or (not request.user.is_administrator()):
- if models.Question.objects.count() > 0:
+ if models.Post.objects.get_questions().exists():
raise Http404
if request.method == 'POST':
@@ -188,7 +192,13 @@ def import_data(request):
#@login_required #actually you can post anonymously, but then must register
@csrf.csrf_protect
-@decorators.check_authorization_to_post(_('Please log in to ask questions'))
+@decorators.check_authorization_to_post(_(
+ "<span class=\"strong big\">You are welcome to start submitting your question "
+ "anonymously</span>. When you submit the post, you will be redirected to the "
+ "login/signup page. Your question will be saved in the current session and "
+ "will be published after you log in. Login/signup process is very simple. "
+ "Login takes about 30 seconds, initial signup takes a minute or less."
+))
@decorators.check_spam('text')
def ask(request):#view used to ask a new question
"""a view to ask a new question
@@ -197,28 +207,26 @@ def ask(request):#view used to ask a new question
user can start posting a question anonymously but then
must login/register in order for the question go be shown
"""
- if request.method == "POST":
- form = forms.AskForm(request.POST)
+ form = forms.AskForm(request.REQUEST)
+ if request.method == 'POST':
if form.is_valid():
timestamp = datetime.datetime.now()
- #todo: move this to clean_title
- title = form.cleaned_data['title'].strip()
+ title = form.cleaned_data['title']
wiki = form.cleaned_data['wiki']
- #todo: move this to clean_tagnames
- tagnames = form.cleaned_data['tags'].strip()
+ tagnames = form.cleaned_data['tags']
text = form.cleaned_data['text']
ask_anonymously = form.cleaned_data['ask_anonymously']
if request.user.is_authenticated():
try:
question = request.user.post_question(
- title = title,
- body_text = text,
- tags = tagnames,
- wiki = wiki,
- is_anonymous = ask_anonymously,
- timestamp = timestamp
- )
+ title = title,
+ body_text = text,
+ tags = tagnames,
+ wiki = wiki,
+ is_anonymous = ask_anonymously,
+ timestamp = timestamp
+ )
return HttpResponseRedirect(question.get_absolute_url())
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))
@@ -228,7 +236,7 @@ def ask(request):#view used to ask a new question
request.session.flush()
session_key = request.session.session_key
summary = strip_tags(text)[:120]
- question = models.AnonymousQuestion(
+ models.AnonymousQuestion.objects.create(
session_key = session_key,
title = title,
tagnames = tagnames,
@@ -239,44 +247,18 @@ def ask(request):#view used to ask a new question
added_at = timestamp,
ip_addr = request.META['REMOTE_ADDR'],
)
- question.save()
return HttpResponseRedirect(url_utils.get_login_url())
- else:
- form = forms.AskForm(request.POST)
- if 'title' in request.GET:
- #normally this title is inherited from search query
- #but it is possible to ask with a parameter title in the url query
- form.initial['title'] = request.GET['title']
- else:
- #attempt to extract title from previous search query
- search_state = request.session.get('search_state', None)
- if search_state:
- query = search_state.query
- form.initial['title'] = query
- else:
- #this branch is for the initial load of ask form
+
+ if request.method == 'GET':
form = forms.AskForm()
- if 'title' in request.GET:
- #normally this title is inherited from search query
- #but it is possible to ask with a parameter title in the url query
- form.initial['title'] = request.GET['title']
- else:
- #attempt to extract title from previous search query
- search_state = request.session.get('search_state', None)
- if search_state:
- query = search_state.query
- form.initial['title'] = query
-
- if 'tags' in request.GET:
- #pre-populate tags.
- clean_tags = request.GET['tags'].replace(',', ' ')
- form.initial['tags'] = clean_tags
- else:
- #attemp to get tags from search state
- search_state = request.session.get('search_state', None)
- if search_state and search_state.tags:
- tags = ' '.join(search_state.tags)
- form.initial['tags'] = tags
+
+ form.initial = {
+ 'title': request.REQUEST.get('title', ''),
+ 'text': request.REQUEST.get('text', ''),
+ 'tags': request.REQUEST.get('tags', ''),
+ 'wiki': request.REQUEST.get('wiki', False),
+ 'is_anonymous': request.REQUEST.get('is_anonymous', False),
+ }
data = {
'active_tab': 'ask',
@@ -288,11 +270,11 @@ def ask(request):#view used to ask a new question
return render_into_skin('ask.html', data, request)
@login_required
-#@csrf.csrf_protect remove for ajax
+@csrf.csrf_exempt
def retag_question(request, id):
"""retag question view
"""
- question = get_object_or_404(models.Question, id = id)
+ question = get_object_or_404(models.Post, id=id)
try:
request.user.assert_can_retag_question(question)
@@ -300,14 +282,11 @@ def retag_question(request, id):
form = forms.RetagQuestionForm(question, request.POST)
if form.is_valid():
if form.has_changed():
- request.user.retag_question(
- question = question,
- tags = form.cleaned_data['tags']
- )
+ request.user.retag_question(question=question, tags=form.cleaned_data['tags'])
if request.is_ajax():
response_data = {
'success': True,
- 'new_tags': question.tagnames
+ 'new_tags': question.thread.tagnames
}
data = simplejson.dumps(response_data)
return HttpResponse(data, mimetype="application/json")
@@ -347,7 +326,7 @@ def retag_question(request, id):
def edit_question(request, id):
"""edit question view
"""
- question = get_object_or_404(models.Question, id = id)
+ question = get_object_or_404(models.Post, id=id)
latest_revision = question.get_latest_revision()
revision_form = None
try:
@@ -364,7 +343,7 @@ def edit_question(request, id):
# Replace with those from the selected revision
rev_id = revision_form.cleaned_data['revision']
selected_revision = models.PostRevision.objects.question_revisions().get(
- question = question,
+ post = question,
revision = rev_id
)
form = forms.EditQuestionForm(
@@ -392,10 +371,11 @@ def edit_question(request, id):
if form.has_changed():
if form.cleaned_data['reveal_identity']:
- question.remove_author_anonymity()
+ question.thread.remove_author_anonymity()
is_anon_edit = form.cleaned_data['stay_anonymous']
is_wiki = form.cleaned_data.get('wiki', question.wiki)
+
request.user.edit_question(
question = question,
title = form.cleaned_data['title'],
@@ -433,7 +413,8 @@ def edit_question(request, id):
@csrf.csrf_protect
@decorators.check_spam('text')
def edit_answer(request, id):
- answer = get_object_or_404(models.Answer, id=id)
+ answer = get_object_or_404(models.Post, id=id)
+ latest_revision = answer.get_latest_revision()
try:
request.user.assert_can_edit_answer(answer)
latest_revision = answer.get_latest_revision()
@@ -449,7 +430,7 @@ def edit_answer(request, id):
# Replace with those from the selected revision
rev = revision_form.cleaned_data['revision']
selected_revision = models.PostRevision.objects.answer_revisions().get(
- answer = answer,
+ post = answer,
revision = rev
)
form = forms.EditAnswerForm(answer, selected_revision)
@@ -477,6 +458,7 @@ def edit_answer(request, id):
revision_form = forms.RevisionForm(answer, latest_revision)
form = forms.EditAnswerForm(answer, latest_revision)
data = {
+ 'page_class': 'edit-answer-page',
'active_tab': 'questions',
'answer': answer,
'revision_form': revision_form,
@@ -499,9 +481,9 @@ def answer(request, id):#process a new answer
authenticated users post directly
"""
- question = get_object_or_404(models.Question, id=id)
+ question = get_object_or_404(models.Post, post_type='question', id=id)
if request.method == "POST":
- form = forms.AnswerForm(question, request.user, request.POST)
+ form = forms.AnswerForm(request.POST)
if form.is_valid():
wiki = form.cleaned_data['wiki']
text = form.cleaned_data['text']
@@ -518,19 +500,22 @@ def answer(request, id):#process a new answer
timestamp = update_time,
)
return HttpResponseRedirect(answer.get_absolute_url())
+ except askbot_exceptions.AnswerAlreadyGiven, e:
+ request.user.message_set.create(message = unicode(e))
+ answer = question.thread.get_answers_by_user(request.user)[0]
+ return HttpResponseRedirect(answer.get_absolute_url())
except exceptions.PermissionDenied, e:
request.user.message_set.create(message = unicode(e))
else:
request.session.flush()
- anon = models.AnonymousAnswer(
- question=question,
- wiki=wiki,
- text=text,
- summary=strip_tags(text)[:120],
- session_key=request.session.session_key,
- ip_addr=request.META['REMOTE_ADDR'],
- )
- anon.save()
+ models.AnonymousAnswer.objects.create(
+ question=question,
+ wiki=wiki,
+ text=text,
+ summary=strip_tags(text)[:120],
+ session_key=request.session.session_key,
+ ip_addr=request.META['REMOTE_ADDR'],
+ )
return HttpResponseRedirect(url_utils.get_login_url())
return HttpResponseRedirect(question.get_absolute_url())
@@ -538,12 +523,14 @@ def answer(request, id):#process a new answer
def __generate_comments_json(obj, user):#non-view generates json data for the post comments
"""non-view generates json data for the post comments
"""
- comments = obj.get_comments(visitor = user)
+ models.Post.objects.precache_comments(for_posts=[obj], visitor=user)
+ comments = obj._cached_comments
+
# {"Id":6,"PostId":38589,"CreationDate":"an hour ago","Text":"hello there!","UserDisplayName":"Jarrod Dixon","UserUrl":"/users/3/jarrod-dixon","DeleteUrl":null}
json_comments = []
for comment in comments:
- if user != None and user.is_authenticated():
+ if user and user.is_authenticated():
try:
user.assert_can_delete_comment(comment)
#/posts/392845/comments/219852/delete
@@ -551,18 +538,19 @@ def __generate_comments_json(obj, user):#non-view generates json data for the po
is_deletable = True
except exceptions.PermissionDenied:
is_deletable = False
- is_editable = template_filters.can_edit_comment(comment.user, comment)
+ is_editable = template_filters.can_edit_comment(comment.author, comment)
else:
is_deletable = False
is_editable = False
- comment_owner = comment.get_owner()
+ comment_owner = comment.author
+ tz = ' ' + template_filters.TIMEZONE_STR
comment_data = {'id' : comment.id,
'object_id': obj.id,
- 'comment_age': diff_date(comment.added_at),
+ 'comment_added_at': str(comment.added_at.replace(microsecond = 0)) + tz,
'html': comment.html,
- 'user_display_name': comment_owner.username,
+ 'user_display_name': escape(comment_owner.username),
'user_url': comment_owner.get_profile_url(),
'user_id': comment_owner.id,
'is_deletable': is_deletable,
@@ -575,77 +563,68 @@ def __generate_comments_json(obj, user):#non-view generates json data for the po
data = simplejson.dumps(json_comments)
return HttpResponse(data, mimetype="application/json")
+@csrf.csrf_exempt
@decorators.check_spam('comment')
def post_comments(request):#generic ajax handler to load comments to an object
# only support get post comments by ajax now
+
+ post_type = request.REQUEST.get('post_type', '')
+ if not request.is_ajax() or post_type not in ('question', 'answer'):
+ raise Http404 # TODO: Shouldn't be 404! More like 400, 403 or sth more specific
+
user = request.user
- if request.is_ajax():
- post_type = request.REQUEST['post_type']
- id = request.REQUEST['post_id']
- if post_type == 'question':
- post_model = models.Question
- elif post_type == 'answer':
- post_model = models.Answer
- else:
- raise Http404
- obj = get_object_or_404(post_model, id=id)
- if request.method == "GET":
+ id = request.REQUEST['post_id']
+ obj = get_object_or_404(models.Post, id=id)
+
+ if request.method == "GET":
+ response = __generate_comments_json(obj, user)
+ elif request.method == "POST":
+ try:
+ if user.is_anonymous():
+ msg = _('Sorry, you appear to be logged out and '
+ 'cannot post comments. Please '
+ '<a href="%(sign_in_url)s">sign in</a>.') % \
+ {'sign_in_url': url_utils.get_login_url()}
+ raise exceptions.PermissionDenied(msg)
+ user.post_comment(parent_post=obj, body_text=request.POST.get('comment'))
response = __generate_comments_json(obj, user)
- elif request.method == "POST":
- try:
- if user.is_anonymous():
- msg = _('Sorry, you appear to be logged out and '
- 'cannot post comments. Please '
- '<a href="%(sign_in_url)s">sign in</a>.') % \
- {'sign_in_url': url_utils.get_login_url()}
- raise exceptions.PermissionDenied(msg)
- user.post_comment(
- parent_post = obj,
- body_text = request.POST.get('comment')
- )
- response = __generate_comments_json(obj, user)
- except exceptions.PermissionDenied, e:
- response = HttpResponseForbidden(
- unicode(e),
- mimetype="application/json"
- )
- return response
- else:
- raise Http404
+ except exceptions.PermissionDenied, e:
+ response = HttpResponseForbidden(unicode(e), mimetype="application/json")
+
+ return response
+@csrf.csrf_exempt
@decorators.ajax_only
@decorators.check_spam('comment')
def edit_comment(request):
- if request.user.is_authenticated():
- comment_id = int(request.POST['comment_id'])
- comment = models.Comment.objects.get(id = comment_id)
-
- request.user.edit_comment(
- comment = comment,
- body_text = request.POST['comment']
- )
-
- is_deletable = template_filters.can_delete_comment(comment.user, comment)
- is_editable = template_filters.can_edit_comment(comment.user, comment)
-
- return {'id' : comment.id,
- 'object_id': comment.content_object.id,
- 'comment_age': diff_date(comment.added_at),
- 'html': comment.html,
- 'user_display_name': comment.user.username,
- 'user_url': comment.user.get_profile_url(),
- 'user_id': comment.user.id,
- 'is_deletable': is_deletable,
- 'is_editable': is_editable,
- 'score': comment.score,
- 'voted': comment.is_upvoted_by(request.user),
- }
- else:
- raise exceptions.PermissionDenied(
- _('Sorry, anonymous users cannot edit comments')
- )
+ if request.user.is_anonymous():
+ raise exceptions.PermissionDenied(_('Sorry, anonymous users cannot edit comments'))
+
+ comment_id = int(request.POST['comment_id'])
+ comment_post = models.Post.objects.get(post_type='comment', id=comment_id)
+
+ request.user.edit_comment(comment_post=comment_post, body_text = request.POST['comment'])
+
+ is_deletable = template_filters.can_delete_comment(comment_post.author, comment_post)
+ is_editable = template_filters.can_edit_comment(comment_post.author, comment_post)
+ tz = ' ' + template_filters.TIMEZONE_STR
+
+ return {
+ 'id' : comment_post.id,
+ 'object_id': comment_post.parent.id,
+ 'comment_added_at': str(comment_post.added_at.replace(microsecond = 0)) + tz,
+ 'html': comment_post.html,
+ 'user_display_name': comment_post.author.username,
+ 'user_url': comment_post.author.get_profile_url(),
+ 'user_id': comment_post.author.id,
+ 'is_deletable': is_deletable,
+ 'is_editable': is_editable,
+ 'score': comment_post.score,
+ 'voted': comment_post.is_upvoted_by(request.user),
+ }
+@csrf.csrf_exempt
def delete_comment(request):
"""ajax handler to delete comment
"""
@@ -659,17 +638,17 @@ def delete_comment(request):
if request.is_ajax():
comment_id = request.POST['comment_id']
- comment = get_object_or_404(models.Comment, id=comment_id)
+ comment = get_object_or_404(models.Post, post_type='comment', id=comment_id)
request.user.assert_can_delete_comment(comment)
- obj = comment.content_object
- #todo: are the removed comments actually deleted?
- obj.comments.remove(comment)
+ parent = comment.parent
+ comment.delete()
#attn: recalc denormalized field
- obj.comment_count = obj.comment_count - 1
- obj.save()
+ parent.comment_count = parent.comment_count - 1
+ parent.save()
+ parent.thread.invalidate_cached_data()
- return __generate_comments_json(obj, request.user)
+ return __generate_comments_json(parent, request.user)
raise exceptions.PermissionDenied(
_('sorry, we seem to have some technical difficulties')
diff --git a/askbot_requirements.txt b/askbot_requirements.txt
index fc11d9d1..7b619c36 100644
--- a/askbot_requirements.txt
+++ b/askbot_requirements.txt
@@ -1,11 +1,12 @@
akismet
-django>=1.1.2
+django==1.3.1
Jinja2
Coffin>=0.3
South>=0.7.1
oauth2
+Lamson
markdown2
-html5lib
+html5lib==0.90
django-keyedcache
django-threaded-multihost
django-robots
@@ -17,3 +18,4 @@ django-followit
django-recaptcha-works
python-openid
pystache==0.3.1
+pytz
diff --git a/askbot_requirements_dev.txt b/askbot_requirements_dev.txt
index af83b691..b960c76e 100644
--- a/askbot_requirements_dev.txt
+++ b/askbot_requirements_dev.txt
@@ -1,11 +1,13 @@
akismet
-django>=1.1.2
+django==1.3.1
Jinja2
Coffin>=0.3
--e git+https://github.com/matthiask/south.git#egg=south
+South>=0.7.1
+#-e git+https://github.com/matthiask/south.git#egg=south
oauth2
+Lamson
markdown2
-html5lib
+html5lib==0.90
django-keyedcache
django-threaded-multihost
django-robots
@@ -18,3 +20,4 @@ django-recaptcha-works
python-openid
pystache==0.3.1
pylint
+pytz
diff --git a/setup.py b/setup.py
index 2227aba3..e148704b 100644
--- a/setup.py
+++ b/setup.py
@@ -123,7 +123,7 @@ print """**************************************************************
* *
* Thanks for installing Askbot. *
* *
-* To start deploying type: >askbot-setup *
+* To start deploying type: askbot-setup *
* Please take a look at the manual askbot/doc/INSTALL *
* And please do not hesitate to ask your questions at *
* at http://askbot.org *